Compare commits

...

239 Commits

Author SHA1 Message Date
Robin Appelman 93fe7e38e2 test: update tests to new full sync
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-08 16:01:13 +02:00
Robin Appelman e8af4f1994 fix: fix full addressbook sync with truncated results
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-08 16:01:12 +02:00
Robin Appelman e8b61c7345 test: adjust tests to full address book sync
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-30 18:12:40 +02:00
Robin Appelman 117233fca4 feat: add option to perform a full addressbook sync instead of a delta sync
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-30 17:32:14 +02:00
Robin Appelman aa57c6731e fix: send deleted addressbook items in caldav sync
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-30 17:20:01 +02:00
Salvatore Martire 9756097e28 Merge pull request #59252 from nextcloud/fix/move-with-unjailed-source-path
fix: use unjailed source path when moving jailed files
2026-03-30 15:42:49 +02:00
Oleksandr Piskun 5ce08e9704 Merge pull request #58376 from nextcloud/feat/taskprocessing/keda-autoscaler
feat(taskprocessing): Add queue_stats API endpoint for external autoscalers
2026-03-30 16:27:54 +03:00
Oleksander Piskun f573285040 feat(taskprocessing): Add queue_stats API endpoint for external autoscalers
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2026-03-30 12:03:19 +00:00
Joas Schilling b119cace4f Merge pull request #59303 from nextcloud/bugfix/noid/dont-redirect-on-error
fix(sharing): Don't redirect when accepting a share failed
2026-03-30 13:12:48 +02:00
Joas Schilling 2c560b0837 fix(sharing): Don't redirect when accepting a share failed
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-30 12:07:42 +02:00
Côme Chilliet 17d60a4af0 Merge pull request #59204 from nextcloud/jtr/feat-external-s3-auth-fields
feat(files_external/s3): make some auth labels clearer
2026-03-30 11:24:23 +02:00
Côme Chilliet 3a5c445c78 Merge pull request #59261 from nextcloud/feat/config/sensitive-values/sentry-csp-report-url
feat(config): add Sentry CSP Report URL to sensitive values
2026-03-30 10:15:02 +02:00
Git'Fellow 04ee3aff1a Merge pull request #59270 from nextcloud/ensureValueOneParallel
fix(chunkedUploads): Ensure max parallel count is at least 1
2026-03-30 10:11:27 +02:00
Nextcloud bot b71661a38b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-30 00:29:17 +00:00
Git'Fellow 5b86c7a402 docs: Add a note to documentation
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-03-29 15:02:43 +02:00
Nextcloud bot e2dc439c71 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-29 00:33:57 +00:00
Josh c86e2d1e67 test: add coverage for ChunkedUploadConfig
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-27 23:44:45 -04:00
Nextcloud bot f5faddaf31 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-28 00:30:27 +00:00
Git'Fellow 99a26b0a97 fix(chunkedUploads): Ensure max parallel count is at least 1
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-03-27 18:57:19 +01:00
Andy Scherzinger aaf2ded381 Merge pull request #59240 from nextcloud/hskpng/code-owners
docs: update CODEOWNERS with new assignments
2026-03-27 18:48:53 +01:00
Joda Stößer c8dbc73017 fix(config): correct indentation for Sentry CSP Report URL
Signed-off-by: Joda Stößer <git@simjo.st>
2026-03-27 16:11:28 +01:00
Joda Stößer a71584ee96 feat(config): add Sentry CSP Report URL to sensitive values
Signed-off-by: Joda Stößer <git@simjo.st>
2026-03-27 16:01:41 +01:00
Salvatore Martire bf24b24841 fix: use unjailed source path when moving jailed files
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-03-27 14:30:46 +01:00
Nextcloud bot f8cc0adefb fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-27 00:29:10 +00:00
Robin Appelman d1fd735698 Merge pull request #57374 from nextcloud/rename-dav-permissions
fix: allow renaming files with just update permissions
2026-03-26 22:12:28 +01:00
Arthur Schiwon 0ff7ad3535 docs: update CODEOWNERS with new assignments
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-26 21:06:50 +01:00
nextcloud-command 8f7b0b4264 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-26 18:18:56 +01:00
Robin Appelman c08592de28 fix: properly expose rename permissions over dav
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-26 18:18:55 +01:00
Robin Appelman 005b2b04e8 fix: update rename permissions check in files ui
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-26 17:10:03 +01:00
Robin Appelman 63a4778744 fix: allow renaming files with just update permissions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-26 17:10:01 +01:00
Côme Chilliet ca245b4cc6 Merge pull request #58896 from nextcloud/fix/fix-tags-user-event
fix: Fix user in Tags class, do not depend upon session
2026-03-26 17:06:27 +01:00
Louis 309d12abe1 Merge pull request #58990 from mosi-kha/fix/group-displayname-event-oldvalue
fix(group): pass previous display name in GroupChangedEvent
2026-03-26 16:07:50 +01:00
Kate 7e9e1269a0 Merge pull request #59218 from nextcloud/feat/audit-log-ai-config-changes 2026-03-26 12:22:37 +01:00
Marcel Klehr 861f9bdb31 fix(settings): Check all values first, then apply them
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-26 11:32:42 +01:00
Marcel Klehr a375265111 fix(settings): Throw JSON errors and return 400 status if JSON encode fails
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-26 11:03:31 +01:00
Marcel Klehr 7fe3d1c6a0 feat(settings): Log AI config changes to audit log
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-26 10:50:01 +01:00
Kate 0cf140e903 Merge pull request #58761 from nextcloud/feat/1700/limit-recent-files 2026-03-26 09:05:14 +01:00
github-actions[bot] 3d27f8d288 Merge pull request #59207 from nextcloud/dependabot/npm_and_yarn/multi-bf05dc1ecf
chore(deps): Bump picomatch
2026-03-26 02:18:48 +00:00
Nextcloud bot 52dac4be2b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-26 00:19:23 +00:00
dependabot[bot] 252e24b83d chore(deps): Bump picomatch
Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 22:31:46 +00:00
Josh b7bdd76731 feat(files_external/s3): rename legacy signature (v2) for clarity
Avoid the use of "authentication" here since this is really about signing compatibility, not the source of credentials. Also prefix with "Use" for UI consistency.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-25 16:21:35 -04:00
Josh 00100427be feat(files_external/s3): Adjust auth meth/parameter field names
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-25 16:10:35 -04:00
Ferdinand Thiessen 2ae66ff888 Merge pull request #59043 from nextcloud/jtr/chore-trashbin-drop-abortOperation-usage
chore(trashbin): deprecate abortOperation on BeforeNodeRestoredEvent / switch to AbortedEventException
2026-03-25 18:14:59 +01:00
Cristian Scheid 6594d54476 feat(recent-search): pass recent_limit config value to getRecentSearch function
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-25 13:53:26 -03:00
Joas Schilling 9b125a7605 Merge pull request #59179 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2026-03-25 07:35:57 +01:00
nextcloud-command eb06a5628f fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2026-03-25 03:12:18 +00:00
Nextcloud bot 2a5e57d2f4 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-25 00:19:21 +00:00
Cristian Scheid 9b605de474 refactor(recent-files): move recent limit to app-scoped config
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 20:44:22 -03:00
Cristian Scheid 48ce8c3fa1 refactor(recent-files): remove user config from frontend files
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:38:53 -03:00
Cristian Scheid 3925176b49 refactor(files-settings): remove recent file settings section
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:15:34 -03:00
Cristian Scheid 981978d960 feat(recent-files): handle invalid config when only min or max are set for recent files limit
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:15:34 -03:00
Cristian Scheid 282e6b707a feat(file-info): encapsulate logic to get last activity in getLastActivity function
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:15:34 -03:00
Cristian Scheid 5bcac61c73 refactor(recent-search): use order by fields to determine extended cache join and cast config limit to number
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:15:34 -03:00
Cristian Scheid 8225ab726f feat(recent-files): add nc:last_activity property to allow sorting by max between upload_time and mtime
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-24 15:15:34 -03:00
Cristian Scheid 62f3ea390e feat(recent-files): add recent_files_limit config on files settings
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-03-24 15:15:34 -03:00
John Molakvoæ d677a3a5e2 Merge pull request #59089 from nextcloud/fix/expand-theming-capabilities 2026-03-24 17:45:07 +01:00
skjnldsv 04d9f79985 chore: openapi conf update
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2026-03-24 15:24:18 +01:00
John Molakvoæ 8fa69c1c29 fix(theming): deprecation message
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2026-03-24 15:24:18 +01:00
skjnldsv f2c73ebffd fix(theming): deprecate OCA.Theming and move to capabilities
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2026-03-24 15:24:18 +01:00
Côme Chilliet 5a7d38b22c Merge pull request #59159 from nextcloud/fix/remove-static-vars-batch
Remove static vars, first batch
2026-03-24 14:20:10 +01:00
Nextcloud bot e4c2a1d218 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-24 00:19:16 +00:00
Côme Chilliet e367c5a928 chore: update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:31 +01:00
Côme Chilliet 5c935429ef fix: Remove a static var usage in encryption application
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:31 +01:00
Côme Chilliet c88a1d3961 fix: Remove static vars usage in user_ldap
There are still some left, harder to remove.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:31 +01:00
Côme Chilliet 9b84a0ec19 fix: Remove unused static var and method in files application
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:30 +01:00
Côme Chilliet b256928385 fix: Remove use of static vars in dav application
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:30 +01:00
Daniel 8032ad83b3 Merge pull request #59147 from nextcloud/fix/use-fqdn-for-dns-pinning
fix(DnsPinning): Ensure to always lookup based on FQDN
2026-03-23 16:36:38 +01:00
Côme Chilliet 6b49aa792b chore: Remove types from const properties for PHP 8.2 compatibility
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:36:01 +01:00
Côme Chilliet cd2d09de64 fix: Remove static vars from core classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:34:54 +01:00
Côme Chilliet 2c068f3683 fix: Remove static vars from applications
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:34:20 +01:00
Côme Chilliet 1398c598cf fix: Remove static vars from user_ldap
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:34:01 +01:00
Côme Chilliet 614afec231 fix: Remove static var in AppManager
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:33:29 +01:00
Côme Chilliet 3fcb3a962d fix: Remove useless static property in OCP\Util
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:33:15 +01:00
Côme Chilliet 5961eba6a1 fix: Remove static var in NaturalSort
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:19:59 +01:00
Arthur Schiwon 6f7961f5ce Merge pull request #59142 from nextcloud/fix/caldav_search_for_uri
fix(ICalendar): allow to search for event URI
2026-03-23 14:56:57 +01:00
Côme Chilliet 69db28c7ec Merge pull request #59079 from nextcloud/fix/do-not-store-auth-code
fix(oauth2): Do not store the code in throttle metadata
2026-03-23 10:31:51 +01:00
Kate 18f03f69b4 Merge pull request #59151 from nextcloud/automated/noid/rector-changes 2026-03-23 10:23:51 +01:00
Jonas f34513d8ad fix(ICalendar): allow to search for event URI
Signed-off-by: Jonas <jonas@freesources.org>
2026-03-23 10:22:03 +01:00
Nextcloud bot 9beed5c8fe fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-23 00:19:29 +00:00
github-actions[bot] 50c37e300c Merge pull request #59118 from nextcloud/dependabot/npm_and_yarn/jsdom-29.0.1
chore(deps-dev): Bump jsdom from 29.0.0 to 29.0.1
2026-03-23 00:19:37 +01:00
github-actions[bot] 730db45c26 Merge pull request #59115 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.3.9
chore(deps-dev): Bump rector/rector from 2.3.8 to 2.3.9 in /vendor-bin/rector
2026-03-23 00:18:21 +01:00
github-actions[bot] eec757fc2e Merge pull request #59117 from nextcloud/dependabot/npm_and_yarn/stylelint-17.5.0
chore(deps-dev): Bump stylelint from 17.4.0 to 17.5.0
2026-03-23 00:17:50 +01:00
David Dreschner 5bc0ba6a51 fix(DnsPinning): Ensure to always lookup based on FQDN
Signed-off-by: David Dreschner <david.dreschner@nextcloud.com>
2026-03-22 20:34:55 +01:00
nextcloud-command 1ed0769d4c refactor: Apply rector changes
Signed-off-by: GitHub <noreply@github.com>
2026-03-22 14:45:16 +00:00
Andy Scherzinger cde3780f01 Merge pull request #59120 from nextcloud/dependabot/npm_and_yarn/cypress-split-1.24.31
chore(deps-dev): Bump cypress-split from 1.24.28 to 1.24.31
2026-03-22 14:45:14 +01:00
Andy Scherzinger 4a88f9316b Merge pull request #58739 from chandrika1993/fix/issue-50502
fix(settings): correctly detect Chrome on Android in devices & sessions
2026-03-22 10:24:09 +01:00
Nextcloud bot e17f7aa92d fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-22 00:19:11 +00:00
Ferdinand Thiessen 9d8bab02fc Merge pull request #59141 from nextcloud/jtr/chore-EventSource-drop-legacy-IE-inline-fallback
chore(EventSource): drop no longer needed legacy fallback
2026-03-21 22:47:14 +01:00
Josh 8bd63c5fe2 chore(Trashbin): hello lint
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
Josh e53c124ecc chore(trashbin): drop unused use statements from SyncLivePhotosListener
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
Josh 5f658d9eae chore(Trashbin): add AbortedEventException use
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
Josh bd0784e056 refactor(Trashbin): switch to AbortedEventException usage in restore
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
Josh 23569000a8 chore(trashbin): switch SyncLivePhotosListener to AbortedEventException
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
Josh 4b2a77b1ff chore(trashbin): refactor deprecated abortOperation to use AbortedEventException
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 11:50:28 -04:00
nextcloud-command 6346b9c884 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-21 14:31:28 +00:00
Josh 6a88c86a54 chore(EventSource): add typing
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 09:38:37 -04:00
Josh 9da1e46def chore(EventSource): drop legacy fallback note from IEventSource
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 09:36:35 -04:00
Josh 24550e5aac chore(EventSource): drop legacy server-side fallback
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 09:18:06 -04:00
Josh 1c1bd469b8 chore(EventSource): drop client-side fallback
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 09:14:35 -04:00
dependabot[bot] fafc55c039 chore(deps-dev): Bump cypress-split from 1.24.28 to 1.24.31
Bumps [cypress-split](https://github.com/bahmutov/cypress-split) from 1.24.28 to 1.24.31.
- [Release notes](https://github.com/bahmutov/cypress-split/releases)
- [Commits](https://github.com/bahmutov/cypress-split/compare/v1.24.28...v1.24.31)

---
updated-dependencies:
- dependency-name: cypress-split
  dependency-version: 1.24.31
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 02:09:35 +00:00
dependabot[bot] f5040be492 chore(deps-dev): Bump jsdom from 29.0.0 to 29.0.1
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.0.0 to 29.0.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.0.0...v29.0.1)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 02:08:29 +00:00
dependabot[bot] ce009c4f95 chore(deps-dev): Bump stylelint from 17.4.0 to 17.5.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 17.4.0 to 17.5.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.4.0...17.5.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 02:08:00 +00:00
dependabot[bot] c1251e0292 chore(deps-dev): Bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.3.8 to 2.3.9.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.3.8...2.3.9)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.3.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 02:03:39 +00:00
Nextcloud bot 753e6ee442 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-21 00:19:26 +00:00
github-actions[bot] df0f570802 Merge pull request #59111 from nextcloud/dependabot/npm_and_yarn/flatted-3.4.2
chore(deps-dev): Bump flatted from 3.3.3 to 3.4.2
2026-03-20 15:48:13 +01:00
github-actions[bot] c107cd4555 Merge pull request #59022 from nextcloud/dependabot/npm_and_yarn/fast-xml-parser-5.5.6
chore(deps): Bump fast-xml-parser from 5.4.1 to 5.5.6
2026-03-20 14:29:12 +01:00
Chandrika Mohan 38278d172f fix(settings): correctly detect Chrome on Android in devices & sessions
Signed-off-by: Chandrika Mohan <chandrikalov@gmail.com>

common logic to detect ua

Signed-off-by: Chandrika Mohan <chandrikalov@gmail.com>
2026-03-20 14:08:15 +01:00
dependabot[bot] 7df1d3683d chore(deps): Bump fast-xml-parser from 5.4.1 to 5.5.6
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.4.1 to 5.5.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.1...v5.5.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 13:04:29 +00:00
dependabot[bot] 4ac7bec175 chore(deps-dev): Bump flatted from 3.3.3 to 3.4.2
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 12:57:30 +00:00
github-actions[bot] 1493d30f14 Merge pull request #59093 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/fast-xml-parser-5.5.7
chore(deps): Bump fast-xml-parser from 5.5.6 to 5.5.7 in /build/frontend-legacy
2026-03-20 13:56:06 +01:00
nextcloud-command b59fcd4c32 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-20 10:53:13 +00:00
dependabot[bot] 9fee8d4dfe chore(deps): Bump fast-xml-parser in /build/frontend-legacy
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.6 to 5.5.7.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.6...v5.5.7)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 11:27:03 +01:00
Joas Schilling 7434af87c2 Merge pull request #59104 from nextcloud/automated/noid/master-update-ca-cert-bundle
[master] fix(security): Update CA certificate bundle
2026-03-20 07:44:11 +01:00
nextcloud-command 784a2adb87 fix(security): Update CA certificate bundle
Signed-off-by: GitHub <noreply@github.com>
2026-03-20 03:07:44 +00:00
Nextcloud bot d0c63a1753 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-20 00:19:49 +00:00
F. E Noel Nfebe 5e93c58795 Merge pull request #58226 from nextcloud/fix/password-state-management
fix(sharing): Prevent empty password when checkbox is enabled
2026-03-19 20:23:54 +01:00
Jonas 7cdbb38d52 Merge pull request #58834 from nextcloud/feat/translucent_selection_color
feat(theming): use translucent color for text selection
2026-03-19 18:41:28 +01:00
github-actions[bot] 28bb7305c0 Merge pull request #58767 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/marked-17.0.4
chore(deps): Bump marked from 17.0.3 to 17.0.4 in /build/frontend-legacy
2026-03-19 16:32:11 +01:00
nextcloud-command c5e9a1598a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-19 15:31:30 +00:00
nfebe e7f8950d65 fix(sharing): Prevent generated password from overwriting user input
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2026-03-19 15:39:35 +01:00
nfebe 0cb96fb77d fix(sharing): Prevent empty password when checkbox is enabled
Set passwordProtectedState explicitly when initializing shares with
default passwords. This ensures the checkbox state is tracked
independently of the password value, preventing it from unchecking
when the password field is cleared.

Also block saving new shares when password protection is enabled but
no password is entered, regardless of enforcement settings.

Added passWithNoTests to vitest configs to handle Vue 2/3 dual
frontend test runs gracefully.

Fixes: #57732, #57011
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2026-03-19 15:39:35 +01:00
Marcel Klehr 9e7e32f0c7 Merge pull request #59015 from nextcloud/copilot/add-taskprocessing-worker-command
feat(taskprocessing): add worker command for synchronous task processing
2026-03-19 15:33:21 +01:00
Côme Chilliet 5c1b58c380 fix(oauth2): Do not store the code in throttle metadata
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-19 14:40:12 +01:00
David Dreschner 9e65c597fe Merge pull request #58897 from nextcloud/feat/add-shared-calendar-api
feat(CalDAV): Add function to get the token of a publicly shared calendar
2026-03-19 14:25:27 +01:00
nextcloud-command f4c6b26e7b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-19 13:16:32 +00:00
dependabot[bot] e045bb9f2b chore(deps): Bump marked from 17.0.3 to 17.0.4 in /build/frontend-legacy
Bumps [marked](https://github.com/markedjs/marked) from 17.0.3 to 17.0.4.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v17.0.3...v17.0.4)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 17.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 14:08:33 +01:00
David Dreschner 7c61e06b74 feat(CalDAV): Add function to get the token of a publicly shared calendar
Signed-off-by: David Dreschner <david.dreschner@nextcloud.com>
2026-03-19 13:55:39 +01:00
Ferdinand Thiessen e4ab89d5b2 Merge pull request #59065 from nextcloud/fix/noid/phpunit-deprecations
fix(phpunit): migrate from deprecated syntax for PHPUnit 11.1
2026-03-19 12:05:39 +01:00
Marcel Klehr a51d74407a fix: Apply suggestions from code review
Co-authored-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-19 11:14:26 +01:00
Marcel Klehr ad5e709f7f chore: Address review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] b1517d8938 test(taskprocessing): fix broken multi-type assertions and add starvation-prevention test
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] 549b081f2f fix: Fix task type starvation: collect all eligible task types then pick the oldest task
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] e46b967b53 fix: Fix task type starvation in WorkerCommand::processNextTask by shuffling providers
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] de9852eca4 fix: Fix Task mock error: use real Task instances; run autoloaderchecker
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] 9cc334312b feat(taskprocessing): Add --taskTypes whitelist option to taskprocessing:worker command
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
copilot-swe-agent[bot] 118ca6a94b feat(taskprocessing): Add worker command with tests and registration
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 11:08:25 +01:00
Kate 95f22bc48d Merge pull request #59029 from nextcloud/fix/58913/bg-job-argument-type-text 2026-03-19 11:01:57 +01:00
John Molakvoæ 7cb4b4bbdb Merge pull request #54542 from nextcloud/54088-providePermissionsAndOwnerIdInPut 2026-03-19 10:59:10 +01:00
Maksim Sukharev 2c68e65e19 fix(phpunit): migrate from deprecated syntax for PHPUnit 11.1
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-03-19 10:53:56 +01:00
John Molakvoæ 3d0234bb2e Merge branch 'master' into 54088-providePermissionsAndOwnerIdInPut
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2026-03-19 09:13:45 +01:00
github-actions[bot] e01440af96 Merge pull request #58920 from nextcloud/dependabot/npm_and_yarn/eslint-plugin-cypress-6.2.0
chore(deps-dev): Bump eslint-plugin-cypress from 6.1.0 to 6.2.0
2026-03-19 07:57:07 +00:00
github-actions[bot] b5d8a97128 Merge pull request #59023 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/fast-xml-parser-5.5.6
chore(deps): Bump fast-xml-parser from 5.4.1 to 5.5.6 in /build/frontend-legacy
2026-03-19 00:44:59 +00:00
Nextcloud bot 0af21b72ae fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-19 00:20:27 +00:00
nextcloud-command 7eedf9c713 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-19 00:38:47 +01:00
dependabot[bot] 85f9a593a4 chore(deps): Bump fast-xml-parser in /build/frontend-legacy
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.4.1 to 5.5.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.1...v5.5.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 00:38:47 +01:00
github-actions[bot] 97ceffcbb4 Merge pull request #58926 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/password-confirmation-6.0.3
chore(deps): Bump @nextcloud/password-confirmation from 6.0.2 to 6.0.3 in /build/frontend-legacy
2026-03-18 23:55:27 +01:00
nextcloud-command 43c8d2de30 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-18 21:55:03 +00:00
dependabot[bot] bf58238b5f chore(deps): Bump @nextcloud/password-confirmation
Bumps [@nextcloud/password-confirmation](https://github.com/nextcloud-libraries/nextcloud-password-confirmation) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/compare/v6.0.2...6.0.3)

---
updated-dependencies:
- dependency-name: "@nextcloud/password-confirmation"
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 21:23:15 +00:00
dependabot[bot] 82ee720335 chore(deps-dev): Bump eslint-plugin-cypress from 6.1.0 to 6.2.0
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-cypress
  dependency-version: 6.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 21:22:34 +00:00
github-actions[bot] 7af11b4315 Merge pull request #58763 from nextcloud/dependabot/npm_and_yarn/zip.js/zip.js-2.8.23
chore(deps-dev): Bump @zip.js/zip.js from 2.8.21 to 2.8.23
2026-03-18 22:19:57 +01:00
github-actions[bot] f20789fb9d Merge pull request #58919 from nextcloud/dependabot/npm_and_yarn/vitest-17a571e09b
chore(deps-dev): Bump the vitest group across 2 directories with 3 updates
2026-03-18 21:06:02 +00:00
Maksim Sukharev 0c5feae8d0 chore: recompile autoload files
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-03-18 15:50:38 +01:00
Maksim Sukharev f01ba2de0f fix(bg_jobs): store job argument as a text, increase length cap from 4000 to 32000
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-03-18 15:50:38 +01:00
Ferdinand Thiessen 35606bc6bd Merge pull request #59033 from nextcloud/fix/files-external-issues
fix(files_external): properly handle API errors
2026-03-18 15:10:22 +01:00
Ferdinand Thiessen a24fc77bcf chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-18 14:14:31 +01:00
Arthur Schiwon 3be8a652bc Merge pull request #59025 from nextcloud/perf/noid/ldap-displayname-from-db
fix(LDAP): use displayname from DB, before reaching out to LDAP
2026-03-18 13:51:56 +01:00
Ferdinand Thiessen 1688dff259 fix(files_external): properly handle API errors
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-18 12:13:50 +01:00
Arthur Schiwon badd759ff1 ci: update psalm baseline
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 11:41:25 +01:00
Arthur Schiwon 0ace547307 fix(LDAP): do not use count() inside a loop
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 11:34:35 +01:00
Arthur Schiwon 1c01895796 fix(LDAP): use displayname from DB, before reaching out to LDAP
As we do it with other information of the user, we now use the known value
of a users displayname, and leave the updating to the background job. This
improves performance of user facing actions where the display name is
required and reduces queries to the LDAP server that are typically more
expensive.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 11:34:35 +01:00
Joas Schilling 44175e3cdb Merge pull request #58998 from nextcloud/bugfix/noid/dont-count-mentions-in-markdown-code
fix(comments): Correctly treat end of message as end of code block/in…
2026-03-18 10:35:29 +01:00
Benjamin Gaussorgues 1b504bf4ec Merge pull request #58863 from nextcloud/fix/annotation-attributes-fix 2026-03-18 08:46:31 +01:00
Ferdinand Thiessen 22976d20d5 Merge pull request #59008 from nextcloud/federated-sharing-check
fix: provide `canDownload` helper for shares and use it where appropriate
2026-03-17 22:57:14 +01:00
Anna 294e5397f3 Merge pull request #58975 from nextcloud/enh/42157/hid-warning
fix(initializeSession): only log HMAC problem to critical logs if indeed critical
2026-03-17 19:17:55 +01:00
Jonas db3ff20ce9 fix(theming): move text selection text color into variable
Signed-off-by: Jonas <jonas@freesources.org>
2026-03-17 19:06:41 +01:00
Jonas 3f27ba3aac feat(theming): use translucent color for text selection
Keeps old design with stronger constrast between background color and
background for high contrast themes.

Fixes: #55508

Signed-off-by: Jonas <jonas@freesources.org>
2026-03-17 19:05:56 +01:00
Jonas b96083862b Merge pull request #58830 from nextcloud/feat/color_mark_css_variable
feat(theming): add `--color-mark` CSS variable for highlighted text
2026-03-17 19:04:13 +01:00
Côme Chilliet fee637ca12 Merge pull request #59006 from nextcloud/fix/fix-ldap-renewpassword-parameters
fix: Add missing Attribute and fix parameter type in renewpassword route
2026-03-17 18:18:53 +01:00
Kate 2351df0172 Merge pull request #58960 from nextcloud/automated/noid/rector-changes 2026-03-17 18:07:29 +01:00
Jonas 39a0545c53 feat(theming): add --color-mark CSS variable for highlighted text
Required for nextcloud/text#8309

Signed-off-by: Jonas <jonas@freesources.org>
2026-03-17 18:04:21 +01:00
Ferdinand Thiessen df15699a31 Merge pull request #59004 from nextcloud/fix/mail_admin_check
fix(admin): use correct delegation class
2026-03-17 17:58:13 +01:00
Ferdinand Thiessen 7f8f86ab9a fix: use canDownload for permissions on federated shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-17 17:22:57 +01:00
Benjamin Gaussorgues a1c72a25c2 Merge pull request #58914 from nextcloud/chore/ncignore-tweaks 2026-03-17 17:02:22 +01:00
Ferdinand Thiessen 08495bfc0e feat(share): provide canDownload getter on the share
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-17 17:01:58 +01:00
Côme Chilliet 77b0d6cbbc fix: Add missing Attribute and fix parameter type in renewpassword route
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-17 16:58:34 +01:00
Benjamin Gaussorgues aaab13c7ca fix(admin): use correct delegation class
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-03-17 16:49:44 +01:00
Andy Scherzinger 3961a8be67 Merge pull request #59000 from nextcloud/bugfix/noid/enable-onetime-qrcode-for-34
feat(qrcode): Enable one-time QR codes by default for 34
2026-03-17 15:37:12 +01:00
Joas Schilling fe89541be3 fix(comments): Correctly treat end of message as end of code block/inline
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-17 15:34:47 +01:00
Joas Schilling 7e5a690a67 fix(qrcode): Enable one-time QR codes by default for 34
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-17 12:54:36 +01:00
Ferdinand Thiessen 5a1c233de9 Merge pull request #58611 from nextcloud/fix/files-snowflake
fix(files): correctly handle nodes with snowflake ids
2026-03-17 12:54:09 +01:00
Simon L. d3faa4247d fix(initializeSession): only log HMAC problem to critical logs if indeed critical
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-17 11:46:41 +01:00
Kate f6d2e6219a Merge pull request #58979 from nextcloud/chore/hide_avail_space 2026-03-17 11:41:59 +01:00
mostafa 3d6d38a2fb fix(group): pass previous display name in GroupChangedEvent
Signed-off-by: mostafa <mostafakhaki00@gmail.com>
2026-03-17 09:16:30 +00:00
Kate acbc10cc8c Merge pull request #58887 from nextcloud/fix/sharee-userid-config-key-inconsistency 2026-03-17 10:11:02 +01:00
Côme Chilliet b4f859b0ec Merge pull request #58870 from nextcloud/jtr/chore-root-htaccess-drop-noop-qsa
chore(.htaccess): 🧹 drop no-op QSA flag from RewriteRules
2026-03-17 10:07:41 +01:00
Nextcloud bot 438f942081 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-17 00:19:33 +00:00
nextcloud-command 99a20afa8a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-16 18:48:28 +00:00
Ferdinand Thiessen 6dfeeffe20 test(cypress): retry if failed on first try
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-16 19:39:51 +01:00
Ferdinand Thiessen 5830b0a0af fix(files): adjust files store for Snowflake IDs
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-16 19:39:37 +01:00
Ferdinand Thiessen 0787185967 fix(files): correctly handle nodes with snowflake ids
We introduced `id` instead of `fileid` to be always of type `string` to
allow snow flake ids. So we need to check the new attribute instead of
the legacy one.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-16 18:47:30 +01:00
Joas Schilling c826288435 Merge pull request #58974 from nextcloud/bugfix/noid/dont-count-mentions-in-markdown-code
fix(comments): Don't return mentions in markdown code (by default)
2026-03-16 15:33:43 +01:00
Benjamin Gaussorgues 24ce01d8f5 chore(quota): hide available space from error
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-03-16 14:49:11 +01:00
Joas Schilling 11959a1359 fix(comments): Don't return mentions in markdown code (by default)
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-16 11:49:07 +01:00
Joas Schilling b17d5180b2 Merge pull request #58959 from nextcloud/bugfix/spreed-16678/load-custom-app-order-earlier
fix(apporder): Load custom app order before resolving closures
2026-03-16 11:37:43 +01:00
Joas Schilling 46f61ca5e5 Merge pull request #58967 from nextcloud/bump/lognormalizer
build(deps): bump nextcloud/lognormalizer from 3.0.0 to 3.0.1
2026-03-16 10:12:25 +01:00
Joas Schilling f722f4648e build(deps): bump nextcloud/lognormalizer from 3.0.0 to 3.0.1
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-16 09:18:13 +01:00
Andy Scherzinger 91cfd7aded Merge pull request #58964 from nextcloud/automated/noid/-update-min-supported-desktop-version
chore: Update minimum supported desktop version to 3.1.81
2026-03-16 08:47:28 +01:00
Andy Scherzinger b865115cc8 Merge pull request #58966 from nextcloud/bugfix/noid/fix-SPDX-header
chore: Fix SPDX header
2026-03-16 08:47:04 +01:00
Joas Schilling 5f80f26799 chore: Fix SPDX header
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-16 08:38:16 +01:00
nextcloud-command bb4c9ecc0e chore: Update minimum supported desktop version
Signed-off-by: GitHub <noreply@github.com>
2026-03-16 00:46:58 +00:00
github-actions[bot] e48685600e Merge pull request #58483 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/paths-3.1.0
chore(deps): Bump @nextcloud/paths from 3.0.0 to 3.1.0 in /build/frontend-legacy
2026-03-16 00:37:53 +00:00
Ferdinand Thiessen cec23a0d83 test(cypress): clear state before user tests
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-16 01:22:45 +01:00
Nextcloud bot 1fdb54bdf5 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-16 00:20:15 +00:00
nextcloud-command 2dbd9dd381 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-15 23:52:06 +00:00
dependabot[bot] c968f1f3b3 chore(deps): Bump @nextcloud/paths from 3.0.0 to 3.1.0 in /build/frontend-legacy
Dependabot couldn't find the original pull request head commit, 7677d40c0b7896a45c8a5423e0851e4a4d0b4a10.
2026-03-15 23:49:49 +00:00
github-actions[bot] 7f6f29ea32 Merge pull request #58921 from nextcloud/dependabot/npm_and_yarn/nextcloud/password-confirmation-6.0.3
chore(deps): Bump @nextcloud/password-confirmation from 6.0.2 to 6.0.3
2026-03-15 20:53:37 +00:00
nextcloud-command 72cf9e01b6 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-15 18:43:59 +00:00
dependabot[bot] 93568366f4 chore(deps): Bump @nextcloud/password-confirmation from 6.0.2 to 6.0.3
Bumps [@nextcloud/password-confirmation](https://github.com/nextcloud-libraries/nextcloud-password-confirmation) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/compare/v6.0.2...6.0.3)

---
updated-dependencies:
- dependency-name: "@nextcloud/password-confirmation"
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 18:29:46 +00:00
github-actions[bot] 8ec12f3446 Merge pull request #58958 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/vue-8.37.0
chore(deps): Bump @nextcloud/vue from 8.36.0 to 8.37.0 in /build/frontend-legacy
2026-03-15 18:04:14 +00:00
nextcloud-command c2ab8a3e8c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-15 17:47:35 +00:00
nextcloud-command 5eec4fd69c refactor: Apply rector changes
Signed-off-by: GitHub <noreply@github.com>
2026-03-15 14:53:03 +00:00
Joas Schilling 58619b2a68 fix(apporder): Load custom app order before resolving closures
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-03-15 15:31:40 +01:00
dependabot[bot] 6791e95312 chore(deps): Bump @nextcloud/vue in /build/frontend-legacy
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.36.0 to 8.37.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v8.37.0/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.36.0...v8.37.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-version: 8.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 14:26:23 +00:00
dependabot[bot] 649f333c89 chore(deps-dev): Bump the vitest group across 2 directories with 3 updates
Bumps the vitest group with 1 update in the / directory: [@vitest/coverage-istanbul](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul).
Bumps the vitest group with 2 updates in the /build/frontend-legacy directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) and [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-istanbul` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/coverage-istanbul)

Updates `vitest` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

Updates `vitest` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

Updates `@vitest/coverage-v8` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-istanbul"
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 14:24:48 +00:00
github-actions[bot] 52801b995c Merge pull request #58953 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/libphonenumber-js-1.12.40
chore(deps): Bump libphonenumber-js from 1.12.38 to 1.12.40 in /build/frontend-legacy
2026-03-15 13:07:28 +00:00
github-actions[bot] 8e6ce46485 Merge pull request #58952 from nextcloud/dependabot/npm_and_yarn/jsdom-29.0.0
chore(deps-dev): Bump jsdom from 28.1.0 to 29.0.0
2026-03-15 13:50:54 +01:00
nextcloud-command 2997b0a53c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-15 12:15:38 +00:00
Andy Scherzinger 529b30eb04 Merge pull request #58922 from nextcloud/dependabot/npm_and_yarn/cypress-15.12.0
chore(deps-dev): Bump cypress from 15.11.0 to 15.12.0
2026-03-15 13:09:45 +01:00
dependabot[bot] 1e40bd0d33 chore(deps): Bump libphonenumber-js in /build/frontend-legacy
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.38 to 1.12.40.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.12.38...v1.12.40)

---
updated-dependencies:
- dependency-name: libphonenumber-js
  dependency-version: 1.12.40
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 11:10:26 +00:00
dependabot[bot] e961190912 chore(deps-dev): Bump jsdom from 28.1.0 to 29.0.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 28.1.0 to 29.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/v28.1.0...v29.0.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 11:10:04 +00:00
github-actions[bot] 4da2a1e2e1 Merge pull request #58775 from nextcloud/dependabot/npm_and_yarn/dompurify-3.3.2
chore(deps): Bump dompurify from 3.3.1 to 3.3.3
2026-03-15 06:16:57 +00:00
Nextcloud bot a10204b11b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-15 00:19:16 +00:00
nextcloud-command fceece9ba8 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-03-15 00:07:47 +00:00
dependabot[bot] a2144ab2f2 chore(deps): Bump dompurify from 3.3.1 to 3.3.2
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-14 23:49:35 +00:00
dependabot[bot] 44c8dae987 chore(deps-dev): Bump cypress from 15.11.0 to 15.12.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 15.11.0 to 15.12.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v15.11.0...v15.12.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-version: 15.12.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-14 02:05:18 +00:00
Côme Chilliet cc99dd8fd9 fix: Fix user in Tags class, do not depend upon session
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-13 15:13:40 +01:00
Benjamin Gaussorgues 232192c59c chore(build): update list of ignored files
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-03-13 13:10:07 +01:00
nfebe 25e7dd799e fix(sharing): Align userid config key in UserPlugin with Manager
UserPlugin reads `shareapi_restrict_user_enumeration_full_match_userid`
(no underscore) while Manager.php and the frontend both use
`shareapi_restrict_user_enumeration_full_match_user_id` (with underscore).

This mismatch causes the "disable exact match by user ID" admin setting
to have no effect on actual sharee search results.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2026-03-12 13:19:09 +01:00
Côme Chilliet e03d825062 chore: Update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 16:23:21 +01:00
Josh 7dfcf5afad chore(.htaccess): drop no-op QSA flag from RewriteRules
- For Apache `RewriteRule`, if the substitution (right side) has no `?` query part, the original query string is already preserved by default.
- So `QSA` adds nothing in these rules.

Note for the future: QSA will be needed if we ever add a query string on the right (substitution) side. We don't currently so this is just noise in the htaccess rules.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-11 10:57:53 -04:00
Côme Chilliet 504dc5142e chore: Un-deprecate IControllerMethodReflector as it’s now useful for attributes as well
It should be extended later to add methods to get attributes from
 reflection, and maybe a getter to the reflectionMethod object to avoid
 middlewares building their own.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 14:43:50 +01:00
Côme Chilliet d68face43f chore: Move away from deprecated method in TwoFactorMiddleware
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 14:39:40 +01:00
Côme Chilliet 91334643dc fix(tests): Adapt Middleware tests to API change
Removed a few tests rendered obsolete by the refactoring.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 14:27:45 +01:00
Côme Chilliet 447ee17759 fix: Remove code duplication by using the new method
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 11:36:01 +01:00
Côme Chilliet bd343a6e9e fix: Fix AuthorizedAdminSetting attribute behavior
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 11:25:31 +01:00
Côme Chilliet 520878338f fix: Move hasAnnotationOrAttribute to the reflector
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-11 11:16:26 +01:00
dependabot[bot] 629740d935 chore(deps-dev): Bump @zip.js/zip.js from 2.8.21 to 2.8.23
Bumps [@zip.js/zip.js](https://github.com/gildas-lormeau/zip.js) from 2.8.21 to 2.8.23.
- [Release notes](https://github.com/gildas-lormeau/zip.js/releases)
- [Commits](https://github.com/gildas-lormeau/zip.js/compare/v2.8.21...v2.8.23)

---
updated-dependencies:
- dependency-name: "@zip.js/zip.js"
  dependency-version: 2.8.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-07 02:05:10 +00:00
Salvatore Martire 101819821a feat: add oc-ownerid and oc-permissions headers on PUT DAV requests
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-02-09 10:47:57 +01:00
Salvatore Martire 62ab29960f refactor: extract logic to hide mounts and share information
The permission string for directories and files can contain M or S
depending if they are respectively coming from a mount or a share. This
information is not to be disclosed when the share is a public one.

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-02-09 10:47:57 +01:00
910 changed files with 10689 additions and 3978 deletions
+3 -3
View File
@@ -24,7 +24,7 @@ package.json @nextcloud/server-dependabot @next
package-lock.json @nextcloud/server-dependabot
# App maintainers
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @samin-z
/apps/cloud_federation_api/appinfo/info.xml @nfebe @mejo-
/apps/comments/appinfo/info.xml @edward-ly @sorbaugh
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
@@ -46,12 +46,12 @@ package-lock.json @nextcloud/server-dependabot
/apps/files_versions/appinfo/info.xml @artonge @icewind1991
/apps/oauth2/appinfo/info.xml @julien-nc @ChristophWurst
/apps/provisioning_api/appinfo/info.xml @provokateurin @nickvergessen
/apps/settings/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/settings/appinfo/info.xml @hweihwang @sorbaugh
/apps/sharebymail/appinfo/info.xml @Altahrim @skjnldsv
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/twofactor_backupcodes/appinfo/info.xml @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/updatenotification/appinfo/info.xml @enjeck @sorbaugh
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
+1 -1
View File
@@ -56,4 +56,4 @@ jobs:
- name: PHPUnit
uses: docker://ghcr.io/nextcloud/continuous-integration-php8.4-32bit:latest
with:
args: /bin/sh -c "composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness"
args: /bin/sh -c "composer run test -- --exclude-group PRIMARY-azure --exclude-group PRIMARY-s3 --exclude-group PRIMARY-swift --exclude-group Memcached --exclude-group Redis --exclude-group RoutingWeirdness"
+3 -6
View File
@@ -129,11 +129,10 @@
## Rule: Map /remote* --> /remote.php* including the query string
##
## Context:
## - XXX: `QSA` seems unnecessary (no-op) here (query string is passed by default when the replacement URI doesn't contain a query string)
## - XXX: Is this even used anymore? Seems a relic from <NC12
##
RewriteRule ^remote/(.*) remote.php [QSA,L]
RewriteRule ^remote/(.*) remote.php [L]
##
## Rule: Prevent access to non-public files
@@ -148,21 +147,19 @@
## - Intentionally excludes URIs used for HTTPS certificate verifications
## - RFC 8555 / ACME HTTP Challenges (acme-challenge)
## - File-based Validations (pki-validation)
## - XXX: `QSA` seems unnecessary (no-op) here (query string is passed by default when the replacement URI doesn't contain a query string)
## - XXX: Sometimes we are using `/index.php` and other times `index.php` as our replacement URI; this may be incorrect
##
RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]
RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [L]
##
## Rule: Map the ocm-provider handling to our main frontend controller (/index.php)
##
## Context:
## - XXX: `QSA` seems unnecessary (no-op) here (query string is passed by default when the replacement URI doesn't contain a query string)
## - XXX: Sometimes we are using `/index.php` and other times `index.php` as our replacement URI; this may be incorrect
##
RewriteRule ^ocm-provider/?$ index.php [QSA,L]
RewriteRule ^ocm-provider/?$ index.php [L]
##
## Rule: Prevent access to more non-public files
+6
View File
@@ -13,6 +13,7 @@
.gitmodules
.idea
.jshint
.jshintrc
.l10nignore
.mailmap
.nextcloudignore
@@ -32,7 +33,9 @@ SECURITY.md
codecov.yml
cs-fixer
csfixer
custom.d.ts
cypress
cypress.config.ts
eslint.config.js
flake.lock
flake.nix
@@ -44,6 +47,7 @@ rector
stylelint.config.js
tests
tsconfig.json
vite.config.ts
vitest.config.ts
window.d.ts
@@ -56,3 +60,5 @@ window.d.ts
/config/config.php
/contribute
/data
/openapi.json
/vendor-bin
+1 -1
View File
@@ -32,6 +32,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Einen Kommentar schreiben …"
},
"nplurals=2; plural=(n != 1);");
+1 -1
View File
@@ -30,6 +30,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Einen Kommentar schreiben …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1 -1
View File
@@ -32,6 +32,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Schreiben Sie einen Kommentar …"
"Write a comment …" : "Einen Kommentar schreiben …"
},
"nplurals=2; plural=(n != 1);");
+1 -1
View File
@@ -30,6 +30,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Schreiben Sie einen Kommentar …"
"Write a comment …" : "Einen Kommentar schreiben …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+9 -1
View File
@@ -10,20 +10,28 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} pakomentavo {file}",
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
"Files" : "Failai",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
"Edit comment" : "Taisyti komentarą",
"Delete comment" : "Ištrinti komentarą",
"Cancel edit" : "Atsisakyti taisymo",
"New comment" : "Naujas komentaras",
"Write a comment …" : "Rašyti komentarą ...",
"Post comment" : "Paskelbti komentarą",
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
"No more messages" : "Daugiau jokių pranešimų",
"Retry" : "Bandyti dar kartą",
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
"Comment" : "Komentaras",
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
"Comment deleted" : "Komentaras ištrintas",
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
"Write a comment …" : "Rašyti komentarą..."
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+9 -1
View File
@@ -8,20 +8,28 @@
"{author} commented on {file}" : "{author} pakomentavo {file}",
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
"Files" : "Failai",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
"Edit comment" : "Taisyti komentarą",
"Delete comment" : "Ištrinti komentarą",
"Cancel edit" : "Atsisakyti taisymo",
"New comment" : "Naujas komentaras",
"Write a comment …" : "Rašyti komentarą ...",
"Post comment" : "Paskelbti komentarą",
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
"No more messages" : "Daugiau jokių pranešimų",
"Retry" : "Bandyti dar kartą",
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
"Comment" : "Komentaras",
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
"Comment deleted" : "Komentaras ištrintas",
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
"Write a comment …" : "Rašyti komentarą..."
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
+3 -1
View File
@@ -2,6 +2,8 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Paskiausiai susisiekta",
"Contacts Interaction" : "Sąveika su adresatais"
"Contacts Interaction" : "Sąveika su adresatais",
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+3 -1
View File
@@ -1,5 +1,7 @@
{ "translations": {
"Recently contacted" : "Paskiausiai susisiekta",
"Contacts Interaction" : "Sąveika su adresatais"
"Contacts Interaction" : "Sąveika su adresatais",
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
+2
View File
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Skydelis",
"Dashboard app" : "Skydelio programėlė",
"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." : "Pradėkite dieną informuotai\n\n„Nextcloud“ ataskaitų sritis yra jūsų dienos atspirties taškas, kuriame pateikiama artėjančių susitikimų, skubių el. laiškų, pokalbių žinučių, gaunamų bilietų, naujausių tviterio žinučių ir daug daugiau apžvalga! Žmonės gali pridėti norimus valdiklius ir pakeisti foną pagal savo skonį.",
"Weather" : "Orai",
"Status" : "Būsena",
"Good morning" : "Labas rytas",
@@ -19,6 +20,7 @@ OC.L10N.register(
"Edit widgets" : "Taisyti valdiklius",
"Get more widgets from the App Store" : "Parsisiųsti įskiepių iš App Store",
"Weather service" : "Orų tarnyba",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Dėl jūsų privatumo, {productName} serveris jūsų vardu užklausė orų duomenis, todėl orų tarnyba negauna jokios asmeninės informacijos.",
"Weather data from Met.no" : "Orų duomenys iš Met.no",
"geocoding with Nominatim" : "geografinis kodavimas naudojant Nominatim",
"elevation data from OpenTopoData" : "aukščio duomenys iš OpenTopoData"
+2
View File
@@ -1,6 +1,7 @@
{ "translations": {
"Dashboard" : "Skydelis",
"Dashboard app" : "Skydelio programėlė",
"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." : "Pradėkite dieną informuotai\n\n„Nextcloud“ ataskaitų sritis yra jūsų dienos atspirties taškas, kuriame pateikiama artėjančių susitikimų, skubių el. laiškų, pokalbių žinučių, gaunamų bilietų, naujausių tviterio žinučių ir daug daugiau apžvalga! Žmonės gali pridėti norimus valdiklius ir pakeisti foną pagal savo skonį.",
"Weather" : "Orai",
"Status" : "Būsena",
"Good morning" : "Labas rytas",
@@ -17,6 +18,7 @@
"Edit widgets" : "Taisyti valdiklius",
"Get more widgets from the App Store" : "Parsisiųsti įskiepių iš App Store",
"Weather service" : "Orų tarnyba",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Dėl jūsų privatumo, {productName} serveris jūsų vardu užklausė orų duomenis, todėl orų tarnyba negauna jokios asmeninės informacijos.",
"Weather data from Met.no" : "Orų duomenys iš Met.no",
"geocoding with Nominatim" : "geografinis kodavimas naudojant Nominatim",
"elevation data from OpenTopoData" : "aukščio duomenys iš OpenTopoData"
@@ -210,6 +210,7 @@ return array(
'OCA\\DAV\\ConfigLexicon' => $baseDir . '/../lib/ConfigLexicon.php',
'OCA\\DAV\\Connector\\LegacyDAVACL' => $baseDir . '/../lib/Connector/LegacyDAVACL.php',
'OCA\\DAV\\Connector\\LegacyPublicAuth' => $baseDir . '/../lib/Connector/LegacyPublicAuth.php',
'OCA\\DAV\\Connector\\Sabre\\AddExtraHeadersPlugin' => $baseDir . '/../lib/Connector/Sabre/AddExtraHeadersPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => $baseDir . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\AppleQuirksPlugin' => $baseDir . '/../lib/Connector/Sabre/AppleQuirksPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\Auth' => $baseDir . '/../lib/Connector/Sabre/Auth.php',
@@ -225,6 +225,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\ConfigLexicon' => __DIR__ . '/..' . '/../lib/ConfigLexicon.php',
'OCA\\DAV\\Connector\\LegacyDAVACL' => __DIR__ . '/..' . '/../lib/Connector/LegacyDAVACL.php',
'OCA\\DAV\\Connector\\LegacyPublicAuth' => __DIR__ . '/..' . '/../lib/Connector/LegacyPublicAuth.php',
'OCA\\DAV\\Connector\\Sabre\\AddExtraHeadersPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AddExtraHeadersPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\AppleQuirksPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AppleQuirksPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\Auth' => __DIR__ . '/..' . '/../lib/Connector/Sabre/Auth.php',
+2
View File
@@ -236,6 +236,7 @@ OC.L10N.register(
"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",
"Failed to get size for : %1$s" : "Nepodařilo se získat velikost pro: %1$s",
"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",
@@ -252,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "Dokončeno %s",
"Due on %s by %s" : "Termín do %s od %s",
"Due on %s" : "Termín do %s",
"This is an example contact" : "Toto je kontakt pro ukázku",
"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." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
"Example event - open me!" : "Událost pro ukázku otevřete ji!",
"System Address Book" : "Systémový adresář kontaktů",
+2
View File
@@ -234,6 +234,7 @@
"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",
"Failed to get size for : %1$s" : "Nepodařilo se získat velikost pro: %1$s",
"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",
@@ -250,6 +251,7 @@
"Completed on %s" : "Dokončeno %s",
"Due on %s by %s" : "Termín do %s od %s",
"Due on %s" : "Termín do %s",
"This is an example contact" : "Toto je kontakt pro ukázku",
"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." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
"Example event - open me!" : "Událost pro ukázku otevřete ji!",
"System Address Book" : "Systémový adresář kontaktů",
+1
View File
@@ -253,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "Completed on %s",
"Due on %s by %s" : "Due on %s by %s",
"Due on %s" : "Due on %s",
"This is an example contact" : "This is an example contact",
"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." : "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.",
"Example event - open me!" : "Example event - open me!",
"System Address Book" : "System Address Book",
+1
View File
@@ -251,6 +251,7 @@
"Completed on %s" : "Completed on %s",
"Due on %s by %s" : "Due on %s by %s",
"Due on %s" : "Due on %s",
"This is an example contact" : "This is an example contact",
"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." : "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.",
"Example event - open me!" : "Example event - open me!",
"System Address Book" : "System Address Book",
+2
View File
@@ -236,6 +236,7 @@ OC.L10N.register(
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Impossible d'ouvrir le fichier : %1$s (%2$d), le fichier semble exister",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Impossible d'ouvrir le fichier : %1$s (%2$d), le fichier ne semble pas exister",
"Failed to get size for : %1$s" : "Impossible d'obtenir la taille pour : %1$s",
"Encryption not ready: %1$s" : "Chiffrement pas prêt : %1$s",
"Failed to open file: %1$s" : "Impossible d'ouvrir le fichier : %1$s",
"Failed to unlink: %1$s" : "Impossible de supprimer le lien :%1$s",
@@ -252,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "Terminé le %s",
"Due on %s by %s" : "Echéance le %s pour %s",
"Due on %s" : "Echéance le %s",
"This is an example contact" : "Ceci est un contact pour l'exemple",
"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." : "Bienvenue dans Nextcloud Calendar !\n\nCeci est un exemple d'événement. Découvrez la flexibilité de la planification avec Nextcloud Calendar en effectuant toutes les modifications que vous souhaitez !\n\nAvec Nextcloud Calendar, vous pouvez :\n- Créer, modifier et gérer des événements sans effort.\n- Créer plusieurs calendriers et les partager avec vos collègues, vos amis ou votre famille.\n- Vérifier vos disponibilités et afficher vos périodes d'indisponibilité à d'autres personnes.\n- Intégrer de manière transparente des applications et des appareils via CalDAV.\n- Personnaliser votre expérience : planifier des événements récurrents, ajuster les notifications et d'autres paramètres.",
"Example event - open me!" : "Exemple d'événement - ouvrez-moi !",
"System Address Book" : "Carnet d'adresses du système",
+2
View File
@@ -234,6 +234,7 @@
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Impossible d'ouvrir le fichier : %1$s (%2$d), le fichier semble exister",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Impossible d'ouvrir le fichier : %1$s (%2$d), le fichier ne semble pas exister",
"Failed to get size for : %1$s" : "Impossible d'obtenir la taille pour : %1$s",
"Encryption not ready: %1$s" : "Chiffrement pas prêt : %1$s",
"Failed to open file: %1$s" : "Impossible d'ouvrir le fichier : %1$s",
"Failed to unlink: %1$s" : "Impossible de supprimer le lien :%1$s",
@@ -250,6 +251,7 @@
"Completed on %s" : "Terminé le %s",
"Due on %s by %s" : "Echéance le %s pour %s",
"Due on %s" : "Echéance le %s",
"This is an example contact" : "Ceci est un contact pour l'exemple",
"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." : "Bienvenue dans Nextcloud Calendar !\n\nCeci est un exemple d'événement. Découvrez la flexibilité de la planification avec Nextcloud Calendar en effectuant toutes les modifications que vous souhaitez !\n\nAvec Nextcloud Calendar, vous pouvez :\n- Créer, modifier et gérer des événements sans effort.\n- Créer plusieurs calendriers et les partager avec vos collègues, vos amis ou votre famille.\n- Vérifier vos disponibilités et afficher vos périodes d'indisponibilité à d'autres personnes.\n- Intégrer de manière transparente des applications et des appareils via CalDAV.\n- Personnaliser votre expérience : planifier des événements récurrents, ajuster les notifications et d'autres paramètres.",
"Example event - open me!" : "Exemple d'événement - ouvrez-moi !",
"System Address Book" : "Carnet d'adresses du système",
+1
View File
@@ -253,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "Críochnaithe ar %s",
"Due on %s by %s" : "Dlite ar %s faoi %s",
"Due on %s" : "Dlite ar %s",
"This is an example contact" : "Seo sampla teagmhála",
"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." : "Fáilte go Féilire Nextcloud!\n\nSeo sampla imeachta - déan iniúchadh ar sholúbthacht na pleanála le Féilire Nextcloud trí aon eagarthóireacht is mian leat a dhéanamh!\n\nLe Féilire Nextcloud, is féidir leat:\n- Imeachtaí a chruthú, a chur in eagar agus a bhainistiú gan stró.\n- Ilfhéilirí a chruthú agus iad a roinnt le comhghleacaithe foirne, cairde nó teaghlach.\n- Infhaighteacht a sheiceáil agus do chuid amanna gnóthacha a thaispeáint do dhaoine eile.\n- Comhtháthú gan uaim le haipeanna agus gléasanna trí CalDAV.\n- Do thaithí a shaincheapadh: imeachtaí athfhillteacha a sceidealú, fógraí agus socruithe eile a choigeartú.",
"Example event - open me!" : "Imeacht shamplach - oscail mé!",
"System Address Book" : "Leabhar Seoltaí Córais",
+1
View File
@@ -251,6 +251,7 @@
"Completed on %s" : "Críochnaithe ar %s",
"Due on %s by %s" : "Dlite ar %s faoi %s",
"Due on %s" : "Dlite ar %s",
"This is an example contact" : "Seo sampla teagmhála",
"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." : "Fáilte go Féilire Nextcloud!\n\nSeo sampla imeachta - déan iniúchadh ar sholúbthacht na pleanála le Féilire Nextcloud trí aon eagarthóireacht is mian leat a dhéanamh!\n\nLe Féilire Nextcloud, is féidir leat:\n- Imeachtaí a chruthú, a chur in eagar agus a bhainistiú gan stró.\n- Ilfhéilirí a chruthú agus iad a roinnt le comhghleacaithe foirne, cairde nó teaghlach.\n- Infhaighteacht a sheiceáil agus do chuid amanna gnóthacha a thaispeáint do dhaoine eile.\n- Comhtháthú gan uaim le haipeanna agus gléasanna trí CalDAV.\n- Do thaithí a shaincheapadh: imeachtaí athfhillteacha a sceidealú, fógraí agus socruithe eile a choigeartú.",
"Example event - open me!" : "Imeacht shamplach - oscail mé!",
"System Address Book" : "Leabhar Seoltaí Córais",
+2
View File
@@ -236,6 +236,7 @@ OC.L10N.register(
"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",
"Failed to get size for : %1$s" : "Neuspjelo dohvaćanje veličine: %1$s",
"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",
@@ -252,6 +253,7 @@ OC.L10N.register(
"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",
"This is an example contact" : "Ovo je primjer kontakta",
"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",
+2
View File
@@ -234,6 +234,7 @@
"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",
"Failed to get size for : %1$s" : "Neuspjelo dohvaćanje veličine: %1$s",
"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",
@@ -250,6 +251,7 @@
"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",
"This is an example contact" : "Ovo je primjer kontakta",
"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",
+345
View File
@@ -0,0 +1,345 @@
OC.L10N.register(
"dav",
{
"Calendar" : "Kalendorius",
"Tasks" : "Užduotys",
"Personal" : "Asmeniniai",
"{actor} created calendar {calendar}" : "{actor} sukūrė kalendorių {calendar}",
"You created calendar {calendar}" : "Jūs sukūrėte kalendorių {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} ištrynė kalendorių {calendar}",
"You deleted calendar {calendar}" : "Jūs ištrynėte kalendorių {calendar}",
"{actor} updated calendar {calendar}" : "{actor} atnaujino kalendorių {calendar}",
"You updated calendar {calendar}" : "Jūs atnaujinote kalendorių {calendar}",
"{actor} restored calendar {calendar}" : "{actor} atkūrė kalendorių {calendar}",
"You restored calendar {calendar}" : "Jūs atkūrėte kalendorių {calendar}",
"You shared calendar {calendar} as public link" : "Jūs pradėjote bendrinti kalendorių {calendar} kaip viešąją nuorodą",
"You removed public link for calendar {calendar}" : "Jūs pašalinote viešąją nuorodą kalendoriui {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} pradėjo bendrinti su jumis kalendorių {calendar}",
"You shared calendar {calendar} with {user}" : "Jūs pradėjote bendrinti kalendorių {calendar} su {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} pradėjo bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} nustojo bendrinti su jumis kalendorių {calendar}",
"You unshared calendar {calendar} from {user}" : "Jūs nustojote bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} nustojo bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} nustojo bendrinti su savimi kalendorių {calendar}",
"You shared calendar {calendar} with group {group}" : "Jūs pradėjote bendrinti kalendorių {calendar} su grupe {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} pradėjo bendrinti kalendorių {calendar} su grupe {group}",
"You unshared calendar {calendar} from group {group}" : "Jūs nustojote bendrinti kalendorių {calendar} su grupe {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} nustojo bendrinti kalendorių {calendar} su grupe {group}",
"Untitled event" : "Įvykis be pavadinimo",
"{actor} created event {event} in calendar {calendar}" : "{actor} kalendoriuje {calendar} sukūrė įvykį {event}",
"You created event {event} in calendar {calendar}" : "Jūs kalendoriuje {calendar} sukūrėte įvykį {event}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} ištrynė įvykį {event} iš kalendoriaus {calendar}",
"You deleted event {event} from calendar {calendar}" : "Jūs ištrynėte įvykį {event} iš kalendoriaus {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} kalendoriuje {calendar} atnaujino įvykį {event}",
"You updated event {event} in calendar {calendar}" : "Jūs kalendoriuje {calendar} atnaujinote įvykį {event}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} perkėlė {event} įvykį iš {sourceCalendar} kalendoriaus į {targetCalendar} kalendorių",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Jūs perkėlėte {event} įvykį iš {sourceCalendar} kalendroriaus į {targetCalendar} kalendorių",
"{actor} restored event {event} of calendar {calendar}" : "{actor} kalendoriuje {calendar} atkūrė įvykį {event}",
"You restored event {event} of calendar {calendar}" : "Jūs kalendoriuje {calendar} atkūrėte įvykį {event}",
"Busy" : "Užimtas laikas",
"{actor} created to-do {todo} in list {calendar}" : "{actor} sukūrė {todo} darbų sąraše {calendar}",
"You created to-do {todo} in list {calendar}" : "Jūs sukūrėte {todo} darbų sąraše {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} pašalino {todo} darbą iš sąrašo {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Jūs ištrynėte {todo} darbus iš sąrašo {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} atnaujino {todo} darbą sąraše {calendar}",
"You updated to-do {todo} in list {calendar}" : "Jūs atnaujinote {todo} darbą sąraše {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} užbaigė {todo} darbą iš sąrašo {calendar}",
"You solved to-do {todo} in list {calendar}" : "Jūs užbaigėte {todo} darbą iš sąrašo {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} vėl pradėjo {todo} darbą iš sąrašo {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Jūs vėl pradėjote {todo} darbą iš sąrašo {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} perkėlė {todo} darbą iš {sourceCalendar} sąrašo į {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Jūs perkėlėte {todo} darbą iš {sourceCalendar} sąrašo į {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendorius, adresatai ir užduotys",
"A <strong>calendar</strong> was modified" : "<strong>Kalendorius</strong> buvo modifikuotas",
"A calendar <strong>event</strong> was modified" : "Kalendoriaus <strong>įvykis</strong> buvo modifikuotas",
"A calendar <strong>to-do</strong> was modified" : "Kalendoriaus <strong>darbų sąrašas</strong> buvo atnaujintas",
"Contact birthdays" : "Adresatų gimtadieniai",
"Death of %s" : "%s pabaiga",
"Untitled calendar" : "Kalendorius be pavadinimo",
"Calendar:" : "Kalendorius:",
"Date:" : "Data:",
"Where:" : "Kur:",
"Description:" : "Aprašas:",
"_%n year_::_%n years_" : ["%n metai","%n metai","%n metų","%n metai"],
"_%n month_::_%n months_" : ["%n mėnesis","%n mėnesiai","%n mėnesių","%n mėnesis"],
"_%n day_::_%n days_" : ["%n diena","%n dienos","%n dienų","%n diena"],
"_%n hour_::_%n hours_" : ["%n valanda","%n valandos","%n valandų","%n valanda"],
"_%n minute_::_%n minutes_" : ["%n minutė","%n minutės","%n minučių","%n minutė"],
"%s (in %s)" : "%s (po %s)",
"%s (%s ago)" : "%s (prieš %s)",
"Calendar: %s" : "Kalendorius: %s",
"Date: %s" : "Data: %s",
"Description: %s" : "Aprašas: %s",
"Where: %s" : "Kur: %s",
"%1$s via %2$s" : "%1$s per %2$s",
"In the past on %1$s for the entire day" : "Anksčiau %1$s visą dieną",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Per %n minutę %1$s visai dienai","Per %n minutes %1$s visai dienai","Per %n minučių %1$s visai dienai","Per %n minučių %1$s visai dienai"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Per %n valandą %1$s visai dienai","Per %n valandas %1$s visai dienai","Per %n valandų %1$s visai dienai","Per %n valandų %1$s visai dienai"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Per %n dieną %1$s visai dienai","Per %n dienas %1$s visai dienai","Per %n dienų %1$s visai dienai","Per %n dienų %1$s visai dienai"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Per %n savaitę %1$s visai dienai","Per %n savaites %1$s visai dienai","Per %n savaičių %1$s visai dienai","Per %n savaičių %1$s visai dienai"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Per %n mėnesį %1$s visai dienai","Per %n mėnesius %1$s visai dienai","Per %n mėnesių %1$s visai dienai","Per %n mėnesių %1$s visai dienai"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Per %n metus %1$s visai dienai","Per %n metus %1$s visai dienai","Per %n metų %1$s visai dienai","Per %n metų %1$s visai dienai"],
"In the past on %1$s between %2$s - %3$s" : "Anksčiau %1$s tarp %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_" : ["Per %n minutę %1$s tarp %2$s - %3$s","Per %n minutes %1$s tarp %2$s - %3$s","Per %n minučių %1$s tarp %2$s - %3$s","Per %n minučių %1$s tarp %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_" : ["Per %n valandą %1$s tarp %2$s - %3$s","Per %n valandas %1$s tarp %2$s - %3$s","Per %n valandų %1$s tarp %2$s - %3$s","Per %n valandų %1$s tarp %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_" : ["Per %n dieną %1$s tarp %2$s - %3$s","Per %n dienas %1$s tarp %2$s - %3$s","Per %n dienų %1$s tarp %2$s - %3$s","Per %n dienų %1$s tarp %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_" : ["Per %n savaitę %1$s tarp %2$s - %3$s","Per %n savaites %1$s tarp %2$s - %3$s","Per %n savaičių %1$s tarp %2$s - %3$s","Per %n savaičių %1$s tarp %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_" : ["Per %n mėnesį %1$s tarp %2$s ir %3$s","Per %n mėnesius %1$s tarp %2$s - %3$s","Per %n mėnesių %1$s tarp %2$s - %3$s","Per %n mėnesių %1$s tarp %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_" : ["Per %n metus %1$s tarp %2$s - %3$s","Per %n metus %1$s tarp %2$s - %3$s","Per %n metų %1$s tarp %2$s - %3$s","Per %n metų %1$s tarp %2$s - %3$s"],
"Could not generate when statement" : "Nepavyko sugeneruoti kada sakinio",
"Every Day for the entire day" : "Kiekvieną dieną visą dieną",
"Every Day for the entire day until %1$s" : "Kiekvieną dieną visą dieną iki %1$s",
"Every Day between %1$s - %2$s" : "Kiekvieną dieną tarp %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Kiekvieną dieną tarp %1$s - %2$s iki %3$s",
"Every %1$d Days for the entire day" : "Kiekvieną %1$d dieną visą dieną",
"Every %1$d Days for the entire day until %2$s" : "Kiekvieną %1$d dieną visą dieną iki %2$s",
"Every %1$d Days between %2$s - %3$s" : "Kiekvieną %1$d dieną tarp %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Kiekvieną %1$d dieną tarp %2$s - %3$s iki %4$s",
"Could not generate event recurrence statement" : "Nepavyko sugeneruoti įvykio pasikartojimo sakinio",
"Every Week on %1$s for the entire day" : "Kiekvieną savaitę %1$s visą dieną",
"Every Week on %1$s for the entire day until %2$s" : "Kiekvieną savaitę %1$s visą dieną iki %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Kiekvieną savaitę %1$s tarp %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Kiekvieną savaitę %1$s tarp %2$s - %3$s iki %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Kiekvieną %1$d savaitę %2$s visą dieną",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Kiekvieną %1$d savaitę %2$s visą dieną iki %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Kiekvieną %1$d savaitę %2$s tarp %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Kiekvieną %1$d savaitę %2$s tarp %3$s - %4$s iki %5$s",
"Every Month on the %1$s for the entire day" : "Kiekvieną mėnesį %1$s visą dieną",
"Every Month on the %1$s for the entire day until %2$s" : "Kiekvieną mėnesį %1$s visą dieną iki %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Kiekvieną mėnesį %1$s tarp %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Kiekvieną mėnesį %1$s tarp %2$s - %3$s iki %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Kiekvieną %1$d mėnesį %2$s visą dieną",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Kiekvieną %1$d mėnesį %2$s visą dieną iki %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Kiekvieną %1$d mėnesį %2$s tarp %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Kiekvieną %1$d mėnesį %2$s tarp %3$s - %4$s iki %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Kiekvienais metais %1$s , %2$s visą dieną",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Kiekvienais metais %1$s , %2$s visą dieną iki %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Kiekvienais metais %1$s , %2$s tarp %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Kiekvienais metais %1$s , %2$s tarp %3$s - %4$s iki %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Kiekvienais %1$d metais %2$s, %3$s visą dieną",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Kiekvienais %1$d metais %2$s , %3$s visą dieną iki %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Kiekvienais %1$d metais %2$s , %3$s tarp %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Kiekvienais %1$d metais %2$s , %3$s tarp %4$s - %5$s iki %6$s",
"On specific dates for the entire day until %1$s" : "Konkrečiomis datomis visą dieną iki %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Konkrečiomis datomis tarp %1$s - %2$s iki %3$s",
"In the past on %1$s" : "Praeityje %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["Per %n minutę %1$s","Per %n minutes %1$s","Per %n minučių %1$s","Per %n minučių %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["Per %n valandą %1$s","Per %n valandas %1$s","Per %n valandų %1$s","Per %n valandų %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["Per %n dieną %1$s","Per %n dienas %1$s","Per %n dienų %1$s","Per %n dienų %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["Per %n savaitę %1$s","Per %n savaites %1$s","Per %n savaičių %1$s","Per %n savaičių %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["Per %n mėnesį %1$s","Per %n mėnesius %1$s","Per %n mėnesių %1$s","Per %n mėnesių %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["Per %n metus %1$s","Per %n metus %1$s","Per %n metų %1$s","Per %n metų %1$s"],
"In the past on %1$s then on %2$s" : "Anksčiau %1$s tuomet %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Per %n minutę %1$s tuomet %2$s","Per %n minutes %1$s tuomet %2$s","Per %n minučių %1$s tuomet %2$s","Per %n minučių %1$s tuomet %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Per %n valandą %1$s tuomet %2$s","Per %n valandas %1$s tuomet %2$s","Per %n valandų %1$s tuomet %2$s","Per %n valandų %1$s tuomet %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Per %n dieną %1$s tuomet %2$s","Per %n dienas %1$s tuomet %2$s","Per %n dienų %1$s tuomet %2$s","Per %n dienų %1$s tuomet %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Per %n savaitę %1$s tuomet %2$s","Per %n savaites %1$s tuomet %2$s","Per %n savaičių %1$s tuomet %2$s","Per %n savaičių %1$s tuomet %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Per %n mėnesį %1$s tuomet %2$s","Per %n mėnesius %1$s tuomet %2$s","Per %n mėnesių %1$s tuomet %2$s","Per %n mėnesių %1$s tuomet %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Per %n metus %1$s tuomet %2$s","Per %n metus %1$s tuomet %2$s","Per %n metų %1$s tuomet %2$s","Per %n metų %1$s tuomet %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Anksčiau %1$s tuomet %2$s ir %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_" : ["Per %n minutę %1$s tuomet %2$s ir %3$s","Per %n minutes %1$s tuomet %2$s ir %3$s","Per %n minučių %1$s tuomet %2$s ir %3$s","Per %n minučių %1$s tuomet %2$s ir %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_" : ["Per %n valandą %1$s tuomet %2$s ir %3$s","Per %n valandas %1$s tuomet %2$s ir %3$s","Per %n valandų %1$s tuomet %2$s ir %3$s","Per %n valandų %1$s tuomet %2$s ir %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_" : ["Per %n dieną %1$s tuomet %2$s ir %3$s","Per %n dienas %1$s tuomet %2$s ir %3$s","Per %n dienų %1$s tuomet %2$s ir %3$s","Per %n dienų %1$s tuomet %2$s ir %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_" : ["Per %n savaitę %1$s tuomet %2$s ir %3$s","Per %n savaites %1$s tuomet %2$s ir %3$s","Per %n savaičių %1$s tuomet %2$s ir %3$s","Per %n savaičių %1$s tuomet %2$s ir %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_" : ["Per %n mėnesį %1$s tuomet %2$s ir %3$s","Per %n mėnesius %1$s tuomet %2$s ir %3$s","Per %n mėnesių %1$s tuomet %2$s ir %3$s","Per %n mėnesių %1$s tuomet %2$s ir %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_" : ["Per %n metus %1$s tuomet %2$s ir %3$s","Per %n metus %1$s tuomet %2$s ir %3$s","Per %n metų %1$s tuomet %2$s ir %3$s","Per %n metų %1$s tuomet %2$s ir %3$s"],
"Could not generate next recurrence statement" : "Nepavyko sugeneruoti kito pasikartojimo sakinio",
"Cancelled: %1$s" : "Atšaukta: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" buvo atšauktas",
"Re: %1$s" : "Dėl: %1$s",
"%1$s has accepted your invitation" : "%1$s priėmė jūsų kvietimą",
"%1$s has tentatively accepted your invitation" : "%1$s preliminariai priėmė jūsų kvietimą",
"%1$s has declined your invitation" : "%1$s atmetė jūsų kvietimą",
"%1$s has responded to your invitation" : "%1$s atsakė į jūsų kvietimą",
"Invitation updated: %1$s" : "Kvietimas atnaujintas: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s atnaujino įvykį \"%2$s\"",
"Invitation: %1$s" : "Pakvietimas: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s norėtų jus pakviesti į \"%2$s\"",
"Organizer:" : "Organizatorius:",
"Attendees:" : "Kviestiniai:",
"Title:" : "Pavadinimas:",
"When:" : "Kada:",
"Location:" : "Vieta:",
"Link:" : "Nuoroda:",
"Occurring:" : "Pasitaiko:",
"Accept" : "Priimti",
"Decline" : "Atmesti",
"More options …" : "Daugiau parinkčių…",
"More options at %s" : "Daugiau parinkčių %s",
"Monday" : "Pirmadienis",
"Tuesday" : "Antradienis",
"Wednesday" : "Trečiadienis",
"Thursday" : "Ketvirtadienis",
"Friday" : "Penktadienis",
"Saturday" : "Šeštadienis",
"Sunday" : "Sekmadienis",
"January" : "Sausis",
"February" : "Vasaris",
"March" : "Kovas",
"April" : "Balandis",
"May" : "Gegužė",
"June" : "Birželis",
"July" : "Liepa",
"August" : "Rugpjūtis",
"September" : "Rugsėjis",
"October" : "Spalis",
"November" : "Lapkritis",
"December" : "Gruodis",
"First" : "Pirmas",
"Second" : "Antras",
"Third" : "Trečias",
"Fourth" : "Ketvirtas",
"Fifth" : "Penktas",
"Last" : "Paskutinis",
"Second Last" : "Antras paskutinis",
"Third Last" : "Trečias paskutinis",
"Fourth Last" : "Ketvirtasis paskutinis",
"Fifth Last" : "Penktas paskutinis",
"Contacts" : "Adresatai",
"{actor} created address book {addressbook}" : "{actor} sukūrė adresų knygą {addressbook}",
"You created address book {addressbook}" : "Jūs sukūrėte adresų knygą {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} ištrynė adresų knygą {addressbook}",
"You deleted address book {addressbook}" : "Jūs ištrynėte adresų knygą {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} atnaujino adresų knygą {addressbook}",
"You updated address book {addressbook}" : "Jūs atnaujinote adresų knygą {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} pasidalino su jumis {addressbook} adresų knyga",
"You shared address book {addressbook} with {user}" : "Jūs pasidalinote {addressbook} adresų knyga su {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} pasidalino {addressbook} adresų knyga su {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} atšaukė su jumis bendrinamą {addressbook} adresų knygą",
"You unshared address book {addressbook} from {user}" : "Jūs atšaukėte bendrinamą {addressbook} adresų knygą su {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} atšaukė {addressbook} bendrinamą adresų knygą su {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} atšaukė savo paties bendrinamą {addressbook} adresų knygą",
"You shared address book {addressbook} with group {group}" : "Jūs bendrinote {addressbook} adresų knygą su {group} grupe",
"{actor} shared address book {addressbook} with group {group}" : "{actor} bendrino {addressbook} adresų knygą su {group} grupe",
"You unshared address book {addressbook} from group {group}" : "Jūs atšaukėte bendrinamą {addressbook}adresų knygą su {group} grupe",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} atšaukė bendrinamą {addressbook} adresų knygą su {group} grupe",
"{actor} created contact {card} in address book {addressbook}" : "{actor} sukūrė {card} kontaktą {addressbook} adresų knygoje",
"You created contact {card} in address book {addressbook}" : "Jūs sukūrėte {card} kontaktą {addressbook} adresų knygoje",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ištrynė {card} kontaktų iš {addressbook} adresų knygos",
"You deleted contact {card} from address book {addressbook}" : "Jūs ištrynėte {card} kontaktą iš {addressbook} adresų knygos",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} atnaujino {card} kontaktą {addressbook} adresų knygoje",
"You updated contact {card} in address book {addressbook}" : "Jūs atnaujinote {card} kontaktą {addressbook} adresų knygoje",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktas</strong> arba <strong>adresų knyga</strong> buvo atnaujinta",
"System address book disabled" : "Sistemos adresų knyga išjungta",
"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}" : "Sistemos kontaktų adresų knyga buvo automatiškai išjungta atnaujinimo metu. Tai reiškia, kad adresų knyga nebebus pasiekiama vartotojams kontaktų programėlėje ar kituose klientuose. Sistemos kontaktų adresų knyga buvo išjungta, nes joje esančių kontaktų skaičius viršijo maksimalų rekomenduojamą kontaktų skaičių. Šis apribojimas nustatytas siekiant išvengti našumo problemų. Sistemos adresų knygą galite iš naujo įjungti naudodami šią komandą {command}.",
"Accounts" : "Paskyros",
"System address book which holds all accounts" : "Sistemos adresų knyga, kurioje saugomos visos paskyros",
"File is not updatable: %1$s" : "Failo atnaujinamas negalimas: %1$s",
"Failed to get storage for file" : "Nepavyko gauti failo saugyklos vietos",
"Could not write to final file, canceled by hook" : "Nepavyko įrašyti į galutinį failą, atšaukta naudojant interceptorių",
"Could not write file contents" : "Nepavyko įrašyti failo turinio",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Klaida kopijuojant failą į paskirties vietą (nukopijuota: %1$s, numatomas failo dydis: %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." : "Tikėtasi %1$s failo dydžio, bet nuskaityta (iš „Nextcloud“ kliento) ir įrašyta (į „Nextcloud“ saugyklą) %2$s. Gali būti tinklo problema siuntėjo pusėje arba problema rašant į saugyklą serverio pusėje.",
"Could not rename part file to final file, canceled by hook" : "Nepavyko pervadinti dalinio failo į galutinį failą, atšaukta naudojant interceptorių",
"Could not rename part file to final file" : "Nepavyko pervadinti dalinio failo į galutinį failą",
"Failed to check file size: %1$s" : "Nepavyko patikrinti failo dydžio: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nepavyko atidaryti failo: %1$s (%2$d), atrodo, kad failas egzistuoja",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nepavyko atidaryti failo: %1$s (%2$d), atrodo, kad failo nėra",
"Failed to get size for : %1$s" : "Nepavyko gauti %1$s dydžio",
"Encryption not ready: %1$s" : "Šifravimas neparuoštas: %1$s",
"Failed to open file: %1$s" : "Nepavyko atverti failo: %1$s",
"Failed to unlink: %1$s" : "Nepavyko atsieti: %1$s",
"Failed to write file contents: %1$s" : "Nepavyko įrašyti failo turinio: %1$s",
"File not found: %1$s" : "Failas nerastas: %1$s",
"Invalid target path" : "Netinkamas tikslinis kelias",
"System is in maintenance mode." : "Sistema yra techninės priežiūros veiksenoje.",
"Upgrade needed" : "Reikalingas naujinimas",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Norint naudoti CalDAV ir CardDAV su iOS/macOS, jūsų %s turi būti sukonfigūruota taip, kad naudotų HTTPS.",
"Configures a CalDAV account" : "Konfigūruoja CalDAV paskyrą",
"Configures a CardDAV account" : "Konfigūruoja CardDAV paskyrą",
"Events" : "Įvykiai",
"Untitled task" : "Užduotis be pavadinimo",
"Completed on %s" : "Pabaigta %s",
"Due on %s by %s" : "Laukiamas %s iki %s",
"Due on %s" : "Laukiamas %s",
"This is an example contact" : "Tai yra kontakto pavyzdys",
"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." : "Sveiki atvykę į „Nextcloud“ kalendorių!\n\nTai pavyzdinis įrašas išbandykite planavimo lankstumą su „Nextcloud“ kalendoriumi, atlikdami bet kokius norimus pakeitimus!\n\nSu „Nextcloud“ kalendoriumi galite:\n- Nesunkiai kurti, redaguoti ir valdyti įvykius.\n- Kurti kelis kalendorius ir bendrinti juos su komandos nariais, draugais ar šeima.\n- Patikrinti prieinamumą ir rodyti savo užimtumo laiką kitiems.\n- Sklandžiai integruotis su programėlėmis ir įrenginiais per „CalDAV“.\n- Tinkinti savo patirtį: planuoti pasikartojančius įvykius, koreguoti pranešimus ir kitus nustatymus.",
"Example event - open me!" : "Pavyzdinis įvykis atverk mane!",
"System Address Book" : "Sistemos adresų knyga",
"The system address book contains contact information for all users in your instance." : "Sistemos adresų knygoje yra visų jūsų turimų vartotojų kontaktinė informacija.",
"Enable System Address Book" : "Įjungti sistemos adresų knygą",
"DAV system address book" : "DAV sistemos adresų knyga",
"No outstanding DAV system address book sync." : "Nėra jokių nepatvirtintų DAV sistemos adresų knygos sinchronizavimo.",
"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\"." : "DAV sistemos adresų knygos sinchronizavimas dar nebuvo paleistas, nes jūsų egzemplioriuje yra daugiau nei 1000 vartotojų arba įvyko klaida. Paleiskite jį rankiniu būdu, iškviečiant „occ dav:sync-system-addressbook“.",
"DAV system address book size" : "DAV sistemos adresų knygos dydis",
"The system address book is disabled" : "Sistemos adresų knyga išjungta",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Sistemos adresų knyga įjungta ir joje yra daugiau kontaktų nei nustatyta riba, t.y. %d kontaktų",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Sistemos adresų knyga įjungta ir joje yra mažiau kontaktų nei nustatyta riba, t.y. %d kontaktų",
"WebDAV endpoint" : "WebDAV galutinis taškas",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nepavyko patikrinti, ar jūsų žiniatinklio serveris tinkamai nustatytas leisti failų sinchronizavimą per WebDAV. Patikrinkite rankiniu būdu.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Jūsų svetainės serveris nėra tinkamai sukonfiguruotas, Failų sinchronizavimas negalimas, nes neveikia WebDAV interfeisas.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Jūsų žiniatinklio serveris tinkamai sukonfigūruotas, kad būtų galima sinchronizuoti failus per WebDAV.",
"Calendars including events, details and attendees" : "Kalendoriai su įvykiais, informacija ir dalyviais",
"Migrated calendar (%1$s)" : "Perkeltas kalendorius (%1$s)",
"Contacts and groups" : "Adresatai ir grupės",
"WebDAV" : "WebDAV",
"Absence saved" : "Išsaugotas nebuvimas",
"Failed to save your absence settings" : "Nepavyko išsaugoti jūsų nebuvimo nustatymų",
"Absence cleared" : "Nebuvimas pašalintas",
"Failed to clear your absence settings" : "Nepavyko išvalyti nedalyvavimo nustatymų",
"First day" : "Pirma diena",
"Last day (inclusive)" : "Paskutinė diena (imtinai)",
"Out of office replacement (optional)" : "Nebuvimo biure pakeitimas (neprivaloma)",
"Name of the replacement" : "Pakeitimo pavadinimas",
"Short absence status" : "Trumpo nebuvimo būsena",
"Long absence Message" : "Ilgo nebuvimo žinutė",
"Save" : "Įrašyti",
"Disable absence" : "Išjungti nebuvimą",
"Failed to load availability" : "Nepavyko įkelti prieinamumo",
"Saved availability" : "Išsaugotas pasiekiamumas",
"Failed to save availability" : "Nepavyko išsaugoti pasiekiamumo",
"to" : "iki",
"Delete slot" : "Ištrinti laiko tarpą",
"No working hours set" : "Nenustatyta jokių darbo valandų",
"Add slot" : "Pridėti laiko tarpą",
"Weekdays" : "Šiokiadieniai",
"Pick a start time for {dayName}" : "Pasirinkite {dayName} pradžios laiką",
"Pick a end time for {dayName}" : "Pasirinkite {dayName} pabaigos laiką",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatiškai nustatyti naudotojo būseną į „Netrukdyti“, kai jis nėra pasiekiamas, kad būtų nutildyti visi pranešimai.",
"Cancel" : "Atsisakyti",
"Import" : "Importuoti",
"Error while saving settings" : "Klaida įrašant nustatymus",
"Contact reset successfully" : "Kontaktas sėkmingai nustatytas iš naujo",
"Error while resetting contact" : "Iš naujo nustatant kontaktą įvyko klaida",
"Contact imported successfully" : "Kontaktas sėkmingai importuotas",
"Error while importing contact" : "Importuojant kontaktą įvyko klaida",
"Import contact" : "Importuoti kontaktą",
"Reset to default" : "Atstatyti į numatytąjį",
"Import contacts" : "Importuoti kontaktus",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importuojant naują .vcf failą, esamas numatytasis kontaktas bus ištrintas ir pakeistas nauju. Ar norite tęsti?",
"Failed to save example event creation setting" : "Nepavyko išsaugoti pavyzdinio įvykio kūrimo nustatymo",
"Failed to upload the example event" : "Nepavyko įkelti pavyzdinio įvykio",
"Custom example event was saved successfully" : "Pasirinktinis pavyzdinis įvykis sėkmingai išsaugotas",
"Failed to delete the custom example event" : "Nepavyko ištrinti pasirinktinio pavyzdžio įvykio",
"Custom example event was deleted successfully" : "Pasirinktinis pavyzdinis įvykis sėkmingai ištrintas",
"Import calendar event" : "Importuoti kalendoriaus įvykį",
"Uploading a new event will overwrite the existing one." : "Įkėlus naują įvykį, esamas bus perrašytas.",
"Upload event" : "Įkelti įvykį",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Taip pat įsidiekite {calendarappstoreopen}Kalendoriaus programėlę{linkclose} arba sinchronizavimui {calendardocopen}prijunkite savo darbalaukį ir mobilųjį ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Įsitikinkite, kad tinkamai nusistatėte {emailopen}el. pašto serverį{linkclose}.",
"Calendar server" : "Kalendoriaus serveris",
"Send invitations to attendees" : "Siųsti pakvietimus kviestiniams",
"Automatically generate a birthday calendar" : "Automatiškai sukurti gimtadienių kalendorių",
"Birthday calendars will be generated by a background job." : "Gimtadienių kalendoriai bus sukurti foninės užduoties.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Tai reiškia, kad jie nebus matomi iš karto įjungus, o pasirodys tik po kurio laiko.",
"Send notifications for events" : "Siųsti įvykių pranešimus",
"Notifications are sent via background jobs, so these must occur often enough." : "Pranešimai yra siunčiami per fonines užduotis, todėl jos privalo būti vykdomos gana dažnai.",
"Send reminder notifications to calendar sharees as well" : "Siųskite priminimus ir tiems, kurie bendrina kalendorių",
"Reminders are always sent to organizers and attendees." : "Priminimai visada siunčiami organizatoriams ir dalyviams.",
"Enable notifications for events via push" : "Įjungti pranešimus apie įvykius per tiesioginius pranešimus",
"Example content" : "Turinio pavyzdys",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Pavyzdinis turinys skirtas „Nextcloud“ funkcijoms demonstruoti. Numatytasis turinys pateikiamas kartu su „Nextcloud“ ir gali būti pakeistas pasirinktiniu turiniu.",
"Availability" : "Pasiekiamumas",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Jei sukonfigūruosite savo darbo valandas, kiti žmonės, rezervuodami susitikimą, matys, kada esate išvykę.",
"Absence" : "Nebuvimas",
"Configure your next absence period." : "Konfigūruokite kitą nebuvimo laikotarpį.",
"There was an error updating your attendance status." : "Atnaujinant lankomumo būseną įvyko klaida.",
"Please contact the organizer directly." : "Prašome susisiekti su organizatoriumi tiesiogiai.",
"Are you accepting the invitation?" : "Ar priimate pakvietimą?",
"Tentative" : "Preliminarus",
"Your attendance was updated successfully." : "Jūsų lankomumas sėkmingai atnaujintas.",
"No results." : "Jokių rezultatų.",
"Start typing." : "Start typing."
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+343
View File
@@ -0,0 +1,343 @@
{ "translations": {
"Calendar" : "Kalendorius",
"Tasks" : "Užduotys",
"Personal" : "Asmeniniai",
"{actor} created calendar {calendar}" : "{actor} sukūrė kalendorių {calendar}",
"You created calendar {calendar}" : "Jūs sukūrėte kalendorių {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} ištrynė kalendorių {calendar}",
"You deleted calendar {calendar}" : "Jūs ištrynėte kalendorių {calendar}",
"{actor} updated calendar {calendar}" : "{actor} atnaujino kalendorių {calendar}",
"You updated calendar {calendar}" : "Jūs atnaujinote kalendorių {calendar}",
"{actor} restored calendar {calendar}" : "{actor} atkūrė kalendorių {calendar}",
"You restored calendar {calendar}" : "Jūs atkūrėte kalendorių {calendar}",
"You shared calendar {calendar} as public link" : "Jūs pradėjote bendrinti kalendorių {calendar} kaip viešąją nuorodą",
"You removed public link for calendar {calendar}" : "Jūs pašalinote viešąją nuorodą kalendoriui {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} pradėjo bendrinti su jumis kalendorių {calendar}",
"You shared calendar {calendar} with {user}" : "Jūs pradėjote bendrinti kalendorių {calendar} su {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} pradėjo bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} nustojo bendrinti su jumis kalendorių {calendar}",
"You unshared calendar {calendar} from {user}" : "Jūs nustojote bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} nustojo bendrinti kalendorių {calendar} su {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} nustojo bendrinti su savimi kalendorių {calendar}",
"You shared calendar {calendar} with group {group}" : "Jūs pradėjote bendrinti kalendorių {calendar} su grupe {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} pradėjo bendrinti kalendorių {calendar} su grupe {group}",
"You unshared calendar {calendar} from group {group}" : "Jūs nustojote bendrinti kalendorių {calendar} su grupe {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} nustojo bendrinti kalendorių {calendar} su grupe {group}",
"Untitled event" : "Įvykis be pavadinimo",
"{actor} created event {event} in calendar {calendar}" : "{actor} kalendoriuje {calendar} sukūrė įvykį {event}",
"You created event {event} in calendar {calendar}" : "Jūs kalendoriuje {calendar} sukūrėte įvykį {event}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} ištrynė įvykį {event} iš kalendoriaus {calendar}",
"You deleted event {event} from calendar {calendar}" : "Jūs ištrynėte įvykį {event} iš kalendoriaus {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} kalendoriuje {calendar} atnaujino įvykį {event}",
"You updated event {event} in calendar {calendar}" : "Jūs kalendoriuje {calendar} atnaujinote įvykį {event}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} perkėlė {event} įvykį iš {sourceCalendar} kalendoriaus į {targetCalendar} kalendorių",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Jūs perkėlėte {event} įvykį iš {sourceCalendar} kalendroriaus į {targetCalendar} kalendorių",
"{actor} restored event {event} of calendar {calendar}" : "{actor} kalendoriuje {calendar} atkūrė įvykį {event}",
"You restored event {event} of calendar {calendar}" : "Jūs kalendoriuje {calendar} atkūrėte įvykį {event}",
"Busy" : "Užimtas laikas",
"{actor} created to-do {todo} in list {calendar}" : "{actor} sukūrė {todo} darbų sąraše {calendar}",
"You created to-do {todo} in list {calendar}" : "Jūs sukūrėte {todo} darbų sąraše {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} pašalino {todo} darbą iš sąrašo {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Jūs ištrynėte {todo} darbus iš sąrašo {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} atnaujino {todo} darbą sąraše {calendar}",
"You updated to-do {todo} in list {calendar}" : "Jūs atnaujinote {todo} darbą sąraše {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} užbaigė {todo} darbą iš sąrašo {calendar}",
"You solved to-do {todo} in list {calendar}" : "Jūs užbaigėte {todo} darbą iš sąrašo {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} vėl pradėjo {todo} darbą iš sąrašo {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Jūs vėl pradėjote {todo} darbą iš sąrašo {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} perkėlė {todo} darbą iš {sourceCalendar} sąrašo į {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Jūs perkėlėte {todo} darbą iš {sourceCalendar} sąrašo į {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendorius, adresatai ir užduotys",
"A <strong>calendar</strong> was modified" : "<strong>Kalendorius</strong> buvo modifikuotas",
"A calendar <strong>event</strong> was modified" : "Kalendoriaus <strong>įvykis</strong> buvo modifikuotas",
"A calendar <strong>to-do</strong> was modified" : "Kalendoriaus <strong>darbų sąrašas</strong> buvo atnaujintas",
"Contact birthdays" : "Adresatų gimtadieniai",
"Death of %s" : "%s pabaiga",
"Untitled calendar" : "Kalendorius be pavadinimo",
"Calendar:" : "Kalendorius:",
"Date:" : "Data:",
"Where:" : "Kur:",
"Description:" : "Aprašas:",
"_%n year_::_%n years_" : ["%n metai","%n metai","%n metų","%n metai"],
"_%n month_::_%n months_" : ["%n mėnesis","%n mėnesiai","%n mėnesių","%n mėnesis"],
"_%n day_::_%n days_" : ["%n diena","%n dienos","%n dienų","%n diena"],
"_%n hour_::_%n hours_" : ["%n valanda","%n valandos","%n valandų","%n valanda"],
"_%n minute_::_%n minutes_" : ["%n minutė","%n minutės","%n minučių","%n minutė"],
"%s (in %s)" : "%s (po %s)",
"%s (%s ago)" : "%s (prieš %s)",
"Calendar: %s" : "Kalendorius: %s",
"Date: %s" : "Data: %s",
"Description: %s" : "Aprašas: %s",
"Where: %s" : "Kur: %s",
"%1$s via %2$s" : "%1$s per %2$s",
"In the past on %1$s for the entire day" : "Anksčiau %1$s visą dieną",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Per %n minutę %1$s visai dienai","Per %n minutes %1$s visai dienai","Per %n minučių %1$s visai dienai","Per %n minučių %1$s visai dienai"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Per %n valandą %1$s visai dienai","Per %n valandas %1$s visai dienai","Per %n valandų %1$s visai dienai","Per %n valandų %1$s visai dienai"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Per %n dieną %1$s visai dienai","Per %n dienas %1$s visai dienai","Per %n dienų %1$s visai dienai","Per %n dienų %1$s visai dienai"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Per %n savaitę %1$s visai dienai","Per %n savaites %1$s visai dienai","Per %n savaičių %1$s visai dienai","Per %n savaičių %1$s visai dienai"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Per %n mėnesį %1$s visai dienai","Per %n mėnesius %1$s visai dienai","Per %n mėnesių %1$s visai dienai","Per %n mėnesių %1$s visai dienai"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Per %n metus %1$s visai dienai","Per %n metus %1$s visai dienai","Per %n metų %1$s visai dienai","Per %n metų %1$s visai dienai"],
"In the past on %1$s between %2$s - %3$s" : "Anksčiau %1$s tarp %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_" : ["Per %n minutę %1$s tarp %2$s - %3$s","Per %n minutes %1$s tarp %2$s - %3$s","Per %n minučių %1$s tarp %2$s - %3$s","Per %n minučių %1$s tarp %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_" : ["Per %n valandą %1$s tarp %2$s - %3$s","Per %n valandas %1$s tarp %2$s - %3$s","Per %n valandų %1$s tarp %2$s - %3$s","Per %n valandų %1$s tarp %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_" : ["Per %n dieną %1$s tarp %2$s - %3$s","Per %n dienas %1$s tarp %2$s - %3$s","Per %n dienų %1$s tarp %2$s - %3$s","Per %n dienų %1$s tarp %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_" : ["Per %n savaitę %1$s tarp %2$s - %3$s","Per %n savaites %1$s tarp %2$s - %3$s","Per %n savaičių %1$s tarp %2$s - %3$s","Per %n savaičių %1$s tarp %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_" : ["Per %n mėnesį %1$s tarp %2$s ir %3$s","Per %n mėnesius %1$s tarp %2$s - %3$s","Per %n mėnesių %1$s tarp %2$s - %3$s","Per %n mėnesių %1$s tarp %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_" : ["Per %n metus %1$s tarp %2$s - %3$s","Per %n metus %1$s tarp %2$s - %3$s","Per %n metų %1$s tarp %2$s - %3$s","Per %n metų %1$s tarp %2$s - %3$s"],
"Could not generate when statement" : "Nepavyko sugeneruoti kada sakinio",
"Every Day for the entire day" : "Kiekvieną dieną visą dieną",
"Every Day for the entire day until %1$s" : "Kiekvieną dieną visą dieną iki %1$s",
"Every Day between %1$s - %2$s" : "Kiekvieną dieną tarp %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Kiekvieną dieną tarp %1$s - %2$s iki %3$s",
"Every %1$d Days for the entire day" : "Kiekvieną %1$d dieną visą dieną",
"Every %1$d Days for the entire day until %2$s" : "Kiekvieną %1$d dieną visą dieną iki %2$s",
"Every %1$d Days between %2$s - %3$s" : "Kiekvieną %1$d dieną tarp %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Kiekvieną %1$d dieną tarp %2$s - %3$s iki %4$s",
"Could not generate event recurrence statement" : "Nepavyko sugeneruoti įvykio pasikartojimo sakinio",
"Every Week on %1$s for the entire day" : "Kiekvieną savaitę %1$s visą dieną",
"Every Week on %1$s for the entire day until %2$s" : "Kiekvieną savaitę %1$s visą dieną iki %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Kiekvieną savaitę %1$s tarp %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Kiekvieną savaitę %1$s tarp %2$s - %3$s iki %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Kiekvieną %1$d savaitę %2$s visą dieną",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Kiekvieną %1$d savaitę %2$s visą dieną iki %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Kiekvieną %1$d savaitę %2$s tarp %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Kiekvieną %1$d savaitę %2$s tarp %3$s - %4$s iki %5$s",
"Every Month on the %1$s for the entire day" : "Kiekvieną mėnesį %1$s visą dieną",
"Every Month on the %1$s for the entire day until %2$s" : "Kiekvieną mėnesį %1$s visą dieną iki %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Kiekvieną mėnesį %1$s tarp %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Kiekvieną mėnesį %1$s tarp %2$s - %3$s iki %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Kiekvieną %1$d mėnesį %2$s visą dieną",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Kiekvieną %1$d mėnesį %2$s visą dieną iki %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Kiekvieną %1$d mėnesį %2$s tarp %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Kiekvieną %1$d mėnesį %2$s tarp %3$s - %4$s iki %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Kiekvienais metais %1$s , %2$s visą dieną",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Kiekvienais metais %1$s , %2$s visą dieną iki %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Kiekvienais metais %1$s , %2$s tarp %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Kiekvienais metais %1$s , %2$s tarp %3$s - %4$s iki %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Kiekvienais %1$d metais %2$s, %3$s visą dieną",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Kiekvienais %1$d metais %2$s , %3$s visą dieną iki %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Kiekvienais %1$d metais %2$s , %3$s tarp %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Kiekvienais %1$d metais %2$s , %3$s tarp %4$s - %5$s iki %6$s",
"On specific dates for the entire day until %1$s" : "Konkrečiomis datomis visą dieną iki %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Konkrečiomis datomis tarp %1$s - %2$s iki %3$s",
"In the past on %1$s" : "Praeityje %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["Per %n minutę %1$s","Per %n minutes %1$s","Per %n minučių %1$s","Per %n minučių %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["Per %n valandą %1$s","Per %n valandas %1$s","Per %n valandų %1$s","Per %n valandų %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["Per %n dieną %1$s","Per %n dienas %1$s","Per %n dienų %1$s","Per %n dienų %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["Per %n savaitę %1$s","Per %n savaites %1$s","Per %n savaičių %1$s","Per %n savaičių %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["Per %n mėnesį %1$s","Per %n mėnesius %1$s","Per %n mėnesių %1$s","Per %n mėnesių %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["Per %n metus %1$s","Per %n metus %1$s","Per %n metų %1$s","Per %n metų %1$s"],
"In the past on %1$s then on %2$s" : "Anksčiau %1$s tuomet %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Per %n minutę %1$s tuomet %2$s","Per %n minutes %1$s tuomet %2$s","Per %n minučių %1$s tuomet %2$s","Per %n minučių %1$s tuomet %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Per %n valandą %1$s tuomet %2$s","Per %n valandas %1$s tuomet %2$s","Per %n valandų %1$s tuomet %2$s","Per %n valandų %1$s tuomet %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Per %n dieną %1$s tuomet %2$s","Per %n dienas %1$s tuomet %2$s","Per %n dienų %1$s tuomet %2$s","Per %n dienų %1$s tuomet %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Per %n savaitę %1$s tuomet %2$s","Per %n savaites %1$s tuomet %2$s","Per %n savaičių %1$s tuomet %2$s","Per %n savaičių %1$s tuomet %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Per %n mėnesį %1$s tuomet %2$s","Per %n mėnesius %1$s tuomet %2$s","Per %n mėnesių %1$s tuomet %2$s","Per %n mėnesių %1$s tuomet %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Per %n metus %1$s tuomet %2$s","Per %n metus %1$s tuomet %2$s","Per %n metų %1$s tuomet %2$s","Per %n metų %1$s tuomet %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Anksčiau %1$s tuomet %2$s ir %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_" : ["Per %n minutę %1$s tuomet %2$s ir %3$s","Per %n minutes %1$s tuomet %2$s ir %3$s","Per %n minučių %1$s tuomet %2$s ir %3$s","Per %n minučių %1$s tuomet %2$s ir %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_" : ["Per %n valandą %1$s tuomet %2$s ir %3$s","Per %n valandas %1$s tuomet %2$s ir %3$s","Per %n valandų %1$s tuomet %2$s ir %3$s","Per %n valandų %1$s tuomet %2$s ir %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_" : ["Per %n dieną %1$s tuomet %2$s ir %3$s","Per %n dienas %1$s tuomet %2$s ir %3$s","Per %n dienų %1$s tuomet %2$s ir %3$s","Per %n dienų %1$s tuomet %2$s ir %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_" : ["Per %n savaitę %1$s tuomet %2$s ir %3$s","Per %n savaites %1$s tuomet %2$s ir %3$s","Per %n savaičių %1$s tuomet %2$s ir %3$s","Per %n savaičių %1$s tuomet %2$s ir %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_" : ["Per %n mėnesį %1$s tuomet %2$s ir %3$s","Per %n mėnesius %1$s tuomet %2$s ir %3$s","Per %n mėnesių %1$s tuomet %2$s ir %3$s","Per %n mėnesių %1$s tuomet %2$s ir %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_" : ["Per %n metus %1$s tuomet %2$s ir %3$s","Per %n metus %1$s tuomet %2$s ir %3$s","Per %n metų %1$s tuomet %2$s ir %3$s","Per %n metų %1$s tuomet %2$s ir %3$s"],
"Could not generate next recurrence statement" : "Nepavyko sugeneruoti kito pasikartojimo sakinio",
"Cancelled: %1$s" : "Atšaukta: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" buvo atšauktas",
"Re: %1$s" : "Dėl: %1$s",
"%1$s has accepted your invitation" : "%1$s priėmė jūsų kvietimą",
"%1$s has tentatively accepted your invitation" : "%1$s preliminariai priėmė jūsų kvietimą",
"%1$s has declined your invitation" : "%1$s atmetė jūsų kvietimą",
"%1$s has responded to your invitation" : "%1$s atsakė į jūsų kvietimą",
"Invitation updated: %1$s" : "Kvietimas atnaujintas: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s atnaujino įvykį \"%2$s\"",
"Invitation: %1$s" : "Pakvietimas: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s norėtų jus pakviesti į \"%2$s\"",
"Organizer:" : "Organizatorius:",
"Attendees:" : "Kviestiniai:",
"Title:" : "Pavadinimas:",
"When:" : "Kada:",
"Location:" : "Vieta:",
"Link:" : "Nuoroda:",
"Occurring:" : "Pasitaiko:",
"Accept" : "Priimti",
"Decline" : "Atmesti",
"More options …" : "Daugiau parinkčių…",
"More options at %s" : "Daugiau parinkčių %s",
"Monday" : "Pirmadienis",
"Tuesday" : "Antradienis",
"Wednesday" : "Trečiadienis",
"Thursday" : "Ketvirtadienis",
"Friday" : "Penktadienis",
"Saturday" : "Šeštadienis",
"Sunday" : "Sekmadienis",
"January" : "Sausis",
"February" : "Vasaris",
"March" : "Kovas",
"April" : "Balandis",
"May" : "Gegužė",
"June" : "Birželis",
"July" : "Liepa",
"August" : "Rugpjūtis",
"September" : "Rugsėjis",
"October" : "Spalis",
"November" : "Lapkritis",
"December" : "Gruodis",
"First" : "Pirmas",
"Second" : "Antras",
"Third" : "Trečias",
"Fourth" : "Ketvirtas",
"Fifth" : "Penktas",
"Last" : "Paskutinis",
"Second Last" : "Antras paskutinis",
"Third Last" : "Trečias paskutinis",
"Fourth Last" : "Ketvirtasis paskutinis",
"Fifth Last" : "Penktas paskutinis",
"Contacts" : "Adresatai",
"{actor} created address book {addressbook}" : "{actor} sukūrė adresų knygą {addressbook}",
"You created address book {addressbook}" : "Jūs sukūrėte adresų knygą {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} ištrynė adresų knygą {addressbook}",
"You deleted address book {addressbook}" : "Jūs ištrynėte adresų knygą {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} atnaujino adresų knygą {addressbook}",
"You updated address book {addressbook}" : "Jūs atnaujinote adresų knygą {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} pasidalino su jumis {addressbook} adresų knyga",
"You shared address book {addressbook} with {user}" : "Jūs pasidalinote {addressbook} adresų knyga su {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} pasidalino {addressbook} adresų knyga su {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} atšaukė su jumis bendrinamą {addressbook} adresų knygą",
"You unshared address book {addressbook} from {user}" : "Jūs atšaukėte bendrinamą {addressbook} adresų knygą su {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} atšaukė {addressbook} bendrinamą adresų knygą su {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} atšaukė savo paties bendrinamą {addressbook} adresų knygą",
"You shared address book {addressbook} with group {group}" : "Jūs bendrinote {addressbook} adresų knygą su {group} grupe",
"{actor} shared address book {addressbook} with group {group}" : "{actor} bendrino {addressbook} adresų knygą su {group} grupe",
"You unshared address book {addressbook} from group {group}" : "Jūs atšaukėte bendrinamą {addressbook}adresų knygą su {group} grupe",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} atšaukė bendrinamą {addressbook} adresų knygą su {group} grupe",
"{actor} created contact {card} in address book {addressbook}" : "{actor} sukūrė {card} kontaktą {addressbook} adresų knygoje",
"You created contact {card} in address book {addressbook}" : "Jūs sukūrėte {card} kontaktą {addressbook} adresų knygoje",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ištrynė {card} kontaktų iš {addressbook} adresų knygos",
"You deleted contact {card} from address book {addressbook}" : "Jūs ištrynėte {card} kontaktą iš {addressbook} adresų knygos",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} atnaujino {card} kontaktą {addressbook} adresų knygoje",
"You updated contact {card} in address book {addressbook}" : "Jūs atnaujinote {card} kontaktą {addressbook} adresų knygoje",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktas</strong> arba <strong>adresų knyga</strong> buvo atnaujinta",
"System address book disabled" : "Sistemos adresų knyga išjungta",
"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}" : "Sistemos kontaktų adresų knyga buvo automatiškai išjungta atnaujinimo metu. Tai reiškia, kad adresų knyga nebebus pasiekiama vartotojams kontaktų programėlėje ar kituose klientuose. Sistemos kontaktų adresų knyga buvo išjungta, nes joje esančių kontaktų skaičius viršijo maksimalų rekomenduojamą kontaktų skaičių. Šis apribojimas nustatytas siekiant išvengti našumo problemų. Sistemos adresų knygą galite iš naujo įjungti naudodami šią komandą {command}.",
"Accounts" : "Paskyros",
"System address book which holds all accounts" : "Sistemos adresų knyga, kurioje saugomos visos paskyros",
"File is not updatable: %1$s" : "Failo atnaujinamas negalimas: %1$s",
"Failed to get storage for file" : "Nepavyko gauti failo saugyklos vietos",
"Could not write to final file, canceled by hook" : "Nepavyko įrašyti į galutinį failą, atšaukta naudojant interceptorių",
"Could not write file contents" : "Nepavyko įrašyti failo turinio",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Klaida kopijuojant failą į paskirties vietą (nukopijuota: %1$s, numatomas failo dydis: %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." : "Tikėtasi %1$s failo dydžio, bet nuskaityta (iš „Nextcloud“ kliento) ir įrašyta (į „Nextcloud“ saugyklą) %2$s. Gali būti tinklo problema siuntėjo pusėje arba problema rašant į saugyklą serverio pusėje.",
"Could not rename part file to final file, canceled by hook" : "Nepavyko pervadinti dalinio failo į galutinį failą, atšaukta naudojant interceptorių",
"Could not rename part file to final file" : "Nepavyko pervadinti dalinio failo į galutinį failą",
"Failed to check file size: %1$s" : "Nepavyko patikrinti failo dydžio: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nepavyko atidaryti failo: %1$s (%2$d), atrodo, kad failas egzistuoja",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nepavyko atidaryti failo: %1$s (%2$d), atrodo, kad failo nėra",
"Failed to get size for : %1$s" : "Nepavyko gauti %1$s dydžio",
"Encryption not ready: %1$s" : "Šifravimas neparuoštas: %1$s",
"Failed to open file: %1$s" : "Nepavyko atverti failo: %1$s",
"Failed to unlink: %1$s" : "Nepavyko atsieti: %1$s",
"Failed to write file contents: %1$s" : "Nepavyko įrašyti failo turinio: %1$s",
"File not found: %1$s" : "Failas nerastas: %1$s",
"Invalid target path" : "Netinkamas tikslinis kelias",
"System is in maintenance mode." : "Sistema yra techninės priežiūros veiksenoje.",
"Upgrade needed" : "Reikalingas naujinimas",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Norint naudoti CalDAV ir CardDAV su iOS/macOS, jūsų %s turi būti sukonfigūruota taip, kad naudotų HTTPS.",
"Configures a CalDAV account" : "Konfigūruoja CalDAV paskyrą",
"Configures a CardDAV account" : "Konfigūruoja CardDAV paskyrą",
"Events" : "Įvykiai",
"Untitled task" : "Užduotis be pavadinimo",
"Completed on %s" : "Pabaigta %s",
"Due on %s by %s" : "Laukiamas %s iki %s",
"Due on %s" : "Laukiamas %s",
"This is an example contact" : "Tai yra kontakto pavyzdys",
"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." : "Sveiki atvykę į „Nextcloud“ kalendorių!\n\nTai pavyzdinis įrašas išbandykite planavimo lankstumą su „Nextcloud“ kalendoriumi, atlikdami bet kokius norimus pakeitimus!\n\nSu „Nextcloud“ kalendoriumi galite:\n- Nesunkiai kurti, redaguoti ir valdyti įvykius.\n- Kurti kelis kalendorius ir bendrinti juos su komandos nariais, draugais ar šeima.\n- Patikrinti prieinamumą ir rodyti savo užimtumo laiką kitiems.\n- Sklandžiai integruotis su programėlėmis ir įrenginiais per „CalDAV“.\n- Tinkinti savo patirtį: planuoti pasikartojančius įvykius, koreguoti pranešimus ir kitus nustatymus.",
"Example event - open me!" : "Pavyzdinis įvykis atverk mane!",
"System Address Book" : "Sistemos adresų knyga",
"The system address book contains contact information for all users in your instance." : "Sistemos adresų knygoje yra visų jūsų turimų vartotojų kontaktinė informacija.",
"Enable System Address Book" : "Įjungti sistemos adresų knygą",
"DAV system address book" : "DAV sistemos adresų knyga",
"No outstanding DAV system address book sync." : "Nėra jokių nepatvirtintų DAV sistemos adresų knygos sinchronizavimo.",
"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\"." : "DAV sistemos adresų knygos sinchronizavimas dar nebuvo paleistas, nes jūsų egzemplioriuje yra daugiau nei 1000 vartotojų arba įvyko klaida. Paleiskite jį rankiniu būdu, iškviečiant „occ dav:sync-system-addressbook“.",
"DAV system address book size" : "DAV sistemos adresų knygos dydis",
"The system address book is disabled" : "Sistemos adresų knyga išjungta",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Sistemos adresų knyga įjungta ir joje yra daugiau kontaktų nei nustatyta riba, t.y. %d kontaktų",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Sistemos adresų knyga įjungta ir joje yra mažiau kontaktų nei nustatyta riba, t.y. %d kontaktų",
"WebDAV endpoint" : "WebDAV galutinis taškas",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nepavyko patikrinti, ar jūsų žiniatinklio serveris tinkamai nustatytas leisti failų sinchronizavimą per WebDAV. Patikrinkite rankiniu būdu.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Jūsų svetainės serveris nėra tinkamai sukonfiguruotas, Failų sinchronizavimas negalimas, nes neveikia WebDAV interfeisas.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Jūsų žiniatinklio serveris tinkamai sukonfigūruotas, kad būtų galima sinchronizuoti failus per WebDAV.",
"Calendars including events, details and attendees" : "Kalendoriai su įvykiais, informacija ir dalyviais",
"Migrated calendar (%1$s)" : "Perkeltas kalendorius (%1$s)",
"Contacts and groups" : "Adresatai ir grupės",
"WebDAV" : "WebDAV",
"Absence saved" : "Išsaugotas nebuvimas",
"Failed to save your absence settings" : "Nepavyko išsaugoti jūsų nebuvimo nustatymų",
"Absence cleared" : "Nebuvimas pašalintas",
"Failed to clear your absence settings" : "Nepavyko išvalyti nedalyvavimo nustatymų",
"First day" : "Pirma diena",
"Last day (inclusive)" : "Paskutinė diena (imtinai)",
"Out of office replacement (optional)" : "Nebuvimo biure pakeitimas (neprivaloma)",
"Name of the replacement" : "Pakeitimo pavadinimas",
"Short absence status" : "Trumpo nebuvimo būsena",
"Long absence Message" : "Ilgo nebuvimo žinutė",
"Save" : "Įrašyti",
"Disable absence" : "Išjungti nebuvimą",
"Failed to load availability" : "Nepavyko įkelti prieinamumo",
"Saved availability" : "Išsaugotas pasiekiamumas",
"Failed to save availability" : "Nepavyko išsaugoti pasiekiamumo",
"to" : "iki",
"Delete slot" : "Ištrinti laiko tarpą",
"No working hours set" : "Nenustatyta jokių darbo valandų",
"Add slot" : "Pridėti laiko tarpą",
"Weekdays" : "Šiokiadieniai",
"Pick a start time for {dayName}" : "Pasirinkite {dayName} pradžios laiką",
"Pick a end time for {dayName}" : "Pasirinkite {dayName} pabaigos laiką",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatiškai nustatyti naudotojo būseną į „Netrukdyti“, kai jis nėra pasiekiamas, kad būtų nutildyti visi pranešimai.",
"Cancel" : "Atsisakyti",
"Import" : "Importuoti",
"Error while saving settings" : "Klaida įrašant nustatymus",
"Contact reset successfully" : "Kontaktas sėkmingai nustatytas iš naujo",
"Error while resetting contact" : "Iš naujo nustatant kontaktą įvyko klaida",
"Contact imported successfully" : "Kontaktas sėkmingai importuotas",
"Error while importing contact" : "Importuojant kontaktą įvyko klaida",
"Import contact" : "Importuoti kontaktą",
"Reset to default" : "Atstatyti į numatytąjį",
"Import contacts" : "Importuoti kontaktus",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importuojant naują .vcf failą, esamas numatytasis kontaktas bus ištrintas ir pakeistas nauju. Ar norite tęsti?",
"Failed to save example event creation setting" : "Nepavyko išsaugoti pavyzdinio įvykio kūrimo nustatymo",
"Failed to upload the example event" : "Nepavyko įkelti pavyzdinio įvykio",
"Custom example event was saved successfully" : "Pasirinktinis pavyzdinis įvykis sėkmingai išsaugotas",
"Failed to delete the custom example event" : "Nepavyko ištrinti pasirinktinio pavyzdžio įvykio",
"Custom example event was deleted successfully" : "Pasirinktinis pavyzdinis įvykis sėkmingai ištrintas",
"Import calendar event" : "Importuoti kalendoriaus įvykį",
"Uploading a new event will overwrite the existing one." : "Įkėlus naują įvykį, esamas bus perrašytas.",
"Upload event" : "Įkelti įvykį",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Taip pat įsidiekite {calendarappstoreopen}Kalendoriaus programėlę{linkclose} arba sinchronizavimui {calendardocopen}prijunkite savo darbalaukį ir mobilųjį ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Įsitikinkite, kad tinkamai nusistatėte {emailopen}el. pašto serverį{linkclose}.",
"Calendar server" : "Kalendoriaus serveris",
"Send invitations to attendees" : "Siųsti pakvietimus kviestiniams",
"Automatically generate a birthday calendar" : "Automatiškai sukurti gimtadienių kalendorių",
"Birthday calendars will be generated by a background job." : "Gimtadienių kalendoriai bus sukurti foninės užduoties.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Tai reiškia, kad jie nebus matomi iš karto įjungus, o pasirodys tik po kurio laiko.",
"Send notifications for events" : "Siųsti įvykių pranešimus",
"Notifications are sent via background jobs, so these must occur often enough." : "Pranešimai yra siunčiami per fonines užduotis, todėl jos privalo būti vykdomos gana dažnai.",
"Send reminder notifications to calendar sharees as well" : "Siųskite priminimus ir tiems, kurie bendrina kalendorių",
"Reminders are always sent to organizers and attendees." : "Priminimai visada siunčiami organizatoriams ir dalyviams.",
"Enable notifications for events via push" : "Įjungti pranešimus apie įvykius per tiesioginius pranešimus",
"Example content" : "Turinio pavyzdys",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Pavyzdinis turinys skirtas „Nextcloud“ funkcijoms demonstruoti. Numatytasis turinys pateikiamas kartu su „Nextcloud“ ir gali būti pakeistas pasirinktiniu turiniu.",
"Availability" : "Pasiekiamumas",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Jei sukonfigūruosite savo darbo valandas, kiti žmonės, rezervuodami susitikimą, matys, kada esate išvykę.",
"Absence" : "Nebuvimas",
"Configure your next absence period." : "Konfigūruokite kitą nebuvimo laikotarpį.",
"There was an error updating your attendance status." : "Atnaujinant lankomumo būseną įvyko klaida.",
"Please contact the organizer directly." : "Prašome susisiekti su organizatoriumi tiesiogiai.",
"Are you accepting the invitation?" : "Ar priimate pakvietimą?",
"Tentative" : "Preliminarus",
"Your attendance was updated successfully." : "Jūsų lankomumas sėkmingai atnaujintas.",
"No results." : "Jokių rezultatų.",
"Start typing." : "Start typing."
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
+1
View File
@@ -253,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
"This is an example contact" : "Bu bir kişi örneğidir",
"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." : "Nextcloud Takvim uygulamasına hoş geldiniz!\n\nBu bir örnek etkinliktir. İstediğiniz düzenlemeleri yaparak Nextcloud Takvim ile planlamanın esnekliğini keşfedin!\n\nNextcloud Takvim ile şunları yapabilirsiniz:\n- Etkinlikleri kolayca oluşturabilir, düzenleyebilir ve yönetebilirsiniz.\n- Birden fazla takvim oluşturabilir ve bunları takım arkadaşlarınız, arkadaşlarınız veya ailenizle paylaşabilirsiniz.\n- Uygunluğunuzu kontrol edebilir ve yoğun zamanlarınızı başkalarına gösterebilirsiniz.\n- CalDAV aracılığıyla uygulamaları ve aygıtları sorunsuz bir şekilde bütünleştirebilirsiniz.\n- Deneyiminizi özelleştirebilirsiniz: Yinelenen etkinlikler planlayabilir, bildirimleri ve diğer ayarları ayarlayabilirsiniz.",
"Example event - open me!" : "Örnek etkinlik. Beni aç!",
"System Address Book" : "Sistem adres defteri",
+1
View File
@@ -251,6 +251,7 @@
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
"This is an example contact" : "Bu bir kişi örneğidir",
"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." : "Nextcloud Takvim uygulamasına hoş geldiniz!\n\nBu bir örnek etkinliktir. İstediğiniz düzenlemeleri yaparak Nextcloud Takvim ile planlamanın esnekliğini keşfedin!\n\nNextcloud Takvim ile şunları yapabilirsiniz:\n- Etkinlikleri kolayca oluşturabilir, düzenleyebilir ve yönetebilirsiniz.\n- Birden fazla takvim oluşturabilir ve bunları takım arkadaşlarınız, arkadaşlarınız veya ailenizle paylaşabilirsiniz.\n- Uygunluğunuzu kontrol edebilir ve yoğun zamanlarınızı başkalarına gösterebilirsiniz.\n- CalDAV aracılığıyla uygulamaları ve aygıtları sorunsuz bir şekilde bütünleştirebilirsiniz.\n- Deneyiminizi özelleştirebilirsiniz: Yinelenen etkinlikler planlayabilir, bildirimleri ve diğer ayarları ayarlayabilirsiniz.",
"Example event - open me!" : "Örnek etkinlik. Beni aç!",
"System Address Book" : "Sistem adres defteri",
+2
View File
@@ -236,6 +236,7 @@ OC.L10N.register(
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "无法打开文件:%1$s%2$d),文件似乎不存在",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "无法打开文件:%1$s%2$d),文件似乎不存在",
"Failed to get size for : %1$s" : "无法获取以下项目的大小:%1$s",
"Encryption not ready: %1$s" : "加密不可用:%1$s",
"Failed to open file: %1$s" : "打开文件失败:%1$s",
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
@@ -252,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于 %s,在 %s 之前",
"Due on %s" : "到期于 %s",
"This is an example contact" : "这是一个示例联系人",
"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." : "欢迎使用 Nextcloud 日历!\n\n这是一个示例事件——探索使用 Nextcloud 日历进行规划的灵活性,进行任何您想要的编辑!\n\n使用 Nextcloud 日历,您可以:\n- 轻松创建、编辑和管理事件。\n- 创建多个日历并与队友、朋友或家人共享。\n- 查看空闲时间并向他人显示您的忙碌时间。\n- 通过 CalDAV 与应用和设备无缝集成。\n- 自定义您的体验:安排重复事件、调整通知和其他设置。",
"Example event - open me!" : "示例事件——打开我!",
"System Address Book" : "系统通讯录",
+2
View File
@@ -234,6 +234,7 @@
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "无法打开文件:%1$s%2$d),文件似乎不存在",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "无法打开文件:%1$s%2$d),文件似乎不存在",
"Failed to get size for : %1$s" : "无法获取以下项目的大小:%1$s",
"Encryption not ready: %1$s" : "加密不可用:%1$s",
"Failed to open file: %1$s" : "打开文件失败:%1$s",
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
@@ -250,6 +251,7 @@
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于 %s,在 %s 之前",
"Due on %s" : "到期于 %s",
"This is an example contact" : "这是一个示例联系人",
"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." : "欢迎使用 Nextcloud 日历!\n\n这是一个示例事件——探索使用 Nextcloud 日历进行规划的灵活性,进行任何您想要的编辑!\n\n使用 Nextcloud 日历,您可以:\n- 轻松创建、编辑和管理事件。\n- 创建多个日历并与队友、朋友或家人共享。\n- 查看空闲时间并向他人显示您的忙碌时间。\n- 通过 CalDAV 与应用和设备无缝集成。\n- 自定义您的体验:安排重复事件、调整通知和其他设置。",
"Example event - open me!" : "示例事件——打开我!",
"System Address Book" : "系统通讯录",
+1
View File
@@ -253,6 +253,7 @@ OC.L10N.register(
"Completed on %s" : "完成於 %s",
"Due on %s by %s" : "完成日期為 %s %s",
"Due on %s" : "完成日期 %s",
"This is an example contact" : "此為示例聯絡人",
"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." : "歡迎使用 Nextcloud 日曆!\n\n這是範例事件 - 使用 Nextcloud 日曆進行任何編輯,探索規劃的彈性!\n\n使用 Nextcloud 日曆,您可以:\n- 毫不費力地建立、編輯與管理活動。\n- 建立多個日曆,並與同事、朋友或家人分享。\n- 檢查可得性,並向他人顯示您的忙碌時間。\n- 透過 CalDAV 與應用程式與裝置無縫整合。\n- 自訂您的體驗:排定定期活動、調整通知與其他設定。",
"Example event - open me!" : "範例活動 - 打開我!",
"System Address Book" : "系統通訊錄",
+1
View File
@@ -251,6 +251,7 @@
"Completed on %s" : "完成於 %s",
"Due on %s by %s" : "完成日期為 %s %s",
"Due on %s" : "完成日期 %s",
"This is an example contact" : "此為示例聯絡人",
"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." : "歡迎使用 Nextcloud 日曆!\n\n這是範例事件 - 使用 Nextcloud 日曆進行任何編輯,探索規劃的彈性!\n\n使用 Nextcloud 日曆,您可以:\n- 毫不費力地建立、編輯與管理活動。\n- 建立多個日曆,並與同事、朋友或家人分享。\n- 檢查可得性,並向他人顯示您的忙碌時間。\n- 透過 CalDAV 與應用程式與裝置無縫整合。\n- 自訂您的體驗:排定定期活動、調整通知與其他設定。",
"Example event - open me!" : "範例活動 - 打開我!",
"System Address Book" : "系統通訊錄",
+1 -1
View File
@@ -76,7 +76,7 @@ class BulkUploadPlugin extends ServerPlugin {
'error' => false,
'etag' => $node->getETag(),
'fileid' => DavUtil::getDavFileId($node->getId()),
'permissions' => DavUtil::getDavPermissions($node),
'permissions' => DavUtil::getDavPermissions($node, $node->getParent()),
];
} catch (\Exception $e) {
$this->logger->error($e->getMessage(), ['path' => $headers['x-file-path']]);
+7 -3
View File
@@ -190,7 +190,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
];
/** @var array parameters to index */
public static array $indexParameters = [
private const INDEXED_PARAMETERS = [
'ATTENDEE' => ['CN'],
'ORGANIZER' => ['CN'],
];
@@ -2062,6 +2062,10 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$outerQuery->andWhere($outerQuery->expr()->eq('uid', $outerQuery->createNamedParameter($options['uid'])));
}
if (isset($options['uri'])) {
$outerQuery->andWhere($outerQuery->expr()->eq('uri', $outerQuery->createNamedParameter($options['uri'])));
}
if (!empty($options['types'])) {
$or = [];
foreach ($options['types'] as $type) {
@@ -3382,9 +3386,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$query->executeStatement();
}
if (array_key_exists($property->name, self::$indexParameters)) {
if (array_key_exists($property->name, self::INDEXED_PARAMETERS)) {
$parameters = $property->parameters();
$indexedParametersForProperty = self::$indexParameters[$property->name];
$indexedParametersForProperty = self::INDEXED_PARAMETERS[$property->name];
foreach ($parameters as $key => $value) {
if (in_array($key, $indexedParametersForProperty)) {
+9 -2
View File
@@ -16,6 +16,7 @@ use OCP\Calendar\CalendarExportOptions;
use OCP\Calendar\Exceptions\CalendarException;
use OCP\Calendar\ICalendarExport;
use OCP\Calendar\ICalendarIsEnabled;
use OCP\Calendar\ICalendarIsPublic;
use OCP\Calendar\ICalendarIsShared;
use OCP\Calendar\ICalendarIsWritable;
use OCP\Calendar\ICreateFromString;
@@ -32,7 +33,7 @@ use Sabre\VObject\Reader;
use function Sabre\Uri\split as uriSplit;
class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIsWritable, ICalendarIsShared, ICalendarExport, ICalendarIsEnabled {
class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIsWritable, ICalendarIsShared, ICalendarExport, ICalendarIsEnabled, ICalendarIsPublic {
public function __construct(
private Calendar $calendar,
/** @var array<string, mixed> */
@@ -168,6 +169,13 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIs
return $this->calendar->isShared();
}
/**
* @since 33.0.1, 32.0.7, 31.0.14.1, 30.0.17.8
*/
public function getPublicToken(): ?string {
return $this->calendar->getPublishStatus() ?: null;
}
/**
* @throws CalendarException
*/
@@ -336,5 +344,4 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIs
}
}
}
}
+2 -1
View File
@@ -20,7 +20,7 @@ class Capabilities implements ICapability {
}
/**
* @return array{dav: array{chunking: string, public_shares_chunking: bool, search_supports_creation_time: bool, search_supports_upload_time: bool, bulkupload?: string, absence-supported?: bool, absence-replacement?: bool}}
* @return array{dav: array{chunking: string, public_shares_chunking: bool, search_supports_creation_time: bool, search_supports_upload_time: bool, search_supports_last_activity: bool, bulkupload?: string, absence-supported?: bool, absence-replacement?: bool}}
*/
public function getCapabilities() {
$capabilities = [
@@ -29,6 +29,7 @@ class Capabilities implements ICapability {
'public_shares_chunking' => true,
'search_supports_creation_time' => true,
'search_supports_upload_time' => true,
'search_supports_last_activity' => true,
]
];
if ($this->config->getSystemValueBool('bulkupload.enabled', true)) {
+37 -2
View File
@@ -42,7 +42,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
private string $dbCardsPropertiesTable = 'cards_properties';
/** @var array properties to index */
public static array $indexProperties = [
private const INDEXED_PROPERTIES = [
'BDAY', 'UID', 'N', 'FN', 'TITLE', 'ROLE', 'NOTE', 'NICKNAME',
'ORG', 'CATEGORIES', 'EMAIL', 'TEL', 'IMPP', 'ADR', 'URL', 'GEO',
'CLOUD', 'X-SOCIALPROFILE'];
@@ -478,6 +478,13 @@ class CardDavBackend implements BackendInterface, SyncSupport {
->from($this->dbCardsTable)
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressbookId)));
return $this->getCardsFromQuery($query);
}
/**
* @return array[]
*/
private function getCardsFromQuery(IQueryBuilder $query): array {
$cards = [];
$result = $query->executeQuery();
@@ -1384,7 +1391,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
);
foreach ($vCard->children() as $property) {
if (!in_array($property->name, self::$indexProperties)) {
if (!in_array($property->name, self::INDEXED_PROPERTIES)) {
continue;
}
$preferred = 0;
@@ -1532,4 +1539,32 @@ class CardDavBackend implements BackendInterface, SyncSupport {
// should already be handled, but just in case
throw new BadRequest('vCard can not be empty');
}
/**
* Mark all cards in an address book as needing to be validated
*
* This is done by setting the modified date to `null`, once a sync runs
* the mtime will be set to a non-null value. Leaving all deleted items with
* a null modified date.
*/
public function markCardsAsPending(int $addressBookId): void {
$query = $this->db->getTypedQueryBuilder();
$query->update($this->dbCardsTable)
->set('lastmodified', $query->createNamedParameter(null))
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)))
->executeStatement();
}
/**
* @return array[]
*/
public function getPendingCards(int $addressBookId): array {
$query = $this->db->getQueryBuilder();
$query->select(['id', 'addressbookid', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid'])
->from($this->dbCardsTable)
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)))
->andWhere($query->expr()->isNull('lastmodified'));
return $this->getCardsFromQuery($query);
}
}
+11
View File
@@ -214,4 +214,15 @@ class SyncService extends ASyncService {
public static function getCardUri(IUser $user): string {
return $user->getBackendClassName() . ':' . $user->getUID() . '.vcf';
}
public function markCardsAsPending(int $addressBookId): void {
$this->backend->markCardsAsPending($addressBookId);
}
public function deletePendingCards(int $addressBookId): void {
$cards = $this->backend->getPendingCards($addressBookId);
foreach ($cards as $card) {
$this->backend->deleteCard($addressBookId, $card['uri']);
}
}
}
+2 -1
View File
@@ -232,7 +232,8 @@ class SystemAddressbook extends AddressBook {
return $changed;
}
$added = $modified = $deleted = [];
$added = $modified = [];
$deleted = array_values($changed['deleted']);
foreach ($changed['added'] as $uri) {
try {
$this->getChild($uri);
@@ -0,0 +1,69 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\DAV\Connector\Sabre;
use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\Server;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
/**
* Adds the "OC-OwnerId" and "OC-Permissions" after PUT requests so that
* clients don't need to do a propfind after uploading a file to decide what
* to display.
*/
class AddExtraHeadersPlugin extends \Sabre\DAV\ServerPlugin {
private ?Server $server = null;
public function __construct(
private LoggerInterface $logger,
private bool $isPublic = false,
) {
}
public function initialize(Server $server): void {
$this->server = $server;
$server->on('afterMethod:PUT', $this->afterPut(...));
}
private function afterPut(RequestInterface $request, ResponseInterface $response): void {
if ($this->server === null) {
return;
}
$node = null;
try {
$node = $this->server->tree->getNodeForPath($request->getPath());
} catch (NotFound) {
$this->logger->error("Cannot set extra headers for non-existing file '{$request->getPath()}'");
return;
}
if (!$node instanceof Node) {
$nodeType = get_debug_type($node);
$this->logger->error("Cannot set extra headers for node of type {$nodeType} for file '{$request->getPath()}'");
return;
}
if (!$this->isPublic) {
$ownerId = $node->getOwner()?->getUID();
if ($ownerId !== null) {
$response->setHeader('X-NC-OwnerId', $ownerId);
}
}
$permissions = $this->isPublic ? $node->getPublicDavPermissions()
: $node->getDavPermissions();
$response->setHeader('X-NC-Permissions', $permissions);
}
}
@@ -49,7 +49,7 @@ class BlockLegacyClientPlugin extends ServerPlugin {
return;
}
$minimumSupportedDesktopVersion = $this->config->getSystemValueString('minimum.supported.desktop.version', '3.1.50');
$minimumSupportedDesktopVersion = $this->config->getSystemValueString('minimum.supported.desktop.version', '3.1.81');
$maximumSupportedDesktopVersion = $this->config->getSystemValueString('maximum.supported.desktop.version', '99.99.99');
// Check if the client is a desktop client
+20 -10
View File
@@ -40,6 +40,7 @@ use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
class FilesPlugin extends ServerPlugin {
// namespace
public const NS_OWNCLOUD = 'http://owncloud.org/ns';
public const NS_NEXTCLOUD = 'http://nextcloud.org/ns';
@@ -67,6 +68,7 @@ class FilesPlugin extends ServerPlugin {
public const METADATA_ETAG_PROPERTYNAME = '{http://nextcloud.org/ns}metadata_etag';
public const UPLOAD_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}upload_time';
public const CREATION_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}creation_time';
public const LAST_ACTIVITY_PROPERTYNAME = '{http://nextcloud.org/ns}last_activity';
public const SHARE_NOTE = '{http://nextcloud.org/ns}note';
public const SHARE_HIDE_DOWNLOAD_PROPERTYNAME = '{http://nextcloud.org/ns}hide-download';
public const SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count';
@@ -201,10 +203,19 @@ class FilesPlugin extends ServerPlugin {
// First check copyable (move only needs additional delete permission)
$this->checkCopy($source, $target);
// The source needs to be deletable for moving
$sourceNodeFileInfo = $sourceNode->getFileInfo();
if (!$sourceNodeFileInfo->isDeletable()) {
throw new Forbidden($source . ' cannot be deleted');
[$sourceDir] = \Sabre\Uri\split($source);
[$destinationDir, ] = \Sabre\Uri\split($target);
if ($sourceDir === $destinationDir) {
if (!$sourceNode->canRename()) {
throw new Forbidden($source . ' cannot be renamed');
}
} else {
// The source needs to be deletable for moving
$sourceNodeFileInfo = $sourceNode->getFileInfo();
if (!$sourceNodeFileInfo->isDeletable()) {
throw new Forbidden($source . ' cannot be deleted');
}
}
// The source is not allowed to be the parent of the target
@@ -311,12 +322,7 @@ class FilesPlugin extends ServerPlugin {
});
$propFind->handle(self::PERMISSIONS_PROPERTYNAME, function () use ($node) {
$perms = $node->getDavPermissions();
if ($this->isPublic) {
// remove mount information
$perms = str_replace(['S', 'M'], '', $perms);
}
return $perms;
return $this->isPublic ? $node->getPublicDavPermissions() : $node->getDavPermissions();
});
$propFind->handle(self::SHARE_PERMISSIONS_PROPERTYNAME, function () use ($node, $httpRequest) {
@@ -441,6 +447,10 @@ class FilesPlugin extends ServerPlugin {
return $node->getFileInfo()->getCreationTime();
});
$propFind->handle(self::LAST_ACTIVITY_PROPERTYNAME, function () use ($node) {
return $node->getFileInfo()->getLastActivity();
});
foreach ($node->getFileInfo()->getMetadata() as $metadataKey => $metadataValue) {
$propFind->handle(self::FILE_METADATA_PREFIX . $metadataKey, $metadataValue);
}
+17 -5
View File
@@ -112,6 +112,13 @@ abstract class Node implements INode {
return $this->path;
}
/**
* Check if this node can be renamed
*/
public function canRename(): bool {
return DavUtil::canRename($this->node, $this->node->getParent());
}
/**
* Renames the node
*
@@ -123,10 +130,8 @@ abstract class Node implements INode {
* @throws LockedException
*/
public function setName($name): void {
// rename is only allowed if the delete privilege is granted
// (basically rename is a copy with delete of the original node)
if (!$this->info->isDeletable() && !($this->info->getMountPoint() instanceof MoveableMount && $this->info->getInternalPath() === '')) {
throw new Forbidden();
if (!$this->canRename()) {
throw new Forbidden('');
}
/** @var string $parentPath */
@@ -320,7 +325,14 @@ abstract class Node implements INode {
}
public function getDavPermissions(): string {
return DavUtil::getDavPermissions($this->info);
return DavUtil::getDavPermissions($this->info, $this->node->getParent());
}
/**
* Returns the DAV Permissions with share and mount infromation stripped.
*/
public function getPublicDavPermissions(): string {
return str_replace(['S', 'M'], '', $this->getDavPermissions());
}
public function getOwner(): ?IUser {
+2 -2
View File
@@ -258,8 +258,8 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
if ($length > $freeSpace) {
$msg = $isDir
? "Insufficient space in $normalizedPath. $freeSpace available. Cannot create directory"
: "Insufficient space in $normalizedPath, $length required, $freeSpace available";
? "Insufficient space in $normalizedPath. Cannot create directory"
: "Insufficient space in $normalizedPath";
throw new InsufficientStorage($msg);
}
@@ -209,6 +209,7 @@ class ServerFactory {
);
}
$server->addPlugin(new CopyEtagHeaderPlugin());
$server->addPlugin(new AddExtraHeadersPlugin($this->logger, $isPublicShare));
// Load dav plugins from apps
$event = new SabrePluginEvent($server);
+5
View File
@@ -88,6 +88,7 @@ class FileSearchBackend implements ISearchBackend {
new SearchPropertyDefinition('{DAV:}getlastmodified', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME),
new SearchPropertyDefinition('{DAV:}creationdate', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME),
new SearchPropertyDefinition('{http://nextcloud.org/ns}upload_time', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME),
new SearchPropertyDefinition('{http://nextcloud.org/ns}last_activity', true, false, true, SearchPropertyDefinition::DATATYPE_DATETIME),
new SearchPropertyDefinition(FilesPlugin::SIZE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER),
new SearchPropertyDefinition(TagsPlugin::FAVORITE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_BOOLEAN),
new SearchPropertyDefinition(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, true, true, false, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER),
@@ -304,6 +305,8 @@ class FileSearchBackend implements ISearchBackend {
return $node->getNode()->getCreationTime();
case '{http://nextcloud.org/ns}upload_time':
return $node->getNode()->getUploadTime();
case '{http://nextcloud.org/ns}last_activity':
return $node->getNode()->getLastActivity();
case FilesPlugin::SIZE_PROPERTYNAME:
return $node->getSize();
case FilesPlugin::INTERNAL_FILEID_PROPERTYNAME:
@@ -332,6 +335,8 @@ class FileSearchBackend implements ISearchBackend {
$direction = $order->order === Order::ASC ? ISearchOrder::DIRECTION_ASCENDING : ISearchOrder::DIRECTION_DESCENDING;
if (str_starts_with($order->property->name, FilesPlugin::FILE_METADATA_PREFIX)) {
return new SearchOrder($direction, substr($order->property->name, strlen(FilesPlugin::FILE_METADATA_PREFIX)), IMetadataQuery::EXTRA);
} elseif ($order->property->name === FilesPlugin::LAST_ACTIVITY_PROPERTYNAME) {
return new SearchOrder($direction, 'last_activity');
} else {
return new SearchOrder($direction, $this->mapPropertyNameToColumn($order->property));
}
@@ -23,14 +23,14 @@ use Sabre\VObject\Component\VCard;
use Sabre\VObject\Reader;
class ContactsSearchProvider implements IFilteringProvider {
private static array $searchPropertiesRestricted = [
private const SEARCH_PROPERTIES_RESTRICTED = [
'N',
'FN',
'NICKNAME',
'EMAIL',
];
private static array $searchProperties = [
private const SEARCH_PROPERTIES = [
'N',
'FN',
'NICKNAME',
@@ -87,7 +87,7 @@ class ContactsSearchProvider implements IFilteringProvider {
$searchResults = $this->backend->searchPrincipalUri(
$principalUri,
$query->getFilter('term')?->get() ?? '',
$query->getFilter('title-only')?->get() ? self::$searchPropertiesRestricted : self::$searchProperties,
$query->getFilter('title-only')?->get() ? self::SEARCH_PROPERTIES_RESTRICTED : self::SEARCH_PROPERTIES,
[
'limit' => $query->getLimit(),
'offset' => $query->getCursor(),
+10 -10
View File
@@ -32,7 +32,7 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
/**
* @var string[]
*/
private static $searchProperties = [
private const SEARCH_PROPERTIES = [
'SUMMARY',
'LOCATION',
'DESCRIPTION',
@@ -42,9 +42,9 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
];
/**
* @var string[]
* @var array<string, string[]>
*/
private static $searchParameters = [
private const SEARCH_PARAMETERS = [
'ATTENDEE' => ['CN'],
'ORGANIZER' => ['CN'],
];
@@ -52,7 +52,7 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
/**
* @var string
*/
private static $componentType = 'VEVENT';
private const COMPONENT_TYPE = 'VEVENT';
/**
* @inheritDoc
@@ -102,9 +102,9 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
$searchResults = $this->backend->searchPrincipalUri(
$principalUri,
$term,
[self::$componentType],
self::$searchProperties,
self::$searchParameters,
[self::COMPONENT_TYPE],
self::SEARCH_PROPERTIES,
self::SEARCH_PARAMETERS,
[
'limit' => $query->getLimit(),
'offset' => $query->getCursor(),
@@ -122,9 +122,9 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
$attendeeSearchResults = $this->backend->searchPrincipalUri(
$principalUri,
$personDisplayName,
[self::$componentType],
[self::COMPONENT_TYPE],
['ATTENDEE'],
self::$searchParameters,
self::SEARCH_PARAMETERS,
[
'limit' => $query->getLimit(),
'offset' => $query->getCursor(),
@@ -148,7 +148,7 @@ class EventsSearchProvider extends ACalendarSearchProvider implements IFiltering
}
}
$formattedResults = \array_map(function (array $eventRow) use ($calendarsById, $subscriptionsById): SearchResultEntry {
$component = $this->getPrimaryComponent($eventRow['calendardata'], self::$componentType);
$component = $this->getPrimaryComponent($eventRow['calendardata'], self::COMPONENT_TYPE);
$title = (string)($component->SUMMARY ?? $this->l10n->t('Untitled event'));
if ($eventRow['calendartype'] === CalDavBackend::CALENDAR_TYPE_CALENDAR) {
+7 -7
View File
@@ -24,7 +24,7 @@ class TasksSearchProvider extends ACalendarSearchProvider {
/**
* @var string[]
*/
private static $searchProperties = [
private const SEARCH_PROPERTIES = [
'SUMMARY',
'DESCRIPTION',
'CATEGORIES',
@@ -33,12 +33,12 @@ class TasksSearchProvider extends ACalendarSearchProvider {
/**
* @var string[]
*/
private static $searchParameters = [];
private const SEARCH_PARAMETERS = [];
/**
* @var string
*/
private static $componentType = 'VTODO';
private const COMPONENT_TYPE = 'VTODO';
/**
* @inheritDoc
@@ -83,9 +83,9 @@ class TasksSearchProvider extends ACalendarSearchProvider {
$searchResults = $this->backend->searchPrincipalUri(
$principalUri,
$query->getFilter('term')?->get() ?? '',
[self::$componentType],
self::$searchProperties,
self::$searchParameters,
[self::COMPONENT_TYPE],
self::SEARCH_PROPERTIES,
self::SEARCH_PARAMETERS,
[
'limit' => $query->getLimit(),
'offset' => $query->getCursor(),
@@ -94,7 +94,7 @@ class TasksSearchProvider extends ACalendarSearchProvider {
]
);
$formattedResults = \array_map(function (array $taskRow) use ($calendarsById, $subscriptionsById):SearchResultEntry {
$component = $this->getPrimaryComponent($taskRow['calendardata'], self::$componentType);
$component = $this->getPrimaryComponent($taskRow['calendardata'], self::COMPONENT_TYPE);
$title = (string)($component->SUMMARY ?? $this->l10n->t('Untitled task'));
if ($taskRow['calendartype'] === CalDavBackend::CALENDAR_TYPE_CALENDAR) {
+2
View File
@@ -27,6 +27,7 @@ use OCA\DAV\CardDAV\PhotoCache;
use OCA\DAV\CardDAV\Security\CardDavRateLimitingPlugin;
use OCA\DAV\CardDAV\Validation\CardDavValidatePlugin;
use OCA\DAV\Comments\CommentsPlugin;
use OCA\DAV\Connector\Sabre\AddExtraHeadersPlugin;
use OCA\DAV\Connector\Sabre\AnonymousOptionsPlugin;
use OCA\DAV\Connector\Sabre\AppleQuirksPlugin;
use OCA\DAV\Connector\Sabre\Auth;
@@ -385,6 +386,7 @@ class Server {
)
);
}
$this->server->addPlugin(new AddExtraHeadersPlugin($logger, false));
$this->server->addPlugin(new EnablePlugin(
\OCP\Server::get(IConfig::class),
\OCP\Server::get(BirthdayService::class),
+5 -1
View File
@@ -32,7 +32,8 @@
"chunking",
"public_shares_chunking",
"search_supports_creation_time",
"search_supports_upload_time"
"search_supports_upload_time",
"search_supports_last_activity"
],
"properties": {
"chunking": {
@@ -47,6 +48,9 @@
"search_supports_upload_time": {
"type": "boolean"
},
"search_supports_last_activity": {
"type": "boolean"
},
"bulkupload": {
"type": "string"
},
@@ -238,14 +238,14 @@ class CalendarMigratorTest extends TestCase {
$exportedData = null;
$exportDestination->method('addFileContents')
->willReturnCallback(function (string $path, string $content) use (&$exportedCalendarsJson) {
->willReturnCallback(function (string $path, string $content) use (&$exportedCalendarsJson): void {
if ($path === 'dav/calendars/calendars.json') {
$exportedCalendarsJson = json_decode($content, true);
}
});
$exportDestination->method('addFileAsStream')
->willReturnCallback(function (string $path, $stream) use (&$exportedData) {
->willReturnCallback(function (string $path, $stream) use (&$exportedData): void {
if (str_ends_with($path, '.data')) {
$exportedData = stream_get_contents($stream);
}
@@ -296,11 +296,11 @@ class CalendarMigratorTest extends TestCase {
$exportDestination = $this->createMock(IExportDestination::class);
$exportDestination->method('addFileContents')
->willReturnCallback(function (string $path, string $content) use (&$exportedFiles) {
->willReturnCallback(function (string $path, string $content) use (&$exportedFiles): void {
$exportedFiles[$path] = $content;
});
$exportDestination->method('addFileAsStream')
->willReturnCallback(function (string $path, $stream) use (&$exportedFiles) {
->willReturnCallback(function (string $path, $stream) use (&$exportedFiles): void {
$exportedFiles[$path] = stream_get_contents($stream);
});
@@ -469,7 +469,7 @@ class CalendarMigratorTest extends TestCase {
$exportedSubscriptionsJson = null;
$exportDestination->method('addFileContents')
->willReturnCallback(function (string $path, string $content) use (&$exportedSubscriptionsJson) {
->willReturnCallback(function (string $path, string $content) use (&$exportedSubscriptionsJson): void {
if ($path === 'dav/calendars/subscriptions.json') {
$exportedSubscriptionsJson = json_decode($content, true);
}
@@ -578,7 +578,7 @@ class CalendarMigratorTest extends TestCase {
$exportDestination = $this->createMock(IExportDestination::class);
$exportDestination->method('addFileContents')
->willReturnCallback(function (string $path, string $content) use (&$exportedFiles) {
->willReturnCallback(function (string $path, string $content) use (&$exportedFiles): void {
$exportedFiles[$path] = $content;
});
@@ -1840,6 +1840,72 @@ EOD;
$this->assertEquals('Missing DTSTART 2', $results[3]['objects'][0]['SUMMARY'][0]);
}
public function testSearchByUri(): void {
$calendarId = $this->createTestCalendar();
$uris = [];
$calData = [];
$uris[] = static::getUniqueID('calobj');
$calData[] = <<<'EOD'
BEGIN:VCALENDAR
VERSION:2.0
PRODID:Nextcloud Calendar
BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20260323T093039Z
UID:search-by-uri-test1
LAST-MODIFIED;VALUE=DATE-TIME:20260323T093039Z
DTSTAMP;VALUE=DATE-TIME:20260323T093039Z
SUMMARY:First Test Event
DTSTART;VALUE=DATE-TIME:20260323T093039Z
DTEND;VALUE=DATE-TIME:20260323T093039Z
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
EOD;
$uris[] = static::getUniqueID('calobj');
$calData[] = <<<'EOD'
BEGIN:VCALENDAR
VERSION:2.0
PRODID:Nextcloud Calendar
BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20260323T093039Z
UID:search-by-uri-test2
LAST-MODIFIED;VALUE=DATE-TIME:20260323T093039Z
DTSTAMP;VALUE=DATE-TIME:20260323T093039Z
SUMMARY:Second Test Event
DTSTART;VALUE=DATE-TIME:20260323T093039Z
DTEND;VALUE=DATE-TIME:20260323T093039Z
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
EOD;
foreach ($uris as $i => $uri) {
$this->backend->createCalendarObject($calendarId, $uri, $calData[$i]);
}
$calendarInfo = [
'id' => $calendarId,
'principaluri' => 'user1',
'{http://owncloud.org/ns}owner-principal' => 'user1',
];
// Searching by first event's URI returns this event
$results = $this->backend->search($calendarInfo, '', [], ['uri' => $uris[0]], null, null);
$this->assertCount(1, $results);
$this->assertEquals($uris[0], $results[0]['uri']);
// Searching by second event's URI returns this event
$results = $this->backend->search($calendarInfo, '', [], ['uri' => $uris[1]], null, null);
$this->assertCount(1, $results);
$this->assertEquals($uris[1], $results[0]['uri']);
// Searching by a non-existent URI returns nothing
$result = $this->backend->search($calendarInfo, '', [], ['uri' => 'nonexistant.ical'], null, null);
$this->assertCount(0, $result);
}
public function testUnshare(): void {
$principalGroup = 'principal:' . self::UNIT_TEST_GROUP;
$principalUser = 'principal:' . self::UNIT_TEST_USER;
@@ -33,7 +33,7 @@ class CalendarImplTest extends \Test\TestCase {
$this->backend = $this->createMock(CalDavBackend::class);
$this->calendar = $this->createMock(Calendar::class);
$this->calendarInfo = [
'id' => 'fancy_id_123',
'id' => 123,
'{DAV:}displayname' => 'user readable name 123',
'{http://apple.com/ns/ical/}calendar-color' => '#AABBCC',
'uri' => '/this/is/a/uri',
@@ -62,7 +62,7 @@ class CalendarImplTest extends \Test\TestCase {
public function testGetKey(): void {
$this->assertEquals($this->calendarImpl->getKey(), 'fancy_id_123');
$this->assertEquals($this->calendarImpl->getKey(), '123');
}
public function testGetDisplayname(): void {
@@ -73,6 +73,18 @@ class CalendarImplTest extends \Test\TestCase {
$this->assertEquals($this->calendarImpl->getDisplayColor(), '#AABBCC');
}
public function testGetPublicToken(): void {
$publicToken = $this->calendar->setPublishStatus(true);
$this->assertEquals($this->calendarImpl->getPublicToken(), $publicToken);
}
public function testGetPublicTokenWithPrivateCalendar(): void {
$this->calendar->setPublishStatus(false);
$this->assertNull($this->calendarImpl->getPublicToken());
}
public function testSearch(): void {
$this->backend->expects($this->once())
->method('search')
@@ -266,5 +278,4 @@ class CalendarImplTest extends \Test\TestCase {
$calendarImpl->handleIMipMessage('fakeUser', $vObject->serialize());
}
}
+3
View File
@@ -33,6 +33,7 @@ class CapabilitiesTest extends TestCase {
'public_shares_chunking' => true,
'search_supports_creation_time' => true,
'search_supports_upload_time' => true,
'search_supports_last_activity' => true,
],
];
$this->assertSame($expected, $capabilities->getCapabilities());
@@ -55,6 +56,7 @@ class CapabilitiesTest extends TestCase {
'public_shares_chunking' => true,
'search_supports_creation_time' => true,
'search_supports_upload_time' => true,
'search_supports_last_activity' => true,
'bulkupload' => '1.0',
],
];
@@ -78,6 +80,7 @@ class CapabilitiesTest extends TestCase {
'public_shares_chunking' => true,
'search_supports_creation_time' => true,
'search_supports_upload_time' => true,
'search_supports_last_activity' => true,
'absence-supported' => true,
'absence-replacement' => true,
],
@@ -5,6 +5,7 @@
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\DAV\Tests\unit\CardDAV;
use GuzzleHttp\Exception\ClientException;
@@ -104,7 +105,7 @@ class SyncServiceTest extends TestCase {
'system',
'system',
'1234567890',
null,
'1',
'1',
'principals/system/system',
[]
@@ -175,7 +176,7 @@ END:VCARD';
'system',
'system',
'1234567890',
null,
'1',
'1',
'principals/system/system',
[]
@@ -246,7 +247,7 @@ END:VCARD';
'system',
'system',
'1234567890',
null,
'1',
'1',
'principals/system/system',
[]
@@ -287,7 +288,7 @@ END:VCARD';
'system',
'system',
'1234567890',
null,
'1',
'1',
'principals/system/system',
[]
@@ -296,6 +297,97 @@ END:VCARD';
$this->assertEquals('http://sabre.io/ns/sync/4', $token);
}
public function testFullSyncWithOrphanElement(): void {
$pendingCards = [];
$this->backend->expects($this->exactly(0))
->method('createCard');
$this->backend->expects($this->exactly(1))
->method('updateCard')
->willReturnCallback(function ($id, $uri) use (&$pendingCards) {
unset($pendingCards[$uri]);
});
$this->backend->expects($this->exactly(1))
->method('markCardsAsPending')
->willReturnCallback(function ($id) use (&$pendingCards) {
$cards = array_values($this->backend->getCards($id));
$uris = array_map(fn ($card) => $card['uri'], $cards);
$pendingCards = array_combine($uris, $cards);
});
$this->backend->expects($this->exactly(1))
->method('getPendingCards')
->willReturnCallback(function ($id) use (&$pendingCards) {
return array_values($pendingCards);
});
$this->backend->expects($this->exactly(1))
->method('deleteCard');
$body = '<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:oc="http://owncloud.org/ns">
<d:response>
<d:href>/remote.php/dav/addressbooks/system/system/system/Database:alice.vcf</d:href>
<d:propstat>
<d:prop>
<d:getcontenttype>text/vcard; charset=utf-8</d:getcontenttype>
<d:getetag>&quot;2df155fa5c2a24cd7f750353fc63f037&quot;</d:getetag>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:sync-token>http://sabre.io/ns/sync/3</d:sync-token>
</d:multistatus>';
$reportResponse = new Response(new PsrResponse(
207,
['Content-Type' => 'application/xml; charset=utf-8', 'Content-Length' => strlen($body)],
$body
));
$this->client
->method('request')
->willReturn($reportResponse);
$vCard = 'BEGIN:VCARD
VERSION:3.0
PRODID:-//Sabre//Sabre VObject 4.5.4//EN
UID:alice
FN;X-NC-SCOPE=v2-federated:alice
N;X-NC-SCOPE=v2-federated:alice;;;;
X-SOCIALPROFILE;TYPE=NEXTCLOUD;X-NC-SCOPE=v2-published:https://server2.internal/index.php/u/alice
CLOUD:alice@server2.internal
END:VCARD';
$getResponse = new Response(new PsrResponse(
200,
['Content-Type' => 'text/vcard; charset=utf-8', 'Content-Length' => strlen($vCard)],
$vCard,
));
$this->client
->method('get')
->willReturn($getResponse);
$this->backend->method('getCards')
->willReturn([
['uri' => 'Database:alice.vcf'],
['uri' => 'Database:bob.vcf'],
]);
$this->service->markCardsAsPending(1);
$token = $this->service->syncRemoteAddressBook(
'',
'system',
'system',
'1234567890',
null,
'1',
'principals/system/system',
[]
)[0];
$this->service->deletePendingCards(1);
$this->assertEquals('http://sabre.io/ns/sync/3', $token);
}
public function testEnsureSystemAddressBookExists(): void {
/** @var CardDavBackend&MockObject $backend */
$backend = $this->createMock(CardDavBackend::class);
@@ -458,7 +550,7 @@ END:VCARD';
'system',
'remote.php/dav/addressbooks/system/system/system',
'1234567890',
null,
'1',
'1',
'principals/system/system',
[]
@@ -0,0 +1,130 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace unit\Connector\Sabre;
use LogicException;
use OCA\DAV\Connector\Sabre\AddExtraHeadersPlugin;
use OCA\DAV\Connector\Sabre\Node;
use OCA\DAV\Connector\Sabre\Server;
use OCP\IUser;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\Tree;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
use Test\TestCase;
class AddExtraHeadersPluginTest extends TestCase {
private AddExtraHeadersPlugin $plugin;
private Server&MockObject $server;
private LoggerInterface&MockObject $logger;
private RequestInterface&MockObject $request;
private ResponseInterface&MockObject $response;
private Tree&MockObject $tree;
public static function afterPutData(): array {
return [
'owner and permissions present' => [
'user', true, 'PERMISSIONS', true, 2
],
'permissions only' => [
null, false, 'PERMISSIONS', true, 1
],
];
}
public function testAfterPutNotFoundException(): void {
$afterPut = null;
$this->server->expects($this->once())
->method('on')
->willReturnCallback(
function ($method, $callback) use (&$afterPut): void {
$this->assertSame('afterMethod:PUT', $method);
$afterPut = $callback;
});
$this->plugin->initialize($this->server);
$node = $this->createMock(Node::class);
$this->tree->expects($this->once())->method('getNodeForPath')
->willThrowException(new NotFound());
$this->logger->expects($this->once())->method('error');
$afterPut($this->request, $this->response);
}
#[DataProvider('afterPutData')]
public function testAfterPut(?string $ownerId, bool $expectOwnerIdHeader,
?string $permissions, bool $expectPermissionsHeader,
int $expectedInvocations): void {
$afterPut = null;
$this->server->expects($this->once())
->method('on')
->willReturnCallback(
function ($method, $callback) use (&$afterPut): void {
$this->assertSame('afterMethod:PUT', $method);
$afterPut = $callback;
});
$this->plugin->initialize($this->server);
$node = $this->createMock(Node::class);
$this->tree->expects($this->once())->method('getNodeForPath')
->willReturn($node);
$user = $this->createMock(IUser::class);
$node->expects($this->once())->method('getOwner')->willReturn($user);
$user->expects($this->once())->method('getUID')->willReturn($ownerId);
$node->expects($this->once())->method('getDavPermissions')->willReturn($permissions);
$matcher = $this->exactly($expectedInvocations);
$this->response->expects($matcher)->method('setHeader')
->willReturnCallback(function ($name, $value) use (
$expectedInvocations,
$expectPermissionsHeader,
$expectOwnerIdHeader,
$matcher,
$ownerId, $permissions): void {
$invocationNumber = $matcher->numberOfInvocations();
if ($invocationNumber === 0) {
throw new LogicException('No invocations were expected');
}
if (($expectOwnerIdHeader && $expectedInvocations === 1)
|| ($expectedInvocations
=== 2 && $invocationNumber === 1)) {
$this->assertEquals('X-NC-OwnerId', $name);
$this->assertEquals($ownerId, $value);
}
if (($expectPermissionsHeader && $expectedInvocations === 1)
|| ($expectedInvocations
=== 2 && $invocationNumber === 2)) {
$this->assertEquals('X-NC-Permissions', $name);
$this->assertEquals($permissions, $value);
}
});
$afterPut($this->request, $this->response);
}
protected function setUp(): void {
parent::setUp();
$this->server = $this->createMock(Server::class);
$this->tree = $this->createMock(Tree::class);
$this->server->tree = $this->tree;
$this->logger = $this->createMock(LoggerInterface::class);
$this->plugin = new AddExtraHeadersPlugin($this->logger, false);
$this->request = $this->createMock(RequestInterface::class);
$this->response = $this->createMock(ResponseInterface::class);
}
}
@@ -332,9 +332,12 @@ class FilesPluginTest extends TestCase {
/** @var File&MockObject $node */
$node = $this->createTestNode(File::class);
$node->expects($this->any())
->method('getDavPermissions')
->willReturn('DWCKMSR');
$node->expects($this->once())
->method('getPublicDavPermissions')
->willReturn('DWCKR');
$node->expects($this->never())
->method('getDavPermissions');
$this->plugin->handleGetProperties(
$propFind,
@@ -42,7 +42,7 @@ class NodeTest extends \Test\TestCase {
[Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL, true, '' , 'SRMGDNVW'],
[Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE, true, '' , 'SRMGDNV'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE, 'file', true, Constants::PERMISSION_ALL, false, 'test', 'SGDNVW'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGD'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGDN'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGNVW'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGDNVW'],
[Constants::PERMISSION_ALL - Constants::PERMISSION_READ, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RDNVW'],
+6
View File
@@ -41,10 +41,16 @@ OC.L10N.register(
"Enable recovery key" : "Activer la clé de récupération",
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "La clé de récupération est une clé de chiffrement supplémentaire utilisée pour chiffrer les fichiers. Elle est utilisée pour récupérer les fichiers d'un compte si le mot de passe a été oublié.",
"Recovery key password" : "Mot de passe de la clé de récupération",
"Passwords fields do not match" : "Les deux mots de passe ne correspondent pas",
"Repeat recovery key password" : "Répétez le mot de passe de la clé de récupération",
"An error occurred while updating the recovery key settings. Please try again." : "Une erreur est survenue lors de la mise à jour des paramètres de la clé de récupération. Veuillez essayer à nouveau.",
"Change recovery key password" : "Modifier le mot de passe de la clé de récupération",
"Old recovery key password" : "Ancien mot de passe de la clé de récupération",
"New recovery key password" : "Nouveau mot de passe de la clé de récupération",
"Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération",
"An error occurred while changing the recovery key password. Please try again." : "Une erreur est survenue lors de la modification de la clé de récupération. Veuillez essayer à nouveau.",
"Update private key password" : "Mettre à jour le mot de passe de la clé privée",
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Votre mot de passe de clé privée ne correspond plus à votre mot de passe de connexion. Définissez votre ancien mot de passe de clé privée à la valeur actuelle du mot de passe de connexion.",
"If you do not remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez pas de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
"Old log-in password" : "Ancien mot de passe de connexion",
"Current log-in password" : "Actuel mot de passe de connexion",
+6
View File
@@ -39,10 +39,16 @@
"Enable recovery key" : "Activer la clé de récupération",
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "La clé de récupération est une clé de chiffrement supplémentaire utilisée pour chiffrer les fichiers. Elle est utilisée pour récupérer les fichiers d'un compte si le mot de passe a été oublié.",
"Recovery key password" : "Mot de passe de la clé de récupération",
"Passwords fields do not match" : "Les deux mots de passe ne correspondent pas",
"Repeat recovery key password" : "Répétez le mot de passe de la clé de récupération",
"An error occurred while updating the recovery key settings. Please try again." : "Une erreur est survenue lors de la mise à jour des paramètres de la clé de récupération. Veuillez essayer à nouveau.",
"Change recovery key password" : "Modifier le mot de passe de la clé de récupération",
"Old recovery key password" : "Ancien mot de passe de la clé de récupération",
"New recovery key password" : "Nouveau mot de passe de la clé de récupération",
"Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération",
"An error occurred while changing the recovery key password. Please try again." : "Une erreur est survenue lors de la modification de la clé de récupération. Veuillez essayer à nouveau.",
"Update private key password" : "Mettre à jour le mot de passe de la clé privée",
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Votre mot de passe de clé privée ne correspond plus à votre mot de passe de connexion. Définissez votre ancien mot de passe de clé privée à la valeur actuelle du mot de passe de connexion.",
"If you do not remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez pas de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
"Old log-in password" : "Ancien mot de passe de connexion",
"Current log-in password" : "Actuel mot de passe de connexion",
@@ -21,9 +21,8 @@ use OCP\IUserSession;
use Psr\Log\LoggerInterface;
class PassphraseService {
/** @var array<string, bool> */
private static array $passwordResetUsers = [];
private array $passwordResetUsers = [];
public function __construct(
private Util $util,
@@ -39,9 +38,9 @@ class PassphraseService {
public function setProcessingReset(string $uid, bool $processing = true): void {
if ($processing) {
self::$passwordResetUsers[$uid] = true;
$this->passwordResetUsers[$uid] = true;
} else {
unset(self::$passwordResetUsers[$uid]);
unset($this->passwordResetUsers[$uid]);
}
}
@@ -51,7 +50,7 @@ class PassphraseService {
public function setPassphraseForUser(string $userId, string $password, ?string $recoveryPassword = null): bool {
// if we are in the process to resetting a user password, we have nothing
// to do here
if (isset(self::$passwordResetUsers[$userId])) {
if (isset($this->passwordResetUsers[$userId])) {
return true;
}
+1 -1
View File
@@ -64,7 +64,7 @@ OC.L10N.register(
"Cancel" : "Abbrechen",
"Add remote share" : "Externe Freigabe hinzufügen",
"Remote share" : "Externe Freigabe",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die externe Freigabe {name} von {owner}@{remote} hinzufügen?",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soll die externe Freigabe {name} von {owner}@{remote} hinzufügt werden?",
"Remote share password" : "Passwort für die externe Freigabe",
"Incoming share could not be processed" : "Eingehende Freigabe konnte nicht verarbeitet werden",
"X (formerly Twitter)" : "X (früher Twitter)",
+1 -1
View File
@@ -62,7 +62,7 @@
"Cancel" : "Abbrechen",
"Add remote share" : "Externe Freigabe hinzufügen",
"Remote share" : "Externe Freigabe",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die externe Freigabe {name} von {owner}@{remote} hinzufügen?",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soll die externe Freigabe {name} von {owner}@{remote} hinzufügt werden?",
"Remote share password" : "Passwort für die externe Freigabe",
"Incoming share could not be processed" : "Eingehende Freigabe konnte nicht verarbeitet werden",
"X (formerly Twitter)" : "X (früher Twitter)",
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"federatedfilesharing",
{
"Invalid Federated Cloud ID" : "Neteisingas federacinės debesijos ID",
"Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje",
"Couldn't establish a federated share." : "Nepavyko užmegzti federacinio viešinio.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nepavyko užmegzti federacinio viešinio, galbūt, neteisingas slaptažodis.",
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Federacinio viešinio užklausa išsiųsta, jūs gausite pakvietimą. Tikrinkite savo pranešimus.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nepavyko užmegzti federacinio viešinio, atrodo, kad serveris su kuriuo ketinama jungtis į federaciją yra per senas (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Iš šio serverio neleidžiama siųsti federacinių grupės viešinių.",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s bendrinimas nepavyko, nes šis elementas jau bendrinamas su %2$s paskyra",
"Not allowed to create a federated share to the same account" : "Draudžiama kurti federacinį bendrinamą išteklių ta pačia paskyra",
"Federated shares require read permissions" : "Federaciniams bendrinamiesiems elementams reikalingi leidimai skaityti",
"File is already shared with %s" : "Failas jau yra bendrinamas su %s",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s bendrinimas nepavyko, %2$s nepavyko rasti, galbūt serveris šiuo metu nepasiekiamas arba naudoja automatiškai pasirašytą sertifikatą.",
"Could not find share" : "Nepavyko rasti viešinio",
"Federated sharing" : "Federacinis bendrinimas",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Jūs gavote {share} kaip nuotolinį viešinį iš {user} ({behalf} vardu)",
"You received {share} as a remote share from {user}" : "Jūs gavote {share} kaip nuotolinį viešinį iš {user}",
"Accept" : "Priimti",
"Decline" : "Atmesti",
"Federated Cloud Sharing" : "Bendrinimas federacinėje debesijoje",
"Sharing" : "Duomenų bendrinimas",
"Federated file sharing" : "Federacinis failų bendrinimas",
"Provide federated file sharing across servers" : "Užtikrinti federacinį failų bendrinimą tarp serverių",
"Confirm data upload to lookup server" : "Patvirtinkite duomenų įkėlimą į paieškos serverį",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Kai įjungta, visos paskyros ypatybės (pvz., el. pašto adresas), kurių matomumo apimtis nustatyta kaip „publikuota“, bus automatiškai sinchronizuojamos ir perduotos išorinei sistemai bei padaromos prieinamos viešojoje, globalioje adresų knygoje.",
"Enable data upload" : "Įgalinti duomenų įkėlimą",
"Disable upload" : "Išjungti įkėlimą",
"Confirm querying lookup server" : "Patvirtinkite užklausos paieškos serverį",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Kai įgalinta, paieškos įvestis kuriant bendrinamus failus bus siunčiama į išorinę sistemą, kurioje yra vieša ir globali adresų knyga.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Tai naudojama norint gauti federacinio debesies ID, kad būtų lengviau bendrinti federacinį serverį.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Be to, į tą sistemą gali būti siunčiami vartotojų el. pašto adresai, siekiant juos patikrinti.",
"Enable querying" : "Įgalinti užklausą",
"Disable querying" : "Išjungti užklausą",
"Unable to update federated files sharing config" : "Nepavyko atnaujinti federacinių failų bendrinimo konfigūracijos",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Koreguokite, kaip naudotojai gali bendrinti tarp serverių. Tai apima ir bendrinimą tarp šio serverio naudotojų, jei jie naudoja federacinį bendrinimą.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Leisti šio serverio naudotojams siųsti bendrinamus failus į kitus serverius (ši parinktis taip pat suteikia „WebDAV“ prieigą prie viešai bendrinamų failų)",
"Allow people on this server to receive shares from other servers" : "Leisti šio serverio naudotojams gauti bendrinamus failus iš kitų serverių",
"Allow people on this server to send shares to groups on other servers" : "Leisti šio serverio naudotojams siųsti bendrinamus failus grupėms kituose serveriuose",
"Allow people on this server to receive group shares from other servers" : "Leisti šio serverio naudotojams gauti grupės bendrinimus iš kitų serverių",
"The lookup server is only available for global scale." : "Paieškos serveris galimas tik globaliu mastu.",
"Search global and public address book for people" : "Ieškoti žmonių globalioje ir viešojoje adresų knygoje",
"Allow people to publish their data to a global and public address book" : "Leisti žmonėms publikuoti savo duomenis globalioje ir viešojoje adresų knygoje",
"Trusted federation" : "Patikima federacija",
"Automatically accept shares from trusted federated accounts and groups by default" : "Automatiškai priimti bendrinimus iš patikimų federacinių paskyrų ir grupių pagal numatytuosius nustatymus",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Pasidalinkite su manimi per mano #Nextcloud Federated Cloud ID, žr. {url}",
"Share with me through my #Nextcloud Federated Cloud ID" : "Bendrinti su manimi per mano #Nextcloud federacinės debesijos ID",
"Share with me via Nextcloud" : "Bendrinkite su manimi per „Nextcloud“",
"Cloud ID copied" : "Cloud ID nukopijuotas",
"Copy" : "Kopijuoti",
"Clipboard not available. Please copy the cloud ID manually." : "Iškarpinė neprieinama. Nukopijuokite debesijos ID rankiniu būdu.",
"Copied!" : "Nukopijuota!",
"Federated Cloud" : "Federacinė debesija",
"You can share with anyone who uses a {productName} server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Galite bendrinti su visais, kas naudoja {productName} serverį ar kitus su „Open Cloud Mesh“ (OCM) suderinamus serverius ir paslaugas! Tiesiog bendrinimo dialogo lange įveskite jų „Federated Cloud“ ID. Jis atrodo taip: person@cloud.example.com",
"Your Federated Cloud ID" : "Jūsų „Federated Cloud“ ID",
"Share it so your friends can share files with you:" : "Pasidalinkite juo, kad jūsų draugai galėtų bendrinti failus kartu su jumis:",
"Bluesky" : "\"Bluesky\"",
"Facebook" : "„Facebook“",
"Mastodon" : "„Mastodon“",
"Add to your website" : "Pridėkite prie savo svetainės",
"Share with me via {productName}" : "Pasidalinkite su manimi per {productName}",
"HTML Code:" : "HTML kodas:",
"Cancel" : "Atsisakyti",
"Add remote share" : "Pridėti nuotolinį viešinį",
"Remote share" : "Nuotolinis viešinys",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite pridėti nuotolinį viešinį {name} iš {owner}@{remote}?",
"Remote share password" : "Nuotolinio viešinio slaptažodis",
"Incoming share could not be processed" : "Gaunamo bendrinimo apdoroti nepavyko",
"X (formerly Twitter)" : "X (anksčiau „Twitter“)",
"formerly Twitter" : "anksčiau „Twitter“"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"Invalid Federated Cloud ID" : "Neteisingas federacinės debesijos ID",
"Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje",
"Couldn't establish a federated share." : "Nepavyko užmegzti federacinio viešinio.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nepavyko užmegzti federacinio viešinio, galbūt, neteisingas slaptažodis.",
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Federacinio viešinio užklausa išsiųsta, jūs gausite pakvietimą. Tikrinkite savo pranešimus.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nepavyko užmegzti federacinio viešinio, atrodo, kad serveris su kuriuo ketinama jungtis į federaciją yra per senas (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Iš šio serverio neleidžiama siųsti federacinių grupės viešinių.",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s bendrinimas nepavyko, nes šis elementas jau bendrinamas su %2$s paskyra",
"Not allowed to create a federated share to the same account" : "Draudžiama kurti federacinį bendrinamą išteklių ta pačia paskyra",
"Federated shares require read permissions" : "Federaciniams bendrinamiesiems elementams reikalingi leidimai skaityti",
"File is already shared with %s" : "Failas jau yra bendrinamas su %s",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s bendrinimas nepavyko, %2$s nepavyko rasti, galbūt serveris šiuo metu nepasiekiamas arba naudoja automatiškai pasirašytą sertifikatą.",
"Could not find share" : "Nepavyko rasti viešinio",
"Federated sharing" : "Federacinis bendrinimas",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Jūs gavote {share} kaip nuotolinį viešinį iš {user} ({behalf} vardu)",
"You received {share} as a remote share from {user}" : "Jūs gavote {share} kaip nuotolinį viešinį iš {user}",
"Accept" : "Priimti",
"Decline" : "Atmesti",
"Federated Cloud Sharing" : "Bendrinimas federacinėje debesijoje",
"Sharing" : "Duomenų bendrinimas",
"Federated file sharing" : "Federacinis failų bendrinimas",
"Provide federated file sharing across servers" : "Užtikrinti federacinį failų bendrinimą tarp serverių",
"Confirm data upload to lookup server" : "Patvirtinkite duomenų įkėlimą į paieškos serverį",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Kai įjungta, visos paskyros ypatybės (pvz., el. pašto adresas), kurių matomumo apimtis nustatyta kaip „publikuota“, bus automatiškai sinchronizuojamos ir perduotos išorinei sistemai bei padaromos prieinamos viešojoje, globalioje adresų knygoje.",
"Enable data upload" : "Įgalinti duomenų įkėlimą",
"Disable upload" : "Išjungti įkėlimą",
"Confirm querying lookup server" : "Patvirtinkite užklausos paieškos serverį",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Kai įgalinta, paieškos įvestis kuriant bendrinamus failus bus siunčiama į išorinę sistemą, kurioje yra vieša ir globali adresų knyga.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Tai naudojama norint gauti federacinio debesies ID, kad būtų lengviau bendrinti federacinį serverį.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Be to, į tą sistemą gali būti siunčiami vartotojų el. pašto adresai, siekiant juos patikrinti.",
"Enable querying" : "Įgalinti užklausą",
"Disable querying" : "Išjungti užklausą",
"Unable to update federated files sharing config" : "Nepavyko atnaujinti federacinių failų bendrinimo konfigūracijos",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Koreguokite, kaip naudotojai gali bendrinti tarp serverių. Tai apima ir bendrinimą tarp šio serverio naudotojų, jei jie naudoja federacinį bendrinimą.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Leisti šio serverio naudotojams siųsti bendrinamus failus į kitus serverius (ši parinktis taip pat suteikia „WebDAV“ prieigą prie viešai bendrinamų failų)",
"Allow people on this server to receive shares from other servers" : "Leisti šio serverio naudotojams gauti bendrinamus failus iš kitų serverių",
"Allow people on this server to send shares to groups on other servers" : "Leisti šio serverio naudotojams siųsti bendrinamus failus grupėms kituose serveriuose",
"Allow people on this server to receive group shares from other servers" : "Leisti šio serverio naudotojams gauti grupės bendrinimus iš kitų serverių",
"The lookup server is only available for global scale." : "Paieškos serveris galimas tik globaliu mastu.",
"Search global and public address book for people" : "Ieškoti žmonių globalioje ir viešojoje adresų knygoje",
"Allow people to publish their data to a global and public address book" : "Leisti žmonėms publikuoti savo duomenis globalioje ir viešojoje adresų knygoje",
"Trusted federation" : "Patikima federacija",
"Automatically accept shares from trusted federated accounts and groups by default" : "Automatiškai priimti bendrinimus iš patikimų federacinių paskyrų ir grupių pagal numatytuosius nustatymus",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Pasidalinkite su manimi per mano #Nextcloud Federated Cloud ID, žr. {url}",
"Share with me through my #Nextcloud Federated Cloud ID" : "Bendrinti su manimi per mano #Nextcloud federacinės debesijos ID",
"Share with me via Nextcloud" : "Bendrinkite su manimi per „Nextcloud“",
"Cloud ID copied" : "Cloud ID nukopijuotas",
"Copy" : "Kopijuoti",
"Clipboard not available. Please copy the cloud ID manually." : "Iškarpinė neprieinama. Nukopijuokite debesijos ID rankiniu būdu.",
"Copied!" : "Nukopijuota!",
"Federated Cloud" : "Federacinė debesija",
"You can share with anyone who uses a {productName} server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Galite bendrinti su visais, kas naudoja {productName} serverį ar kitus su „Open Cloud Mesh“ (OCM) suderinamus serverius ir paslaugas! Tiesiog bendrinimo dialogo lange įveskite jų „Federated Cloud“ ID. Jis atrodo taip: person@cloud.example.com",
"Your Federated Cloud ID" : "Jūsų „Federated Cloud“ ID",
"Share it so your friends can share files with you:" : "Pasidalinkite juo, kad jūsų draugai galėtų bendrinti failus kartu su jumis:",
"Bluesky" : "\"Bluesky\"",
"Facebook" : "„Facebook“",
"Mastodon" : "„Mastodon“",
"Add to your website" : "Pridėkite prie savo svetainės",
"Share with me via {productName}" : "Pasidalinkite su manimi per {productName}",
"HTML Code:" : "HTML kodas:",
"Cancel" : "Atsisakyti",
"Add remote share" : "Pridėti nuotolinį viešinį",
"Remote share" : "Nuotolinis viešinys",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite pridėti nuotolinį viešinį {name} iš {owner}@{remote}?",
"Remote share password" : "Nuotolinio viešinio slaptažodis",
"Incoming share could not be processed" : "Gaunamo bendrinimo apdoroti nepavyko",
"X (formerly Twitter)" : "X (anksčiau „Twitter“)",
"formerly Twitter" : "anksčiau „Twitter“"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
@@ -18,7 +18,6 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\JSONResponse;
use OCP\Constants;
use OCP\Federation\ICloudIdManager;
use OCP\HintException;
use OCP\Http\Client\IClientService;
@@ -108,9 +107,9 @@ class MountPublicLinkController extends Controller {
return $response;
}
if (($share->getPermissions() & Constants::PERMISSION_READ) === 0) {
if (!$share->canDownload()) {
$response = new JSONResponse(
['message' => 'Mounting file drop not supported'],
['message' => 'Mounting download restricted share is not allowed'],
Http::STATUS_BAD_REQUEST
);
$response->throttle();
+8
View File
@@ -15,6 +15,14 @@ OC.L10N.register(
"Add trusted server" : "Ajouter un serveur de confiance",
"Server url" : "URL du serveur",
"Add" : "Ajouter",
"Server ok" : "Serveur Ok",
"User list was exchanged at least once successfully with the remote server." : "La liste des utilisateurs a été échangée au moins une fois avec succès avec le serveur distant.",
"Server pending" : "Serveur en attente",
"Waiting for shared secret or initial user list exchange." : "En attente du partage du secret ou de l'échange initial de la liste des utilisateurs.",
"Server access revoked" : "Accès du serveur révoqué",
"Server failure" : "Échec du serveur",
"Connection to the remote server failed or the remote server is misconfigured." : "La connexion avec le serveur distant a échoué ou le serveur distant est mal configuré.",
"Failed to delete trusted server. Please try again later." : "Échec de suppression du serveur de confiance. Veuillez réessayer plus tard.",
"Delete" : "Supprimer",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Une fédération vous permet de vous connecter avec d'autres serveurs de confiance pour échanger la liste des comptes. Par exemple, ce sera utilisé pour auto-compléter les comptes externes lors du partage fédéré. Il n'est pas nécessaire d'ajouter un serveur comme serveur de confiance afin de créer un partage fédéré.",
"Each server must validate the other. This process may require a few cron cycles." : "Chaque serveur doit valider l'autre. Ce processus peut prendre plusieurs cycles de tâches planifiées.",
+8
View File
@@ -13,6 +13,14 @@
"Add trusted server" : "Ajouter un serveur de confiance",
"Server url" : "URL du serveur",
"Add" : "Ajouter",
"Server ok" : "Serveur Ok",
"User list was exchanged at least once successfully with the remote server." : "La liste des utilisateurs a été échangée au moins une fois avec succès avec le serveur distant.",
"Server pending" : "Serveur en attente",
"Waiting for shared secret or initial user list exchange." : "En attente du partage du secret ou de l'échange initial de la liste des utilisateurs.",
"Server access revoked" : "Accès du serveur révoqué",
"Server failure" : "Échec du serveur",
"Connection to the remote server failed or the remote server is misconfigured." : "La connexion avec le serveur distant a échoué ou le serveur distant est mal configuré.",
"Failed to delete trusted server. Please try again later." : "Échec de suppression du serveur de confiance. Veuillez réessayer plus tard.",
"Delete" : "Supprimer",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Une fédération vous permet de vous connecter avec d'autres serveurs de confiance pour échanger la liste des comptes. Par exemple, ce sera utilisé pour auto-compléter les comptes externes lors du partage fédéré. Il n'est pas nécessaire d'ajouter un serveur comme serveur de confiance afin de créer un partage fédéré.",
"Each server must validate the other. This process may require a few cron cycles." : "Chaque serveur doit valider l'autre. Ce processus peut prendre plusieurs cycles de tâches planifiées.",
+33
View File
@@ -0,0 +1,33 @@
OC.L10N.register(
"federation",
{
"Added to the list of trusted servers" : "Pridėtas į patikimų serverių sąrašą",
"No server found with ID: %s" : "Nerasta jokio serverio, kurio ID: %s",
"Could not remove server" : "Nepavyko pašalinti serverio",
"Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.",
"No server to federate with found" : "Nerasta jokio serverio, su kuriuo jungtis į federaciją",
"Could not add server" : "Nepavyko pridėti serverio",
"Trusted servers" : "Patikimi serveriai",
"Federation" : "Federacija",
"Federation allows you to connect with other trusted servers to exchange the account directory." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyros katalogu.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyros katalogu.",
"Could not add trusted server. Please try again later." : "Nepavyko pridėti patikimo serverio. Bandykite dar kartą vėliau.",
"Add trusted server" : "Pridėti patikimą serverį",
"Server url" : "Serverio url",
"Add" : "Pridėti",
"Server ok" : "Serveris tvarkoje",
"User list was exchanged at least once successfully with the remote server." : "Vartotojų sąrašas buvo bent kartą sėkmingai pakeistas su nuotoliniu serveriu.",
"Server pending" : "Laukiama serverio",
"Waiting for shared secret or initial user list exchange." : "Laukiama bendrinamo slapto rakto arba pradinio naudotojų sąrašo pasikeitimo.",
"Server access revoked" : "Prieiga prie serverio atšaukta",
"Server failure" : "Serverio gedimas",
"Connection to the remote server failed or the remote server is misconfigured." : "Ryšys su nuotoliniu serveriu nepavyko arba nuotolinis serveris yra neteisingai sukonfigūruotas.",
"Failed to delete trusted server. Please try again later." : "Nepavyko pašalinti patikimo serverio. Bandykite dar kartą vėliau.",
"Delete" : "Ištrinti",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyrų katalogu. Pavyzdžiui, tai bus naudojama automatiškai užpildyti išorines paskyras, skirtas federuotam bendrinimui. Norint sukurti federuotą bendrinimą, nebūtina pridėti serverio kaip patikimo serverio.",
"Each server must validate the other. This process may require a few cron cycles." : "Kiekvienas serveris turi patvirtinti kitą. Šiam procesui gali prireikti kelių „cron“ ciklų.",
"External documentation for Federated Cloud Sharing" : "Išorinė dokumentacija apie Federacinį Debesies Bendrinimą",
"+ Add trusted server" : "+ Pridėti patikimą serverį",
"Trusted server" : "Patikimas serveris"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+31
View File
@@ -0,0 +1,31 @@
{ "translations": {
"Added to the list of trusted servers" : "Pridėtas į patikimų serverių sąrašą",
"No server found with ID: %s" : "Nerasta jokio serverio, kurio ID: %s",
"Could not remove server" : "Nepavyko pašalinti serverio",
"Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.",
"No server to federate with found" : "Nerasta jokio serverio, su kuriuo jungtis į federaciją",
"Could not add server" : "Nepavyko pridėti serverio",
"Trusted servers" : "Patikimi serveriai",
"Federation" : "Federacija",
"Federation allows you to connect with other trusted servers to exchange the account directory." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyros katalogu.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyros katalogu.",
"Could not add trusted server. Please try again later." : "Nepavyko pridėti patikimo serverio. Bandykite dar kartą vėliau.",
"Add trusted server" : "Pridėti patikimą serverį",
"Server url" : "Serverio url",
"Add" : "Pridėti",
"Server ok" : "Serveris tvarkoje",
"User list was exchanged at least once successfully with the remote server." : "Vartotojų sąrašas buvo bent kartą sėkmingai pakeistas su nuotoliniu serveriu.",
"Server pending" : "Laukiama serverio",
"Waiting for shared secret or initial user list exchange." : "Laukiama bendrinamo slapto rakto arba pradinio naudotojų sąrašo pasikeitimo.",
"Server access revoked" : "Prieiga prie serverio atšaukta",
"Server failure" : "Serverio gedimas",
"Connection to the remote server failed or the remote server is misconfigured." : "Ryšys su nuotoliniu serveriu nepavyko arba nuotolinis serveris yra neteisingai sukonfigūruotas.",
"Failed to delete trusted server. Please try again later." : "Nepavyko pašalinti patikimo serverio. Bandykite dar kartą vėliau.",
"Delete" : "Ištrinti",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Federacija leidžia prisijungti prie kitų patikimų serverių, kad būtų galima keistis paskyrų katalogu. Pavyzdžiui, tai bus naudojama automatiškai užpildyti išorines paskyras, skirtas federuotam bendrinimui. Norint sukurti federuotą bendrinimą, nebūtina pridėti serverio kaip patikimo serverio.",
"Each server must validate the other. This process may require a few cron cycles." : "Kiekvienas serveris turi patvirtinti kitą. Šiam procesui gali prireikti kelių „cron“ ciklų.",
"External documentation for Federated Cloud Sharing" : "Išorinė dokumentacija apie Federacinį Debesies Bendrinimą",
"+ Add trusted server" : "+ Pridėti patikimą serverį",
"Trusted server" : "Patikimas serveris"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
@@ -13,6 +13,7 @@ use OCA\Federation\SyncFederationAddressBooks as SyncService;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class SyncFederationAddressBooks extends Command {
@@ -25,19 +26,21 @@ class SyncFederationAddressBooks extends Command {
protected function configure() {
$this
->setName('federation:sync-addressbooks')
->setDescription('Synchronizes addressbooks of all federated clouds');
->setDescription('Synchronizes addressbooks of all federated clouds')
->addOption('full', null, InputOption::VALUE_NONE, 'Perform a full sync instead of a delta sync');
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$progress = new ProgressBar($output);
$progress->start();
$full = (bool)$input->getOption('full');
$this->syncService->syncThemAll(function ($url, $ex) use ($progress, $output): void {
if ($ex instanceof \Exception) {
$output->writeln("Error while syncing $url : " . $ex->getMessage());
} else {
$progress->advance();
}
});
}, $full);
$progress->finish();
$output->writeln('');
@@ -24,7 +24,7 @@ class SyncFederationAddressBooks {
/**
* @param \Closure $callback
*/
public function syncThemAll(\Closure $callback) {
public function syncThemAll(\Closure $callback, bool $full = false) {
$trustedServers = $this->dbHandler->getAllServer();
foreach ($trustedServers as $trustedServer) {
$url = $trustedServer['url'];
@@ -49,19 +49,28 @@ class SyncFederationAddressBooks {
try {
$syncToken = $oldSyncToken;
$book = $this->syncService->ensureSystemAddressBookExists($targetPrincipal, $targetBookId, $targetBookProperties);
if ($full) {
$this->syncService->markCardsAsPending($book['id']);
}
do {
[$syncToken, $truncated] = $this->syncService->syncRemoteAddressBook(
$url,
$cardDavUser,
$addressBookUrl,
$sharedSecret,
$syncToken,
$full ? null : $syncToken,
$targetBookId,
$targetPrincipal,
$targetBookProperties
);
} while ($truncated);
if ($full) {
$this->syncService->deletePendingCards($book['id']);
}
if ($syncToken !== $oldSyncToken) {
$this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $syncToken);
} else {
+1
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Už existuje jiná položka se stejným názvem.",
"Invalid filename." : "Neplatný název souboru.",
"Rename file" : "Přejmenovat soubor",
"Recently created" : "Nedávno vytvořeno",
"Folder" : "Složka",
"Unknown file type" : "Neznámý typ souboru",
"{ext} image" : "{ext}obrázek",
+1
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "Už existuje jiná položka se stejným názvem.",
"Invalid filename." : "Neplatný název souboru.",
"Rename file" : "Přejmenovat soubor",
"Recently created" : "Nedávno vytvořeno",
"Folder" : "Složka",
"Unknown file type" : "Neznámý typ souboru",
"{ext} image" : "{ext}obrázek",
+7 -7
View File
@@ -399,10 +399,10 @@ OC.L10N.register(
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Clear filter" : "Filter zurücksetzen",
"Open file sidebar" : "Datei-Seitenleiste öffnen",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Shared by link" : "Über einen Link geteilt",
"Shared" : "Geteilt",
"You" : "Du",
@@ -410,8 +410,8 @@ OC.L10N.register(
"Unable to change the favorite state of the file" : "Der Favoriten-Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Tags" : "Schlagworte",
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
},
"nplurals=2; plural=(n != 1);");
+7 -7
View File
@@ -397,10 +397,10 @@
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Clear filter" : "Filter zurücksetzen",
"Open file sidebar" : "Datei-Seitenleiste öffnen",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Shared by link" : "Über einen Link geteilt",
"Shared" : "Geteilt",
"You" : "Du",
@@ -408,8 +408,8 @@
"Unable to change the favorite state of the file" : "Der Favoriten-Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Tags" : "Schlagworte",
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+7 -7
View File
@@ -399,10 +399,10 @@ OC.L10N.register(
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Clear filter" : "Filter zurücksetzen",
"Open file sidebar" : "Datei-Seitenleiste öffnen",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Shared by link" : "Über einen Link geteilt",
"Shared" : "Geteilt",
"You" : "Sie",
@@ -410,8 +410,8 @@ OC.L10N.register(
"Unable to change the favorite state of the file" : "Der Favoriten-Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Tags" : "Schlagworte",
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
},
"nplurals=2; plural=(n != 1);");
+7 -7
View File
@@ -397,10 +397,10 @@
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Clear filter" : "Filter zurücksetzen",
"Open file sidebar" : "Datei-Seitenleiste öffnen",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Search everywhere …" : "Überall suchen …",
"Search here …" : "Hier suchen …",
"Preparing …" : "Bereite vor …",
"Submitting fields …" : "Felder werden übermittelt …",
"Shared by link" : "Über einen Link geteilt",
"Shared" : "Geteilt",
"You" : "Sie",
@@ -408,8 +408,8 @@
"Unable to change the favorite state of the file" : "Der Favoriten-Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Tags" : "Schlagworte",
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
"Save as …" : "Speichern als …",
"Converting files …" : "Dateien werden konvertiert …",
"Converting file …" : "Datei wird konvertiert …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Une autre entrée avec le même nom existe déjà.",
"Invalid filename." : "Nom de fichier invalide.",
"Rename file" : "Renommer le fichier",
"Recently created" : "Créé récemment",
"Folder" : "Dossier",
"Unknown file type" : "Type de fichier inconnu",
"{ext} image" : "{ext} image",
+1
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "Une autre entrée avec le même nom existe déjà.",
"Invalid filename." : "Nom de fichier invalide.",
"Rename file" : "Renommer le fichier",
"Recently created" : "Créé récemment",
"Folder" : "Dossier",
"Unknown file type" : "Type de fichier inconnu",
"{ext} image" : "{ext} image",
+1
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Već postoji drugi upis s istim nazivom.",
"Invalid filename." : "Nevažeći naziv datoteke.",
"Rename file" : "Preimenuj datoteku",
"Recently created" : "Nedavno stvoreno",
"Folder" : "Mapa",
"Unknown file type" : "Nepoznata vrsta datoteke",
"{ext} image" : "{ext} slika",
+1
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "Već postoji drugi upis s istim nazivom.",
"Invalid filename." : "Nevažeći naziv datoteke.",
"Rename file" : "Preimenuj datoteku",
"Recently created" : "Nedavno stvoreno",
"Folder" : "Mapa",
"Unknown file type" : "Nepoznata vrsta datoteke",
"{ext} image" : "{ext} slika",
+17 -16
View File
@@ -1,24 +1,25 @@
OC.L10N.register(
"files",
{
"Added to favorites" : "Added to favorites",
"Removed from favorites" : "Removed from favorites",
"You added {file} to your favorites" : "You added {file} to your favorites",
"You removed {file} from your favorites" : "You removed {file} from your favorites",
"Added to favorites" : "დაემატა რჩეულებში",
"Removed from favorites" : "ამოიშალა რჩეულებიდან",
"You added {file} to your favorites" : "თქვენ დაამატეთ {file}-ი რჩეულებში",
"You removed {file} from your favorites" : "თქვენ ამოშალეთ {file}-ი თქვენი რჩეული ფაილებიდან",
"Favorites" : "ფავორიტები",
"File changes" : "ფაილის ცვლილებები",
"Created by {user}" : "Created by {user}",
"Changed by {user}" : "Changed by {user}",
"Deleted by {user}" : "Deleted by {user}",
"Restored by {user}" : "Restored by {user}",
"Renamed by {user}" : "Renamed by {user}",
"Moved by {user}" : "Moved by {user}",
"You created {file}" : "You created {file}",
"You created an encrypted file in {file}" : "You created an encrypted file in {file}",
"{user} created {file}" : "{user} created {file}",
"{user} created an encrypted file in {file}" : "{user} created an encrypted file in {file}",
"{file} was created in a public folder" : "{file} was created in a public folder",
"You changed {file}" : "You changed {file}",
"Created by {user}" : "შექმნა მომხმარებელმა {user}",
"Changed by {user}" : "შეცვალა მომხმარებელმა {user}",
"Deleted by {user}" : "წაშალა მომხმარებელმა {user}",
"Restored by {user}" : "აღადგინა მომხმარებელმა {user}",
"Renamed by {user}" : "სახელი გადაარქვა მომხმარებელმა {user}",
"Moved by {user}" : "გადაიტანა მომხმარებელმა {user}",
"\"remote account\"" : "დისნტანციური ანგარიში",
"You created {file}" : "თქვენ შექმენით {file}",
"You created an encrypted file in {file}" : "შექმენით დაშიფრული ფაილი {file}-ში",
"{user} created {file}" : "{user} მომხმარებელმა შექმნა {file}",
"{user} created an encrypted file in {file}" : "{user} მომხმარებელმა შექმნა დაშიფრული ფაილი {file}-ში",
"{file} was created in a public folder" : "{file} შეიქმნა საზოგადო დირექტორიაში",
"You changed {file}" : "თქვენ შეცვალეთ {file}",
"You changed an encrypted file in {file}" : "You changed an encrypted file in {file}",
"{user} changed {file}" : "{user} changed {file}",
"{user} changed an encrypted file in {file}" : "{user} changed an encrypted file in {file}",
+17 -16
View File
@@ -1,22 +1,23 @@
{ "translations": {
"Added to favorites" : "Added to favorites",
"Removed from favorites" : "Removed from favorites",
"You added {file} to your favorites" : "You added {file} to your favorites",
"You removed {file} from your favorites" : "You removed {file} from your favorites",
"Added to favorites" : "დაემატა რჩეულებში",
"Removed from favorites" : "ამოიშალა რჩეულებიდან",
"You added {file} to your favorites" : "თქვენ დაამატეთ {file}-ი რჩეულებში",
"You removed {file} from your favorites" : "თქვენ ამოშალეთ {file}-ი თქვენი რჩეული ფაილებიდან",
"Favorites" : "ფავორიტები",
"File changes" : "ფაილის ცვლილებები",
"Created by {user}" : "Created by {user}",
"Changed by {user}" : "Changed by {user}",
"Deleted by {user}" : "Deleted by {user}",
"Restored by {user}" : "Restored by {user}",
"Renamed by {user}" : "Renamed by {user}",
"Moved by {user}" : "Moved by {user}",
"You created {file}" : "You created {file}",
"You created an encrypted file in {file}" : "You created an encrypted file in {file}",
"{user} created {file}" : "{user} created {file}",
"{user} created an encrypted file in {file}" : "{user} created an encrypted file in {file}",
"{file} was created in a public folder" : "{file} was created in a public folder",
"You changed {file}" : "You changed {file}",
"Created by {user}" : "შექმნა მომხმარებელმა {user}",
"Changed by {user}" : "შეცვალა მომხმარებელმა {user}",
"Deleted by {user}" : "წაშალა მომხმარებელმა {user}",
"Restored by {user}" : "აღადგინა მომხმარებელმა {user}",
"Renamed by {user}" : "სახელი გადაარქვა მომხმარებელმა {user}",
"Moved by {user}" : "გადაიტანა მომხმარებელმა {user}",
"\"remote account\"" : "დისნტანციური ანგარიში",
"You created {file}" : "თქვენ შექმენით {file}",
"You created an encrypted file in {file}" : "შექმენით დაშიფრული ფაილი {file}-ში",
"{user} created {file}" : "{user} მომხმარებელმა შექმნა {file}",
"{user} created an encrypted file in {file}" : "{user} მომხმარებელმა შექმნა დაშიფრული ფაილი {file}-ში",
"{file} was created in a public folder" : "{file} შეიქმნა საზოგადო დირექტორიაში",
"You changed {file}" : "თქვენ შეცვალეთ {file}",
"You changed an encrypted file in {file}" : "You changed an encrypted file in {file}",
"{user} changed {file}" : "{user} changed {file}",
"{user} changed an encrypted file in {file}" : "{user} changed an encrypted file in {file}",
+194 -10
View File
@@ -43,38 +43,65 @@ OC.L10N.register(
"Files" : "Failai",
"A file or folder has been <strong>changed</strong>" : "Buvo <strong>pakeistas</strong> failas ar aplankas",
"A favorite file or folder has been <strong>changed</strong>" : "Buvo <strong>pakeistas</strong> mėgstamas failas ar aplankas",
"Failed to authorize" : "Nepavyko autorizuoti",
"Invalid folder path" : "Neteisingas aplanko kelias",
"Folder not found" : "Aplankas nerastas",
"The file cannot be found" : "Failas negali būti surastas",
"The destination path does not exist: %1$s" : "Paskirties kelio nėra: %1$s",
"You do not have permission to create a file at the specified location" : "Jūs neturite leidimo sukurti failą nurodytoje vietoje",
"The file could not be converted." : "Nepavyko konvertuoti failo.",
"Could not get relative path to converted file" : "Nepavyko gauti santykinio kelio į konvertuotą failą",
"Limit must be a positive integer." : "Limito riba turi būti teigiamas sveikasis skaičius.",
"The replacement character may only be a single character." : "Pakaitinis simbolis gali būti tik vienas simbolis.",
"Filename sanitization already started." : "Failų pavadinimų valymas jau pradėtas.",
"No filename sanitization in progress." : "Failų pavadinimų valymas nevykdomas.",
"Favorite files" : "Mėgstamiausi failai",
"No favorites" : "Nėra mėgstamiausių",
"More favorites" : "Daugiau mėgstamiausių",
"Accept" : "Priimti",
"Reject" : "Atmesti",
"Incoming ownership transfer from {user}" : "Gaunamasis nuosavybės perdavimas nuo {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Ar norite priimti {path}?\n\nPastaba: Priėmus, perdavimo procesas gali užtrukti iki 1 valandos.",
"Ownership transfer denied" : "Nuosavybės perdavimas atmestas",
"Your ownership transfer of {path} was denied by {user}." : "Jūsų nuosavybės {path} perdavimas buvo atmestas {user}.",
"Ownership transfer failed" : "Nuosavybės perdavimas nepavyko",
"Your ownership transfer of {path} to {user} failed." : "Nepavyko perduoti jūsų {path} nuosavybės naudotojui {user}.",
"The ownership transfer of {path} from {user} failed." : "{path} nuosavybės perdavimas iš naudotojo {user} nepavyko.",
"Ownership transfer done" : "Nuosavybės perdavimas atliktas",
"Your ownership transfer of {path} to {user} has completed." : "Jūsų {path} nuosavybės perdavimas naudotojui {user} užbaigtas.",
"The ownership transfer of {path} from {user} has completed." : "{path} nuosavybės perdavimas iš naudotojo {user} užbaigtas.",
"in %s" : "per %s",
"in %s" : "pо %s",
"Transferred from %1$s on %2$s" : "Perkelta iš %1$s į %2$s",
"File Management" : "Failų tvarkymas",
"Home" : "Pagrindinis",
"Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra",
"Reload current directory" : "Įkelti dabartinį katalogą iš naujo",
"Go to the \"{dir}\" directory" : "Eikite į \"{dir}\" katalogą",
"Current directory path" : "Dabartinis katalogo kelias",
"Share" : "Bendrinti",
"Drag and drop files here to upload" : "Tempkite failus čia norėdami išsiųsti",
"Reload content" : "Įkelti turinį iš naujo",
"Your have used your space quota and cannot upload files anymore" : "Jūs išnaudojote leidžiamą duomenų kiekį ir daugiau nebegalite išsiųsti failų",
"You do not have permission to upload or create files here." : "Jūs neturite leidimo čia įkelti ar kurti failų.",
"Drag and drop files here to upload" : "Tempkite čia failus norėdami juos išsiųsti",
"Favorite" : "Mėgstamas",
"Back" : "Atgal",
"Toggle selection for file \"{displayName}\"" : "Perjungti failo „{displayName}“ pasirinkimą",
"Toggle selection for folder \"{displayName}\"" : "Perjungti aplanko „{displayName}“ pasirinkimą",
"File is loading" : "Failas yra įkeliamas",
"Folder is loading" : "Aplankas yra įkeliamas",
"Filename" : "Failo pavadinimas",
"Folder name" : "Aplanko pavadinimas",
"This node is unavailable" : "Šis mazgas neprieinamas",
"Another entry with the same name already exists." : "Kitas įrašas tuo pačiu pavadinimu jau yra.",
"Invalid filename." : "Neteisingas failo pavadinimas.",
"Rename file" : "Pervadinti failą",
"Recently created" : "Neseniai sukurta",
"Folder" : "Aplankas",
"Unknown file type" : "Nežinomas failo tipas",
"{ext} image" : "{ext} paveikslėlis",
"{ext} video" : "{ext} vaizdo įrašas",
"{ext} audio" : "{ext} garso įrašas",
"{ext} text" : "{ext} tekstas",
"Pending" : "Laukiantis",
"Unknown date" : "Nežinoma data",
"Active filters" : "Aktyvūs filtrai",
@@ -82,6 +109,11 @@ OC.L10N.register(
"Today" : "Šiandien",
"Last 7 days" : "Paskutinės 7 dienos",
"Last 30 days" : "Paskutinės 30 dienų",
"This year ({year})" : "Šie metai ({year})",
"Last year ({year})" : "Praėję metai ({year})",
"Custom range" : "Pasirinktinis diapazonas",
"Custom date range" : "Pasirinktinis datų diapazonas",
"Search everywhere" : "Ieškoti visur",
"Documents" : "Dokumentai",
"Spreadsheets" : "Skaičiuoklės",
"Presentations" : "Pateiktys",
@@ -91,26 +123,64 @@ OC.L10N.register(
"Images" : "Paveikslai",
"Videos" : "Vaizdo įrašai",
"Filters" : "Filtrai",
"Back to filters" : "Atgal į filtrus",
"Appearance" : "Išvaizda",
"Show hidden files" : "Rodyti paslėptus failus",
"Show file type column" : "Rodyti failo tipo stulpelį",
"Show file extensions" : "Rodyti failų plėtinius",
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
"General" : "Bendra",
"Sort favorites first" : "Pirmiausia rūšiuoti mėgstamiausius",
"Sort folders before files" : "Rūšiuoti aplankus prieš failus",
"Enable folder tree view" : "Įjungti aplankų medžio rodinį",
"Default view" : "Numatytasis rodinys",
"All files" : "Visi failai",
"Personal files" : "Asmeniniai failai",
"Additional settings" : "Papildomi nustatymai",
"Actions" : "Veiksmai",
"File actions" : "Veiksmai su failais",
"Selection" : "Pasirinkimas",
"Select all files" : "Pasirinkti visus failus",
"Deselect all" : "Panaikinti pasirinkimą",
"Navigation" : "Navigacija",
"Select or deselect" : "Pasirinkti arba panaikinti pasirinkimą",
"Select a range" : "Pasirinkite diapazoną",
"Navigation" : "Naršymas",
"Go to parent folder" : "Eiti į viršesnį aplanką",
"Go to file above" : "Eiti į aukščiau esantį failą",
"Go to file below" : "Eiti į žemiau esantį failą",
"Go left in grid" : "Eiti į kairę tinklelyje",
"Go right in grid" : "Eiti į dešinę tinklelyje",
"View" : "Rodyti",
"Toggle grid view" : "Rodyti tinkleliu",
"Toggle grid view" : "Perjungti tinklelio rodinį",
"Show those shortcuts" : "Rodyti tuos sparčiuosius klavišus",
"Warnings" : "Įspėjimai",
"Warn before changing a file extension" : "Įspėti prieš keičiant failo prievardį",
"Warn before deleting a file" : "Įspėti prieš ištrinant failą",
"WebDAV URL" : "WebDAV URL",
"Create an app password" : "Sukurkite programėlės slaptažodį",
"Required for WebDAV authentication because Two-Factor Authentication is enabled for this account." : "Būtina „WebDAV“ autentifikavimui, nes šiai paskyrai įjungtas dviejų veiksnių autentifikavimas.",
"How to access files using WebDAV" : "Kaip pasiekti failus naudojant WebDAV",
"Total rows summary" : "Bendras eilučių skaičius",
"Toggle selection for all files and folders" : "Perjungti visų failų ir aplankų pasirinkimą",
"Name" : "Pavadinimas",
"File type" : "Failo tipas",
"Size" : "Dydis",
"Modified" : "Pakeistas",
"{displayName}: failed on some elements" : "{displayName}: kai kurių elementų klaida",
"{displayName}: done" : "{displayName}: padaryta",
"{displayName}: failed" : "{displayName}: nepavyko",
"(selected)" : "(pasirinktas)",
"List of files and folders." : "Failų ir aplankų sąrašas.",
"You have used your space quota and cannot upload files anymore." : "Išnaudojote savo vietos kvotą ir daugiau negalite įkelti failų.",
"Column headers with buttons are sortable." : "Stulpelių antraštes su mygtukais galima rūšiuoti.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Šis sąrašas nėra pilnai sugeneruotas dėl našumo priežasčių. Failai bus sugeneruoti jums naršant sąraše.",
"File not found" : "Failas nerastas",
"_{count} selected_::_{count} selected_" : ["{count} pasirinktas","{count} pasirinkti","{count} pasirinkti","{count} pasirinkti"],
"Views" : "Rodiniai",
"Search everywhere …" : "Ieškoti visur…",
"Search here …" : "Ieškoti čia…",
"Search scope options" : "Paieškos apimties parinktys",
"Search here" : "Ieškoti čia",
"Owner" : "Savininkas",
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
"{used} of {quota} used" : "panaudota {used} iš {quota}",
@@ -118,11 +188,32 @@ OC.L10N.register(
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage information" : "Informacija apie saugyklą",
"Storage quota" : "Saugyklos kvota",
"New folder" : "Naujas aplankas",
"Create new folder" : "Sukurti naują aplanką",
"This name is already in use." : "Šis pavadinimas jau yra naudojamas.",
"Create" : "Sukurti",
"Files starting with a dot are hidden by default" : "Failai, prasidedantys tašku, pagal numatytuosius nustatymus yra paslėpti",
"Failed to start filename sanitization." : "Nepavyko pradėti failų pavadinimų valymo.",
"Failed to refresh filename sanitization status." : "Nepavyko atnaujinti failo pavadinimo išvalymo būsenos.",
"Filename sanitization in progress." : "Vykdomas failų pavadinimų valymas.",
"Currently {processedUsers} of {totalUsers} accounts are already processed." : "Šiuo metu {processedUsers} naudotojų paskyros iš {totalUsers} egzistuojančių jau apdorotos.",
"Preparing …" : "Ruošiama…",
"Refresh" : "Įkelti iš naujo",
"All files have been santized for Windows filename support." : "Visi failai buvo patvirtinti, kad atitiktų „Windows“ failų pavadinimų reikalavimus.",
"Some files could not be sanitized, please check your logs." : "Kai kurių failų nepavyko išvalyti, patikrinkite savo registrų įrašų žurnalus.",
"Sanitization errors" : "Valymo klaidos",
"Not sanitized filenames" : "Neišvalyti failų vardai",
"Windows filename support has been enabled." : "Įjungtas „Windows“ failų vardų palaikymas.",
"While this blocks users from creating new files with unsupported filenames, existing files are not yet renamed and thus still may break sync on Windows." : "Nors tai neleidžia vartotojams kurti naujų failų su nepalaikomais failų pavadinimais, esami failai dar nėra pervadinti, todėl vis tiek gali sutrikdyti sinchronizavimą sistemoje „Windows“.",
"You can trigger a rename of files with invalid filenames, this will be done in the background and may take some time." : "Galite pervadinti failus su neteisingais pavadinimais. Tai bus atliekama fone ir gali užtrukti.",
"Please note that this may cause high workload on the sync clients." : "Atminkite, kad tai gali sukelti didelį sinchronizavimo klientų darbo krūvį.",
"Limit" : "Limitas",
"This allows to configure how many users should be processed in one background job run." : "Tai leidžia konfigūruoti, kiek vartotojų turėtų būti apdorojama vieno foninio darbo vykdymo metu.",
"Sanitize filenames" : "Išvalyti failų pavadinimus",
"(starting)" : "(pradedama)",
"Fill template fields" : "Užpildykite šablono laukus",
"Submitting fields …" : "Pateikiami laukai  ...",
"Submit" : "Pateikti",
"Choose a file or folder to transfer" : "Pasirinkite norimą perduoti failą ar aplanką",
"Transfer" : "Perduoti",
@@ -130,104 +221,197 @@ OC.L10N.register(
"Invalid path selected" : "Pasirinktas neteisingas kelias",
"Unknown error" : "Nežinoma klaida",
"Ownership transfer request sent" : "Nuosavybės perdavimo užklausa išsiųsta",
"Cannot transfer ownership of a file or folder you do not own" : "Negalima perduoti jums nepriklausančio failo ar aplanko nuosavybės teisės",
"Transfer ownership of a file or folder" : "Perduoti failo ar aplanko nuosavybę",
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
"Change" : "Keisti",
"New owner" : "Naujasis savininkas",
"Keep {old}" : "Palikti {old}",
"Keep without extension" : "Palikti be prievardžio",
"Use {new}" : "Naudoti {new}",
"Remove extension" : "Pašalinti prievardį",
"Change file extension" : "Keisti failo prievardį",
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Pakeitus failo plėtinį iš „{old}“ į „{new}“, failas gali tapti neįskaitomas.",
"Removing the file extension \"{old}\" may render the file unreadable." : "Pašalinus failo plėtinį „{old}“, failas gali tapti neįskaitomas.",
"Adding the file extension \"{new}\" may render the file unreadable." : "Pridėjus failo plėtinį „{new}“, failas gali tapti neįskaitomas.",
"Do not show this dialog again." : "Daugiau neberodyti šio dialogo.",
"Rename file to hidden" : "Pervadinti failą į paslėptą",
"Prefixing a filename with a dot may render the file hidden." : "Failo pavadinimo pradžioje įrašius tašką, failas gali būti paslėptas.",
"Are you sure you want to rename the file to \"{filename}\"?" : "Ar tikrai norite pervardyti failą į „{filename}“?",
"Cancel" : "Atsisakyti",
"Rename" : "Pervadinti",
"Select file or folder to link to" : "Pasirinkite failą arba aplanką, į kurį norite susieti",
"Choose {file}" : "Pasirinkti{file}",
"Files settings" : "Failų nustatymai",
"Switch to list view" : "Perjungti į sąrašo rodinį",
"Switch to grid view" : "Perjungti į tinklelio rodinį",
"The file could not be found" : "Failas nerastas",
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
"The file could not be found" : "Nepavyko rasti failo",
"Upload was cancelled by user" : "Naudotojas atsisakė failo išsiuntimo",
"Not enough free space" : "Trūksta laisvos vietos",
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
"Error during upload, status code {status}" : "Įkėlimo klaida, būsenos kodas - {status}",
"Unknown error during upload" : "Įkėlimo metu įvyko nežinoma klaida",
"File list is reloading" : "Failų sąrašas įkeliamas iš naujo",
"Loading current folder" : "Įkeliamas dabartinis aplankas",
"Retry" : "Bandyti dar kartą",
"No files in here" : "Čia failų nėra",
"Upload some content or sync with your devices!" : "Įkelkite failus arba sinchronizuokite su savo įrenginiais!",
"Go back" : "Grįžti",
"Loading …" : "Įkeliama …",
"Loading …" : "Įkeliama…",
"Your files" : "Jūsų failai",
"Open in files" : "Atidaryti failuose",
"File cannot be accessed" : "Nepavyksta gauti prieigos prie failo",
"The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Nepavyko surasti failo arba jūs neturite leidimo jo peržiūrėti. Paprašykite siuntėjo, kad pradėtų jį su jumis bendrinti.",
"No search results for “{query}”" : "Nėra paieškos rezultatų pagal užklausą „{query}“",
"Search for files" : "Ieškoti failų",
"Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Leisti apriboti failų pavadinimus, siekiant užtikrinti, kad failus būtų galima sinchronizuoti su visais klientais. Pagal numatytuosius nustatymus leidžiami visi failų vardai, galiojantys POSIX (pvz., Linux arba macOS).",
"After enabling the Windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Įjungus su „Windows“ suderinamus failų pavadinimus, esamų failų nebegalima modifikuoti, tačiau jų savininkas gali juos pervadinti galiojančiais naujais pavadinimais.",
"Failed to toggle Windows filename support" : "Nepavyko įjungti „Windows“ failų vardų palaikymo",
"Files compatibility" : "Failų suderinamumas",
"Enforce Windows compatibility" : "Užtikrinti suderinamumą su „Windows“",
"This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Tai blokuos „Windows“ sistemose negaliojančius failų pavadinimus, pvz., rezervuotus pavadinimus ar specialiuosius simbolius. Tačiau tai neužtikrins didžiųjų ir mažųjų raidžių skyrimo suderinamumo.",
"Blank" : "Tuščia",
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
"Creating file" : "Sukuriamas failas",
"Save as {displayName}" : "Įrašyti kaip {displayName}",
"Save as …" : "Įrašyti kaip…",
"Converting files …" : "Failų konvertavimas  ...",
"Failed to convert files: {message}" : "Nepavyko konvertuoti failų: {message}",
"All files failed to be converted" : "Nepavyko konvertuoti visų failų",
"One file could not be converted: {message}" : "Vieno failo nepavyko konvertuoti: {message}",
"_%n file could not be converted_::_%n files could not be converted_" : ["%n failas negali būti konvertuotas","%n failai negali būti konvertuoti","%n failų negali būti konvertuota","%n failų negali būti konvertuota"],
"_%n file converted_::_%n files converted_" : ["%n failas konvertuotas","%n failai konvertuoti","%n failų konvertuota","%n failų konvertuota"],
"Files converted" : "Failai konvertuoti",
"Failed to convert files" : "Nepavyko konvertuoti failų",
"Converting file …" : "Failai konvertuojami  ...",
"File successfully converted" : "Failas sėkmingai konvertuotas",
"Failed to convert file: {message}" : "Nepavyko konvertuoti failo: {message}",
"Failed to convert file" : "Nepavyko konvertuoti failo",
"Delete" : "Ištrinti",
"Leave this share" : "Palikti bendrinimą",
"Leave these shares" : "Palikti bendrinimus",
"Disconnect storage" : "Atjungti saugyklą",
"Delete permanently" : "Ištrinti negrįžtamai",
"Disconnect storages" : "Atjungti saugyklas",
"Delete permanently" : "Ištrinti visam laikui",
"Delete and unshare" : "Ištrinti ir nebebendrinti",
"Delete file" : "Ištrinti failą",
"Delete files" : "Ištrinti failus",
"Delete folder" : "Ištrinti aplanką",
"Delete folders" : "Ištrinti aplankus",
"_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Ketinate visam laikui ištrinti {count} elementą","Ketinate visam laikui ištrinti {count} elementus","Ketinate visam laikui ištrinti {count} elementų","Ketinate visam laikui ištrinti {count} elementų"],
"_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Jūs ketinate ištrinti {count} elementą","Jūs ketinate ištrinti {count} elementus","Jūs ketinate ištrinti {count} elementų","Jūs ketinate ištrinti {count} elementą"],
"Confirm deletion" : "Patvirtinti ištrynimą",
"Download" : "Atsisiųsti",
"The requested file is not available." : "Prašomo failo nėra.",
"The requested files are not available." : "Prašomų failų nėra.",
"Add to favorites" : "Pridėti į mėgstamus",
"Remove from favorites" : "Šalinti iš mėgstamų",
"Add or remove favorite" : "Pridėti arba pašalinti mėgstamiausią",
"Move" : "Perkelti",
"Copy" : "Kopijuoti",
"Move or copy" : "Perkelti ar kopijuoti",
"Destination is not a folder" : "Paskirties vieta nėra aplankas",
"This file/folder is already in that directory" : "Šis failas / aplankas jau yra tame kataloge",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Negalite perkelti failo / aplanko ant jo paties arba į jo paties poaplankį",
"A file or folder with that name already exists in this folder" : "Failas arba aplankas tokiu pavadinimu jau yra šiame aplanke",
"The files are locked" : "Failai yra užrakinti",
"The file does not exist anymore" : "Failo daugiau nebėra",
"Moving \"{source}\" to \"{destination}\" …" : "Perkeliama \"{source}\" į \"{destination}\"  ...",
"Moving {count} files to \"{destination}\" …" : "{count} failai perkeliami į \"{destination}\"  ...",
"Copying \"{source}\" to \"{destination}\" …" : "Kopijuojama iš \"{source}\" į \"{destination}\"  ...",
"Copying {count} files to \"{destination}\" …" : "{count} failai kopijuojami į \"{destination}\"  ...",
"Choose destination" : "Pasirinkite paskirties vietą",
"Copy to {target}" : "Kopijuoti į {target}",
"Move to {target}" : "Perkelti į {target}",
"Move or copy operation failed" : "Perkėlimo ar kopijavimo operacija patyrė nesėkmę",
"Open folder" : "Atverti aplanką",
"Open folder {displayName}" : "Atverti aplanką {displayName}",
"Open in Files" : "Atidaryti programėlėje Files",
"Open locally" : "Atidaryti vietoje",
"Failed to redirect to client" : "Nepavyko peradresuoti į klientą",
"Open file locally" : "Atidaryti failą vietoje",
"The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Failas dabar turėtų atsidaryti jūsų įrenginyje. Jei ne, patikrinkite, ar įdiegta darbalaukio programėlė.",
"Retry and close" : "Bandyti dar kartą ir užverti",
"Open online" : "Atidaryti internete",
"Details" : "Išsamiau",
"Open the details sidebar" : "Atidaryti išsamios informacijos šoninę juostą",
"Unfavorite" : "Pašalinti iš mėgstamiausių",
"View in folder" : "Rodyti aplanke",
"Type" : "Tipas",
"Created new folder \"{name}\"" : "Sukurtas naujas aplankas „{name}“",
"Unable to initialize the templates directory" : "Nepavyko inicijuoti šablonų katalogo",
"Create templates folder" : "Sukurti šablonų aplanką",
"Templates" : "Šablonai",
"New template folder" : "Naujas šablonų aplankas",
"In folder" : "Aplanke",
"Pick folder to search in" : "Pasirinkite aplanką, kuriame norite ieškoti",
"Search in all files" : "Ieškoti visuose failuose",
"Search in folder: {folder}" : "Ieškoti aplanke: {folder}",
"One of the dropped files could not be processed" : "Vieno iš atmestų failų apdoroti nepavyko",
"Your browser does not support the Filesystem API. Directories will not be uploaded" : "Jūsų naršyklė nepalaiko failų sistemos API. Katalogai nebus įkelti.",
"No files to upload" : "Nėra failų, kuriuos būtų galima įkelti",
"Unable to create the directory {directory}" : "Nepavyko sukurti katalogo {directory}",
"Some files could not be uploaded" : "Kai kurių failų nepavyko išsiųsti",
"Files uploaded successfully" : "Failai sėkmingai išsiųsti",
"No files to process" : "Nėra failų, kuriuos reikėtų apdoroti",
"Files copied successfully" : "Failai sėkmingai nukopijuoti",
"Files moved successfully" : "Failai sėkmingai perkelti",
"Some files could not be copied" : "Kai kurių failų nepavyko nukopijuoti",
"Some files could not be moved" : "Kai kurių failų nepavyko perkelti",
"Could not rename \"{oldName}\", it does not exist any more" : "Nepavyko pervadinti failo „{oldName}“, jo daugiau nebėra",
"Conflicts resolution skipped" : "Konfliktų sprendimas praleistas",
"Upload cancelled" : "Įkėlimas atšauktas",
"Could not rename \"{oldName}\", it does not exist any more" : "Nepavyko pervadinti „{oldName}“, jo daugiau nebėra",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas „{newName}“ jau naudojamas aplanke „{dir}“. Pasirinkite kitokį pavadinimą.",
"Could not rename \"{oldName}\"" : "Nepavyko pervadinti „{oldName}“",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This folder is unavailable, please try again later or contact the administration" : "Šis aplankas neprieinamas, bandykite dar kartą vėliau arba susisiekite su administratoriumi",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Unexpected error: {error}" : "Netikėta klaida: {error}",
"_%n file_::_%n files_" : ["%n failas","%n failai","%n failų","%n failas"],
"_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų","%n aplankas"],
"_%n hidden_::_%n hidden_" : ["%n paslėptas","%n paslėpti","%n paslėptų","%n paslėptas"],
"Filename must not be empty." : "Failo pavadinimas negali būti tuščias.",
"\"{char}\" is not allowed inside a filename." : "\"{char}\" simbolis failo pavadinime neleidžiamas",
"\"{segment}\" is a reserved name and not allowed for filenames." : "„{segment}“ yra rezervuotas pavadinimas ir neleidžiamas naudoti failo pavadinimuose.",
"\"{extension}\" is not an allowed filetype." : "„{extension}“ nėra leidžiamas failo tipas.",
"Filenames must not end with \"{extension}\"." : "Failų pavadinimai negali baigtis „{extension}“.",
"List of favorite files and folders." : "Mėgstamiausių failų ir aplankų sąrašas.",
"No favorites yet" : "Kol kas nėra mėgstamų",
"Files and folders you mark as favorite will show up here" : "Čia bus rodomi failai ir aplankai, kuriuos pažymėsite kaip mėgstamus",
"List of your files and folders." : "Jūsų failų ir aplankų sąrašas.",
"Folder tree" : "Aplankų medis",
"List of your files and folders that are not shared." : "Jūsų nebendrinamų failų ir aplankų sąrašas.",
"No personal files found" : "Nerasta jokių asmeninių failų",
"Files that are not shared will show up here." : "Čia bus rodomi nebendrinami failai.",
"Recent" : "Paskiausiai naudoti",
"List of recently modified files and folders." : "Paskiausiai modifikuotų failų ir aplankų sąrašas.",
"No recently modified files" : "Nėra jokių paskiausiai modifikuotų failų",
"Files and folders you recently modified will show up here." : "Čia bus rodomi neseniai modifikuoti failai ir aplankai.",
"Search" : "Paieška",
"Search results within your files." : "Paieškos rezultatai jūsų failuose.",
"No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.",
"Renamed \"{oldName}\" to \"{newName}\"" : "„{oldName}“ pervadintas į „{newName}“",
"Clear filter" : "Išvalyti filtrą",
"Open file sidebar" : "Atverti failų šoninę juostą",
"Search everywhere …" : "Ieškoti visur…",
"Search here …" : "Ieškoti čia…",
"Preparing …" : "Ruošiama...",
"Submitting fields …" : "Pateikiami laukai...",
"Shared by link" : "Bendrinama pagal nuorodą",
"Shared" : "Bendrinama",
"You" : "Jūs",
"Shared multiple times with different people" : "Dalijimasis kelis kartus su skirtingais žmonėmis",
"Unable to change the favorite state of the file" : "Nepavyko pakeisti failo mėgstamiausios būsenos",
"Error while loading the file data" : "Klaida įkeliant failo duomenis",
"Tags" : "Žymos",
"Save as …" : "Įrašyti kaip…"
"Save as …" : "Įrašyti kaip…",
"Converting files …" : "Failų konvertavimas…",
"Converting file …" : "Failo konvertavimas…"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
+194 -10
View File
@@ -41,38 +41,65 @@
"Files" : "Failai",
"A file or folder has been <strong>changed</strong>" : "Buvo <strong>pakeistas</strong> failas ar aplankas",
"A favorite file or folder has been <strong>changed</strong>" : "Buvo <strong>pakeistas</strong> mėgstamas failas ar aplankas",
"Failed to authorize" : "Nepavyko autorizuoti",
"Invalid folder path" : "Neteisingas aplanko kelias",
"Folder not found" : "Aplankas nerastas",
"The file cannot be found" : "Failas negali būti surastas",
"The destination path does not exist: %1$s" : "Paskirties kelio nėra: %1$s",
"You do not have permission to create a file at the specified location" : "Jūs neturite leidimo sukurti failą nurodytoje vietoje",
"The file could not be converted." : "Nepavyko konvertuoti failo.",
"Could not get relative path to converted file" : "Nepavyko gauti santykinio kelio į konvertuotą failą",
"Limit must be a positive integer." : "Limito riba turi būti teigiamas sveikasis skaičius.",
"The replacement character may only be a single character." : "Pakaitinis simbolis gali būti tik vienas simbolis.",
"Filename sanitization already started." : "Failų pavadinimų valymas jau pradėtas.",
"No filename sanitization in progress." : "Failų pavadinimų valymas nevykdomas.",
"Favorite files" : "Mėgstamiausi failai",
"No favorites" : "Nėra mėgstamiausių",
"More favorites" : "Daugiau mėgstamiausių",
"Accept" : "Priimti",
"Reject" : "Atmesti",
"Incoming ownership transfer from {user}" : "Gaunamasis nuosavybės perdavimas nuo {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Ar norite priimti {path}?\n\nPastaba: Priėmus, perdavimo procesas gali užtrukti iki 1 valandos.",
"Ownership transfer denied" : "Nuosavybės perdavimas atmestas",
"Your ownership transfer of {path} was denied by {user}." : "Jūsų nuosavybės {path} perdavimas buvo atmestas {user}.",
"Ownership transfer failed" : "Nuosavybės perdavimas nepavyko",
"Your ownership transfer of {path} to {user} failed." : "Nepavyko perduoti jūsų {path} nuosavybės naudotojui {user}.",
"The ownership transfer of {path} from {user} failed." : "{path} nuosavybės perdavimas iš naudotojo {user} nepavyko.",
"Ownership transfer done" : "Nuosavybės perdavimas atliktas",
"Your ownership transfer of {path} to {user} has completed." : "Jūsų {path} nuosavybės perdavimas naudotojui {user} užbaigtas.",
"The ownership transfer of {path} from {user} has completed." : "{path} nuosavybės perdavimas iš naudotojo {user} užbaigtas.",
"in %s" : "per %s",
"in %s" : "pо %s",
"Transferred from %1$s on %2$s" : "Perkelta iš %1$s į %2$s",
"File Management" : "Failų tvarkymas",
"Home" : "Pagrindinis",
"Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra",
"Reload current directory" : "Įkelti dabartinį katalogą iš naujo",
"Go to the \"{dir}\" directory" : "Eikite į \"{dir}\" katalogą",
"Current directory path" : "Dabartinis katalogo kelias",
"Share" : "Bendrinti",
"Drag and drop files here to upload" : "Tempkite failus čia norėdami išsiųsti",
"Reload content" : "Įkelti turinį iš naujo",
"Your have used your space quota and cannot upload files anymore" : "Jūs išnaudojote leidžiamą duomenų kiekį ir daugiau nebegalite išsiųsti failų",
"You do not have permission to upload or create files here." : "Jūs neturite leidimo čia įkelti ar kurti failų.",
"Drag and drop files here to upload" : "Tempkite čia failus norėdami juos išsiųsti",
"Favorite" : "Mėgstamas",
"Back" : "Atgal",
"Toggle selection for file \"{displayName}\"" : "Perjungti failo „{displayName}“ pasirinkimą",
"Toggle selection for folder \"{displayName}\"" : "Perjungti aplanko „{displayName}“ pasirinkimą",
"File is loading" : "Failas yra įkeliamas",
"Folder is loading" : "Aplankas yra įkeliamas",
"Filename" : "Failo pavadinimas",
"Folder name" : "Aplanko pavadinimas",
"This node is unavailable" : "Šis mazgas neprieinamas",
"Another entry with the same name already exists." : "Kitas įrašas tuo pačiu pavadinimu jau yra.",
"Invalid filename." : "Neteisingas failo pavadinimas.",
"Rename file" : "Pervadinti failą",
"Recently created" : "Neseniai sukurta",
"Folder" : "Aplankas",
"Unknown file type" : "Nežinomas failo tipas",
"{ext} image" : "{ext} paveikslėlis",
"{ext} video" : "{ext} vaizdo įrašas",
"{ext} audio" : "{ext} garso įrašas",
"{ext} text" : "{ext} tekstas",
"Pending" : "Laukiantis",
"Unknown date" : "Nežinoma data",
"Active filters" : "Aktyvūs filtrai",
@@ -80,6 +107,11 @@
"Today" : "Šiandien",
"Last 7 days" : "Paskutinės 7 dienos",
"Last 30 days" : "Paskutinės 30 dienų",
"This year ({year})" : "Šie metai ({year})",
"Last year ({year})" : "Praėję metai ({year})",
"Custom range" : "Pasirinktinis diapazonas",
"Custom date range" : "Pasirinktinis datų diapazonas",
"Search everywhere" : "Ieškoti visur",
"Documents" : "Dokumentai",
"Spreadsheets" : "Skaičiuoklės",
"Presentations" : "Pateiktys",
@@ -89,26 +121,64 @@
"Images" : "Paveikslai",
"Videos" : "Vaizdo įrašai",
"Filters" : "Filtrai",
"Back to filters" : "Atgal į filtrus",
"Appearance" : "Išvaizda",
"Show hidden files" : "Rodyti paslėptus failus",
"Show file type column" : "Rodyti failo tipo stulpelį",
"Show file extensions" : "Rodyti failų plėtinius",
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
"General" : "Bendra",
"Sort favorites first" : "Pirmiausia rūšiuoti mėgstamiausius",
"Sort folders before files" : "Rūšiuoti aplankus prieš failus",
"Enable folder tree view" : "Įjungti aplankų medžio rodinį",
"Default view" : "Numatytasis rodinys",
"All files" : "Visi failai",
"Personal files" : "Asmeniniai failai",
"Additional settings" : "Papildomi nustatymai",
"Actions" : "Veiksmai",
"File actions" : "Veiksmai su failais",
"Selection" : "Pasirinkimas",
"Select all files" : "Pasirinkti visus failus",
"Deselect all" : "Panaikinti pasirinkimą",
"Navigation" : "Navigacija",
"Select or deselect" : "Pasirinkti arba panaikinti pasirinkimą",
"Select a range" : "Pasirinkite diapazoną",
"Navigation" : "Naršymas",
"Go to parent folder" : "Eiti į viršesnį aplanką",
"Go to file above" : "Eiti į aukščiau esantį failą",
"Go to file below" : "Eiti į žemiau esantį failą",
"Go left in grid" : "Eiti į kairę tinklelyje",
"Go right in grid" : "Eiti į dešinę tinklelyje",
"View" : "Rodyti",
"Toggle grid view" : "Rodyti tinkleliu",
"Toggle grid view" : "Perjungti tinklelio rodinį",
"Show those shortcuts" : "Rodyti tuos sparčiuosius klavišus",
"Warnings" : "Įspėjimai",
"Warn before changing a file extension" : "Įspėti prieš keičiant failo prievardį",
"Warn before deleting a file" : "Įspėti prieš ištrinant failą",
"WebDAV URL" : "WebDAV URL",
"Create an app password" : "Sukurkite programėlės slaptažodį",
"Required for WebDAV authentication because Two-Factor Authentication is enabled for this account." : "Būtina „WebDAV“ autentifikavimui, nes šiai paskyrai įjungtas dviejų veiksnių autentifikavimas.",
"How to access files using WebDAV" : "Kaip pasiekti failus naudojant WebDAV",
"Total rows summary" : "Bendras eilučių skaičius",
"Toggle selection for all files and folders" : "Perjungti visų failų ir aplankų pasirinkimą",
"Name" : "Pavadinimas",
"File type" : "Failo tipas",
"Size" : "Dydis",
"Modified" : "Pakeistas",
"{displayName}: failed on some elements" : "{displayName}: kai kurių elementų klaida",
"{displayName}: done" : "{displayName}: padaryta",
"{displayName}: failed" : "{displayName}: nepavyko",
"(selected)" : "(pasirinktas)",
"List of files and folders." : "Failų ir aplankų sąrašas.",
"You have used your space quota and cannot upload files anymore." : "Išnaudojote savo vietos kvotą ir daugiau negalite įkelti failų.",
"Column headers with buttons are sortable." : "Stulpelių antraštes su mygtukais galima rūšiuoti.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Šis sąrašas nėra pilnai sugeneruotas dėl našumo priežasčių. Failai bus sugeneruoti jums naršant sąraše.",
"File not found" : "Failas nerastas",
"_{count} selected_::_{count} selected_" : ["{count} pasirinktas","{count} pasirinkti","{count} pasirinkti","{count} pasirinkti"],
"Views" : "Rodiniai",
"Search everywhere …" : "Ieškoti visur…",
"Search here …" : "Ieškoti čia…",
"Search scope options" : "Paieškos apimties parinktys",
"Search here" : "Ieškoti čia",
"Owner" : "Savininkas",
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
"{used} of {quota} used" : "panaudota {used} iš {quota}",
@@ -116,11 +186,32 @@
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage information" : "Informacija apie saugyklą",
"Storage quota" : "Saugyklos kvota",
"New folder" : "Naujas aplankas",
"Create new folder" : "Sukurti naują aplanką",
"This name is already in use." : "Šis pavadinimas jau yra naudojamas.",
"Create" : "Sukurti",
"Files starting with a dot are hidden by default" : "Failai, prasidedantys tašku, pagal numatytuosius nustatymus yra paslėpti",
"Failed to start filename sanitization." : "Nepavyko pradėti failų pavadinimų valymo.",
"Failed to refresh filename sanitization status." : "Nepavyko atnaujinti failo pavadinimo išvalymo būsenos.",
"Filename sanitization in progress." : "Vykdomas failų pavadinimų valymas.",
"Currently {processedUsers} of {totalUsers} accounts are already processed." : "Šiuo metu {processedUsers} naudotojų paskyros iš {totalUsers} egzistuojančių jau apdorotos.",
"Preparing …" : "Ruošiama…",
"Refresh" : "Įkelti iš naujo",
"All files have been santized for Windows filename support." : "Visi failai buvo patvirtinti, kad atitiktų „Windows“ failų pavadinimų reikalavimus.",
"Some files could not be sanitized, please check your logs." : "Kai kurių failų nepavyko išvalyti, patikrinkite savo registrų įrašų žurnalus.",
"Sanitization errors" : "Valymo klaidos",
"Not sanitized filenames" : "Neišvalyti failų vardai",
"Windows filename support has been enabled." : "Įjungtas „Windows“ failų vardų palaikymas.",
"While this blocks users from creating new files with unsupported filenames, existing files are not yet renamed and thus still may break sync on Windows." : "Nors tai neleidžia vartotojams kurti naujų failų su nepalaikomais failų pavadinimais, esami failai dar nėra pervadinti, todėl vis tiek gali sutrikdyti sinchronizavimą sistemoje „Windows“.",
"You can trigger a rename of files with invalid filenames, this will be done in the background and may take some time." : "Galite pervadinti failus su neteisingais pavadinimais. Tai bus atliekama fone ir gali užtrukti.",
"Please note that this may cause high workload on the sync clients." : "Atminkite, kad tai gali sukelti didelį sinchronizavimo klientų darbo krūvį.",
"Limit" : "Limitas",
"This allows to configure how many users should be processed in one background job run." : "Tai leidžia konfigūruoti, kiek vartotojų turėtų būti apdorojama vieno foninio darbo vykdymo metu.",
"Sanitize filenames" : "Išvalyti failų pavadinimus",
"(starting)" : "(pradedama)",
"Fill template fields" : "Užpildykite šablono laukus",
"Submitting fields …" : "Pateikiami laukai  ...",
"Submit" : "Pateikti",
"Choose a file or folder to transfer" : "Pasirinkite norimą perduoti failą ar aplanką",
"Transfer" : "Perduoti",
@@ -128,104 +219,197 @@
"Invalid path selected" : "Pasirinktas neteisingas kelias",
"Unknown error" : "Nežinoma klaida",
"Ownership transfer request sent" : "Nuosavybės perdavimo užklausa išsiųsta",
"Cannot transfer ownership of a file or folder you do not own" : "Negalima perduoti jums nepriklausančio failo ar aplanko nuosavybės teisės",
"Transfer ownership of a file or folder" : "Perduoti failo ar aplanko nuosavybę",
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
"Change" : "Keisti",
"New owner" : "Naujasis savininkas",
"Keep {old}" : "Palikti {old}",
"Keep without extension" : "Palikti be prievardžio",
"Use {new}" : "Naudoti {new}",
"Remove extension" : "Pašalinti prievardį",
"Change file extension" : "Keisti failo prievardį",
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Pakeitus failo plėtinį iš „{old}“ į „{new}“, failas gali tapti neįskaitomas.",
"Removing the file extension \"{old}\" may render the file unreadable." : "Pašalinus failo plėtinį „{old}“, failas gali tapti neįskaitomas.",
"Adding the file extension \"{new}\" may render the file unreadable." : "Pridėjus failo plėtinį „{new}“, failas gali tapti neįskaitomas.",
"Do not show this dialog again." : "Daugiau neberodyti šio dialogo.",
"Rename file to hidden" : "Pervadinti failą į paslėptą",
"Prefixing a filename with a dot may render the file hidden." : "Failo pavadinimo pradžioje įrašius tašką, failas gali būti paslėptas.",
"Are you sure you want to rename the file to \"{filename}\"?" : "Ar tikrai norite pervardyti failą į „{filename}“?",
"Cancel" : "Atsisakyti",
"Rename" : "Pervadinti",
"Select file or folder to link to" : "Pasirinkite failą arba aplanką, į kurį norite susieti",
"Choose {file}" : "Pasirinkti{file}",
"Files settings" : "Failų nustatymai",
"Switch to list view" : "Perjungti į sąrašo rodinį",
"Switch to grid view" : "Perjungti į tinklelio rodinį",
"The file could not be found" : "Failas nerastas",
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
"The file could not be found" : "Nepavyko rasti failo",
"Upload was cancelled by user" : "Naudotojas atsisakė failo išsiuntimo",
"Not enough free space" : "Trūksta laisvos vietos",
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
"Error during upload, status code {status}" : "Įkėlimo klaida, būsenos kodas - {status}",
"Unknown error during upload" : "Įkėlimo metu įvyko nežinoma klaida",
"File list is reloading" : "Failų sąrašas įkeliamas iš naujo",
"Loading current folder" : "Įkeliamas dabartinis aplankas",
"Retry" : "Bandyti dar kartą",
"No files in here" : "Čia failų nėra",
"Upload some content or sync with your devices!" : "Įkelkite failus arba sinchronizuokite su savo įrenginiais!",
"Go back" : "Grįžti",
"Loading …" : "Įkeliama …",
"Loading …" : "Įkeliama…",
"Your files" : "Jūsų failai",
"Open in files" : "Atidaryti failuose",
"File cannot be accessed" : "Nepavyksta gauti prieigos prie failo",
"The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Nepavyko surasti failo arba jūs neturite leidimo jo peržiūrėti. Paprašykite siuntėjo, kad pradėtų jį su jumis bendrinti.",
"No search results for “{query}”" : "Nėra paieškos rezultatų pagal užklausą „{query}“",
"Search for files" : "Ieškoti failų",
"Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Leisti apriboti failų pavadinimus, siekiant užtikrinti, kad failus būtų galima sinchronizuoti su visais klientais. Pagal numatytuosius nustatymus leidžiami visi failų vardai, galiojantys POSIX (pvz., Linux arba macOS).",
"After enabling the Windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Įjungus su „Windows“ suderinamus failų pavadinimus, esamų failų nebegalima modifikuoti, tačiau jų savininkas gali juos pervadinti galiojančiais naujais pavadinimais.",
"Failed to toggle Windows filename support" : "Nepavyko įjungti „Windows“ failų vardų palaikymo",
"Files compatibility" : "Failų suderinamumas",
"Enforce Windows compatibility" : "Užtikrinti suderinamumą su „Windows“",
"This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Tai blokuos „Windows“ sistemose negaliojančius failų pavadinimus, pvz., rezervuotus pavadinimus ar specialiuosius simbolius. Tačiau tai neužtikrins didžiųjų ir mažųjų raidžių skyrimo suderinamumo.",
"Blank" : "Tuščia",
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
"Creating file" : "Sukuriamas failas",
"Save as {displayName}" : "Įrašyti kaip {displayName}",
"Save as …" : "Įrašyti kaip…",
"Converting files …" : "Failų konvertavimas  ...",
"Failed to convert files: {message}" : "Nepavyko konvertuoti failų: {message}",
"All files failed to be converted" : "Nepavyko konvertuoti visų failų",
"One file could not be converted: {message}" : "Vieno failo nepavyko konvertuoti: {message}",
"_%n file could not be converted_::_%n files could not be converted_" : ["%n failas negali būti konvertuotas","%n failai negali būti konvertuoti","%n failų negali būti konvertuota","%n failų negali būti konvertuota"],
"_%n file converted_::_%n files converted_" : ["%n failas konvertuotas","%n failai konvertuoti","%n failų konvertuota","%n failų konvertuota"],
"Files converted" : "Failai konvertuoti",
"Failed to convert files" : "Nepavyko konvertuoti failų",
"Converting file …" : "Failai konvertuojami  ...",
"File successfully converted" : "Failas sėkmingai konvertuotas",
"Failed to convert file: {message}" : "Nepavyko konvertuoti failo: {message}",
"Failed to convert file" : "Nepavyko konvertuoti failo",
"Delete" : "Ištrinti",
"Leave this share" : "Palikti bendrinimą",
"Leave these shares" : "Palikti bendrinimus",
"Disconnect storage" : "Atjungti saugyklą",
"Delete permanently" : "Ištrinti negrįžtamai",
"Disconnect storages" : "Atjungti saugyklas",
"Delete permanently" : "Ištrinti visam laikui",
"Delete and unshare" : "Ištrinti ir nebebendrinti",
"Delete file" : "Ištrinti failą",
"Delete files" : "Ištrinti failus",
"Delete folder" : "Ištrinti aplanką",
"Delete folders" : "Ištrinti aplankus",
"_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Ketinate visam laikui ištrinti {count} elementą","Ketinate visam laikui ištrinti {count} elementus","Ketinate visam laikui ištrinti {count} elementų","Ketinate visam laikui ištrinti {count} elementų"],
"_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Jūs ketinate ištrinti {count} elementą","Jūs ketinate ištrinti {count} elementus","Jūs ketinate ištrinti {count} elementų","Jūs ketinate ištrinti {count} elementą"],
"Confirm deletion" : "Patvirtinti ištrynimą",
"Download" : "Atsisiųsti",
"The requested file is not available." : "Prašomo failo nėra.",
"The requested files are not available." : "Prašomų failų nėra.",
"Add to favorites" : "Pridėti į mėgstamus",
"Remove from favorites" : "Šalinti iš mėgstamų",
"Add or remove favorite" : "Pridėti arba pašalinti mėgstamiausią",
"Move" : "Perkelti",
"Copy" : "Kopijuoti",
"Move or copy" : "Perkelti ar kopijuoti",
"Destination is not a folder" : "Paskirties vieta nėra aplankas",
"This file/folder is already in that directory" : "Šis failas / aplankas jau yra tame kataloge",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Negalite perkelti failo / aplanko ant jo paties arba į jo paties poaplankį",
"A file or folder with that name already exists in this folder" : "Failas arba aplankas tokiu pavadinimu jau yra šiame aplanke",
"The files are locked" : "Failai yra užrakinti",
"The file does not exist anymore" : "Failo daugiau nebėra",
"Moving \"{source}\" to \"{destination}\" …" : "Perkeliama \"{source}\" į \"{destination}\"  ...",
"Moving {count} files to \"{destination}\" …" : "{count} failai perkeliami į \"{destination}\"  ...",
"Copying \"{source}\" to \"{destination}\" …" : "Kopijuojama iš \"{source}\" į \"{destination}\"  ...",
"Copying {count} files to \"{destination}\" …" : "{count} failai kopijuojami į \"{destination}\"  ...",
"Choose destination" : "Pasirinkite paskirties vietą",
"Copy to {target}" : "Kopijuoti į {target}",
"Move to {target}" : "Perkelti į {target}",
"Move or copy operation failed" : "Perkėlimo ar kopijavimo operacija patyrė nesėkmę",
"Open folder" : "Atverti aplanką",
"Open folder {displayName}" : "Atverti aplanką {displayName}",
"Open in Files" : "Atidaryti programėlėje Files",
"Open locally" : "Atidaryti vietoje",
"Failed to redirect to client" : "Nepavyko peradresuoti į klientą",
"Open file locally" : "Atidaryti failą vietoje",
"The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Failas dabar turėtų atsidaryti jūsų įrenginyje. Jei ne, patikrinkite, ar įdiegta darbalaukio programėlė.",
"Retry and close" : "Bandyti dar kartą ir užverti",
"Open online" : "Atidaryti internete",
"Details" : "Išsamiau",
"Open the details sidebar" : "Atidaryti išsamios informacijos šoninę juostą",
"Unfavorite" : "Pašalinti iš mėgstamiausių",
"View in folder" : "Rodyti aplanke",
"Type" : "Tipas",
"Created new folder \"{name}\"" : "Sukurtas naujas aplankas „{name}“",
"Unable to initialize the templates directory" : "Nepavyko inicijuoti šablonų katalogo",
"Create templates folder" : "Sukurti šablonų aplanką",
"Templates" : "Šablonai",
"New template folder" : "Naujas šablonų aplankas",
"In folder" : "Aplanke",
"Pick folder to search in" : "Pasirinkite aplanką, kuriame norite ieškoti",
"Search in all files" : "Ieškoti visuose failuose",
"Search in folder: {folder}" : "Ieškoti aplanke: {folder}",
"One of the dropped files could not be processed" : "Vieno iš atmestų failų apdoroti nepavyko",
"Your browser does not support the Filesystem API. Directories will not be uploaded" : "Jūsų naršyklė nepalaiko failų sistemos API. Katalogai nebus įkelti.",
"No files to upload" : "Nėra failų, kuriuos būtų galima įkelti",
"Unable to create the directory {directory}" : "Nepavyko sukurti katalogo {directory}",
"Some files could not be uploaded" : "Kai kurių failų nepavyko išsiųsti",
"Files uploaded successfully" : "Failai sėkmingai išsiųsti",
"No files to process" : "Nėra failų, kuriuos reikėtų apdoroti",
"Files copied successfully" : "Failai sėkmingai nukopijuoti",
"Files moved successfully" : "Failai sėkmingai perkelti",
"Some files could not be copied" : "Kai kurių failų nepavyko nukopijuoti",
"Some files could not be moved" : "Kai kurių failų nepavyko perkelti",
"Could not rename \"{oldName}\", it does not exist any more" : "Nepavyko pervadinti failo „{oldName}“, jo daugiau nebėra",
"Conflicts resolution skipped" : "Konfliktų sprendimas praleistas",
"Upload cancelled" : "Įkėlimas atšauktas",
"Could not rename \"{oldName}\", it does not exist any more" : "Nepavyko pervadinti „{oldName}“, jo daugiau nebėra",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas „{newName}“ jau naudojamas aplanke „{dir}“. Pasirinkite kitokį pavadinimą.",
"Could not rename \"{oldName}\"" : "Nepavyko pervadinti „{oldName}“",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This folder is unavailable, please try again later or contact the administration" : "Šis aplankas neprieinamas, bandykite dar kartą vėliau arba susisiekite su administratoriumi",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Unexpected error: {error}" : "Netikėta klaida: {error}",
"_%n file_::_%n files_" : ["%n failas","%n failai","%n failų","%n failas"],
"_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų","%n aplankas"],
"_%n hidden_::_%n hidden_" : ["%n paslėptas","%n paslėpti","%n paslėptų","%n paslėptas"],
"Filename must not be empty." : "Failo pavadinimas negali būti tuščias.",
"\"{char}\" is not allowed inside a filename." : "\"{char}\" simbolis failo pavadinime neleidžiamas",
"\"{segment}\" is a reserved name and not allowed for filenames." : "„{segment}“ yra rezervuotas pavadinimas ir neleidžiamas naudoti failo pavadinimuose.",
"\"{extension}\" is not an allowed filetype." : "„{extension}“ nėra leidžiamas failo tipas.",
"Filenames must not end with \"{extension}\"." : "Failų pavadinimai negali baigtis „{extension}“.",
"List of favorite files and folders." : "Mėgstamiausių failų ir aplankų sąrašas.",
"No favorites yet" : "Kol kas nėra mėgstamų",
"Files and folders you mark as favorite will show up here" : "Čia bus rodomi failai ir aplankai, kuriuos pažymėsite kaip mėgstamus",
"List of your files and folders." : "Jūsų failų ir aplankų sąrašas.",
"Folder tree" : "Aplankų medis",
"List of your files and folders that are not shared." : "Jūsų nebendrinamų failų ir aplankų sąrašas.",
"No personal files found" : "Nerasta jokių asmeninių failų",
"Files that are not shared will show up here." : "Čia bus rodomi nebendrinami failai.",
"Recent" : "Paskiausiai naudoti",
"List of recently modified files and folders." : "Paskiausiai modifikuotų failų ir aplankų sąrašas.",
"No recently modified files" : "Nėra jokių paskiausiai modifikuotų failų",
"Files and folders you recently modified will show up here." : "Čia bus rodomi neseniai modifikuoti failai ir aplankai.",
"Search" : "Paieška",
"Search results within your files." : "Paieškos rezultatai jūsų failuose.",
"No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.",
"Renamed \"{oldName}\" to \"{newName}\"" : "„{oldName}“ pervadintas į „{newName}“",
"Clear filter" : "Išvalyti filtrą",
"Open file sidebar" : "Atverti failų šoninę juostą",
"Search everywhere …" : "Ieškoti visur…",
"Search here …" : "Ieškoti čia…",
"Preparing …" : "Ruošiama...",
"Submitting fields …" : "Pateikiami laukai...",
"Shared by link" : "Bendrinama pagal nuorodą",
"Shared" : "Bendrinama",
"You" : "Jūs",
"Shared multiple times with different people" : "Dalijimasis kelis kartus su skirtingais žmonėmis",
"Unable to change the favorite state of the file" : "Nepavyko pakeisti failo mėgstamiausios būsenos",
"Error while loading the file data" : "Klaida įkeliant failo duomenis",
"Tags" : "Žymos",
"Save as …" : "Įrašyti kaip…"
"Save as …" : "Įrašyti kaip…",
"Converting files …" : "Failų konvertavimas…",
"Converting file …" : "Failo konvertavimas…"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
}
+1
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Друг запис со исто име веќе постои.",
"Invalid filename." : "Невалидно име.",
"Rename file" : "Преименувај датотека",
"Recently created" : "Неодамна креирани",
"Folder" : "Папка",
"Unknown file type" : "Непознат тип на датотека",
"{ext} image" : "{ext} слика",
+1
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "Друг запис со исто име веќе постои.",
"Invalid filename." : "Невалидно име.",
"Rename file" : "Преименувај датотека",
"Recently created" : "Неодамна креирани",
"Folder" : "Папка",
"Unknown file type" : "Непознат тип на датотека",
"{ext} image" : "{ext} слика",
+1 -1
View File
@@ -46,7 +46,7 @@ OC.L10N.register(
"Failed to authorize" : "Autorizácia zlyhala",
"Invalid folder path" : "Neplatná cesta k priečinku",
"Folder not found" : "Priečinok nebol nájdený",
"The file cannot be found" : "Súbor sa nepodarilo nájisť",
"The file cannot be found" : "Súbor sa nepodarilo nájsť",
"The destination path does not exist: %1$s" : "Cieľová cesta neexistuje: %1$s",
"You do not have permission to create a file at the specified location" : "Nemáte oprávnenie vytvoriť súbor v zadanom umiestnení",
"The file could not be converted." : "Súbor nemohol byť skonvertovaný.",
+1 -1
View File
@@ -44,7 +44,7 @@
"Failed to authorize" : "Autorizácia zlyhala",
"Invalid folder path" : "Neplatná cesta k priečinku",
"Folder not found" : "Priečinok nebol nájdený",
"The file cannot be found" : "Súbor sa nepodarilo nájisť",
"The file cannot be found" : "Súbor sa nepodarilo nájsť",
"The destination path does not exist: %1$s" : "Cieľová cesta neexistuje: %1$s",
"You do not have permission to create a file at the specified location" : "Nemáte oprávnenie vytvoriť súbor v zadanom umiestnení",
"The file could not be converted." : "Súbor nemohol byť skonvertovaný.",
+2 -1
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Інший запис з таким же ім'ям вже присутній",
"Invalid filename." : "Недійсне ім'я файлу.",
"Rename file" : "Перейменувати файл",
"Recently created" : "Нещодавно створено",
"Folder" : "Каталог",
"Unknown file type" : "Невідомий тип файлу",
"{ext} image" : "{ext} зображення",
@@ -233,7 +234,7 @@ OC.L10N.register(
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Заміна розширення файлу з \"{old}\" на \"{new}\" може зробити файл недоступним.",
"Removing the file extension \"{old}\" may render the file unreadable." : "Вилучення розширення файлу \"{old}\" може зробити файл недоступним.",
"Adding the file extension \"{new}\" may render the file unreadable." : "Додавання розширення до файлу \"{new}\" може зробити файл недоступним.",
"Do not show this dialog again." : "Не показувати цей діялог подалі.",
"Do not show this dialog again." : "Більше не заптувати",
"Rename file to hidden" : "Перейменувати файл у прихований",
"Prefixing a filename with a dot may render the file hidden." : "Якщо додати крапку перед ім'ям файлу зробить файл прихованим.",
"Are you sure you want to rename the file to \"{filename}\"?" : "Дійсно перейменувати файл у \"{filename}\"?",
+2 -1
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "Інший запис з таким же ім'ям вже присутній",
"Invalid filename." : "Недійсне ім'я файлу.",
"Rename file" : "Перейменувати файл",
"Recently created" : "Нещодавно створено",
"Folder" : "Каталог",
"Unknown file type" : "Невідомий тип файлу",
"{ext} image" : "{ext} зображення",
@@ -231,7 +232,7 @@
"Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Заміна розширення файлу з \"{old}\" на \"{new}\" може зробити файл недоступним.",
"Removing the file extension \"{old}\" may render the file unreadable." : "Вилучення розширення файлу \"{old}\" може зробити файл недоступним.",
"Adding the file extension \"{new}\" may render the file unreadable." : "Додавання розширення до файлу \"{new}\" може зробити файл недоступним.",
"Do not show this dialog again." : "Не показувати цей діялог подалі.",
"Do not show this dialog again." : "Більше не заптувати",
"Rename file to hidden" : "Перейменувати файл у прихований",
"Prefixing a filename with a dot may render the file hidden." : "Якщо додати крапку перед ім'ям файлу зробить файл прихованим.",
"Are you sure you want to rename the file to \"{filename}\"?" : "Дійсно перейменувати файл у \"{filename}\"?",
+6
View File
@@ -95,6 +95,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "另一相同名称的条目已存在。",
"Invalid filename." : "无效文件名称。",
"Rename file" : "重命名文件",
"Recently created" : "最近创建",
"Folder" : "文件夹",
"Unknown file type" : "未知文件类型",
"{ext} image" : "{ext} 图片",
@@ -234,6 +235,9 @@ OC.L10N.register(
"Removing the file extension \"{old}\" may render the file unreadable." : "删除文件扩展名 \"{old}\" 可能会导致文件无法读取。",
"Adding the file extension \"{new}\" may render the file unreadable." : "添加文件扩展名 \"{new}\" 可能会导致文件无法读取。",
"Do not show this dialog again." : "不再显示此对话框。",
"Rename file to hidden" : "将文件重命名为隐藏文件",
"Prefixing a filename with a dot may render the file hidden." : "在文件名前加上点号可能会使文件变为隐藏文件。",
"Are you sure you want to rename the file to \"{filename}\"?" : "是否确定要将文件重命名为“{filename}”?",
"Cancel" : "取消",
"Rename" : "重命名",
"Select file or folder to link to" : "选择需要链接的文件或文件夹",
@@ -316,7 +320,9 @@ OC.L10N.register(
"The files are locked" : "文件已锁定",
"The file does not exist anymore" : "文件不存在",
"Moving \"{source}\" to \"{destination}\" …" : "正在将“{source}”移动到“{destination}” …",
"Moving {count} files to \"{destination}\" …" : "正在将 {count} 个文件移动到“{destination}” …",
"Copying \"{source}\" to \"{destination}\" …" : "正在将“{source}”复制到“{destination}” …",
"Copying {count} files to \"{destination}\" …" : "正在将 {count} 个文件复制到“{destination}” …",
"Choose destination" : "选择目标路径",
"Copy to {target}" : "复制到 {target}",
"Move to {target}" : "移动到 {target}",
+6
View File
@@ -93,6 +93,7 @@
"Another entry with the same name already exists." : "另一相同名称的条目已存在。",
"Invalid filename." : "无效文件名称。",
"Rename file" : "重命名文件",
"Recently created" : "最近创建",
"Folder" : "文件夹",
"Unknown file type" : "未知文件类型",
"{ext} image" : "{ext} 图片",
@@ -232,6 +233,9 @@
"Removing the file extension \"{old}\" may render the file unreadable." : "删除文件扩展名 \"{old}\" 可能会导致文件无法读取。",
"Adding the file extension \"{new}\" may render the file unreadable." : "添加文件扩展名 \"{new}\" 可能会导致文件无法读取。",
"Do not show this dialog again." : "不再显示此对话框。",
"Rename file to hidden" : "将文件重命名为隐藏文件",
"Prefixing a filename with a dot may render the file hidden." : "在文件名前加上点号可能会使文件变为隐藏文件。",
"Are you sure you want to rename the file to \"{filename}\"?" : "是否确定要将文件重命名为“{filename}”?",
"Cancel" : "取消",
"Rename" : "重命名",
"Select file or folder to link to" : "选择需要链接的文件或文件夹",
@@ -314,7 +318,9 @@
"The files are locked" : "文件已锁定",
"The file does not exist anymore" : "文件不存在",
"Moving \"{source}\" to \"{destination}\" …" : "正在将“{source}”移动到“{destination}” …",
"Moving {count} files to \"{destination}\" …" : "正在将 {count} 个文件移动到“{destination}” …",
"Copying \"{source}\" to \"{destination}\" …" : "正在将“{source}”复制到“{destination}” …",
"Copying {count} files to \"{destination}\" …" : "正在将 {count} 个文件复制到“{destination}” …",
"Choose destination" : "选择目标路径",
"Copy to {target}" : "复制到 {target}",
"Move to {target}" : "移动到 {target}",
-34
View File
@@ -7,43 +7,9 @@
*/
namespace OCA\Files;
use OC\NavigationManager;
use OCA\Files\Service\ChunkedUploadConfig;
use OCP\App\IAppManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\INavigationManager;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Server;
use Psr\Log\LoggerInterface;
class App {
private static ?INavigationManager $navigationManager = null;
/**
* Returns the app's navigation manager
*/
public static function getNavigationManager(): INavigationManager {
// TODO: move this into a service in the Application class
if (self::$navigationManager === null) {
self::$navigationManager = new NavigationManager(
Server::get(IAppManager::class),
Server::get(IUrlGenerator::class),
Server::get(IFactory::class),
Server::get(IUserSession::class),
Server::get(IGroupManager::class),
Server::get(IConfig::class),
Server::get(LoggerInterface::class),
Server::get(IEventDispatcher::class),
);
self::$navigationManager->clear(false);
}
return self::$navigationManager;
}
public static function extendJsConfig($settings): void {
$appConfig = json_decode($settings['array']['oc_appconfig'], true);
+8
View File
@@ -22,6 +22,7 @@ use OCP\Config\ValueType;
*/
class ConfigLexicon implements ILexicon {
public const OVERWRITES_HOME_FOLDERS = 'overwrites_home_folders';
public const RECENT_LIMIT = 'recent_limit';
public function getStrictness(): Strictness {
return Strictness::IGNORE;
@@ -37,6 +38,13 @@ class ConfigLexicon implements ILexicon {
lazy: false,
note: 'It will be populated with app IDs of mount providers that overwrite home folders. Currently, only files_external and groupfolders.',
),
new Entry(
self::RECENT_LIMIT,
ValueType::INT,
defaultRaw: 100,
definition: 'Maximum number of files to display on recent files view',
lazy: false,
),
];
}

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