Compare commits

..

328 Commits

Author SHA1 Message Date
Robin Appelman 573099c47d feat: implement authoritative mount provider for share provider
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 15:13:38 +01:00
Robin Appelman ab40d76c99 feat: perform share mount validation on share instead of on mount
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 15:13:38 +01:00
Robin Appelman 62d7165124 Merge pull request #57370 from nextcloud/authoritative-mount-setup
Authoritative mount setup
2026-01-14 14:19:03 +01:00
Robin Appelman 47530ef95f feat: add a debug config option to disable authoritative mount optimizations
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 13:03:01 +01:00
Ferdinand Thiessen 22ebf79e90 Merge pull request #57503 from nextcloud/chore/drop-moment
refactor: drop moment from new bundles
2026-01-14 12:33:56 +01:00
Robin Appelman 9fde2523e6 Merge pull request #57493 from nextcloud/smb-invalid-arg-unavailable
fix: handle InvalidArumentException as availability failure in smb->getFileInfo
2026-01-14 12:00:03 +01:00
Kate ad8576f02d Merge pull request #57185 from nextcloud/fix/fix-files-external-tests 2026-01-14 11:46:28 +01:00
Robin Appelman e5497c7731 fix: protect against infinite loops in setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 11:21:27 +01:00
Robin Appelman 6eb8e8d6fd Merge pull request #57519 from nextcloud/get-existing-api
feat: add api to get a user object without verifying they exist
2026-01-14 11:15:42 +01:00
github-actions[bot] a4cf7145cd Merge pull request #57471 from nextcloud/dependabot/npm_and_yarn/zip.js/zip.js-2.8.14
build(deps-dev): bump @zip.js/zip.js from 2.8.11 to 2.8.14
2026-01-14 11:13:41 +01:00
Kate 7d1b1de155 Merge pull request #54697 from nextcloud/fix/unit-test-for-storage-auto-expire-list 2026-01-14 11:00:33 +01:00
yemkareems fb2716ab4b fix: php lint fix
Signed-off-by: yemkareems <yemkareems@gmail.com>
2026-01-14 14:58:32 +05:30
Ferdinand Thiessen a623bffb00 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-14 10:27:02 +01:00
yemkareems f0b90e6378 fix: removed the message
Signed-off-by: yemkareems <yemkareems@gmail.com>
2026-01-14 14:57:02 +05:30
Ferdinand Thiessen 8ac1602402 refactor: drop moment from new bundles
On the Vue 3 side lets remove the dependency on Moment as this is a
pretty huge dependency. Instead use plain Intl API for formatting.

This reduces the bundle size by ~1.5MiB.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-14 10:25:37 +01:00
yemkareems 5f6a777c5b fix: refactored testBucketKeepsLatest to add invalid data assert
Signed-off-by: yemkareems <yemkareems@gmail.com>
2026-01-14 14:46:48 +05:30
grnd-alt dac8fe4034 Merge pull request #57405 from nextcloud/3rdparty/justinrainbow/json-schema
chore: update justinrainbow/json-schema to 6.6.4
2026-01-14 09:27:53 +01:00
Ferdinand Thiessen 891d0fc481 Merge pull request #57526 from nextcloud/refactor/loginflow-to-vue
refactor(core): migrate login flow ui from jQuery to Vue
2026-01-14 03:10:07 +01:00
dependabot[bot] 172698e61a build(deps-dev): bump @zip.js/zip.js from 2.8.11 to 2.8.14
Bumps [@zip.js/zip.js](https://github.com/gildas-lormeau/zip.js) from 2.8.11 to 2.8.14.
- [Release notes](https://github.com/gildas-lormeau/zip.js/releases)
- [Commits](https://github.com/gildas-lormeau/zip.js/compare/v2.8.11...v2.8.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 01:16:57 +01:00
Ferdinand Thiessen 942a92f072 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-14 01:15:01 +01:00
Ferdinand Thiessen d26ec02aa1 refactor(core): migrate login flow ui from jQuery to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-14 01:15:01 +01:00
Nextcloud bot a8369cdbee fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-14 00:13:54 +00:00
Ferdinand Thiessen 038d940df1 Merge pull request #57515 from nextcloud/refactor/encryption-vue3
refactor(encryption): migrate to Vue 3 and Typescript and script setup
2026-01-14 00:29:17 +01:00
Ferdinand Thiessen a2d0d8b26b chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 22:51:07 +01:00
Ferdinand Thiessen 108858daef refactor(encryption): migrate to Vue 3 and Typescript and script setup
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 22:49:18 +01:00
Ferdinand Thiessen ab8e4e60ea Merge pull request #57502 from nextcloud/chore/theming-js
refactor(theming): move from `js/` to `src/`
2026-01-13 22:41:44 +01:00
Ferdinand Thiessen c59ad1f847 Merge pull request #57355 from nextcloud/refactor/oc-settings
refactor: consolidate `OC.Settings`
2026-01-13 22:35:40 +01:00
nextcloud-command fa535d0e20 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-13 19:04:13 +00:00
Ferdinand Thiessen 41e1a995a9 refactor(theming): move from js/ to src/
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 18:47:28 +01:00
Benjamin Gaussorgues 6248afe544 Merge pull request #57441 from nextcloud/release/33.0.0_beta_3 2026-01-13 16:58:49 +01:00
Benjamin Gaussorgues e3f951b804 Merge pull request #57455 from nextcloud/feat/nextcloudignore 2026-01-13 16:58:32 +01:00
Robin Appelman 467487ecd8 feat: dont reload authoritative mount providers when doing by-path setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 16:42:48 +01:00
Robin Appelman ae74dbef2b Merge pull request #56499 from nextcloud/authoritative-mount-provider-files_external
Add api for authoritative mount providers and implement it for files_external
2026-01-13 16:36:33 +01:00
Robin Appelman 663f6822c7 test: use a different smb image for smb testing
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 16:11:21 +01:00
Robin Appelman 5924a2e3ec feat: add api to get a user object without verifying they exist
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 15:59:07 +01:00
Ferdinand Thiessen bd664cb8fd chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 15:42:00 +01:00
Ferdinand Thiessen 805805767f refactor: consolidate OC.Settings
1. Remove unused legacy parts (no code match in the whole github
organization).
2. Consolidate `OC.Settings` in `core/src/OC` for consistency.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 15:41:59 +01:00
Ferdinand Thiessen 0fa396d0b8 Merge pull request #57509 from nextcloud/fix/use-strict-array-search
Use strict array search
2026-01-13 15:22:20 +01:00
Carl Schwan 5acb93a5be Merge pull request #57510 from nextcloud/carl/callback-optimization
perf(dav): Avoid getting DB Connection inside callback
2026-01-13 15:01:54 +01:00
Maxence Lange 048037b629 Merge pull request #57495 from nextcloud/fix/noid/no-data-response
fix(ocm): empty response
2026-01-13 11:21:03 -01:00
Côme Chilliet f31f4eba7f chore: While at it use strict array search in build/integration
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:48:59 +01:00
Côme Chilliet dc843f6d0a fix: Use strict array search in other shipped apps as well
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:48:36 +01:00
Côme Chilliet 3c80b7f2b3 fix: Use strict array comparisons in lib/
To avoid surprises with corner cases.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:48:04 +01:00
Carl Schwan a1979c9cd1 perf(dav): Avoid getting DB Connection inside callback
Fetch it once outside instead and pass it to the callback.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-13 11:47:11 +01:00
Côme Chilliet c1dd559965 fix: Use strict array comparisons in user_ldap
Otherwise there are issues with string values looking like numbers.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:46:57 +01:00
Côme Chilliet 166febb940 fix(tests): Use absolute paths for files_external tests configuration files
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:07:27 +01:00
Joas Schilling 408f9e8256 Merge pull request #57491 from nextcloud/fix/taskprocessing-userfacingerrormessage-responsedef
fix(TaskProcessing): Expose userFacingErrorMessage on ResponseDefinitions#CoreTaskProcessingTask
2026-01-13 10:27:01 +01:00
grnd-alt 0461301597 chore: update justinrainbow/json-schema to 6.6.4
Signed-off-by: grnd-alt <git@belakkaf.net>
2026-01-13 10:14:53 +01:00
Ferdinand Thiessen 08d4ccb36f Merge pull request #57237 from nextcloud/refactor/files-external-vue3-ts
refactor(files_external): migrate to script-setup and Vue 3
2026-01-13 03:04:49 +01:00
nextcloud-command 31957add33 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-13 01:33:19 +00:00
Ferdinand Thiessen e76f9284ce refactor(files_external): adjust files integration
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen a05c285979 feat(files_external): implement storage table
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 1ec308a9dd feat(files_external): provide new API to register AuthMechanisms
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 0e22ae1efe refactor(files_external): migrate public key auth to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 5ed7c4fd97 fix(files_external): adjust settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 545c72becb chore: remove non working and legacy OAuth2 auth schema
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen e1133ec926 feat(files_external): Migrate settings to Vue
Template parameters are migrated to initial state, common state between admin and user settings is shared in the CommonSettingsTrait.
The template is cleaned and replaced with only a stub for the Vue mount.
Code only used for the frontend of the settings is moved from the MountConfig to the CommonSettingsTrait (the missing dependency messages).

On the frontend a wrapper view is created that currently holds the global credentials settings and the external storages settings.
- The global credentials sections is now a stand-alone sections - fully implemented.
- The external storages section holds the table + user config + warnings on missing dependencies

The legacy UI is temporarly renamed but will be removed in a following commit.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen d4674060dc fix(files_external): return correct type for new user defined storages
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 38ed0a8283 fix: hard type controllers where the type is required to match
Prevent HTTP 500 errors where a 400 would be the correct response

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 4c8b9deca0 feat(files_external): Move script loading to CommonSettingsTrait to reduce duplicated code between admin and user settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen 5c652484e3 refactor(files_external): migrate files integration to script-setup and Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Nextcloud bot a5225bdf99 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-13 00:13:56 +00:00
Ferdinand Thiessen ac3d09d817 Merge pull request #57499 from nextcloud/feat/migrate-user-ldap-renew
refactor(user_ldap): migrate jQuery UI of password renewal to Vue
2026-01-12 22:56:09 +01:00
Ferdinand Thiessen 2c3872f325 Merge pull request #57095 from nextcloud/fix/public-upload
fix(files): ensure creating folders in public shares work
2026-01-12 22:31:47 +01:00
Ferdinand Thiessen bad5531860 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 21:48:13 +01:00
Ferdinand Thiessen 29e31ffdb1 refactor(user_ldap): migrate jQuery UI of password renewal to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 21:48:13 +01:00
nextcloud-command bdd379e82e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-12 20:07:13 +00:00
Ferdinand Thiessen 8c93d4a9e1 fix(files): ensure creating folders in public shares work
The root of the webdav client needs to be the public share root,
as accessing the `/files` folder is not possible for public shares.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 20:39:54 +01:00
Ferdinand Thiessen 5f33fee58f Merge pull request #56941 from nextcloud/fix/importmaps
fix(template): add import map for JS module entry points
2026-01-12 20:38:58 +01:00
Kate 258b30606f Merge pull request #57357 from Freiheitswolke/fix/NavigationManager/Remove-break-to-return-all-defaultEntryIds 2026-01-12 19:29:18 +01:00
Marcel Klehr 1182b6d4f0 chore: Update openapi specs
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-01-12 18:32:33 +01:00
Marcel Klehr a45978789b fix(TaskProcessing): Expose userFacingErrorMessage on ResponseDefinitions#CoreTaskProcessingTask
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-01-12 18:32:33 +01:00
Maxence Lange 42d745e17b fix(ocm): empty response
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-12 15:22:08 -01:00
Robin Appelman 4dcd4223de fix: make smb auth failure on forbidden exception more reliable
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-12 15:23:57 +01:00
Robin Appelman 43727cb72c fix: handle InvalidArumentException as availability failure in smb->getFileInfo
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-12 15:23:57 +01:00
Benjamin Gaussorgues 89166cbf9a Merge pull request #57054 from nextcloud/fix/federated-vue 2026-01-12 15:11:40 +01:00
Joas Schilling 6bdda55733 Merge pull request #57453 from nextcloud/feat/noid/qr-code-in-account-menu
Improve usability of QR code login
2026-01-12 14:01:10 +01:00
Ferdinand Thiessen f0e020f97d fix(template): add import map for JS module entry points
Currently apps are broken if they have exports in the JS entry point,
because they then will import from the entry point but because they do
not know about the Nextcloud cache buster they will import without cache
buster.

This results in two problem:
1. The module might be outdated (old cached)
2. The module is duplicated, so the module will be loaded twice and will
   have two different - out of sync - states. This also means it will
   re-run sideeffects of the entry point.

To fix this we generate an import map which basically maps the plain
entry point script to the script with cache buster added.

(Some background: Bundler will try to minimize chunks (reduce page
loading time) so they can inline modules into entry points and thus
extend the entry point exports and then this issue would be caused).

For example:
```js
// entry.mjs
console.error('called')

async function onClick() {
  await import('./chunk.mjs')
}

export const name = 'foo'

// chunk.mjs
import { name } from './entry.mjs'

console.error(name)
```

When calling `onClick` without this fix the output will be:
> called
> called
> foo

With this fix:
> called
> foo

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 13:34:11 +01:00
Joas Schilling 0e99c60da1 Merge pull request #57450 from nextcloud/3rdparty/sabre-vobject-iTipBroker-replies
fix: add send participation reply on fresh event patch
2026-01-12 12:27:43 +01:00
Benjamin Gaussorgues 98619ca6fb Merge pull request #56524 from nextcloud/fix/group-displayname-in-user-edit 2026-01-12 12:25:19 +01:00
Joas Schilling 8b4491ae1c fix: Add translation for temporary app password names
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-12 11:58:45 +01:00
Robin Appelman 2a2cd291d5 Merge pull request #57392 from nextcloud/user-share-access-event
feat: add event for apps that a users share access might have changed
2026-01-12 11:58:00 +01:00
Ferdinand Thiessen 835d507d64 Merge pull request #57354 from nextcloud/fix/comments-node-api
fix(comments): adjust Activity integration for changed Node API
2026-01-12 11:28:58 +01:00
nextcloud-command 954945a26b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-12 10:10:52 +00:00
Joas Schilling f4acd8a7ab fix: Adjust and add new tests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-12 11:07:44 +01:00
Benjamin Gaussorgues bd90e7c122 Merge pull request #57442 from nextcloud/carl/entity-id-type 2026-01-12 11:03:33 +01:00
Benjamin Gaussorgues 8d50027e78 Merge pull request #57142 from nextcloud/carl/dashboard-psalm 2026-01-12 11:03:17 +01:00
Ferdinand Thiessen 29488d6a78 fix(federatedfilesharing): pre must not be a child of p
Fix the problem reported:
> [plugin vite:vue] apps/federatedfilesharing/src/components/PersonalSettings.vue: <pre> cannot be child of <p>, according to HTML specifications.
> This can cause hydration errors or potentially disrupt future functionality.

`p` only allows inline elements, but pre is none.
We either need to use `div` instead of `p` or `code` instead of `pre`.
But in this case we want a block of code, so we use `div` and inner
`<pre><code>`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 10:45:58 +01:00
Carl Schwan 716513164f Merge pull request #57452 from nextcloud/fix/noid/ldap-get-displayname-backend
fix: Make User_Proxy IGetDisplayNameBackend complient
2026-01-12 10:19:10 +01:00
Benjamin Gaussorgues e0e5cdf3e1 Merge pull request #57449 from nextcloud/feat/unstable/moving-out-of-unstable-signature 2026-01-12 09:39:21 +01:00
nextcloud-command 9e2058d199 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-12 08:38:06 +00:00
Ferdinand Thiessen a1503481f3 fix(comments): adjust Activity integration for changed Node API
The activity app integration was changed to use the files Node API
instead of the legacy FileInfo API. So the comments app needs to be
adjusted for it.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 09:23:57 +01:00
Benjamin Gaussorgues b9c3e47b82 feat(build): add .nextcloudignore file to match Krankerl behaviour
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-12 09:17:58 +01:00
Christoph Wurst 18a7369bb9 Merge pull request #57020 from abhinavohri/fix_warnings
fix: Reduce deprecation warnings in phpunit_nodb CI jobs
2026-01-12 08:58:26 +01:00
Abhinav Ohri f89613b507 refactor(testing): Rename mock trait classes for clarity
Signed-off-by: Abhinav Ohri <abhinavohri13@gmail.com>
2026-01-12 07:59:41 +01:00
Abhinav Ohri 252956d6b2 test: fix PHPUnit deprecations and mocking issues
Signed-off-by: Abhinav Ohri <abhinavohri13@gmail.com>
2026-01-12 07:59:41 +01:00
Nextcloud bot 3e9d2fe208 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-12 00:13:44 +00:00
Nextcloud bot 7335927bed fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-11 00:13:41 +00:00
SebastianKrupinski 6ce24383c2 fix: add send participation reply on fresh event patch
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-10 11:35:08 -05:00
nextcloud-command a17a4f4958 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-10 11:26:58 +01:00
Benjamin Frueh 2b97afa829 fix(settings): Display group displayName consistently when editing a user
Signed-off-by: Benjamin Frueh <benjamin.frueh@gmail.com>
2026-01-10 11:26:58 +01:00
Nextcloud bot d341c2011f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-10 00:27:12 +00:00
Raphael Gradenwitz 7eea3b7742 Merge pull request #55433 from nextcloud/ernolf/enh/http2-brotli-client
perf(client): enable HTTP/2 and brotli support in internal HTTP client
2026-01-10 01:09:17 +01:00
Raphael Gradenwitz 7c526b4de3 Merge branch 'master' into ernolf/enh/http2-brotli-client 2026-01-10 00:00:47 +01:00
Maxence Lange 327d691c23 feat(signed-request): moving out of unstable
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-09 20:16:24 -01:00
Sebastian Krupinski 635e26dfdc Merge pull request #57231 from nextcloud/feat/restrict-calendar-invitation-users
feat: restrict calendar invitation participants
2026-01-09 13:42:12 -05:00
Maksim Sukharev 80f6856ce7 chore: Recompile assets
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-01-09 19:07:08 +01:00
Joas Schilling 2510020b33 fix: Recompile openapi
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling 927bea2b4d fix(psalm): Satisfy psalm
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling 3713f40d5b fix(app-password): Require strict password confirmation
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling a82827dff5 feat(app-passwords): Add config to disallow creating app-passwords
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling 6c20e3e103 fix(onetime): Allow longer duration via app config
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling bacb4323de fix: add app config to control onetime case
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling e7d0ed2020 fix(sessions): Hide one-time app passwords
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling 6b121c37da feat: Allow to create one-time app passwords that only allow loading an app-password
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Marcel Müller 3b9ec2d119 feat(qrcode-login): Add QR code login option directly in the user menu
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-01-09 19:07:07 +01:00
Robin Appelman c2cd236411 Merge pull request #57191 from nextcloud/dav-x-user-id
feat: also send x-user-id for dav responses
2026-01-09 18:43:36 +01:00
Marcel Müller f870041943 fix: Make User_Proxy IGetDisplayNameBackend complient
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2026-01-09 18:31:55 +01:00
SebastianKrupinski acfec22652 feat: restrict calendar invitation participants
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-09 12:07:18 -05:00
Robin Appelman 272d6141ca fix: improve handling updated storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:55 +01:00
Robin Appelman be3bbf22e0 fix: better applicable check for updating external mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:54 +01:00
Robin Appelman c14948f629 test: update cypress test for new files_external mount behavior
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:54 +01:00
Robin Appelman fa61c4c57d fix: don't error when checking login credential storage from cli
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:53 +01:00
Robin Appelman 6dd6d06606 fix: update external storage mounts on login
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:53 +01:00
Robin Appelman 9dffca2f07 fix: improve handling of unavailable storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:52 +01:00
Robin Appelman 73e84f9bf5 perf: cache root cache entries for external storage in MountCacheService
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:51 +01:00
Robin Appelman d64f7eb939 feat: listen to user/group events and update external storage mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:51 +01:00
Robin Appelman 5565cdb390 feat: make external storage mount provider authoritative
Signed-off-by: Robin Appelman <robin@icewind.nl>

# Conflicts:
#	apps/files_external/lib/AppInfo/Application.php
2026-01-09 17:53:50 +01:00
Robin Appelman 765d1af2a6 feat: yield user by id in IUserManager::getSeenUsers
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:49 +01:00
Robin Appelman c80c980e29 feat: add typed events for external storage config changes
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:49 +01:00
Robin Appelman e3551e576c feat: add api for authoritative mount providers to update the user mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:48 +01:00
Robin Appelman 198d500ac6 feat: add interface to mark mount providers as authoritative
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:42 +01:00
Robin Appelman 328a4608aa Merge pull request #57454 from nextcloud/fix/session/handle-null-logger
fix(session): handle null logger
2026-01-09 17:51:04 +01:00
Christoph Wurst 7e188433a1 fix(session): handle null logger
Signed-off-by: Christoph Wurst <1374172+ChristophWurst@users.noreply.github.com>
2026-01-09 16:42:39 +01:00
Benjamin Gaussorgues acb3e68a93 Merge pull request #56725 from nextcloud/rakekniven-patch-3 2026-01-09 14:38:37 +01:00
nextcloud-command fbb551311e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-09 09:24:00 +00:00
Carl Schwan 81a21fb718 refactor(entity): Don't type id
Some apps overwrite this and this breaks them.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-09 10:19:34 +01:00
rakekniven c2ae99a668 chore(i18n): Remove strings from i18n and adapted casing
Reported at Transifex

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-09 10:13:22 +01:00
Worker Builder 8265e4b489 build(hub): 33.0.0 beta 3
Signed-off-by: Worker Builder <worker-builder@nextcloud.com>
2026-01-09 08:53:57 +00:00
ernolf 932523e844 style(tests): apply cs-fixer formatting to ClientTest
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2026-01-09 01:29:59 +01:00
Nextcloud bot 6fd76bfa0e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-09 00:14:00 +00:00
Raphael Gradenwitz 510c203dfe Merge branch 'master' into ernolf/enh/http2-brotli-client
Signed-off-by: Raphael Gradenwitz <39901936+ernolf@users.noreply.github.com>
2026-01-08 21:02:07 +01:00
Benjamin Gaussorgues 0514ecfb96 Merge pull request #57398 from nextcloud/release/33.0.0_beta_2 2026-01-08 17:06:21 +01:00
Benjamin Gaussorgues 91a544ef45 Merge pull request #53414 from nextcloud/fix/49584-background-worker-remove-interval 2026-01-08 15:57:05 +01:00
Louis a0c922cc7f Merge pull request #56404 from nextcloud/share-sidebar-hide-external
feat: hide "External Shares" section if no external shares can be created
2026-01-08 14:32:11 +01:00
Côme Chilliet 2da078f258 Merge pull request #55861 from nextcloud/feat/allow-decrypt-all-with-encryption-disabled
feat(encryption): Support running decrypt-all when encryption is already disabled
2026-01-08 14:19:06 +01:00
Benjamin Gaussorgues 36b0d7c189 Merge pull request #55265 from nextcloud/perf/log-slow-dns 2026-01-08 14:06:31 +01:00
Benjamin Gaussorgues fe34ea5ec7 Merge pull request #57407 from nextcloud/carl/fix-php-85-deprecation-image 2026-01-08 13:57:11 +01:00
Benjamin Gaussorgues ae250777fd Merge pull request #56899 from nextcloud/feat/noid/ocm-capabilities 2026-01-08 13:46:09 +01:00
Benjamin Gaussorgues 17aa77e29f Merge pull request #57427 from nextcloud/fix/openmetrics_classes 2026-01-08 13:45:55 +01:00
Salvatore Martire 43f2470f90 fix: use interval value in JobWorker
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-08 13:45:11 +01:00
Joas Schilling d5eab95414 Merge pull request #57428 from nextcloud/dependabot/composer/aws/aws-sdk-php-3.369.3
build(deps): bump aws/aws-sdk-php from 3.349.3 to 3.369.9
2026-01-08 13:40:04 +01:00
nextcloud-command 7e4c4f2f3c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-08 11:54:41 +00:00
Robin Appelman de286709f8 feat: hide "External Shares" section if no external shares can be created
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-08 11:49:02 +00:00
Andy Scherzinger d86975e9fa Merge pull request #56923 from nextcloud/fix/update-all
fix(settings): update all button only updates a single app
2026-01-08 12:48:34 +01:00
Joas Schilling 03adb7e184 build(deps): bump aws/aws-sdk-php from 3.349.3 to 3.369.9
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-08 11:52:50 +01:00
Kate 8eb24155c4 Merge pull request #56518 from nextcloud/jtr/feat-appmanager-cleanappid-log 2026-01-08 11:42:04 +01:00
Git'Fellow 377de23bf5 Merge pull request #57291 from nextcloud/fixTypoAdminAuditLog
fix(admin_audit) Fix typo in visibility log message
2026-01-08 11:41:45 +01:00
Louis 73dd45be4f Merge pull request #57289 from nextcloud/feature/54562/drop-mounts-on-full-or-provider-setup
Feature/54562/drop mounts on full or provider setup
2026-01-08 11:26:50 +01:00
Christoph Wurst adf7ea5f0b perf: log slow DNS operations
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2026-01-08 11:22:15 +01:00
Christoph Wurst cc89a2a2b8 refactor: extract slow operation logging into trait
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2026-01-08 11:22:15 +01:00
Benjamin Gaussorgues 5403284b23 Merge pull request #55293 from nextcloud/jtr/refactor-dav-quotaplugin 2026-01-08 11:18:02 +01:00
Benjamin Gaussorgues f56f747f46 Merge pull request #57245 from nextcloud/jtr/refactor-versions-DAV-plugin 2026-01-08 11:12:50 +01:00
Benjamin Gaussorgues 7a2606b894 Merge pull request #57267 from nextcloud/jtr/refactor-trashbin-sabre-plugin 2026-01-08 11:11:37 +01:00
Joas Schilling eb91d8671d Merge pull request #57348 from nextcloud/fix/adjust-public-page-footer-logic
fix: adjust public page footer logic
2026-01-08 11:10:07 +01:00
Benjamin Gaussorgues 1a5ad32063 fix(openmetrics): import right classes
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-08 10:39:46 +01:00
Benjamin Gaussorgues a1fbd55992 Merge pull request #57395 from nextcloud/feat/exapp-task-proc-endpoints 2026-01-08 09:52:50 +01:00
Benjamin Gaussorgues a6a320498b Merge pull request #55252 from nextcloud/chore/chunked_orphan_delete 2026-01-08 09:50:09 +01:00
Anupam Kumar 3e4e544096 feat(TaskProcessing): add endpoints for ExApp access without userId
Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
2026-01-08 11:36:08 +05:30
Nextcloud bot 1a7f2f878e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-08 00:13:49 +00:00
nextcloud-command f6a783e07b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-07 19:21:14 +00:00
Thomas Lamant 7436340f4c fix: update() function does not return a Promise
Signed-off-by: Thomas Lamant <tom@tmlmt.com>
2026-01-07 19:18:29 +00:00
Thomas Lamant 58c6a8387b fix: update all button only updates a single app
Signed-off-by: Thomas Lamant <tom@tmlmt.com>
2026-01-07 19:18:29 +00:00
Maxence Lange 6af64a5495 feat(ocm): event on ocm discovery and ocm request
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-07 17:54:26 -01:00
Joas Schilling 66c8f9c4dc Merge pull request #57414 from nextcloud/bugfix/noid/clean-language
fix(l10n): Fix language selection
2026-01-07 19:05:41 +01:00
Joas Schilling 52cfd57af9 Merge pull request #57413 from nextcloud/bugfix/noid/support-native-int-range
fix(controller): Support native int ranges
2026-01-07 19:05:19 +01:00
Ferdinand Thiessen 6a75cd9454 Merge pull request #57347 from nextcloud/refactor/drop-deprecated-composable
refactor(files): migrate from deprecated `useNavigation` to `activeStore`
2026-01-07 18:06:41 +01:00
Daniel Calviño Sánchez 8e5ae53e02 Merge pull request #56938 from nextcloud/unify-handling-of-exclude-groups-in-contacts-menu-and-sharing
fix: Unify handling of exclude groups in contacts menu and sharing
2026-01-07 18:04:53 +01:00
Joas Schilling ab122ac15d fix(l10n): Fix language selection
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 17:41:18 +01:00
Joas Schilling f2e2e4ea21 fix(controller): Support native int ranges
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 17:36:57 +01:00
Robin Appelman 534632334c feat: add event for apps that a users share access might have changed
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-07 17:18:16 +01:00
Joas Schilling 15b45975e2 Merge pull request #57410 from nextcloud/bugfix/noid/fix-generate-id
fix(snowflake): Fix generateId() call for SnowflakeEntity
2026-01-07 17:17:33 +01:00
Salvatore Martire 2d22c4f654 fix: update information cached by mount point on rename
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
Salvatore Martire 07eef5eaf4 fix: drop set up partial mounts on setupForUser
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
nextcloud-command 09e0f06678 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-07 16:50:42 +01:00
Ferdinand Thiessen 47acb66b9c refactor(files): migrate from deprecated useNavigation to activeStore
Small preparation for upcoming Vue 3 migration of the files app.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-07 16:50:42 +01:00
SebastianKrupinski 6b3d3fd2d3 fix: adjust public page footer logic
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-07 10:16:35 -05:00
Joas Schilling f42493bf1e Merge pull request #57409 from nextcloud/fix/ci-psalm
ci(static-code-analysis): add missing permissions to upload sarif file
2026-01-07 16:03:58 +01:00
Joas Schilling fe393c5dbf fix(snowflake): Fix generateId() call for SnowflakeEntity
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 15:39:09 +01:00
Carl Schwan bd815595d4 fix: Remove NOP ReflectionProperty::setAccessible calls
Doesn't do anything since PHP 8.1 and is deprecated since PHP 8.5
2026-01-07 15:23:20 +01:00
Ferdinand Thiessen 86c90221f1 ci(static-code-analysis): add missing permissions to upload sarif file
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-07 15:21:48 +01:00
Maxence Lange 0cdd19271d Merge pull request #56047 from nextcloud/feat/ocm/handle-new-ocm-endpoint
feat(ocm): handle /.well-known/ocm
2026-01-07 13:17:06 -01:00
Carl Schwan 513b37916f fix(image): Remove NOP imagedestroy call
This is NOP since 8.0 and deprecated since 8.5

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 15:13:07 +01:00
Joas Schilling 9e516beb85 Merge pull request #57403 from nextcloud/followup/noid/snowflake-entity
fix(snowflake): Allow SnowflakeAware to overwrite the field types
2026-01-07 15:10:09 +01:00
Joas Schilling 6b6deefee9 Merge pull request #57373 from nextcloud/carl/fix-deprecated-alias
fix: Usage of a deprecated alias
2026-01-07 14:35:32 +01:00
Joas Schilling 8d55b13641 Merge pull request #57367 from nextcloud/work/carl/psalm-unittests
refactor(psalm): Enable psalm for comments unit tests
2026-01-07 14:16:14 +01:00
Joas Schilling 2bd2cc71e5 fix(snowflake): Allow SnowflakeAware to overwrite the field types
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 14:06:18 +01:00
Joas Schilling 40b79f5af8 Merge pull request #56795 from nextcloud/feat/noid/extend-entity-to-be-snoflake-aware
feat(snowflake): extend Entity class to support snowflakes
2026-01-07 13:42:49 +01:00
Carl Schwan 6eb1609b35 fix(psalm): Fix InvalidArgument in FilesByType OpenMetrics exporter
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:22:39 +01:00
Carl Schwan 58de51160c fix(psalm): Fix return type of TokenService::getTokens
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:21:34 +01:00
Carl Schwan a430702caa refactor(psalm): Enable psalm for comments unit tests
This is the first step to enable psalm for our test suite to find issues
also there.

At the moment, this already found some completely broken and unused
method in TestCase and prepare the way for making ICommentsManager work
with snowflake ids by using string instead of int for the ids
consistently.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:21:33 +01:00
Benjamin Gaussorgues 351351a832 Merge pull request #57371 from nextcloud/enh/noid/change-config-to-amr 2026-01-07 12:04:36 +01:00
Worker Builder 944341543e build(hub): 33.0.0 beta 2
Signed-off-by: Worker Builder <worker-builder@nextcloud.com>
2026-01-07 10:53:53 +00:00
Joas Schilling e5c989066f Merge pull request #57394 from nextcloud/bugfix/noid/theming-links
fix(settings): Allow clearing legal and privacy links
2026-01-07 11:06:33 +01:00
Benjamin Gaussorgues 62513dfd92 Merge pull request #57165 from nextcloud/feat/openmetrics 2026-01-07 10:43:56 +01:00
Joas Schilling 649e042568 fix(settings): Fix reset button for legal and privacy
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 09:45:48 +01:00
Benjamin Gaussorgues 71fa5937b2 feat(openapi): add OpenMetrics controller into OpenAPI
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues 6ee8325b3e feat(files_sharing): add basic OpenMetrics exporter for files shares
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues 47de164946 feat(comments): add basic OpenMetrics exporter
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues c57c4843e8 feat(openmetrics): introduce OpenMetrics exporter
Expose a `/metrics` endpoint with some basic metrics

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Joas Schilling 7c64394617 fix(settings): Allow clearing legal and privacy links
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 09:29:34 +01:00
Nextcloud bot c09168e911 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-07 00:13:32 +00:00
Benjamin Gaussorgues 9f7d4d055e Merge pull request #57361 from nextcloud/release/33.0.0_beta_1 2026-01-06 16:56:21 +01:00
Joas Schilling c3be0b8814 Merge pull request #57380 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2026-01-06 16:54:55 +01:00
nextcloud-command 1432c97584 fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2026-01-06 15:38:16 +00:00
Simon L. 178fb77be8 feat(Config.php): change array_merge to array_replace_recursive when merging configs
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-01-06 16:03:38 +01:00
Benjamin Gaussorgues 86fe44d9f4 Merge pull request #56627 from nextcloud/fix/54953/value-is-already-team-id 2026-01-06 16:00:53 +01:00
Tobias Kaminsky fdfaf6b363 Merge pull request #57372 from nextcloud/feat/adapt-webhook
Feat(webhook_listeners): adapt webhook payload format
2026-01-06 15:55:27 +01:00
Tobias Kaminsky ad13a8acc7 Merge pull request #57235 from nextcloud/enh/noid/testing-ocr-provider
Add fake OCR taskprocessing provider in the testing app
2026-01-06 15:52:10 +01:00
Carl Schwan 693a2263cc fix(entity): Do not call getId when inserting and $id is null
Otherwise this breaks some existing code, in particular PublicKeyToken

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 15:42:03 +01:00
Jana Peper 65d44b0007 docs: adapt docblock
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
2026-01-06 15:24:40 +01:00
Jana Peper ec9cac90e0 feat: adapt webhook payload format
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
2026-01-06 15:19:22 +01:00
Carl Schwan e63c4afdab fix: Usage of a deprecated alias
The deprecated warning:

The requested alias "UserId" is deprecated. Please request "userId" directly.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 15:04:07 +01:00
Julien Veyssier e1d19b2c24 feat: add fake OCR taskprocessing provider in the testing app
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-01-06 14:36:51 +01:00
Kate 72ad2edcd7 Merge pull request #57118 from nextcloud/test/delete-orphaned-files/improve-count-mounts 2026-01-06 14:36:05 +01:00
Robin Appelman 72632faaf1 Merge pull request #57284 from nextcloud/allow-cross-share-move-delete
fix: allow moving from of non-resharable to other share if the user has delete permissions
2026-01-06 14:23:51 +01:00
Côme Chilliet ebab99ec9a Merge pull request #56779 from nextcloud/jtr/needUpgrade-refactor
feat: improve needUpgrade() output and refactor for clarity
2026-01-06 14:04:13 +01:00
Côme Chilliet e6ac79d570 Merge branch 'master' into carl/dashboard-psalm
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
2026-01-06 13:07:32 +01:00
Carl Schwan 7c1a8a4060 feat: Adapt a bit the snowflake ids API
- Rename setId() -> generateId() in SnowflakeAwareEntity

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 12:57:17 +01:00
Anna Larch 5f797ebc32 refactor: move existing usages of snoflake IDs SnowflakeAwareEntity
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:17 +01:00
Anna Larch a100ede789 feat: extend Entity and adjust QBMapper to support Snowflake IDs
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:17 +01:00
Anna Larch f546daada7 refactor: Rename Snowflake Generator and Decoder
And introduce the Snowflake DTO

Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:04 +01:00
Côme Chilliet c32009fd32 Merge pull request #57145 from nextcloud/carl/psalm-dav
refactor(dav): fix psalm for dav endpoints
2026-01-06 12:47:29 +01:00
Benjamin Gaussorgues 72be2f41b3 Merge pull request #57099 from nextcloud/carl/fix-32-bits-job-tests 2026-01-06 11:59:28 +01:00
Worker Builder 758a9c26db build(hub): 33.0.0 beta 1
Signed-off-by: Worker Builder <worker-builder@nextcloud.com>
2026-01-06 10:34:50 +00:00
Ferdinand Thiessen 0c6565ea44 fix(birthday-service): Fix on 32 bits system
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 10:44:47 +01:00
Carl Schwan 33e5f2d345 fix(background-jobs): Fix unit tests with 32-bits tests
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-01-06 10:44:21 +01:00
Joda Stößer 16d8cc065a fix(NavigationManager): Remove break to return all defaultEntryIds
Otherwise only the first entry id is returned, breaking loading the value for the "Global Default App" option

Signed-off-by: Joda Stößer <git@simjo.st>
2026-01-06 02:41:37 +01:00
Nextcloud bot 0a3cc4dd6f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-06 00:13:48 +00:00
Ferdinand Thiessen c6b095234e Merge pull request #57236 from nextcloud/refactor/profile-vue3-ts
refactor(profile): migrate to script setup and Vue 3
2026-01-05 22:52:49 +01:00
Ferdinand Thiessen f9d4bb2ba8 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 22:21:43 +01:00
Ferdinand Thiessen ad61aa7a30 refactor(profile): migrate to script setup and Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 22:16:48 +01:00
Ferdinand Thiessen 8cc588fc42 Merge pull request #57341 from nextcloud/refactor/federation-vue3
refactor(federation): migrate app frontend (admin settings) to Vue 3
2026-01-05 20:07:18 +01:00
nextcloud-command 35bfa1d2f0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-05 17:16:35 +00:00
Ferdinand Thiessen 5d3e1f70b2 refactor(federation): migrate app frontend (admin settings) to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 18:08:29 +01:00
Robin Appelman 8a05a3e01b Merge pull request #57186 from nextcloud/perbucket-without-multibucket
feat: don't gate perBucket object store configuration behind multibucket
2026-01-05 16:49:16 +01:00
Robin Appelman afa23291d6 feat: don't gate perBucket object store configuration behind multibucket
a setup can have multiple bucket without having `multibucket` enabled trough things like per-groupfolder buckets

Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-05 16:09:25 +01:00
Ferdinand Thiessen c50c5a9e6b Merge pull request #57277 from nextcloud/refactor/files-sidebar-nodeapi
refactor!: migrate files sidebar to Node API
2026-01-05 13:38:26 +01:00
Maxence Lange eb0369705a Merge pull request #56240 from nextcloud/fix/noid/set-adr-book-local-but-not-system
fix(contacts): allow address book to be local but not system
2026-01-05 09:55:42 -01:00
Joas Schilling fe0c56a1d7 Merge pull request #57332 from nextcloud/jtr/chore-drop-10n-xgettextfiles
chore(l10n): drop unused xgettextfiles
2026-01-05 10:00:42 +01:00
Ferdinand Thiessen 98a4b959ec chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:41 +01:00
Ferdinand Thiessen fd96a32dda test: adjust cypress tests
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:30 +01:00
Ferdinand Thiessen 3726596ad0 refactor(systemtags): migrate to new files sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen f9a137ea87 refactor(files): migrate favorite sidebar action to new Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 7077685bf8 refactor(files_sharing): migrate to new Files Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 34511e9036 refactor(comments): migrate to new Files Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 493c371a22 refactor(files_versions): adjust frontend for new files sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 4a9cdeb01f refactor!(files): migrate sidebar API to use Node API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Nextcloud bot 7abd46fb53 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-05 00:13:26 +00:00
Ferdinand Thiessen fb18804192 chore(deps): update @nextcloud/files to v4.0.0-beta.8
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-04 22:30:12 +01:00
github-actions[bot] 513c0cceb6 Merge pull request #57320 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/files-4.0.0-beta.8
build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8 in /build/frontend-legacy
2026-01-04 08:29:45 +00:00
Josh 867a8d1088 chore(l10n): drop unused xgettextfiles
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-03 20:32:45 -05:00
Nextcloud bot 56658fc3ef fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-04 00:13:41 +00:00
nextcloud-command dc5d199e3a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-03 20:41:28 +00:00
dependabot[bot] 41c739d370 build(deps): bump @nextcloud/files in /build/frontend-legacy
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 4.0.0-beta.7 to 4.0.0-beta.8.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v4.0.0-beta.7...v4.0.0-beta.8)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-version: 4.0.0-beta.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-03 21:33:05 +01:00
github-actions[bot] 68149e01cb Merge pull request #57319 from nextcloud/dependabot/npm_and_yarn/nextcloud/files-4.0.0-beta.8
build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8
2026-01-03 21:32:35 +01:00
nextcloud-command 44216b36e4 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-03 19:55:53 +00:00
dependabot[bot] 68b8e2662d build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 4.0.0-beta.7 to 4.0.0-beta.8.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v4.0.0-beta.7...v4.0.0-beta.8)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-version: 4.0.0-beta.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-03 20:47:39 +01:00
github-actions[bot] bc2bdeeac5 Merge pull request #57305 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/multi-c8afcbbcd8
build(deps): bump qs and express in /build/frontend-legacy
2026-01-03 19:34:16 +00:00
Nextcloud bot a6bcb18db9 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-03 00:13:31 +00:00
Andy Scherzinger cbaf6e73a5 Merge pull request #53634 from invario/preview-direct-download
feat(previews): allow ffmpeg to connect direct for AWS S3 buckets
2026-01-02 18:39:42 +01:00
Carl Schwan 98192fc17c feat(external-s3): Expose config option to enable direct s3 preview
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:43 +01:00
Carl Schwan 2ea1bd4cdc feat(movie-preview): Use getDirectDownloadById for generating preview
Allow to speed-up considerably the creation of previews for movies
stored on S3.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:41 +01:00
Robin Appelman 3580680f8f Merge pull request #56166 from nextcloud/dav-file-get-log-id
feat: add fileid to exception message when reading a dav file fails
2026-01-02 15:30:22 +01:00
Carl Schwan 1b12fd0df3 Merge pull request #57308 from nextcloud/jtr/fix-installer-isDownloaded-robustness
fix(installer): make isDownloaded robust + unify parameter naming
2026-01-02 15:07:45 +01:00
Stephan Orbaugh 97ba753e09 Merge pull request #57230 from nextcloud/fix/inodebypath-forbidden-responses
fix: drop readable check
2026-01-02 11:07:45 +01:00
invario ffe91b48dc feat(previews): allow ffmpeg to connect direct for AWS S3 buckets
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2026-01-02 10:48:39 +01:00
nextcloud-command 9fed6d849a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-02 09:47:55 +00:00
Josh 30f2932817 chore: make lint happy about isDownloaded concat
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-01 11:49:02 -05:00
Josh a46f3bd21c fix(installer): make isDownloaded robust + unify parameter naming
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-01 11:42:54 -05:00
dependabot[bot] a1ab869381 build(deps): bump qs and express in /build/frontend-legacy
Bumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `qs` from 6.14.0 to 6.14.1
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:35:19 +00:00
Nextcloud bot 7baca4264a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-01 00:13:23 +00:00
Josh 24ec0e85e5 feat(AppManager): log when cleanAppId drops invalid chars
Log a debug message if invalid characters are replaced in app IDs.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-31 14:30:05 -05:00
Robin Appelman d21fa1c0b5 feat: add fileid to exception message when reading a dav file fails
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 14:06:46 +01:00
Git'Fellow eafbb5a23c fix(admin_audit): Fix typo in visibility log message
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-12-30 10:09:08 +01:00
Robin Appelman 8cfb49012d test: update cross-share move tests
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-29 17:39:44 +01:00
Robin Appelman 39c8141f0c fix: allow moving from of non-resharable to other share if the user has delete permissions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-29 17:39:43 +01:00
Josh 5c51b42d3f test(trashbin): Update DAV quotaProvider test cases
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:40:55 -05:00
Josh 80caedb050 chore: php-cs fixup
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:30:19 -05:00
Josh 853db93601 chore: typo fixup
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:26:11 -05:00
Josh 355d6637ff refactor(trashbin): restyle DAV handlers, enhance internal docs, refactor for clarity & robustness
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:07:19 -05:00
Josh 183136d166 chore: Fix comments and formatting in Plugin.php
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-26 19:07:13 -05:00
Josh b872208285 refactor(files_versions): tidy up UA download header logic and modernize class structure
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-26 18:56:56 -05:00
yemkareems 9ed9a317f5 fix: added Test\TestCase namespace for failing tests
Signed-off-by: yemkareems <yemkareems@gmail.com>
2025-12-24 12:01:13 +05:30
yemkareems 674381e8c1 fix: php cs fix run
Signed-off-by: yemkareems <yemkareems@gmail.com>
2025-12-24 11:23:19 +05:30
yemkareems bbbbc4de22 fix: offsets corrected, test added to have exact count when time is frozen and variable count when time is dynamic
Signed-off-by: yemkareems <yemkareems@gmail.com>
2025-12-24 11:16:43 +05:30
Salvatore Martire 678bf538bf fix: drop readable check
This check was introduced in a previous PR, causing disruptive
changes in PROPFIND responses in some cases.

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-22 18:48:10 +01:00
Maxence Lange b28176458d fix(contacts): not contact, not local
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-22 12:36:33 -01:00
Robin Appelman 69249a3ce3 feat: also send x-user-id for dav responses
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-19 18:20:01 +01:00
Carl Schwan 3555e00754 refactor(dav): fix psalm for dav endpoints
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 15:09:48 +01:00
Carl Schwan 6111ecefbc refactor(dashboard): Fix all psalm issues
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 14:58:47 +01:00
Côme Chilliet c11cc64470 chore: update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-16 11:09:46 +01:00
Côme Chilliet a6184661bd feat(encryption): Support running decrypt-all when encryption is already disabled
This was an arbitrary limitation since the first thing the command does
 is disabling encryption anyway, it makes little sence to force the admin
 to enable encryption first.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-16 11:09:46 +01:00
Maxence Lange 981e987bd0 fix(team-manager): team is already teamid
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-16 08:56:46 -01:00
provokateurin f9157c85c2 test(DeleteOrphanedFilesTest): Improve counting mounts
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-16 09:11:27 +01:00
Daniel Calviño Sánchez fbe2023d39 fix: Unify handling of exclude groups in contacts menu and sharing
If the current user belongs to both one or more groups excluded from
sharing and one or more groups not excluded from sharing the user is
allowed to share. However, in the contacts menu, as soon as the current
user belonged to a group excluded from sharing the user could not search
for local contacts. This has been unified now with the sharing
behaviour, so local contacts can still be searched if the user also
belongs to a group not excluded from sharing (or to no group at all,
which was also allowed before).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez d59d8db1d6 test: Add unit test for excluded groups in contacts menu
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez 694651de3a test: Adjust unit test name to better reflect its behaviour
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez 70ed393b34 test: Add integration tests for excluded groups in contacts and sharees
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Josh 3de06a2b33 chore: lint happiness
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-01 12:26:03 -05:00
Josh d3432482cc feat: improve needUpgrade() output and refactor for clarity
- Reorganized logic to improve clarity + eliminate duplication
- Switched app handling to non-deprecated IAppManager API
- Make the HintException clearer and more actionable
- Log disallowed downgrade attempts before throwing

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-01 12:10:52 -05:00
Maxence Lange e456f116b8 feat(ocm): handle /well-known/ocm
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-11-07 08:55:16 -01:00
ernolf b6ea2bc0f5 refactor(http-client): use direct HTTP/2 cURL hint and align tests
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-10-22 12:17:17 +02:00
ernolf 65aa731ef3 test: add unit test for Accept-Encoding with Brotli support
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-09-30 18:01:38 +02:00
ernolf 812f12ecc4 perf(client): enable HTTP/2 and brotli support in internal HTTP client
- Prefer HTTP/2 by setting RequestOptions::VERSION => "2.0" so clients
  that respect PSR-7 request version will prefer HTTP/2.
- Add a curl hint (CURLOPT_HTTP_VERSION) to prefer HTTP/2 via ALPN
  (CURL_HTTP_VERSION_2TLS or CURL_HTTP_VERSION_2_0 fallback) while allowing
  automatic fallback to HTTP/1.1.
- Advertise Brotli ("br") in Accept-Encoding when the php-brotli extension
  is available (detected via function_exists('brotli_uncompress')), otherwise
  fall back to gzip.

Notes:
- The PSR-7 request version is used as a hint for HTTP client libraries;
  setting the version to "2.0" signals a preference for HTTP/2 at the request
  abstraction level.
- The curl option is defensive: it prefers HTTP/2 where libcurl supports it
  (via ALPN), but will not break on older libcurl/builds (uses defined()).

Compatibility:
- Fully backwards compatible: if the php-brotli extension is not present,
  no Brotli usage will occur and behaviour remains equivalent to previous
  (gzip).

Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-09-30 17:01:07 +02:00
yemkareems 2ba3766bef Merge branch 'master' into fix/unit-test-for-storage-auto-expire-list 2025-09-30 17:58:16 +05:30
yemkareems fbd99cef8f fix: since removed and copy right text changed
Signed-off-by: yemkareems <yemkareems@gmail.com>
2025-09-29 17:03:05 +05:30
Josh a9b17a1a16 chore: Add OCP\Util import
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:42:47 -04:00
Josh 5f5bb77bf3 fix: Update QuotaPlugin to handle 32-bit numeric lengths correctly
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:40:59 -04:00
Josh fbe5238d7f fix: review input
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:17:47 -04:00
Josh cc96a16df5 fix: Apply suggestions from code review
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:11:51 -04:00
Josh 04f30cad62 chore: drop buildFileViewMock cast and give it a docblock
Updated the buildFileViewMock method to accept int, float, or false as quota type.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 20:53:57 -04:00
Josh 23546013e1 fix(dav): test hint time in buildFileViewMock method wrong
Doesn't match current interface.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 20:46:39 -04:00
Josh 45eb87ba6e chore: Change methods back to public for tests
Tagged with \@internal instead for now.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:32:54 -04:00
Josh 01e0ca7298 chore: lint compliance :)
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:21:49 -04:00
Josh 3bb5ed502a refactor(dav): Clean up QuotaPlugin and add new hints
Add new hints and improve documentation for the QuotaPlugin. This commit also removes unused code and tidies up some code, which improves readability and simplifies maintenance, without introducing breaking changes.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:13:48 -04:00
Benjamin Gaussorgues 13bfd8b292 chore: add chunked queries on occ sharing:delete-orphan-shares
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-09-22 11:12:06 +02:00
yemkareems 4914b4aff3 fix: added test to assert auto expire list preserve's version as per max_versions_per_interval
Signed-off-by: yemkareems <yemkareems@gmail.com>
2025-08-28 17:09:55 +05:30
2344 changed files with 38769 additions and 27343 deletions
+7 -1
View File
@@ -53,7 +53,13 @@ jobs:
services:
samba:
image: ghcr.io/nextcloud/continuous-integration-samba:latest # zizmor: ignore[unpinned-images]
image: ghcr.io/servercontainers/samba:smbd-only-a3.18.0-s4.18.2-r0
env:
ACCOUNT_test: test
UID_test: 1000
SAMBA_VOLUME_CONFIG_test: "[public]; path=/tmp; valid users = test; guest ok = no; read only = no; browseable = yes"
options: >-
--health-cmd=true
ports:
- 445:445
@@ -15,6 +15,7 @@ on:
permissions:
contents: read
security-events: write
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
+29
View File
@@ -0,0 +1,29 @@
# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-only
# Files removed at build time
# Global exclude
.editorconfig
.git
.git-blame-ignore-revs
.gitattributes
.github
.gitignore
.gitmodules
.idea
.l10nignore
.nextcloudignore
.noopenapi
.tx
cypress
tests
# Server specific
/.devcontainer
/__mocks__
/__tests__
/autotest*.sh
/build
/config/config.php
/contribute
/data
@@ -18,7 +18,7 @@ class TagManagement extends Action {
$this->log('System tag "%s" (%s, %s) created',
[
'name' => $tag->getName(),
'visbility' => $tag->isUserVisible() ? 'visible' : 'invisible',
'visibility' => $tag->isUserVisible() ? 'visible' : 'invisible',
'assignable' => $tag->isUserAssignable() ? 'user assignable' : 'system only',
],
['name', 'visibility', 'assignable']
+10 -1
View File
@@ -25,6 +25,15 @@ return [
'url' => '/invite-accepted',
'verb' => 'POST',
'root' => '/ocm',
]
],
// needs to be kept at the bottom of the list
[
'name' => 'OCMRequest#manageOCMRequests',
'url' => '/{ocmPath}',
'requirements' => ['ocmPath' => '.*'],
'verb' => ['GET', 'POST', 'PUT', 'DELETE'],
'root' => '/ocm',
],
],
];
@@ -10,6 +10,7 @@ return array(
'OCA\\CloudFederationAPI\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\CloudFederationAPI\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\CloudFederationAPI\\Config' => $baseDir . '/../lib/Config.php',
'OCA\\CloudFederationAPI\\Controller\\OCMRequestController' => $baseDir . '/../lib/Controller/OCMRequestController.php',
'OCA\\CloudFederationAPI\\Controller\\RequestHandlerController' => $baseDir . '/../lib/Controller/RequestHandlerController.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInvite' => $baseDir . '/../lib/Db/FederatedInvite.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInviteMapper' => $baseDir . '/../lib/Db/FederatedInviteMapper.php',
@@ -25,6 +25,7 @@ class ComposerStaticInitCloudFederationAPI
'OCA\\CloudFederationAPI\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\CloudFederationAPI\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\CloudFederationAPI\\Config' => __DIR__ . '/..' . '/../lib/Config.php',
'OCA\\CloudFederationAPI\\Controller\\OCMRequestController' => __DIR__ . '/..' . '/../lib/Controller/OCMRequestController.php',
'OCA\\CloudFederationAPI\\Controller\\RequestHandlerController' => __DIR__ . '/..' . '/../lib/Controller/RequestHandlerController.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInvite' => __DIR__ . '/..' . '/../lib/Db/FederatedInvite.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInviteMapper' => __DIR__ . '/..' . '/../lib/Db/FederatedInviteMapper.php',
@@ -0,0 +1,87 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\CloudFederationAPI\Controller;
use JsonException;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
use OCP\OCM\Events\OCMEndpointRequestEvent;
use OCP\OCM\Exceptions\OCMArgumentException;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\Exceptions\IncomingRequestException;
use Psr\Log\LoggerInterface;
class OCMRequestController extends Controller {
public function __construct(
string $appName,
IRequest $request,
private readonly IEventDispatcher $eventDispatcher,
private readonly IOCMDiscoveryService $ocmDiscoveryService,
private readonly LoggerInterface $logger,
) {
parent::__construct($appName, $request);
}
/**
* Method will catch any request done to /ocm/[...] and will broadcast an event.
* The first parameter of the remaining subpath (post-/ocm/) is defined as
* capability and should be used by listeners to filter incoming requests.
*
* @see OCMEndpointRequestEvent
* @see OCMEndpointRequestEvent::getArgs
*
* @param string $ocmPath
* @return Response
* @throws OCMArgumentException
*/
#[NoCSRFRequired]
#[PublicPage]
#[BruteForceProtection(action: 'receiveOcmRequest')]
public function manageOCMRequests(string $ocmPath): Response {
if (!mb_check_encoding($ocmPath, 'UTF-8')) {
throw new OCMArgumentException('path is not UTF-8');
}
try {
// if request is signed and well signed, no exceptions are thrown
// if request is not signed and host is known for not supporting signed request, no exceptions are thrown
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming ocm request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
}
// assuming that ocm request contains a json array
$payload = $signedRequest?->getBody() ?? file_get_contents('php://input');
try {
$payload = ($payload) ? json_decode($payload, true, 512, JSON_THROW_ON_ERROR) : null;
} catch (JsonException $e) {
$this->logger->debug('json decode error', ['exception' => $e]);
$payload = null;
}
$event = new OCMEndpointRequestEvent(
$this->request->getMethod(),
preg_replace('@/+@', '/', $ocmPath),
$payload,
$signedRequest?->getOrigin()
);
$this->eventDispatcher->dispatchTyped($event);
return $event->getResponse() ?? new Response(Http::STATUS_NOT_FOUND);
}
}
@@ -7,14 +7,6 @@
namespace OCA\CloudFederationAPI\Controller;
use NCU\Federation\ISignedCloudFederationProvider;
use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
use NCU\Security\Signature\Exceptions\IncomingRequestException;
use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
use NCU\Security\Signature\Exceptions\SignatureException;
use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
use NCU\Security\Signature\IIncomingSignedRequest;
use NCU\Security\Signature\ISignatureManager;
use OC\OCM\OCMSignatoryManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\Db\FederatedInviteMapper;
@@ -39,11 +31,18 @@ use OCP\Federation\Exceptions\ProviderDoesNotExistsException;
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudIdManager;
use OCP\Federation\ISignedCloudFederationProvider;
use OCP\IAppConfig;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\Exceptions\IdentityNotFoundException;
use OCP\Security\Signature\Exceptions\IncomingRequestException;
use OCP\Security\Signature\Exceptions\SignatoryNotFoundException;
use OCP\Security\Signature\IIncomingSignedRequest;
use OCP\Security\Signature\ISignatureManager;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Util;
use Psr\Log\LoggerInterface;
@@ -74,8 +73,8 @@ class RequestHandlerController extends Controller {
private readonly IAppConfig $appConfig,
private ICloudFederationFactory $factory,
private ICloudIdManager $cloudIdManager,
private readonly IOCMDiscoveryService $ocmDiscoveryService,
private readonly ISignatureManager $signatureManager,
private readonly OCMSignatoryManager $signatoryManager,
private ITimeFactory $timeFactory,
) {
parent::__construct($appName, $request);
@@ -108,9 +107,9 @@ class RequestHandlerController extends Controller {
public function addShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $protocol, $shareType, $resourceType) {
if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) {
try {
// if request is signed and well signed, no exception are thrown
// if request is signed and well signed, no exceptions are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->getSignedRequest();
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
$this->confirmSignedOrigin($signedRequest, 'owner', $owner);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
@@ -360,7 +359,7 @@ class RequestHandlerController extends Controller {
try {
// if request is signed and well signed, no exception are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->getSignedRequest();
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
$this->confirmNotificationIdentity($signedRequest, $resourceType, $notification);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
@@ -434,37 +433,6 @@ class RequestHandlerController extends Controller {
}
/**
* returns signed request if available.
* throw an exception:
* - if request is signed, but wrongly signed
* - if request is not signed but instance is configured to only accept signed ocm request
*
* @return IIncomingSignedRequest|null null if remote does not (and never did) support signed request
* @throws IncomingRequestException
*/
private function getSignedRequest(): ?IIncomingSignedRequest {
try {
$signedRequest = $this->signatureManager->getIncomingSignedRequest($this->signatoryManager);
$this->logger->debug('signed request available', ['signedRequest' => $signedRequest]);
return $signedRequest;
} catch (SignatureNotFoundException|SignatoryNotFoundException $e) {
$this->logger->debug('remote does not support signed request', ['exception' => $e]);
// remote does not support signed request.
// currently we still accept unsigned request until lazy appconfig
// core.enforce_signed_ocm_request is set to true (default: false)
if ($this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_ENFORCED, lazy: true)) {
$this->logger->notice('ignored unsigned request', ['exception' => $e]);
throw new IncomingRequestException('Unsigned request');
}
} catch (SignatureException $e) {
$this->logger->warning('wrongly signed request', ['exception' => $e]);
throw new IncomingRequestException('Invalid signature');
}
return null;
}
/**
* confirm that the value related to $key entry from the payload is in format userid@hostname
* and compare hostname with the origin of the signed request.
@@ -9,8 +9,6 @@ declare(strict_types=1);
namespace OCA\CloudFederationApi\Tests;
use NCU\Security\Signature\ISignatureManager;
use OC\OCM\OCMSignatoryManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\Controller\RequestHandlerController;
use OCA\CloudFederationAPI\Db\FederatedInvite;
@@ -29,6 +27,8 @@ use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\ISignatureManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@@ -45,10 +45,11 @@ class RequestHandlerControllerTest extends TestCase {
private FederatedInviteMapper&MockObject $federatedInviteMapper;
private AddressHandler&MockObject $addressHandler;
private IAppConfig&MockObject $appConfig;
private ICloudFederationFactory&MockObject $cloudFederationFactory;
private ICloudIdManager&MockObject $cloudIdManager;
private IOCMDiscoveryService&MockObject $discoveryService;
private ISignatureManager&MockObject $signatureManager;
private OCMSignatoryManager&MockObject $signatoryManager;
private ITimeFactory&MockObject $timeFactory;
private RequestHandlerController $requestHandlerController;
@@ -69,8 +70,8 @@ class RequestHandlerControllerTest extends TestCase {
$this->appConfig = $this->createMock(IAppConfig::class);
$this->cloudFederationFactory = $this->createMock(ICloudFederationFactory::class);
$this->cloudIdManager = $this->createMock(ICloudIdManager::class);
$this->discoveryService = $this->createMock(IOCMDiscoveryService::class);
$this->signatureManager = $this->createMock(ISignatureManager::class);
$this->signatoryManager = $this->createMock(OCMSignatoryManager::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->requestHandlerController = new RequestHandlerController(
@@ -88,8 +89,8 @@ class RequestHandlerControllerTest extends TestCase {
$this->appConfig,
$this->cloudFederationFactory,
$this->cloudIdManager,
$this->discoveryService,
$this->signatureManager,
$this->signatoryManager,
$this->timeFactory,
);
}
+4
View File
@@ -38,6 +38,10 @@
</providers>
</activity>
<openmetrics>
<exporter>OCA\Comments\OpenMetrics\CommentsCountMetric</exporter>
</openmetrics>
<collaboration>
<plugins>
<plugin type="autocomplete-sort">OCA\Comments\Collaboration\CommentersSorter</plugin>
@@ -22,5 +22,6 @@ return array(
'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => $baseDir . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\OpenMetrics\\CommentsCountMetric' => $baseDir . '/../lib/OpenMetrics/CommentsCountMetric.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php',
);
@@ -37,6 +37,7 @@ class ComposerStaticInitComments
'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => __DIR__ . '/..' . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\OpenMetrics\\CommentsCountMetric' => __DIR__ . '/..' . '/../lib/OpenMetrics/CommentsCountMetric.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php',
);
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat …",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat …",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+9 -1
View File
@@ -9,12 +9,19 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"Files" : "File",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Anda disebutkan pada \"{file}\", dalam sebuah komentar oleh akun yang sejak itu telah dihapus",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
"Cancel edit" : "Batal sunting",
"New comment" : "Komentar baru",
"Write a comment …" : "Tulis komentar …",
"Post comment" : "Posting komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ untuk penyebutan, : untuk emoji, / untuk pemilih cerdas",
"Could not reload comments" : "Tidak dapat memuat ulang komentar",
"Failed to mark comments as read" : "Gagal menandai komentar sebagai sudah dibaca",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
"No more messages" : "Tidak ada pesan lagi",
@@ -23,6 +30,7 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"Write a comment …" : "Tulis komentar …"
},
"nplurals=1; plural=0;");
+9 -1
View File
@@ -7,12 +7,19 @@
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"Files" : "File",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Anda disebutkan pada \"{file}\", dalam sebuah komentar oleh akun yang sejak itu telah dihapus",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
"Cancel edit" : "Batal sunting",
"New comment" : "Komentar baru",
"Write a comment …" : "Tulis komentar …",
"Post comment" : "Posting komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ untuk penyebutan, : untuk emoji, / untuk pemilih cerdas",
"Could not reload comments" : "Tidak dapat memuat ulang komentar",
"Failed to mark comments as read" : "Gagal menandai komentar sebagai sudah dibaca",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
"No more messages" : "Tidak ada pesan lagi",
@@ -21,6 +28,7 @@
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"Write a comment …" : "Tulis komentar …"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -0,0 +1,52 @@
<?php
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Comments\OpenMetrics;
use Generator;
use OCP\IDBConnection;
use OCP\OpenMetrics\IMetricFamily;
use OCP\OpenMetrics\Metric;
use OCP\OpenMetrics\MetricType;
use Override;
class CommentsCountMetric implements IMetricFamily {
public function __construct(
private IDBConnection $connection,
) {
}
#[Override]
public function name(): string {
return 'comments';
}
#[Override]
public function type(): MetricType {
return MetricType::gauge;
}
#[Override]
public function unit(): string {
return 'comments';
}
#[Override]
public function help(): string {
return 'Number of comments';
}
#[Override]
public function metrics(): Generator {
$qb = $this->connection->getQueryBuilder();
$result = $qb->select($qb->func()->count())
->from('comments')
->where($qb->expr()->eq('verb', $qb->expr()->literal('comment')))
->executeQuery();
yield new Metric($result->fetchOne(), [], time());
}
}
@@ -180,14 +180,12 @@ describe('Inline unread comments action enabled tests', () => {
describe('Inline unread comments action execute tests', () => {
test('Action opens sidebar', async () => {
const openMock = vi.fn()
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
// @ts-expect-error Mocking for testing
Sidebar: {
_sidebar: () => ({
open: openMock,
setActiveTab: setActiveTabMock,
},
}),
},
}
@@ -211,22 +209,19 @@ describe('Inline unread comments action execute tests', () => {
})
expect(result).toBe(null)
expect(setActiveTabMock).toBeCalledWith('comments')
expect(openMock).toBeCalledWith('/foobar.txt')
expect(openMock).toBeCalledWith(file, 'comments')
})
test('Action handles sidebar open failure', async () => {
const openMock = vi.fn(() => {
throw new Error('Mock error')
})
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
// @ts-expect-error Mocking for testing
Sidebar: {
_sidebar: () => ({
open: openMock,
setActiveTab: setActiveTabMock,
},
}),
},
}
vi.spyOn(logger, 'error').mockImplementation(() => vi.fn())
@@ -251,8 +246,7 @@ describe('Inline unread comments action execute tests', () => {
})
expect(result).toBe(false)
expect(setActiveTabMock).toBeCalledWith('comments')
expect(openMock).toBeCalledWith('/foobar.txt')
expect(openMock).toBeCalledWith(file, 'comments')
expect(logger.error).toBeCalledTimes(1)
})
})
@@ -1,9 +1,10 @@
/**
/*!
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw'
import { FileAction } from '@nextcloud/files'
import { FileAction, getSidebar } from '@nextcloud/files'
import { n, t } from '@nextcloud/l10n'
import logger from '../logger.js'
@@ -34,8 +35,8 @@ export const action = new FileAction({
}
try {
window.OCA.Files.Sidebar.setActiveTab('comments')
await window.OCA.Files.Sidebar.open(nodes[0].path)
const sidebar = getSidebar()
sidebar.open(nodes[0], 'comments')
return null
} catch (error) {
logger.error('Error while opening sidebar', { error })
+16 -8
View File
@@ -1,8 +1,10 @@
/**
/*!
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { INode } from '@nextcloud/files'
import moment from '@nextcloud/moment'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue, { type ComponentPublicInstance } from 'vue'
@@ -19,7 +21,7 @@ let ActivityTabPluginInstance
*/
export function registerCommentsPlugins() {
window.OCA.Activity.registerSidebarAction({
mount: async (el, { fileInfo, reload }) => {
mount: async (el: HTMLElement, { node, reload }: { node: INode, reload: () => void }) => {
const pinia = createPinia()
if (!ActivityTabPluginView) {
@@ -32,10 +34,10 @@ export function registerCommentsPlugins() {
pinia,
propsData: {
reloadCallback: reload,
resourceId: fileInfo.id,
resourceId: node.fileid,
},
})
logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo })
logger.info('Comments plugin mounted in Activity sidebar action', { node })
},
unmount: () => {
// destroy previous instance if available
@@ -45,9 +47,15 @@ export function registerCommentsPlugins() {
},
})
window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => {
const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset })
logger.debug('Loaded comments', { fileInfo, comments })
window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }: { node: INode, limit?: number, offset?: number }) => {
const { data: comments } = await getComments(
{ resourceType: 'files', resourceId: node.fileid },
{
limit,
offset: offset ?? 0,
},
)
logger.debug('Loaded comments', { node, comments })
const { default: CommentView } = await import('./views/ActivityCommentEntry.vue')
// @ts-expect-error Types are broken for Vue2
const CommentsViewObject = Vue.extend(CommentView)
@@ -62,7 +70,7 @@ export function registerCommentsPlugins() {
el: element,
propsData: {
comment,
resourceId: fileInfo.id,
resourceId: node.fileid,
reloadCallback: reload,
},
})
-59
View File
@@ -1,59 +0,0 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
import { getCSPNonce } from '@nextcloud/auth'
import { loadState } from '@nextcloud/initial-state'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
// @ts-expect-error __webpack_nonce__ is injected by webpack
__webpack_nonce__ = getCSPNonce()
if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
// Do not mount own tab but mount into activity
window.addEventListener('DOMContentLoaded', function() {
registerCommentsPlugins()
})
} else {
// Init Comments tab component
let TabInstance = null
const commentTab = new OCA.Files.Sidebar.Tab({
id: 'comments',
name: t('comments', 'Comments'),
iconSvg: MessageReplyText,
async mount(el, fileInfo, context) {
if (TabInstance) {
TabInstance.$destroy()
}
TabInstance = new OCA.Comments.View('files', {
// Better integration with vue parent component
parent: context,
propsData: {
resourceId: fileInfo.id,
},
})
// Only mount after we have all the info we need
await TabInstance.update(fileInfo.id)
TabInstance.$mount(el)
},
update(fileInfo) {
TabInstance.update(fileInfo.id)
},
destroy() {
TabInstance.$destroy()
TabInstance = null
},
scrollBottomReached() {
TabInstance.onScrollBottomReached()
},
})
window.addEventListener('DOMContentLoaded', function() {
if (OCA.Files && OCA.Files.Sidebar) {
OCA.Files.Sidebar.registerTab(commentTab)
}
})
}
+57
View File
@@ -0,0 +1,57 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
import { getCSPNonce } from '@nextcloud/auth'
import { registerSidebarTab } from '@nextcloud/files'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import wrap from '@vue/web-component-wrapper'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue from 'vue'
import FilesSidebarTab from './views/FilesSidebarTab.vue'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
__webpack_nonce__ = getCSPNonce()
const tagName = 'comments_files-sidebar-tab'
if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
// Do not mount own tab but mount into activity
window.addEventListener('DOMContentLoaded', function() {
registerCommentsPlugins()
})
} else {
registerSidebarTab({
id: 'comments',
displayName: t('comments', 'Comments'),
iconSvgInline: MessageReplyText,
order: 50,
tagName,
enabled() {
if (!window.customElements.get(tagName)) {
setupSidebarTab()
}
return true
},
})
}
/**
* Setup the sidebar tab as a web component
*/
function setupSidebarTab() {
Vue.use(PiniaVuePlugin)
Vue.mixin({ pinia: createPinia() })
const webComponent = wrap(Vue, FilesSidebarTab)
// In Vue 2, wrap doesn't support disabling shadow. Disable with a hack
Object.defineProperty(webComponent.prototype, 'attachShadow', {
value() { return this },
})
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
get() { return this },
})
window.customElements.define(tagName, webComponent)
}
+4 -3
View File
@@ -1,8 +1,9 @@
import { getCurrentUser } from '@nextcloud/auth'
/**
/*!
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { getCurrentUser } from '@nextcloud/auth'
import axios from '@nextcloud/axios'
import { loadState } from '@nextcloud/initial-state'
import { generateOcsUrl } from '@nextcloud/router'
@@ -32,7 +33,7 @@ export default defineComponent({
},
methods: {
/**
* Autocomplete @mentions
* Autocomplete `@mentions`
*
* @param search the query
* @param callback the callback to process the results with
@@ -0,0 +1,40 @@
<!--
- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<script setup lang="ts">
import type { IFolder, INode, IView } from '@nextcloud/files'
import { computed } from 'vue'
import Comments from './Comments.vue'
const props = defineProps<{
node?: INode
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
folder?: IFolder
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
view?: IView
}>()
defineExpose({ setActive })
const resourceId = computed(() => props.node?.fileid)
/**
* Set this tab as active
*
* @param active - The active state
*/
function setActive(active: boolean) {
return active
}
</script>
<template>
<Comments
v-if="resourceId !== undefined"
:key="resourceId"
:resource-id="resourceId"
resource-type="files" />
</template>
+4
View File
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Mulai hari Anda dengan informasi\n\nDasbor Nextcloud adalah titik awal hari Anda, memberikan ikhtisar janji temu mendatang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan masih banyak lagi! Orang dapat menambahkan widget yang mereka sukai dan mengubah latar belakang sesuai keinginan mereka.",
"Weather" : "Cuaca",
"Status" : "Status",
"Good morning" : "Selamat pagi",
@@ -13,10 +14,13 @@ OC.L10N.register(
"Good evening, {name}" : "Selamat malam, {name}",
"Hello" : "Halo",
"Hello, {name}" : "Halo, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Selamat ulang tahun 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Selamat ulang tahun, {name} 🥳🤩🎂🎉",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
"Weather service" : "Layanan cuaca",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Demi privasi Anda, data cuaca diminta oleh server {productName} Anda atas nama Anda sehingga layanan cuaca tidak menerima informasi pribadi apa pun.",
"Weather data from Met.no" : "Data cuaca dari Met.no",
"geocoding with Nominatim" : "Secara khusus, dengan geocoding",
"elevation data from OpenTopoData" : "data ketinggian dari OpenTopoData",
+4
View File
@@ -1,6 +1,7 @@
{ "translations": {
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Mulai hari Anda dengan informasi\n\nDasbor Nextcloud adalah titik awal hari Anda, memberikan ikhtisar janji temu mendatang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan masih banyak lagi! Orang dapat menambahkan widget yang mereka sukai dan mengubah latar belakang sesuai keinginan mereka.",
"Weather" : "Cuaca",
"Status" : "Status",
"Good morning" : "Selamat pagi",
@@ -11,10 +12,13 @@
"Good evening, {name}" : "Selamat malam, {name}",
"Hello" : "Halo",
"Hello, {name}" : "Halo, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Selamat ulang tahun 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Selamat ulang tahun, {name} 🥳🤩🎂🎉",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
"Weather service" : "Layanan cuaca",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Demi privasi Anda, data cuaca diminta oleh server {productName} Anda atas nama Anda sehingga layanan cuaca tidak menerima informasi pribadi apa pun.",
"Weather data from Met.no" : "Data cuaca dari Met.no",
"geocoding with Nominatim" : "Secara khusus, dengan geocoding",
"elevation data from OpenTopoData" : "data ketinggian dari OpenTopoData",
+1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Для вашої конфіденційності дані погоди буде запитано вашим сервером {productName} від вашого імени, таким чином сервіс надання погоди не отримуватиме ваших приватних даних. ",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
+1
View File
@@ -18,6 +18,7 @@
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Для вашої конфіденційності дані погоди буде запитано вашим сервером {productName} від вашого імени, таким чином сервіс надання погоди не отримуватиме ваших приватних даних. ",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
@@ -18,6 +18,7 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\AppFramework\Services\IAppConfig;
use OCP\Config\IUserConfig;
use OCP\Dashboard\IAPIWidget;
use OCP\Dashboard\IAPIWidgetV2;
use OCP\Dashboard\IButtonWidget;
@@ -30,7 +31,6 @@ use OCP\Dashboard\Model\WidgetButton;
use OCP\Dashboard\Model\WidgetItem;
use OCP\Dashboard\Model\WidgetOptions;
use OCP\IConfig;
use OCP\IRequest;
/**
@@ -45,7 +45,7 @@ class DashboardApiController extends OCSController {
IRequest $request,
private IManager $dashboardManager,
private IAppConfig $appConfig,
private IConfig $config,
private IUserConfig $userConfig,
private ?string $userId,
private DashboardService $service,
) {
@@ -59,7 +59,7 @@ class DashboardApiController extends OCSController {
private function getShownWidgets(array $widgetIds): array {
if (empty($widgetIds)) {
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
$widgetIds = explode(',', $this->config->getUserValue($this->userId, 'dashboard', 'layout', $systemDefault));
$widgetIds = explode(',', $this->userConfig->getValueString($this->userId, 'dashboard', 'layout', $systemDefault));
}
return array_filter(
@@ -202,7 +202,7 @@ class DashboardApiController extends OCSController {
#[NoAdminRequired]
#[ApiRoute(verb: 'POST', url: '/api/v3/layout')]
public function updateLayout(array $layout): DataResponse {
$this->config->setUserValue($this->userId, 'dashboard', 'layout', implode(',', $layout));
$this->userConfig->setValueString($this->userId, 'dashboard', 'layout', implode(',', $layout));
return new DataResponse(['layout' => $layout]);
}
@@ -230,7 +230,7 @@ class DashboardApiController extends OCSController {
#[NoAdminRequired]
#[ApiRoute(verb: 'POST', url: '/api/v3/statuses')]
public function updateStatuses(array $statuses): DataResponse {
$this->config->setUserValue($this->userId, 'dashboard', 'statuses', implode(',', $statuses));
$this->userConfig->setValueString($this->userId, 'dashboard', 'statuses', implode(',', $statuses));
return new DataResponse(['statuses' => $statuses]);
}
}
@@ -17,10 +17,10 @@ use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\FeaturePolicy;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\Config\IUserConfig;
use OCP\Dashboard\IIconWidget;
use OCP\Dashboard\IManager;
use OCP\Dashboard\IWidget;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IRequest;
@@ -33,9 +33,9 @@ class DashboardController extends Controller {
string $appName,
IRequest $request,
private IInitialState $initialState,
private IEventDispatcher $eventDispatcher,
private IManager $dashboardManager,
private IConfig $config,
private IUserConfig $userConfig,
private IL10N $l10n,
private ?string $userId,
private DashboardService $service,
@@ -67,9 +67,9 @@ class DashboardController extends Controller {
$this->initialState->provideInitialState('statuses', $this->service->getStatuses());
$this->initialState->provideInitialState('layout', $this->service->getLayout());
$this->initialState->provideInitialState('appStoreEnabled', $this->config->getSystemValueBool('appstoreenabled', true));
$this->initialState->provideInitialState('firstRun', $this->config->getUserValue($this->userId, 'dashboard', 'firstRun', '1') === '1');
$this->initialState->provideInitialState('firstRun', $this->userConfig->getValueBool($this->userId, 'dashboard', 'firstRun', true));
$this->initialState->provideInitialState('birthdate', $this->service->getBirthdate());
$this->config->setUserValue($this->userId, 'dashboard', 'firstRun', '0');
$this->userConfig->setValueBool($this->userId, 'dashboard', 'firstRun', false);
$response = new TemplateResponse('dashboard', 'index', [
'id-app-content' => '#app-dashboard',
@@ -12,12 +12,12 @@ use JsonException;
use OCP\Accounts\IAccountManager;
use OCP\Accounts\PropertyDoesNotExistException;
use OCP\AppFramework\Services\IAppConfig;
use OCP\IConfig;
use OCP\Config\IUserConfig;
use OCP\IUserManager;
class DashboardService {
public function __construct(
private IConfig $config,
private IUserConfig $userConfig,
private IAppConfig $appConfig,
private ?string $userId,
private IUserManager $userManager,
@@ -31,21 +31,24 @@ class DashboardService {
*/
public function getLayout(): array {
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
return array_values(array_filter(explode(',', $this->config->getUserValue($this->userId, 'dashboard', 'layout', $systemDefault)), fn (string $value) => $value !== ''));
return array_values(array_filter(
explode(',', $this->userConfig->getValueString($this->userId, 'dashboard', 'layout', $systemDefault)),
fn (string $value) => $value !== '')
);
}
/**
* @return list<string>
*/
public function getStatuses() {
$configStatuses = $this->config->getUserValue($this->userId, 'dashboard', 'statuses', '');
public function getStatuses(): array {
$configStatuses = $this->userConfig->getValueString($this->userId, 'dashboard', 'statuses');
try {
// Parse the old format
/** @var array<string, bool> $statuses */
$statuses = json_decode($configStatuses, true, 512, JSON_THROW_ON_ERROR);
// We avoid getting an empty array as it will not produce an object in UI's JS
return array_keys(array_filter($statuses, static fn (bool $value) => $value));
} catch (JsonException $e) {
} catch (JsonException) {
return array_values(array_filter(explode(',', $configStatuses), fn (string $value) => $value !== ''));
}
}
@@ -13,7 +13,7 @@ use OC\Accounts\Account;
use OCA\Dashboard\Service\DashboardService;
use OCP\Accounts\IAccountManager;
use OCP\AppFramework\Services\IAppConfig;
use OCP\IConfig;
use OCP\Config\IUserConfig;
use OCP\IUser;
use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject;
@@ -21,7 +21,7 @@ use Test\TestCase;
class DashboardServiceTest extends TestCase {
private IConfig&MockObject $config;
private IUserConfig&MockObject $userConfig;
private IAppConfig&MockObject $appConfig;
private IUserManager&MockObject $userManager;
private IAccountManager&MockObject $accountManager;
@@ -30,13 +30,13 @@ class DashboardServiceTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->config = $this->createMock(IConfig::class);
$this->userConfig = $this->createMock(IUserConfig::class);
$this->appConfig = $this->createMock(IAppConfig::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->accountManager = $this->createMock(IAccountManager::class);
$this->service = new DashboardService(
$this->config,
$this->userConfig,
$this->appConfig,
'alice',
$this->userManager,
@@ -90,7 +90,7 @@ class DashboardServiceTest extends TestCase {
public function testGetBirthdateNoUserId(): void {
$service = new DashboardService(
$this->config,
$this->userConfig,
$this->appConfig,
null,
$this->userManager,
+5 -3
View File
@@ -24,6 +24,7 @@ use OCA\DAV\Connector\Sabre\Principal;
use OCP\Accounts\IAccountManager;
use OCP\App\IAppManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IAppConfig;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IDBConnection;
@@ -56,7 +57,7 @@ $principalBackend = new Principal(
Server::get(ProxyMapper::class),
Server::get(KnownUserService::class),
Server::get(IConfig::class),
\OC::$server->getL10NFactory(),
Server::get(IL10NFactory::class),
'principals/'
);
$db = Server::get(IDBConnection::class);
@@ -84,7 +85,7 @@ $calDavBackend = new CalDavBackend(
);
$debugging = Server::get(IConfig::class)->getSystemValue('debug', false);
$sendInvitations = Server::get(IConfig::class)->getAppValue('dav', 'sendInvitations', 'yes') === 'yes';
$sendInvitations = Server::get(IAppConfig::class)->getValueBool('dav', 'sendInvitations', true);
// Root nodes
$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
@@ -102,6 +103,7 @@ $nodes = [
$server = new \Sabre\DAV\Server($nodes);
$server::$exposeVersion = false;
$server->httpRequest->setUrl(Server::get(IRequest::class)->getRequestUri());
/** @var string $baseuri defined in remote.php */
$server->setBaseUri($baseuri);
// Add plugins
@@ -126,4 +128,4 @@ $server->addPlugin(Server::get(RateLimitingPlugin::class));
$server->addPlugin(Server::get(CalDavValidatePlugin::class));
// And off we go!
$server->exec();
$server->start();
+5 -3
View File
@@ -30,6 +30,7 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
use Psr\Log\LoggerInterface;
@@ -53,7 +54,7 @@ $principalBackend = new Principal(
Server::get(ProxyMapper::class),
Server::get(KnownUserService::class),
Server::get(IConfig::class),
\OC::$server->getL10NFactory(),
Server::get(IL10nFactory::class),
'principals/'
);
$db = Server::get(IDBConnection::class);
@@ -85,9 +86,10 @@ $nodes = [
$server = new \Sabre\DAV\Server($nodes);
$server::$exposeVersion = false;
$server->httpRequest->setUrl(Server::get(IRequest::class)->getRequestUri());
/** @var string $baseuri defined in remote.php */
$server->setBaseUri($baseuri);
// Add plugins
$server->addPlugin(new MaintenancePlugin(Server::get(IConfig::class), \OC::$server->getL10N('dav')));
$server->addPlugin(new MaintenancePlugin(Server::get(IConfig::class), \OCP\Server::get(IL10nFactory::class)->get('dav')));
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend));
$server->addPlugin(new Plugin());
@@ -104,4 +106,4 @@ $server->addPlugin(Server::get(CardDavRateLimitingPlugin::class));
$server->addPlugin(Server::get(CardDavValidatePlugin::class));
// And off we go!
$server->exec();
$server->start();
+10 -5
View File
@@ -14,6 +14,7 @@ use OCA\DAV\Files\Sharing\FilesDropPlugin;
use OCA\DAV\Files\Sharing\PublicLinkCheckPlugin;
use OCA\DAV\Storage\PublicOwnerWrapper;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCP\App\IAppManager;
use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\Constants;
use OCP\EventDispatcher\IEventDispatcher;
@@ -26,16 +27,19 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
use Psr\Log\LoggerInterface;
// load needed apps
$RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging'];
Server::get(IAppManager::class)->loadApps($RUNTIME_APPTYPES);
OC_App::loadApps($RUNTIME_APPTYPES);
OC_Util::obEnd();
// Turn off output buffering to prevent memory problems
while (ob_get_level()) {
ob_end_clean();
}
Server::get(ISession::class)->close();
// Backends
@@ -60,7 +64,7 @@ $serverFactory = new ServerFactory(
Server::get(IRequest::class),
Server::get(IPreview::class),
$eventDispatcher,
\OC::$server->getL10N('dav')
Server::get(IL10nFactory::class)->get('dav')
);
$requestUri = Server::get(IRequest::class)->getRequestUri();
@@ -68,6 +72,7 @@ $requestUri = Server::get(IRequest::class)->getRequestUri();
$linkCheckPlugin = new PublicLinkCheckPlugin();
$filesDropPlugin = new FilesDropPlugin();
/** @var string $baseuri defined in public.php */
$server = $serverFactory->createServer(
true,
$baseuri,
@@ -125,4 +130,4 @@ $event = new BeforeSabrePubliclyLoadedEvent($server);
$eventDispatcher->dispatchTyped($event);
// And off we go!
$server->exec();
$server->start();
+7 -3
View File
@@ -19,6 +19,7 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\SabrePluginEvent;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
@@ -31,7 +32,9 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$dispatcher = Server::get(IEventDispatcher::class);
@@ -45,7 +48,7 @@ $serverFactory = new ServerFactory(
Server::get(IRequest::class),
Server::get(IPreview::class),
$dispatcher,
\OC::$server->getL10N('dav')
Server::get(IL10nFactory::class)->get('dav')
);
// Backends
@@ -68,6 +71,7 @@ $authPlugin->addBackend($bearerAuthPlugin);
$requestUri = Server::get(IRequest::class)->getRequestUri();
/** @var string $baseuri defined in remote.php */
$server = $serverFactory->createServer(false, $baseuri, $requestUri, $authPlugin, function () {
// use the view for the logged in user
return Filesystem::getView();
@@ -80,4 +84,4 @@ $event = new SabrePluginAddEvent($server);
$dispatcher->dispatchTyped($event);
// And off we go!
$server->exec();
$server->start();
+5 -2
View File
@@ -21,12 +21,15 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$requestUri = Server::get(IRequest::class)->getRequestUri();
/** @var ServerFactory $serverFactory */
$serverFactory = Server::get(ServerFactory::class);
/** @var string $baseuri defined in remote.php */
$server = $serverFactory->createServer(
$baseuri,
$requestUri,
@@ -37,4 +40,4 @@ $server = $serverFactory->createServer(
Server::get(IRequest::class)
);
$server->exec();
$server->start();
+7 -2
View File
@@ -17,6 +17,7 @@ use OCA\DAV\Storage\PublicShareWrapper;
use OCA\DAV\Upload\ChunkingPlugin;
use OCA\DAV\Upload\ChunkingV2Plugin;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCP\App\IAppManager;
use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\Constants;
use OCP\EventDispatcher\IEventDispatcher;
@@ -41,8 +42,12 @@ use Sabre\DAV\Exception\NotFound;
// load needed apps
$RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging'];
OC_App::loadApps($RUNTIME_APPTYPES);
OC_Util::obEnd();
Server::get(IAppManager::class)->loadApps($RUNTIME_APPTYPES);
// Turn off output buffering to prevent memory problems
while (ob_get_level()) {
ob_end_clean();
}
$session = Server::get(ISession::class);
$request = Server::get(IRequest::class);
+4 -1
View File
@@ -15,8 +15,11 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$request = \OCP\Server::get(IRequest::class);
/** @var string $baseuri defined in remote.php */
$server = new Server($request, $baseuri);
$server->exec();
@@ -254,6 +254,7 @@ return array(
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => $baseDir . '/../lib/Connector/Sabre/SharesPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\TagList' => $baseDir . '/../lib/Connector/Sabre/TagList.php',
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => $baseDir . '/../lib/Connector/Sabre/TagsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => $baseDir . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => $baseDir . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
'OCA\\DAV\\Controller\\BirthdayCalendarController' => $baseDir . '/../lib/Controller/BirthdayCalendarController.php',
'OCA\\DAV\\Controller\\DirectController' => $baseDir . '/../lib/Controller/DirectController.php',
@@ -269,6 +269,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/SharesPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\TagList' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagList.php',
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
'OCA\\DAV\\Controller\\BirthdayCalendarController' => __DIR__ . '/..' . '/../lib/Controller/BirthdayCalendarController.php',
'OCA\\DAV\\Controller\\DirectController' => __DIR__ . '/..' . '/../lib/Controller/DirectController.php',
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي. تمّ الإلغاء من قِبَل الخطّاف hook.",
"Could not rename part file to final file" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي",
"Failed to check file size: %1$s" : "فشل في تحديد حجم الملف: %1$s",
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Encryption not ready: %1$s" : "التشفير غير جاهز: %1$s",
"Failed to open file: %1$s" : "تعذّر فتح الملف: %1$s",
"Failed to unlink: %1$s" : "تعذّر فك الارتباط: %1$s",
@@ -319,6 +317,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["في %n أسبوع في %1$s ثم في %2$s و %3$s","في أسبوع واحد في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسابيع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["في %n شهر في %1$s ثم في %2$s و %3$s","في شهر واحد في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهور في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["في%n سنة في %1$s ثم في %2$s و %3$s","في سنة واحدة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنوات في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي. تمّ الإلغاء من قِبَل الخطّاف hook.",
"Could not rename part file to final file" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي",
"Failed to check file size: %1$s" : "فشل في تحديد حجم الملف: %1$s",
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Encryption not ready: %1$s" : "التشفير غير جاهز: %1$s",
"Failed to open file: %1$s" : "تعذّر فتح الملف: %1$s",
"Failed to unlink: %1$s" : "تعذّر فك الارتباط: %1$s",
@@ -317,6 +315,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["في %n أسبوع في %1$s ثم في %2$s و %3$s","في أسبوع واحد في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسابيع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["في %n شهر في %1$s ثم في %2$s و %3$s","في شهر واحد في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهور في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["في%n سنة في %1$s ثم في %2$s و %3$s","في سنة واحدة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنوات في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final perquè el ganxo ho ha cancel·lat",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
@@ -312,6 +310,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["D'aquí a una setmana el %1$s i després el %2$s i el %3$s","Daquí a %n setmanes el %1$s i després el %2$s i el %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["D'aquí a un mes el %1$s i després el %2$s i el %3$s","Daquí a %n mesos el %1$s i després el %2$s i el %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["D'aquí a un any el %1$s i després el %2$s i el %3$s","Daquí a %n anys el %1$s i després el %2$s i el %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final perquè el ganxo ho ha cancel·lat",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
@@ -310,6 +308,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["D'aquí a una setmana el %1$s i després el %2$s i el %3$s","Daquí a %n setmanes el %1$s i després el %2$s i el %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["D'aquí a un mes el %1$s i després el %2$s i el %3$s","Daquí a %n mesos el %1$s i després el %2$s i el %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["D'aquí a un any el %1$s i després el %2$s i el %3$s","Daquí a %n anys el %1$s i després el %2$s i el %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týden %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s","Za %n týdnů %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za měsíc %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s","Za %n měsíců %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s","Za %n let %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týden %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s","Za %n týdnů %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za měsíc %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s","Za %n měsíců %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s","Za %n let %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Kunne ikke omdøbe delfilen til den endelige fil, annulleret af hook",
"Could not rename part file to final file" : "Delfilen kunne ikke omdøbes til den endelige fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åbne fil: %1$s",
"Failed to unlink: %1$s" : "Tilknytningen kunne ikke fjernes: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Kunne ikke omdøbe delfilen til den endelige fil, annulleret af hook",
"Could not rename part file to final file" : "Delfilen kunne ikke omdøbes til den endelige fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åbne fil: %1$s",
"Failed to unlink: %1$s" : "Tilknytningen kunne ikke fjernes: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen, wurde durch einen Hook abgebrochen",
"Could not rename part file to final file" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen, wurde durch einen Hook abgebrochen",
"Could not rename part file to final file" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Konnte Teildatei nicht in endgültige Datei umbenennen, wurde durch Hook abgebrochen.",
"Could not rename part file to final file" : "Konnte Teildatei nicht in endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Konnte Teildatei nicht in endgültige Datei umbenennen, wurde durch Hook abgebrochen.",
"Could not rename part file to final file" : "Konnte Teildatei nicht in endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο, ακυρώθηκε από hook",
"Could not rename part file to final file" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο",
"Failed to check file size: %1$s" : "Αποτυχία ελέγχου μεγέθους αρχείου: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"Encryption not ready: %1$s" : "Η κρυπτογράφηση δεν είναι έτοιμη: %1$s",
"Failed to open file: %1$s" : "Αποτυχία ανοίγματος αρχείου: %1$s",
"Failed to unlink: %1$s" : "Αποτυχία unlink: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Σε μία εβδομάδα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n εβδομάδες στις %极$s και έπειτα στις %2$s και %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Σε έναν μήνα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n μήνες στις %1$s και έπειτα στις %2$s και %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Σε έναν χρόνο στις %1$s και έπειτα στις %2$s και %3$s","Σε %n χρόνια στις %1$s και έπειτα στις %2$s και %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο, ακυρώθηκε από hook",
"Could not rename part file to final file" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο",
"Failed to check file size: %1$s" : "Αποτυχία ελέγχου μεγέθους αρχείου: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"Encryption not ready: %1$s" : "Η κρυπτογράφηση δεν είναι έτοιμη: %1$s",
"Failed to open file: %1$s" : "Αποτυχία ανοίγματος αρχείου: %1$s",
"Failed to unlink: %1$s" : "Αποτυχία unlink: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Σε μία εβδομάδα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n εβδομάδες στις %极$s και έπειτα στις %2$s και %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Σε έναν μήνα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n μήνες στις %1$s και έπειτα στις %2$s και %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Σε έναν χρόνο στις %1$s και έπειτα στις %2$s και %3$s","Σε %n χρόνια στις %1$s και έπειτα στις %2$s και %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, cancelled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Could not open file: %1$s (%2$d), file does seem to exist",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Could not open file: %1$s (%2$d), file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In a week on %1$s then on %2$s and %3$s","In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In a month on %1$s then on %2$s and %3$s","In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In a year on %1$s then on %2$s and %3$s","In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, cancelled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Could not open file: %1$s (%2$d), file does seem to exist",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Could not open file: %1$s (%2$d), file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In a week on %1$s then on %2$s and %3$s","In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In a month on %1$s then on %2$s and %3$s","In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In a year on %1$s then on %2$s and %3$s","In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
+34 -2
View File
@@ -73,7 +73,19 @@ OC.L10N.register(
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"In the past on %1$s for the entire day" : "Minevikus kogu päeva: %1$s",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n minuti pärast %1$s kogu päeva kestel","%n minuti pärast %1$s kogu päeva kestel"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n tunni pärast %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n tunni päeva %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n nädala pärast %1$s kogu päeva kestel","%n nädala pärast %1$s kogu päeva kestel"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n kuu pärast %1$s kogu päeva kestel","%n kuu pärast %1$s kogu päeva kestel"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n aasta pärast %1$s kogu päeva kestel","%n aasta pärast %1$s kogu päeva kestel"],
"In the past on %1$s between %2$s - %3$s" : "Minevikus: %1$s ajavahemikus %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_" : ["%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s","%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s","%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s","%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s","%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s","%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s","%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s"],
"Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit",
"Every Day for the entire day" : "Iga päev kogu päeva jooksul",
"Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s",
@@ -111,8 +123,26 @@ OC.L10N.register(
"On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s",
"In the past on %1$s" : "Minevikus %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n minuti pärast %1$s","%n minuti pärast %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n tunni pärast %1$s","%n tunni pärast %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n päeva pärast %1$s","%n päeva pärast %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n nädala pärast %1$s","%n nädala pärast %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n kuu pärast %1$s","%n kuu pärast %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n aasta pärast %1$s","%n aasta pärast %1$s"],
"In the past on %1$s then on %2$s" : "Minevikus: %1$s ja siis %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n minuti pärast %1$s, seejärel %2$s","%n minuti pärast %1$s, seejärel %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n tunni pärast %1$s, seejärel %2$s","%n tunni pärast %1$s, seejärel %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n päeva pärast %1$s, seejärel %2$s","%n päeva pärast %1$s, seejärel %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n nädala pärast %1$s, seejärel %2$s","%n nädala pärast %1$s, seejärel %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n kuu pärast %1$s, seejärel %2$s","%n kuu pärast %1$s, seejärel %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n aasta pärast %1$s, seejärel %2$s","%n aasta pärast %1$s, seejärel %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Minevikus: %1$s ja siis %2$s ning %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_" : ["%n minuti pärast %1$s, seejärel %2$s ja %3$s","%n minuti pärast %1$s, seejärel %2$s ja %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_" : ["%n tunni pärast %1$s, seejärel %2$s ja %3$s","%n tunni pärast %1$s, seejärel %2$s ja %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_" : ["%n päeva pärast %1$s, seejärel %2$s ja %3$s","%n päeva pärast %1$s, seejärel %2$s ja %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_" : ["%n nädala pärast %1$s, seejärel %2$s ja %3$s","%n nädala pärast %1$s, seejärel %2$s ja %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_" : ["%n kuu pärast %1$s, seejärel %2$s ja %3$s","%n kuu pärast %1$s, seejärel %2$s ja %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_" : ["%n aasta pärast %1$s, seejärel %2$s ja %3$s","%n aasta pärast %1$s, seejärel %2$s ja %3$s"],
"Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
@@ -204,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud, selle katkestas programmi haak",
"Could not rename part file to final file" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud",
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Could not open file: %1$s (%2$d), file does seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, aga tundub, et ta on olemas",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
@@ -337,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Nädala möödudes: %1$s ja siis %2$s ning %3$s","%n nädala möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Kuu möödudes: %1$s ja siis %2$s ning %3$s","%n kuu möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Aasta möödudes: %1$s ja siis %2$s ning %3$s","%n aasta möödudes: %1$s ja siis %2$s ning %3$s"],
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Time zone:" : "Ajavöönd:"
+34 -2
View File
@@ -71,7 +71,19 @@
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"In the past on %1$s for the entire day" : "Minevikus kogu päeva: %1$s",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n minuti pärast %1$s kogu päeva kestel","%n minuti pärast %1$s kogu päeva kestel"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n tunni pärast %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n tunni päeva %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n nädala pärast %1$s kogu päeva kestel","%n nädala pärast %1$s kogu päeva kestel"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n kuu pärast %1$s kogu päeva kestel","%n kuu pärast %1$s kogu päeva kestel"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n aasta pärast %1$s kogu päeva kestel","%n aasta pärast %1$s kogu päeva kestel"],
"In the past on %1$s between %2$s - %3$s" : "Minevikus: %1$s ajavahemikus %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_" : ["%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s","%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s","%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s","%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s","%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s","%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s","%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s"],
"Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit",
"Every Day for the entire day" : "Iga päev kogu päeva jooksul",
"Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s",
@@ -109,8 +121,26 @@
"On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s",
"In the past on %1$s" : "Minevikus %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n minuti pärast %1$s","%n minuti pärast %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n tunni pärast %1$s","%n tunni pärast %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n päeva pärast %1$s","%n päeva pärast %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n nädala pärast %1$s","%n nädala pärast %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n kuu pärast %1$s","%n kuu pärast %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n aasta pärast %1$s","%n aasta pärast %1$s"],
"In the past on %1$s then on %2$s" : "Minevikus: %1$s ja siis %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n minuti pärast %1$s, seejärel %2$s","%n minuti pärast %1$s, seejärel %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n tunni pärast %1$s, seejärel %2$s","%n tunni pärast %1$s, seejärel %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n päeva pärast %1$s, seejärel %2$s","%n päeva pärast %1$s, seejärel %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n nädala pärast %1$s, seejärel %2$s","%n nädala pärast %1$s, seejärel %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n kuu pärast %1$s, seejärel %2$s","%n kuu pärast %1$s, seejärel %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n aasta pärast %1$s, seejärel %2$s","%n aasta pärast %1$s, seejärel %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Minevikus: %1$s ja siis %2$s ning %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_" : ["%n minuti pärast %1$s, seejärel %2$s ja %3$s","%n minuti pärast %1$s, seejärel %2$s ja %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_" : ["%n tunni pärast %1$s, seejärel %2$s ja %3$s","%n tunni pärast %1$s, seejärel %2$s ja %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_" : ["%n päeva pärast %1$s, seejärel %2$s ja %3$s","%n päeva pärast %1$s, seejärel %2$s ja %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_" : ["%n nädala pärast %1$s, seejärel %2$s ja %3$s","%n nädala pärast %1$s, seejärel %2$s ja %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_" : ["%n kuu pärast %1$s, seejärel %2$s ja %3$s","%n kuu pärast %1$s, seejärel %2$s ja %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_" : ["%n aasta pärast %1$s, seejärel %2$s ja %3$s","%n aasta pärast %1$s, seejärel %2$s ja %3$s"],
"Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
@@ -202,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud, selle katkestas programmi haak",
"Could not rename part file to final file" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud",
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Could not open file: %1$s (%2$d), file does seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, aga tundub, et ta on olemas",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
@@ -335,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Nädala möödudes: %1$s ja siis %2$s ning %3$s","%n nädala möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Kuu möödudes: %1$s ja siis %2$s ning %3$s","%n kuu möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Aasta möödudes: %1$s ja siis %2$s ning %3$s","%n aasta möödudes: %1$s ja siis %2$s ning %3$s"],
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Time zone:" : "Ajavöönd:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Aste batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n astetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Hilabete batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n hilabetetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Urte batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n urtetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"No results." : "Ez dago emaitzarik.",
"Start typing." : "Hasi idazten.",
"Time zone:" : "Ordu-zona:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Aste batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n astetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Hilabete batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n hilabetetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Urte batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n urtetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"No results." : "Ez dago emaitzarik.",
"Start typing." : "Hasi idazten.",
"Time zone:" : "Ordu-zona:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود نداشت، توسط هوک لغو شد",
"Could not rename part file to final file" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود ندارد",
"Failed to check file size: %1$s" : "بررسی حجم فایل با شکست مواجه شد: %1$s",
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"Encryption not ready: %1$s" : "رمزگذاری آماده نیست: %1$s",
"Failed to open file: %1$s" : "باز کردن فایل با شکست مواجه شد: %1$s",
"Failed to unlink: %1$s" : "حذف پیوند با شکست مواجه شد: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["در یک هفته در %1$s سپس در %2$s و %3$s","در %n هفته در %1$s سپس در %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["در یک ماه در %1$s سپس در %2$s و %3$s","در %n ماه در %1$s سپس در %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["در یک سال در %1$s سپس در %2$s و %3$s","در %n سال در %1$s سپس در %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"No results." : "نتیجه‌ای یافت نشد.",
"Start typing." : "شروع به تایپ کنید.",
"Time zone:" : "منطقه زمانی:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود نداشت، توسط هوک لغو شد",
"Could not rename part file to final file" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود ندارد",
"Failed to check file size: %1$s" : "بررسی حجم فایل با شکست مواجه شد: %1$s",
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"Encryption not ready: %1$s" : "رمزگذاری آماده نیست: %1$s",
"Failed to open file: %1$s" : "باز کردن فایل با شکست مواجه شد: %1$s",
"Failed to unlink: %1$s" : "حذف پیوند با شکست مواجه شد: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["در یک هفته در %1$s سپس در %2$s و %3$s","در %n هفته در %1$s سپس در %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["در یک ماه در %1$s سپس در %2$s و %3$s","در %n ماه در %1$s سپس در %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["در یک سال در %1$s سپس در %2$s و %3$s","در %n سال در %1$s سپس در %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"No results." : "نتیجه‌ای یافت نشد.",
"Start typing." : "شروع به تایپ کنید.",
"Time zone:" : "منطقه زمانی:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Impossible de renommer le fichier partiel en fichier final, annulé par le hook",
"Could not rename part file to final file" : "Impossible de renommer le fichier partiel en fichier définitif",
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"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",
@@ -331,6 +329,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["La semaine prochaine le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dans un mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dans un an sur %1$spuis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"No results." : "Pas de résultat.",
"Start typing." : "Commencez à écrire.",
"Time zone:" : "Fuseau horaire :"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "Impossible de renommer le fichier partiel en fichier final, annulé par le hook",
"Could not rename part file to final file" : "Impossible de renommer le fichier partiel en fichier définitif",
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"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",
@@ -329,6 +327,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["La semaine prochaine le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dans un mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dans un an sur %1$spuis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"No results." : "Pas de résultat.",
"Start typing." : "Commencez à écrire.",
"Time zone:" : "Fuseau horaire :"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Níorbh fhéidir páirtchomhad a athainmniú go comhad deiridh, curtha ar ceal le hook",
"Could not rename part file to final file" : "Níorbh fhéidir páirtchomhad a athainmniú go dtí an comhad deiridh",
"Failed to check file size: %1$s" : "Níorbh fhéidir méid an chomhaid a sheiceáil: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil nach bhfuil an comhad ann.",
"Encryption not ready: %1$s" : "Níl an criptiúchán réidh: %1$s",
"Failed to open file: %1$s" : "Níorbh fhéidir an comhad a oscailt: %1$s",
"Failed to unlink: %1$s" : "Theip ar dhínascadh: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I gceann seachtaine ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I gceann míosa ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I mbliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"No results." : "Gan torthaí.",
"Start typing." : "Tosaigh ag clóscríobh.",
"Time zone:" : "Crios ama:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Níorbh fhéidir páirtchomhad a athainmniú go comhad deiridh, curtha ar ceal le hook",
"Could not rename part file to final file" : "Níorbh fhéidir páirtchomhad a athainmniú go dtí an comhad deiridh",
"Failed to check file size: %1$s" : "Níorbh fhéidir méid an chomhaid a sheiceáil: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil nach bhfuil an comhad ann.",
"Encryption not ready: %1$s" : "Níl an criptiúchán réidh: %1$s",
"Failed to open file: %1$s" : "Níorbh fhéidir an comhad a oscailt: %1$s",
"Failed to unlink: %1$s" : "Theip ar dhínascadh: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I gceann seachtaine ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I gceann míosa ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I mbliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"No results." : "Gan torthaí.",
"Start typing." : "Tosaigh ag clóscríobh.",
"Time zone:" : "Crios ama:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final, foi cancelado polo sistema",
"Could not rename part file to final file" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final",
"Failed to check file size: %1$s" : "Produciuse un erro ao comprobar o tamaño do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro existe",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro non existe",
"Encryption not ready: %1$s" : "A cifraxe non está preparada: %1$s",
"Failed to open file: %1$s" : "Produciuse un erro ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Produciuse un erro ao desligar: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dentro dunha semana o %1$s e após o %2$s e o %3$s","Dentro de %n semanas o %1$s e após o %2$s e o %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dentro dun mes o %1$s e após o %2$s e o %3$s","Dentro de %n meses o %1$s e após o %2$s e o %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dentro dun ano o %1$s e após o %2$s e o %3$s","Dentro de %n anos o %1$s e após o %2$s e o %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"No results." : "Sen resultados",
"Start typing." : "Comece a escribir.",
"Time zone:" : "Fuso horario:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final, foi cancelado polo sistema",
"Could not rename part file to final file" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final",
"Failed to check file size: %1$s" : "Produciuse un erro ao comprobar o tamaño do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro existe",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro non existe",
"Encryption not ready: %1$s" : "A cifraxe non está preparada: %1$s",
"Failed to open file: %1$s" : "Produciuse un erro ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Produciuse un erro ao desligar: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dentro dunha semana o %1$s e após o %2$s e o %3$s","Dentro de %n semanas o %1$s e após o %2$s e o %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dentro dun mes o %1$s e após o %2$s e o %3$s","Dentro de %n meses o %1$s e após o %2$s e o %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dentro dun ano o %1$s e após o %2$s e o %3$s","Dentro de %n anos o %1$s e após o %2$s e o %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"No results." : "Sen resultados",
"Start typing." : "Comece a escribir.",
"Time zone:" : "Fuso horario:"
+312
View File
@@ -0,0 +1,312 @@
OC.L10N.register(
"dav",
{
"Calendar" : "Kalender",
"Tasks" : "Tugas",
"Personal" : "Pribadi",
"{actor} created calendar {calendar}" : "{actor} membuat kalender {calendar}",
"You created calendar {calendar}" : "Anda membuat kalender {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} menghapus kalender {calendar}",
"You deleted calendar {calendar}" : "Anda menghapus kalender {calendar}",
"{actor} updated calendar {calendar}" : "{actor} memperbarui kalender {calendar}",
"You updated calendar {calendar}" : "Anda memperbarui kalender {calendar}",
"{actor} restored calendar {calendar}" : "{actor} memulihkan kalender {calendar}",
"You restored calendar {calendar}" : "Anda memulihkan kalender {calendar}",
"You shared calendar {calendar} as public link" : "Anda membagikan kalender {calendar} sebagai tautan publik",
"You removed public link for calendar {calendar}" : "Anda menghapus tautan publik untuk kalender {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} membagikan kalender {calendar} kepada Anda",
"You shared calendar {calendar} with {user}" : "Anda membagikan kalender {calendar} dengan {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} membagikan kalender {calendar} dengan {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} membatalkan berbagi kalender {calendar} dari Anda",
"You unshared calendar {calendar} from {user}" : "Anda membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} membatalkan berbagi kalender {calendar} dari diri mereka sendiri",
"You shared calendar {calendar} with group {group}" : "Anda membagikan kalender {calendar} dengan grup {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} membagikan kalender {calendar} dengan grup {group}",
"You unshared calendar {calendar} from group {group}" : "Anda membatalkan berbagi kalender {calendar} dari grup {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} membatalkan berbagi kalender {calendar} dari grup {group}",
"Untitled event" : "Acara tanpa judul",
"{actor} created event {event} in calendar {calendar}" : "{actor} membuat acara {event} di kalender {calendar}",
"You created event {event} in calendar {calendar}" : "Anda membuat acara {event} di kalender {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} menghapus acara {event} dari kalender {calendar}",
"You deleted event {event} from calendar {calendar}" : "Anda menghapus acara {event} dari kalender {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} memperbarui acara {event} di kalender {calendar}",
"You updated event {event} in calendar {calendar}" : "Anda memperbarui acara {event} di kalender {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Anda memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} memulihkan acara {event} dari kalender {calendar}",
"You restored event {event} of calendar {calendar}" : "Anda memulihkan acara {event} dari kalender {calendar}",
"Busy" : "Sibuk",
"{actor} created to-do {todo} in list {calendar}" : "{actor} membuat tugas {todo} di daftar {calendar}",
"You created to-do {todo} in list {calendar}" : "Anda membuat tugas {todo} di daftar {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} menghapus tugas {todo} dari daftar {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Anda menghapus tugas {todo} dari daftar {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} memperbarui tugas {todo} di daftar {calendar}",
"You updated to-do {todo} in list {calendar}" : "Anda memperbarui tugas {todo} di daftar {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} menyelesaikan tugas {todo} di daftar {calendar}",
"You solved to-do {todo} in list {calendar}" : "Anda menyelesaikan tugas {todo} di daftar {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} membuka kembali tugas {todo} di daftar {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Anda membuka kembali tugas {todo} di daftar {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Anda memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"Calendar, contacts and tasks" : "Kalender, kontak, dan tugas",
"A <strong>calendar</strong> was modified" : "<strong>Kalender</strong> telah diubah",
"A calendar <strong>event</strong> was modified" : "Sebuah <strong>acara</strong> kalender telah diubah",
"A calendar <strong>to-do</strong> was modified" : "Sebuah <strong>tugas</strong> kalender telah diubah",
"Contact birthdays" : "Ulang tahun kontak",
"Death of %s" : "Wafatnya %s",
"Untitled calendar" : "Kalender tanpa judul",
"Calendar:" : "Kalender:",
"Date:" : "Tanggal:",
"Where:" : "Tempat:",
"Description:" : "Deskripsi:",
"_%n hour_::_%n hours_" : ["%n jam"],
"_%n minute_::_%n minutes_" : ["%n menit"],
"%s (in %s)" : "%s (dalam %s)",
"%s (%s ago)" : "%s (%s yang lalu)",
"Calendar: %s" : "Kalender: %s",
"Date: %s" : "Tanggal: %s",
"Description: %s" : "Deskripsi: %s",
"Where: %s" : "Di mana: %s",
"%1$s via %2$s" : "%1$s melalui %2$s",
"In the past on %1$s for the entire day" : "Di masa lalu pada %1$s sepanjang hari",
"In the past on %1$s between %2$s - %3$s" : "Di masa lalu pada %1$s antara %2$s - %3$s",
"Could not generate when statement" : "Tidak dapat membuat pernyataan waktu",
"Every Day for the entire day" : "Setiap hari sepanjang hari",
"Every Day for the entire day until %1$s" : "Setiap hari sepanjang hari hingga %1$s",
"Every Day between %1$s - %2$s" : "Setiap hari antara %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Setiap hari antara %1$s - %2$s hingga %3$s",
"Every %1$d Days for the entire day" : "Setiap %1$d hari sepanjang hari",
"Every %1$d Days for the entire day until %2$s" : "Setiap %1$d hari sepanjang hari hingga %2$s",
"Every %1$d Days between %2$s - %3$s" : "Setiap %1$d hari antara %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Setiap %1$d hari antara %2$s - %3$s hingga %4$s",
"Could not generate event recurrence statement" : "Tidak dapat membuat pernyataan pengulangan acara",
"Every Week on %1$s for the entire day" : "Setiap minggu pada %1$s sepanjang hari",
"Every Week on %1$s for the entire day until %2$s" : "Setiap minggu pada %1$s sepanjang hari hingga %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Setiap minggu pada %1$s antara %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Setiap minggu pada %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Setiap %1$d minggu pada %2$s sepanjang hari",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Setiap %1$d minggu pada %2$s sepanjang hari hingga %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s hingga %5$s",
"Every Month on the %1$s for the entire day" : "Setiap bulan pada tanggal %1$s sepanjang hari",
"Every Month on the %1$s for the entire day until %2$s" : "Setiap bulan pada tanggal %1$s sepanjang hari hingga %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari hingga %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari hingga %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari hingga %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s hingga %6$s",
"On specific dates for the entire day until %1$s" : "Pada tanggal tertentu sepanjang hari hingga %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Pada tanggal tertentu antara %1$s - %2$s hingga %3$s",
"In the past on %1$s" : "Di masa lalu pada %1$s",
"In the past on %1$s then on %2$s" : "Di masa lalu pada %1$s lalu pada %2$s",
"In the past on %1$s then on %2$s and %3$s" : "Di masa lalu pada %1$s lalu pada %2$s dan %3$s",
"Could not generate next recurrence statement" : "Tidak dapat membuat pernyataan pengulangan berikutnya",
"Cancelled: %1$s" : "Dibatalkan: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" telah dibatalkan",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "%1$s telah menerima undangan Anda",
"%1$s has tentatively accepted your invitation" : "%1$s telah menerima undangan Anda secara sementara",
"%1$s has declined your invitation" : "%1$s telah menolak undangan Anda",
"%1$s has responded to your invitation" : "%1$s telah merespons undangan Anda",
"Invitation updated: %1$s" : "Undangan diperbarui: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s memperbarui acara \"%2$s\"",
"Invitation: %1$s" : "Undangan: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s ingin mengundang Anda ke \"%2$s\"",
"Organizer:" : "Penyelenggara:",
"Attendees:" : "Peserta:",
"Title:" : "Judul:",
"When:" : "Kapan:",
"Location:" : "Lokasi:",
"Link:" : "Tautan:",
"Occurring:" : "Berlangsung:",
"Accept" : "Terima",
"Decline" : "Tolak",
"More options …" : "Opsi lainnya …",
"More options at %s" : "Opsi lainnya di %s",
"Monday" : "Senin",
"Tuesday" : "Selasa",
"Wednesday" : "Rabu",
"Thursday" : "Kamis",
"Friday" : "Jumat",
"Saturday" : "Sabtu",
"Sunday" : "Minggu",
"January" : "Januari",
"February" : "Februari",
"March" : "Maret",
"April" : "April",
"May" : "Mei",
"June" : "Juni",
"July" : "Juli",
"August" : "Agustus",
"September" : "September",
"October" : "Oktober",
"November" : "November",
"December" : "Desember",
"First" : "Pertama",
"Second" : "Kedua",
"Third" : "Ketiga",
"Fourth" : "Keempat",
"Fifth" : "Kelima",
"Last" : "Terakhir",
"Second Last" : "Kedua terakhir",
"Third Last" : "Ketiga terakhir",
"Fourth Last" : "Keempat terakhir",
"Fifth Last" : "Kelima terakhir",
"Contacts" : "Kontak",
"{actor} created address book {addressbook}" : "{actor} membuat buku alamat {addressbook}",
"You created address book {addressbook}" : "Anda membuat buku alamat {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} menghapus buku alamat {addressbook}",
"You deleted address book {addressbook}" : "Anda menghapus buku alamat {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} memperbarui buku alamat {addressbook}",
"You updated address book {addressbook}" : "Anda memperbarui buku alamat {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} membagikan buku alamat {addressbook} kepada Anda",
"You shared address book {addressbook} with {user}" : "Anda membagikan buku alamat {addressbook} dengan {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} membagikan buku alamat {addressbook} dengan {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} membatalkan berbagi buku alamat {addressbook} dari Anda",
"You unshared address book {addressbook} from {user}" : "Anda membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} membatalkan berbagi buku alamat {addressbook} dari diri mereka sendiri",
"You shared address book {addressbook} with group {group}" : "Anda membagikan buku alamat {addressbook} dengan grup {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} membagikan buku alamat {addressbook} dengan grup {group}",
"You unshared address book {addressbook} from group {group}" : "Anda membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} membuat kontak {card} di buku alamat {addressbook}",
"You created contact {card} in address book {addressbook}" : "Anda membuat kontak {card} di buku alamat {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} menghapus kontak {card} dari buku alamat {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Anda menghapus kontak {card} dari buku alamat {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} memperbarui kontak {card} di buku alamat {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Anda memperbarui kontak {card} di buku alamat {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Sebuah <strong>kontak</strong> atau <strong>buku alamat</strong> telah diubah",
"System address book disabled" : "Buku alamat sistem dinonaktifkan",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Buku alamat kontak sistem telah dinonaktifkan secara otomatis selama peningkatan. Ini berarti buku alamat tersebut tidak akan lagi tersedia bagi pengguna di aplikasi kontak atau klien lain. Buku alamat kontak sistem dinonaktifkan karena jumlah kontak dalam buku alamat melebihi jumlah maksimum kontak yang direkomendasikan. Batas ini ditetapkan untuk mencegah masalah performa. Anda dapat mengaktifkan kembali buku alamat sistem dengan perintah berikut {command}",
"Accounts" : "Accounts",
"System address book which holds all accounts" : "Buku alamat sistem yang menyimpan semua akun",
"File is not updatable: %1$s" : "File tidak dapat diperbarui: %1$s",
"Failed to get storage for file" : "Gagal mendapatkan penyimpanan untuk file",
"Could not write to final file, canceled by hook" : "Tidak dapat menulis ke file akhir, dibatalkan oleh hook",
"Could not write file contents" : "Tidak dapat menulis konten file",
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Kesalahan saat menyalin file ke lokasi tujuan (disalin: %1$s, ukuran file yang diharapkan: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Ukuran file %1$s yang diharapkan adalah %1$s tetapi membaca (dari klien Nextcloud) dan menulis (ke penyimpanan Nextcloud) %2$s. Ini bisa jadi masalah jaringan di sisi pengirim atau masalah saat menulis ke penyimpanan di sisi server.",
"Could not rename part file to final file, canceled by hook" : "Tidak dapat mengganti nama file bagian menjadi file akhir, dibatalkan oleh hook",
"Could not rename part file to final file" : "Tidak dapat mengganti nama file bagian menjadi file akhir",
"Failed to check file size: %1$s" : "Gagal memeriksa ukuran file: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya ada",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya tidak ada",
"Encryption not ready: %1$s" : "Enkripsi belum siap: %1$s",
"Failed to open file: %1$s" : "Gagal membuka file: %1$s",
"Failed to unlink: %1$s" : "Gagal melepas tautan: %1$s",
"Failed to write file contents: %1$s" : "Gagal menulis konten file: %1$s",
"File not found: %1$s" : "File tidak ditemukan: %1$s",
"Invalid target path" : "Jalur tujuan tidak valid",
"System is in maintenance mode." : "Sistem sedang dalam mode pemeliharaan.",
"Upgrade needed" : "Perlu peningkatan",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "%s Anda perlu dikonfigurasi untuk menggunakan HTTPS agar dapat menggunakan CalDAV dan CardDAV dengan iOS/macOS.",
"Configures a CalDAV account" : "Mengonfigurasi akun CalDAV",
"Configures a CardDAV account" : "Mengonfigurasi akun CardDAV",
"Events" : "Acara",
"Untitled task" : "Tugas tanpa judul",
"Completed on %s" : "Selesai pada %s",
"Due on %s by %s" : "Jatuh tempo pada %s oleh %s",
"Due on %s" : "Jatuh tempo pada %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Selamat datang di Kalender Nextcloud!\n\nIni adalah acara contoh - jelajahi fleksibilitas perencanaan dengan Kalender Nextcloud dengan melakukan perubahan apa pun yang Anda inginkan!\n\nDengan Kalender Nextcloud, Anda dapat:\n- Membuat, mengedit, dan mengelola acara dengan mudah.\n- Membuat beberapa kalender dan membagikannya dengan rekan tim, teman, atau keluarga.\n- Memeriksa ketersediaan dan menampilkan waktu sibuk Anda kepada orang lain.\n- Terintegrasi dengan lancar dengan aplikasi dan perangkat melalui CalDAV.\n- Menyesuaikan pengalaman Anda: jadwalkan acara berulang, sesuaikan notifikasi, dan pengaturan lainnya.",
"Example event - open me!" : "Acara contoh - buka saya!",
"System Address Book" : "Buku Alamat Sistem",
"The system address book contains contact information for all users in your instance." : "Buku alamat sistem berisi informasi kontak untuk semua pengguna di instance Anda.",
"Enable System Address Book" : "Aktifkan Buku Alamat Sistem",
"DAV system address book" : "Buku alamat sistem DAV",
"No outstanding DAV system address book sync." : "Tidak ada sinkronisasi buku alamat sistem DAV yang tertunda.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Sinkronisasi buku alamat sistem DAV belum berjalan karena instance Anda memiliki lebih dari 1000 pengguna atau karena terjadi kesalahan. Silakan jalankan secara manual dengan memanggil \"occ dav:sync-system-addressbook\".",
"DAV system address book size" : "Ukuran buku alamat sistem DAV",
"The system address book is disabled" : "Buku alamat sistem dinonaktifkan",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan, tetapi berisi lebih dari batas yang dikonfigurasi yaitu %d kontak",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan dan berisi kurang dari batas yang dikonfigurasi yaitu %d kontak",
"WebDAV endpoint" : "Endpoint WebDAV",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Tidak dapat memeriksa apakah web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV. Silakan periksa secara manual.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Peladen web Anda belum diatur sesuai untuk sinkronisasi berkas, karena antarmuka WebDAV tidak berfungsi.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV.",
"Migrated calendar (%1$s)" : "Kalender termigrasi (%1$s)",
"Calendars including events, details and attendees" : "Kalender termasuk acara, detail, dan peserta",
"Contacts and groups" : "Kontak dan grup",
"WebDAV" : "WebDAV",
"Absence saved" : "Ketidakhadiran disimpan",
"Failed to save your absence settings" : "Gagal menyimpan pengaturan ketidakhadiran Anda",
"Absence cleared" : "Ketidakhadiran dihapus",
"Failed to clear your absence settings" : "Gagal menghapus pengaturan ketidakhadiran Anda",
"First day" : "Hari pertama",
"Last day (inclusive)" : "Hari terakhir (termasuk)",
"Out of office replacement (optional)" : "Pengganti di luar kantor (opsional)",
"Name of the replacement" : "Nama pengganti",
"Short absence status" : "Status ketidakhadiran singkat",
"Long absence Message" : "Pesan ketidakhadiran panjang",
"Save" : "Simpan",
"Disable absence" : "Nonaktifkan ketidakhadiran",
"Failed to load availability" : "Gagal memuat ketersediaan",
"Saved availability" : "Ketersediaan disimpan",
"Failed to save availability" : "Gagal menyimpan ketersediaan",
"to" : "untuk",
"Delete slot" : "Hapus slot",
"No working hours set" : "Tidak ada jam kerja yang ditetapkan",
"Add slot" : "Tambahkan slot",
"Weekdays" : "Hari kerja",
"Pick a start time for {dayName}" : "Pilih waktu mulai untuk {dayName}",
"Pick a end time for {dayName}" : "Pilih waktu selesai untuk {dayName}",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Secara otomatis tetapkan status pengguna menjadi \"Jangan ganggu\" di luar ketersediaan untuk membisukan semua notifikasi.",
"Cancel" : "Batal",
"Import" : "Impor",
"Error while saving settings" : "Kesalahan saat menyimpan pengaturan",
"Contact reset successfully" : "Kontak berhasil direset",
"Error while resetting contact" : "Kesalahan saat mereset kontak",
"Contact imported successfully" : "Kontak berhasil diimpor",
"Error while importing contact" : "Kesalahan saat mengimpor kontak",
"Import contact" : "Impor kontak",
"Reset to default" : "Reset ke default",
"Import contacts" : "Impor kontak",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Mengunggah file .vcf baru akan menghapus kontak default yang ada dan menggantinya dengan yang baru. Apakah Anda ingin melanjutkan?",
"Failed to save example event creation setting" : "Gagal menyimpan pengaturan pembuatan acara contoh",
"Failed to upload the example event" : "Gagal mengunggah acara contoh",
"Custom example event was saved successfully" : "Acara contoh kustom berhasil disimpan",
"Failed to delete the custom example event" : "Gagal menghapus acara contoh kustom",
"Custom example event was deleted successfully" : "Acara contoh kustom berhasil dihapus",
"Import calendar event" : "Impor acara kalender",
"Uploading a new event will overwrite the existing one." : "Mengunggah acara baru akan menimpa acara yang sudah ada.",
"Upload event" : "Unggah acara",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal juga {calendarappstoreopen}aplikasi Kalender{linkclose}, atau {calendardocopen}hubungkan desktop & seluler Anda untuk sinkronisasi ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Pastikan Anda menyiapkan {emailopen}server email{linkclose} dengan benar.",
"Calendar server" : "Server kalender",
"Send invitations to attendees" : "Kirim undangan kepada peserta",
"Automatically generate a birthday calendar" : "Buat kalender ulang tahun secara otomatis",
"Birthday calendars will be generated by a background job." : "Kalender ulang tahun akan dibuat oleh tugas latar belakang.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Karena itu kalender tersebut tidak akan tersedia segera setelah diaktifkan, tetapi akan muncul setelah beberapa waktu.",
"Send notifications for events" : "Kirim notifikasi untuk acara",
"Notifications are sent via background jobs, so these must occur often enough." : "Notifikasi dikirim melalui tugas latar belakang, jadi tugas tersebut harus dijalankan cukup sering.",
"Send reminder notifications to calendar sharees as well" : "Kirim juga notifikasi pengingat kepada pengguna yang dibagikan kalendernya",
"Reminders are always sent to organizers and attendees." : "Pengingat selalu dikirim kepada penyelenggara dan peserta.",
"Enable notifications for events via push" : "Aktifkan notifikasi untuk acara melalui push",
"Example content" : "Konten contoh",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Konten contoh berfungsi untuk menampilkan fitur Nextcloud. Konten default disertakan dengan Nextcloud, dan dapat diganti dengan konten kustom.",
"Availability" : "Ketersediaan",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Jika Anda mengonfigurasi jam kerja, orang lain akan melihat kapan Anda di luar kantor saat mereka memesan rapat.",
"Absence" : "Ketidakhadiran",
"Configure your next absence period." : "Konfigurasikan periode ketidakhadiran Anda berikutnya.",
"There was an error updating your attendance status." : "Terjadi kesalahan saat memperbarui status kehadiran Anda.",
"Please contact the organizer directly." : "Silakan hubungi penyelenggara secara langsung.",
"Are you accepting the invitation?" : "Apakah Anda menerima undangan ini?",
"Tentative" : "Tentatif",
"Your attendance was updated successfully." : "Kehadiran Anda berhasil diperbarui.",
"Could not open file: %1$s, file does seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya ada",
"Could not open file: %1$s, file doesn't seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya tidak ada",
"No results." : "Tidak ada hasil.",
"Start typing." : "Mulai mengetik.",
"Time zone:" : "Zona waktu:"
},
"nplurals=1; plural=0;");
+310
View File
@@ -0,0 +1,310 @@
{ "translations": {
"Calendar" : "Kalender",
"Tasks" : "Tugas",
"Personal" : "Pribadi",
"{actor} created calendar {calendar}" : "{actor} membuat kalender {calendar}",
"You created calendar {calendar}" : "Anda membuat kalender {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} menghapus kalender {calendar}",
"You deleted calendar {calendar}" : "Anda menghapus kalender {calendar}",
"{actor} updated calendar {calendar}" : "{actor} memperbarui kalender {calendar}",
"You updated calendar {calendar}" : "Anda memperbarui kalender {calendar}",
"{actor} restored calendar {calendar}" : "{actor} memulihkan kalender {calendar}",
"You restored calendar {calendar}" : "Anda memulihkan kalender {calendar}",
"You shared calendar {calendar} as public link" : "Anda membagikan kalender {calendar} sebagai tautan publik",
"You removed public link for calendar {calendar}" : "Anda menghapus tautan publik untuk kalender {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} membagikan kalender {calendar} kepada Anda",
"You shared calendar {calendar} with {user}" : "Anda membagikan kalender {calendar} dengan {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} membagikan kalender {calendar} dengan {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} membatalkan berbagi kalender {calendar} dari Anda",
"You unshared calendar {calendar} from {user}" : "Anda membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} membatalkan berbagi kalender {calendar} dari diri mereka sendiri",
"You shared calendar {calendar} with group {group}" : "Anda membagikan kalender {calendar} dengan grup {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} membagikan kalender {calendar} dengan grup {group}",
"You unshared calendar {calendar} from group {group}" : "Anda membatalkan berbagi kalender {calendar} dari grup {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} membatalkan berbagi kalender {calendar} dari grup {group}",
"Untitled event" : "Acara tanpa judul",
"{actor} created event {event} in calendar {calendar}" : "{actor} membuat acara {event} di kalender {calendar}",
"You created event {event} in calendar {calendar}" : "Anda membuat acara {event} di kalender {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} menghapus acara {event} dari kalender {calendar}",
"You deleted event {event} from calendar {calendar}" : "Anda menghapus acara {event} dari kalender {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} memperbarui acara {event} di kalender {calendar}",
"You updated event {event} in calendar {calendar}" : "Anda memperbarui acara {event} di kalender {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Anda memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} memulihkan acara {event} dari kalender {calendar}",
"You restored event {event} of calendar {calendar}" : "Anda memulihkan acara {event} dari kalender {calendar}",
"Busy" : "Sibuk",
"{actor} created to-do {todo} in list {calendar}" : "{actor} membuat tugas {todo} di daftar {calendar}",
"You created to-do {todo} in list {calendar}" : "Anda membuat tugas {todo} di daftar {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} menghapus tugas {todo} dari daftar {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Anda menghapus tugas {todo} dari daftar {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} memperbarui tugas {todo} di daftar {calendar}",
"You updated to-do {todo} in list {calendar}" : "Anda memperbarui tugas {todo} di daftar {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} menyelesaikan tugas {todo} di daftar {calendar}",
"You solved to-do {todo} in list {calendar}" : "Anda menyelesaikan tugas {todo} di daftar {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} membuka kembali tugas {todo} di daftar {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Anda membuka kembali tugas {todo} di daftar {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Anda memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"Calendar, contacts and tasks" : "Kalender, kontak, dan tugas",
"A <strong>calendar</strong> was modified" : "<strong>Kalender</strong> telah diubah",
"A calendar <strong>event</strong> was modified" : "Sebuah <strong>acara</strong> kalender telah diubah",
"A calendar <strong>to-do</strong> was modified" : "Sebuah <strong>tugas</strong> kalender telah diubah",
"Contact birthdays" : "Ulang tahun kontak",
"Death of %s" : "Wafatnya %s",
"Untitled calendar" : "Kalender tanpa judul",
"Calendar:" : "Kalender:",
"Date:" : "Tanggal:",
"Where:" : "Tempat:",
"Description:" : "Deskripsi:",
"_%n hour_::_%n hours_" : ["%n jam"],
"_%n minute_::_%n minutes_" : ["%n menit"],
"%s (in %s)" : "%s (dalam %s)",
"%s (%s ago)" : "%s (%s yang lalu)",
"Calendar: %s" : "Kalender: %s",
"Date: %s" : "Tanggal: %s",
"Description: %s" : "Deskripsi: %s",
"Where: %s" : "Di mana: %s",
"%1$s via %2$s" : "%1$s melalui %2$s",
"In the past on %1$s for the entire day" : "Di masa lalu pada %1$s sepanjang hari",
"In the past on %1$s between %2$s - %3$s" : "Di masa lalu pada %1$s antara %2$s - %3$s",
"Could not generate when statement" : "Tidak dapat membuat pernyataan waktu",
"Every Day for the entire day" : "Setiap hari sepanjang hari",
"Every Day for the entire day until %1$s" : "Setiap hari sepanjang hari hingga %1$s",
"Every Day between %1$s - %2$s" : "Setiap hari antara %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Setiap hari antara %1$s - %2$s hingga %3$s",
"Every %1$d Days for the entire day" : "Setiap %1$d hari sepanjang hari",
"Every %1$d Days for the entire day until %2$s" : "Setiap %1$d hari sepanjang hari hingga %2$s",
"Every %1$d Days between %2$s - %3$s" : "Setiap %1$d hari antara %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Setiap %1$d hari antara %2$s - %3$s hingga %4$s",
"Could not generate event recurrence statement" : "Tidak dapat membuat pernyataan pengulangan acara",
"Every Week on %1$s for the entire day" : "Setiap minggu pada %1$s sepanjang hari",
"Every Week on %1$s for the entire day until %2$s" : "Setiap minggu pada %1$s sepanjang hari hingga %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Setiap minggu pada %1$s antara %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Setiap minggu pada %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Setiap %1$d minggu pada %2$s sepanjang hari",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Setiap %1$d minggu pada %2$s sepanjang hari hingga %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s hingga %5$s",
"Every Month on the %1$s for the entire day" : "Setiap bulan pada tanggal %1$s sepanjang hari",
"Every Month on the %1$s for the entire day until %2$s" : "Setiap bulan pada tanggal %1$s sepanjang hari hingga %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari hingga %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari hingga %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari hingga %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s hingga %6$s",
"On specific dates for the entire day until %1$s" : "Pada tanggal tertentu sepanjang hari hingga %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Pada tanggal tertentu antara %1$s - %2$s hingga %3$s",
"In the past on %1$s" : "Di masa lalu pada %1$s",
"In the past on %1$s then on %2$s" : "Di masa lalu pada %1$s lalu pada %2$s",
"In the past on %1$s then on %2$s and %3$s" : "Di masa lalu pada %1$s lalu pada %2$s dan %3$s",
"Could not generate next recurrence statement" : "Tidak dapat membuat pernyataan pengulangan berikutnya",
"Cancelled: %1$s" : "Dibatalkan: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" telah dibatalkan",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "%1$s telah menerima undangan Anda",
"%1$s has tentatively accepted your invitation" : "%1$s telah menerima undangan Anda secara sementara",
"%1$s has declined your invitation" : "%1$s telah menolak undangan Anda",
"%1$s has responded to your invitation" : "%1$s telah merespons undangan Anda",
"Invitation updated: %1$s" : "Undangan diperbarui: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s memperbarui acara \"%2$s\"",
"Invitation: %1$s" : "Undangan: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s ingin mengundang Anda ke \"%2$s\"",
"Organizer:" : "Penyelenggara:",
"Attendees:" : "Peserta:",
"Title:" : "Judul:",
"When:" : "Kapan:",
"Location:" : "Lokasi:",
"Link:" : "Tautan:",
"Occurring:" : "Berlangsung:",
"Accept" : "Terima",
"Decline" : "Tolak",
"More options …" : "Opsi lainnya …",
"More options at %s" : "Opsi lainnya di %s",
"Monday" : "Senin",
"Tuesday" : "Selasa",
"Wednesday" : "Rabu",
"Thursday" : "Kamis",
"Friday" : "Jumat",
"Saturday" : "Sabtu",
"Sunday" : "Minggu",
"January" : "Januari",
"February" : "Februari",
"March" : "Maret",
"April" : "April",
"May" : "Mei",
"June" : "Juni",
"July" : "Juli",
"August" : "Agustus",
"September" : "September",
"October" : "Oktober",
"November" : "November",
"December" : "Desember",
"First" : "Pertama",
"Second" : "Kedua",
"Third" : "Ketiga",
"Fourth" : "Keempat",
"Fifth" : "Kelima",
"Last" : "Terakhir",
"Second Last" : "Kedua terakhir",
"Third Last" : "Ketiga terakhir",
"Fourth Last" : "Keempat terakhir",
"Fifth Last" : "Kelima terakhir",
"Contacts" : "Kontak",
"{actor} created address book {addressbook}" : "{actor} membuat buku alamat {addressbook}",
"You created address book {addressbook}" : "Anda membuat buku alamat {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} menghapus buku alamat {addressbook}",
"You deleted address book {addressbook}" : "Anda menghapus buku alamat {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} memperbarui buku alamat {addressbook}",
"You updated address book {addressbook}" : "Anda memperbarui buku alamat {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} membagikan buku alamat {addressbook} kepada Anda",
"You shared address book {addressbook} with {user}" : "Anda membagikan buku alamat {addressbook} dengan {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} membagikan buku alamat {addressbook} dengan {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} membatalkan berbagi buku alamat {addressbook} dari Anda",
"You unshared address book {addressbook} from {user}" : "Anda membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} membatalkan berbagi buku alamat {addressbook} dari diri mereka sendiri",
"You shared address book {addressbook} with group {group}" : "Anda membagikan buku alamat {addressbook} dengan grup {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} membagikan buku alamat {addressbook} dengan grup {group}",
"You unshared address book {addressbook} from group {group}" : "Anda membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} membuat kontak {card} di buku alamat {addressbook}",
"You created contact {card} in address book {addressbook}" : "Anda membuat kontak {card} di buku alamat {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} menghapus kontak {card} dari buku alamat {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Anda menghapus kontak {card} dari buku alamat {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} memperbarui kontak {card} di buku alamat {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Anda memperbarui kontak {card} di buku alamat {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Sebuah <strong>kontak</strong> atau <strong>buku alamat</strong> telah diubah",
"System address book disabled" : "Buku alamat sistem dinonaktifkan",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Buku alamat kontak sistem telah dinonaktifkan secara otomatis selama peningkatan. Ini berarti buku alamat tersebut tidak akan lagi tersedia bagi pengguna di aplikasi kontak atau klien lain. Buku alamat kontak sistem dinonaktifkan karena jumlah kontak dalam buku alamat melebihi jumlah maksimum kontak yang direkomendasikan. Batas ini ditetapkan untuk mencegah masalah performa. Anda dapat mengaktifkan kembali buku alamat sistem dengan perintah berikut {command}",
"Accounts" : "Accounts",
"System address book which holds all accounts" : "Buku alamat sistem yang menyimpan semua akun",
"File is not updatable: %1$s" : "File tidak dapat diperbarui: %1$s",
"Failed to get storage for file" : "Gagal mendapatkan penyimpanan untuk file",
"Could not write to final file, canceled by hook" : "Tidak dapat menulis ke file akhir, dibatalkan oleh hook",
"Could not write file contents" : "Tidak dapat menulis konten file",
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Kesalahan saat menyalin file ke lokasi tujuan (disalin: %1$s, ukuran file yang diharapkan: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Ukuran file %1$s yang diharapkan adalah %1$s tetapi membaca (dari klien Nextcloud) dan menulis (ke penyimpanan Nextcloud) %2$s. Ini bisa jadi masalah jaringan di sisi pengirim atau masalah saat menulis ke penyimpanan di sisi server.",
"Could not rename part file to final file, canceled by hook" : "Tidak dapat mengganti nama file bagian menjadi file akhir, dibatalkan oleh hook",
"Could not rename part file to final file" : "Tidak dapat mengganti nama file bagian menjadi file akhir",
"Failed to check file size: %1$s" : "Gagal memeriksa ukuran file: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya ada",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya tidak ada",
"Encryption not ready: %1$s" : "Enkripsi belum siap: %1$s",
"Failed to open file: %1$s" : "Gagal membuka file: %1$s",
"Failed to unlink: %1$s" : "Gagal melepas tautan: %1$s",
"Failed to write file contents: %1$s" : "Gagal menulis konten file: %1$s",
"File not found: %1$s" : "File tidak ditemukan: %1$s",
"Invalid target path" : "Jalur tujuan tidak valid",
"System is in maintenance mode." : "Sistem sedang dalam mode pemeliharaan.",
"Upgrade needed" : "Perlu peningkatan",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "%s Anda perlu dikonfigurasi untuk menggunakan HTTPS agar dapat menggunakan CalDAV dan CardDAV dengan iOS/macOS.",
"Configures a CalDAV account" : "Mengonfigurasi akun CalDAV",
"Configures a CardDAV account" : "Mengonfigurasi akun CardDAV",
"Events" : "Acara",
"Untitled task" : "Tugas tanpa judul",
"Completed on %s" : "Selesai pada %s",
"Due on %s by %s" : "Jatuh tempo pada %s oleh %s",
"Due on %s" : "Jatuh tempo pada %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Selamat datang di Kalender Nextcloud!\n\nIni adalah acara contoh - jelajahi fleksibilitas perencanaan dengan Kalender Nextcloud dengan melakukan perubahan apa pun yang Anda inginkan!\n\nDengan Kalender Nextcloud, Anda dapat:\n- Membuat, mengedit, dan mengelola acara dengan mudah.\n- Membuat beberapa kalender dan membagikannya dengan rekan tim, teman, atau keluarga.\n- Memeriksa ketersediaan dan menampilkan waktu sibuk Anda kepada orang lain.\n- Terintegrasi dengan lancar dengan aplikasi dan perangkat melalui CalDAV.\n- Menyesuaikan pengalaman Anda: jadwalkan acara berulang, sesuaikan notifikasi, dan pengaturan lainnya.",
"Example event - open me!" : "Acara contoh - buka saya!",
"System Address Book" : "Buku Alamat Sistem",
"The system address book contains contact information for all users in your instance." : "Buku alamat sistem berisi informasi kontak untuk semua pengguna di instance Anda.",
"Enable System Address Book" : "Aktifkan Buku Alamat Sistem",
"DAV system address book" : "Buku alamat sistem DAV",
"No outstanding DAV system address book sync." : "Tidak ada sinkronisasi buku alamat sistem DAV yang tertunda.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Sinkronisasi buku alamat sistem DAV belum berjalan karena instance Anda memiliki lebih dari 1000 pengguna atau karena terjadi kesalahan. Silakan jalankan secara manual dengan memanggil \"occ dav:sync-system-addressbook\".",
"DAV system address book size" : "Ukuran buku alamat sistem DAV",
"The system address book is disabled" : "Buku alamat sistem dinonaktifkan",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan, tetapi berisi lebih dari batas yang dikonfigurasi yaitu %d kontak",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan dan berisi kurang dari batas yang dikonfigurasi yaitu %d kontak",
"WebDAV endpoint" : "Endpoint WebDAV",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Tidak dapat memeriksa apakah web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV. Silakan periksa secara manual.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Peladen web Anda belum diatur sesuai untuk sinkronisasi berkas, karena antarmuka WebDAV tidak berfungsi.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV.",
"Migrated calendar (%1$s)" : "Kalender termigrasi (%1$s)",
"Calendars including events, details and attendees" : "Kalender termasuk acara, detail, dan peserta",
"Contacts and groups" : "Kontak dan grup",
"WebDAV" : "WebDAV",
"Absence saved" : "Ketidakhadiran disimpan",
"Failed to save your absence settings" : "Gagal menyimpan pengaturan ketidakhadiran Anda",
"Absence cleared" : "Ketidakhadiran dihapus",
"Failed to clear your absence settings" : "Gagal menghapus pengaturan ketidakhadiran Anda",
"First day" : "Hari pertama",
"Last day (inclusive)" : "Hari terakhir (termasuk)",
"Out of office replacement (optional)" : "Pengganti di luar kantor (opsional)",
"Name of the replacement" : "Nama pengganti",
"Short absence status" : "Status ketidakhadiran singkat",
"Long absence Message" : "Pesan ketidakhadiran panjang",
"Save" : "Simpan",
"Disable absence" : "Nonaktifkan ketidakhadiran",
"Failed to load availability" : "Gagal memuat ketersediaan",
"Saved availability" : "Ketersediaan disimpan",
"Failed to save availability" : "Gagal menyimpan ketersediaan",
"to" : "untuk",
"Delete slot" : "Hapus slot",
"No working hours set" : "Tidak ada jam kerja yang ditetapkan",
"Add slot" : "Tambahkan slot",
"Weekdays" : "Hari kerja",
"Pick a start time for {dayName}" : "Pilih waktu mulai untuk {dayName}",
"Pick a end time for {dayName}" : "Pilih waktu selesai untuk {dayName}",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Secara otomatis tetapkan status pengguna menjadi \"Jangan ganggu\" di luar ketersediaan untuk membisukan semua notifikasi.",
"Cancel" : "Batal",
"Import" : "Impor",
"Error while saving settings" : "Kesalahan saat menyimpan pengaturan",
"Contact reset successfully" : "Kontak berhasil direset",
"Error while resetting contact" : "Kesalahan saat mereset kontak",
"Contact imported successfully" : "Kontak berhasil diimpor",
"Error while importing contact" : "Kesalahan saat mengimpor kontak",
"Import contact" : "Impor kontak",
"Reset to default" : "Reset ke default",
"Import contacts" : "Impor kontak",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Mengunggah file .vcf baru akan menghapus kontak default yang ada dan menggantinya dengan yang baru. Apakah Anda ingin melanjutkan?",
"Failed to save example event creation setting" : "Gagal menyimpan pengaturan pembuatan acara contoh",
"Failed to upload the example event" : "Gagal mengunggah acara contoh",
"Custom example event was saved successfully" : "Acara contoh kustom berhasil disimpan",
"Failed to delete the custom example event" : "Gagal menghapus acara contoh kustom",
"Custom example event was deleted successfully" : "Acara contoh kustom berhasil dihapus",
"Import calendar event" : "Impor acara kalender",
"Uploading a new event will overwrite the existing one." : "Mengunggah acara baru akan menimpa acara yang sudah ada.",
"Upload event" : "Unggah acara",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal juga {calendarappstoreopen}aplikasi Kalender{linkclose}, atau {calendardocopen}hubungkan desktop & seluler Anda untuk sinkronisasi ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Pastikan Anda menyiapkan {emailopen}server email{linkclose} dengan benar.",
"Calendar server" : "Server kalender",
"Send invitations to attendees" : "Kirim undangan kepada peserta",
"Automatically generate a birthday calendar" : "Buat kalender ulang tahun secara otomatis",
"Birthday calendars will be generated by a background job." : "Kalender ulang tahun akan dibuat oleh tugas latar belakang.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Karena itu kalender tersebut tidak akan tersedia segera setelah diaktifkan, tetapi akan muncul setelah beberapa waktu.",
"Send notifications for events" : "Kirim notifikasi untuk acara",
"Notifications are sent via background jobs, so these must occur often enough." : "Notifikasi dikirim melalui tugas latar belakang, jadi tugas tersebut harus dijalankan cukup sering.",
"Send reminder notifications to calendar sharees as well" : "Kirim juga notifikasi pengingat kepada pengguna yang dibagikan kalendernya",
"Reminders are always sent to organizers and attendees." : "Pengingat selalu dikirim kepada penyelenggara dan peserta.",
"Enable notifications for events via push" : "Aktifkan notifikasi untuk acara melalui push",
"Example content" : "Konten contoh",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Konten contoh berfungsi untuk menampilkan fitur Nextcloud. Konten default disertakan dengan Nextcloud, dan dapat diganti dengan konten kustom.",
"Availability" : "Ketersediaan",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Jika Anda mengonfigurasi jam kerja, orang lain akan melihat kapan Anda di luar kantor saat mereka memesan rapat.",
"Absence" : "Ketidakhadiran",
"Configure your next absence period." : "Konfigurasikan periode ketidakhadiran Anda berikutnya.",
"There was an error updating your attendance status." : "Terjadi kesalahan saat memperbarui status kehadiran Anda.",
"Please contact the organizer directly." : "Silakan hubungi penyelenggara secara langsung.",
"Are you accepting the invitation?" : "Apakah Anda menerima undangan ini?",
"Tentative" : "Tentatif",
"Your attendance was updated successfully." : "Kehadiran Anda berhasil diperbarui.",
"Could not open file: %1$s, file does seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya ada",
"Could not open file: %1$s, file doesn't seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya tidak ada",
"No results." : "Tidak ada hasil.",
"Start typing." : "Mulai mengetik.",
"Time zone:" : "Zona waktu:"
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá, hætt við af tengikrækju",
"Could not rename part file to final file" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá",
"Failed to check file size: %1$s" : "Mistókst að athuga skráarstærð: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"Encryption not ready: %1$s" : "Dulritun ekki tilbúin: %1$s",
"Failed to open file: %1$s" : "Mistókst að opna skrá: %1$s",
"Failed to unlink: %1$s" : "Mistókst að aftengja: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Eftir viku þann %1$s og síðan þann %2$s og %3$s","Eftir %n vikur þann %1$s og síðan þann %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Eftir mánuð þann %1$s og síðan þann %2$s og %3$s","Eftir %n mánuði þann %1$s og síðan þann %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Eftir ár þann %1$s og síðan þann %2$s og %3$s","Eftir %n ár þann %1$s og síðan þann %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"No results." : "Engar niðurstöður.",
"Start typing." : "Byrjaðu að skrifa.",
"Time zone:" : "Tímabelti:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá, hætt við af tengikrækju",
"Could not rename part file to final file" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá",
"Failed to check file size: %1$s" : "Mistókst að athuga skráarstærð: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"Encryption not ready: %1$s" : "Dulritun ekki tilbúin: %1$s",
"Failed to open file: %1$s" : "Mistókst að opna skrá: %1$s",
"Failed to unlink: %1$s" : "Mistókst að aftengja: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Eftir viku þann %1$s og síðan þann %2$s og %3$s","Eftir %n vikur þann %1$s og síðan þann %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Eftir mánuð þann %1$s og síðan þann %2$s og %3$s","Eftir %n mánuði þann %1$s og síðan þann %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Eftir ár þann %1$s og síðan þann %2$s og %3$s","Eftir %n ár þann %1$s og síðan þann %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"No results." : "Engar niðurstöður.",
"Start typing." : "Byrjaðu að skrifa.",
"Time zone:" : "Tímabelti:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Impossibile rinominare il file di parte in file finale, annullato da hook",
"Could not rename part file to final file" : "Impossibile rinominare il file di parte in file finale",
"Failed to check file size: %1$s" : "Verifica della dimensione del file non riuscito: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"Encryption not ready: %1$s" : "Cifratura non pronta: %1$s",
"Failed to open file: %1$s" : "Apertura del file non riuscito: %1$s",
"Failed to unlink: %1$s" : "Scollegamento non riuscito: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Fra una settimana il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Fra un mese il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Fra un anno il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"No results." : "Nessun risultato.",
"Start typing." : "Inizia a scrivere.",
"Time zone:" : "Fuso orario:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Impossibile rinominare il file di parte in file finale, annullato da hook",
"Could not rename part file to final file" : "Impossibile rinominare il file di parte in file finale",
"Failed to check file size: %1$s" : "Verifica della dimensione del file non riuscito: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"Encryption not ready: %1$s" : "Cifratura non pronta: %1$s",
"Failed to open file: %1$s" : "Apertura del file non riuscito: %1$s",
"Failed to unlink: %1$s" : "Scollegamento non riuscito: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Fra una settimana il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Fra un mese il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Fra un anno il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"No results." : "Nessun risultato.",
"Start typing." : "Inizia a scrivere.",
"Time zone:" : "Fuso orario:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "最終ファイルの名前の変更が出来なかったため、フックによりキャンセルされました",
"Could not rename part file to final file" : "最終ファイルの名前の変更が出来ませんでした",
"Failed to check file size: %1$s" : "ファイルサイズの確認に失敗: %1$s",
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"Encryption not ready: %1$s" : "暗号化の準備が出来ていません: %1$s",
"Failed to open file: %1$s" : "ファイルを開くのに失敗: %1$s",
"Failed to unlink: %1$s" : "リンクの解除に失敗: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%1$sの%n週間、その後%2$sと%3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%1$sの%nヶ月、その後%2$sと%3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%1$sの%n年間、その後%2$sと%3$s"],
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"No results." : "結果はありません。",
"Start typing." : "入力を開始する。",
"Time zone:" : "タイムゾーン:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "最終ファイルの名前の変更が出来なかったため、フックによりキャンセルされました",
"Could not rename part file to final file" : "最終ファイルの名前の変更が出来ませんでした",
"Failed to check file size: %1$s" : "ファイルサイズの確認に失敗: %1$s",
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"Encryption not ready: %1$s" : "暗号化の準備が出来ていません: %1$s",
"Failed to open file: %1$s" : "ファイルを開くのに失敗: %1$s",
"Failed to unlink: %1$s" : "リンクの解除に失敗: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%1$sの%n週間、その後%2$sと%3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%1$sの%nヶ月、その後%2$sと%3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%1$sの%n年間、その後%2$sと%3$s"],
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"No results." : "結果はありません。",
"Start typing." : "入力を開始する。",
"Time zone:" : "タイムゾーン:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Не можеше да се преименува делумната датотека во финална, поништено од hook",
"Could not rename part file to final file" : "Не можеше да се преименува делумната датотека во финална",
"Failed to check file size: %1$s" : "Не успеа да се провери големината на датотеката: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"Encryption not ready: %1$s" : "Шифрирањето не е подготвено: %1$s",
"Failed to open file: %1$s" : "Неуспешно отварање на датотека: %1$s",
"Failed to unlink: %1$s" : "Не успеа да се отстрани врската: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["За една недела, на %1$s, па на %2$s и %3$s","За %n недели, на %1$s, па на %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["За еден месец, на %1$s, па на %2$s и %3$s","За %n месеци, на %1$s, па на %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["За една година, на %1$s, па на %2$s и %3$s","За %n години, на %1$s, па на %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"No results." : "Нема резултати.",
"Start typing." : "Започни со пишување.",
"Time zone:" : "Временска зона:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Не можеше да се преименува делумната датотека во финална, поништено од hook",
"Could not rename part file to final file" : "Не можеше да се преименува делумната датотека во финална",
"Failed to check file size: %1$s" : "Не успеа да се провери големината на датотеката: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"Encryption not ready: %1$s" : "Шифрирањето не е подготвено: %1$s",
"Failed to open file: %1$s" : "Неуспешно отварање на датотека: %1$s",
"Failed to unlink: %1$s" : "Не успеа да се отстрани врската: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["За една недела, на %1$s, па на %2$s и %3$s","За %n недели, на %1$s, па на %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["За еден месец, на %1$s, па на %2$s и %3$s","За %n месеци, на %1$s, па на %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["За една година, на %1$s, па на %2$s и %3$s","За %n години, на %1$s, па на %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"No results." : "Нема резултати.",
"Start typing." : "Започни со пишување.",
"Time zone:" : "Временска зона:"
+2 -2
View File
@@ -203,8 +203,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Kunne ikke endre navn på delfilen til endelig fil, kansellert av hook",
"Could not rename part file to final file" : "Kunne ikke endre navn på delfil til endelig fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksiterer ikke",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksisterer ikke ",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åpne filen: %1$s",
"Failed to unlink: %1$s" : "Kunne ikke fjerne tilknytningen: %1$s",
@@ -330,6 +328,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Om en uke den %1$s deretter den %2$s og %3$s","Om %n uker den %1$s deretter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Om en måned den %1$s deretter den %2$s og %3$s","Om %n måneder den %1$s deretter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Om et år den %1$s deretter den %2$s og %3$s","Om %n år den %1$s deretter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksiterer ikke",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksisterer ikke ",
"No results." : "Ingen resultater.",
"Start typing." : "Begynn å skrive.",
"Time zone:" : "Tidssone:"
+2 -2
View File
@@ -201,8 +201,6 @@
"Could not rename part file to final file, canceled by hook" : "Kunne ikke endre navn på delfilen til endelig fil, kansellert av hook",
"Could not rename part file to final file" : "Kunne ikke endre navn på delfil til endelig fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksiterer ikke",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksisterer ikke ",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åpne filen: %1$s",
"Failed to unlink: %1$s" : "Kunne ikke fjerne tilknytningen: %1$s",
@@ -328,6 +326,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Om en uke den %1$s deretter den %2$s og %3$s","Om %n uker den %1$s deretter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Om en måned den %1$s deretter den %2$s og %3$s","Om %n måneder den %1$s deretter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Om et år den %1$s deretter den %2$s og %3$s","Om %n år den %1$s deretter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksiterer ikke",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åpne filen: %1$s, filen eksisterer ikke ",
"No results." : "Ingen resultater.",
"Start typing." : "Begynn å skrive.",
"Time zone:" : "Tidssone:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Nie można zmienić nazwy pliku podzielonego na plik końcowy, anulowane przez hook",
"Could not rename part file to final file" : "Nie można zmienić nazwy pliku podzielonego na plik końcowy",
"Failed to check file size: %1$s" : "Nie udało się sprawdzić rozmiaru pliku: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik istnieje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik nie istnieje",
"Encryption not ready: %1$s" : "Szyfrowanie nie jest gotowe: %1$s",
"Failed to open file: %1$s" : "Nie udało się otworzyć pliku: %1$s",
"Failed to unlink: %1$s" : "Nie udało się odłączyć: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za tydzień dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodnie dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodni dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodni dnia %1$s, następnie dnia %2$s i %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za miesiąc dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesiące dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesięcy dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesięcy dnia %1$s, następnie dnia %2$s i %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok dnia %1$s, następnie dnia %2$s i %3$s","Za %n lata dnia %1$s, następnie dnia %2$s i %3$s","Za %n lat dnia %1$s, następnie dnia %2$s i %3$s","Za %n lat dnia %1$s, następnie dnia %2$s i %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik istnieje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik nie istnieje",
"No results." : "Brak wyników.",
"Start typing." : "Zacznij pisać.",
"Time zone:" : "Strefa czasowa:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Nie można zmienić nazwy pliku podzielonego na plik końcowy, anulowane przez hook",
"Could not rename part file to final file" : "Nie można zmienić nazwy pliku podzielonego na plik końcowy",
"Failed to check file size: %1$s" : "Nie udało się sprawdzić rozmiaru pliku: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik istnieje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik nie istnieje",
"Encryption not ready: %1$s" : "Szyfrowanie nie jest gotowe: %1$s",
"Failed to open file: %1$s" : "Nie udało się otworzyć pliku: %1$s",
"Failed to unlink: %1$s" : "Nie udało się odłączyć: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za tydzień dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodnie dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodni dnia %1$s, następnie dnia %2$s i %3$s","Za %n tygodni dnia %1$s, następnie dnia %2$s i %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za miesiąc dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesiące dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesięcy dnia %1$s, następnie dnia %2$s i %3$s","Za %n miesięcy dnia %1$s, następnie dnia %2$s i %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok dnia %1$s, następnie dnia %2$s i %3$s","Za %n lata dnia %1$s, następnie dnia %2$s i %3$s","Za %n lat dnia %1$s, następnie dnia %2$s i %3$s","Za %n lat dnia %1$s, następnie dnia %2$s i %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik istnieje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie można otworzyć: %1$s, wygląda na to, że plik nie istnieje",
"No results." : "Brak wyników.",
"Start typing." : "Zacznij pisać.",
"Time zone:" : "Strefa czasowa:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de peça para o arquivo final, cancelado pelo hook",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de peça para o arquivo final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do arquivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Não foi possível abrir o arquivo: %1$s (%2$d), o arquivo parece existir",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s (%2$d), o arquivo parece não existir",
"Encryption not ready: %1$s" : "A criptografia não está pronta: %1$s",
"Failed to open file: %1$s" : "Falha ao abrir arquivo: %1$s",
"Failed to unlink: %1$s" : "Falha ao desvincular: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
"No results." : "Nenhum resultado.",
"Start typing." : "Comece a digitar.",
"Time zone:" : "Fuso horário:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de peça para o arquivo final, cancelado pelo hook",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de peça para o arquivo final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do arquivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Não foi possível abrir o arquivo: %1$s (%2$d), o arquivo parece existir",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s (%2$d), o arquivo parece não existir",
"Encryption not ready: %1$s" : "A criptografia não está pronta: %1$s",
"Failed to open file: %1$s" : "Falha ao abrir arquivo: %1$s",
"Failed to unlink: %1$s" : "Falha ao desvincular: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
"No results." : "Nenhum resultado.",
"Start typing." : "Comece a digitar.",
"Time zone:" : "Fuso horário:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o ficheiro parcial para ficheiro final, cancelado por hook",
"Could not rename part file to final file" : "Não foi possível renomear o ficheiro parcial para ficheiro final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro não parece existir",
"Encryption not ready: %1$s" : "Encriptação não pronta: %1$s",
"Failed to open file: %1$s" : "Falha ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Falha ao eliminar: %1$s",
@@ -329,6 +327,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Daqui a um semana em %1$s e depois em %2$s e %3$s","Daqui a %n semanas em %1$s e depois em %2$s e %3$s","Daqui a %n semanas em %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Daqui a um mês em %1$s e depois em %2$s e %3$s","Daqui a %n meses em %1$s e depois em %2$s e %3$s","Daqui a %n meses em %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Daqui a um ano em %1$s e depois em %2$s e %3$s","Daqui a %n anos em %1$s e depois em %2$s e %3$s","Daqui a %n anos em %1$s e depois em %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro não parece existir",
"No results." : "Sem resultados.",
"Start typing." : "Comece a escrever.",
"Time zone:" : "Fuso horário:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o ficheiro parcial para ficheiro final, cancelado por hook",
"Could not rename part file to final file" : "Não foi possível renomear o ficheiro parcial para ficheiro final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro não parece existir",
"Encryption not ready: %1$s" : "Encriptação não pronta: %1$s",
"Failed to open file: %1$s" : "Falha ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Falha ao eliminar: %1$s",
@@ -327,6 +325,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Daqui a um semana em %1$s e depois em %2$s e %3$s","Daqui a %n semanas em %1$s e depois em %2$s e %3$s","Daqui a %n semanas em %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Daqui a um mês em %1$s e depois em %2$s e %3$s","Daqui a %n meses em %1$s e depois em %2$s e %3$s","Daqui a %n meses em %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Daqui a um ano em %1$s e depois em %2$s e %3$s","Daqui a %n anos em %1$s e depois em %2$s e %3$s","Daqui a %n anos em %1$s e depois em %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o ficheiro: %1$s, o ficheiro não parece existir",
"No results." : "Sem resultados.",
"Start typing." : "Comece a escrever.",
"Time zone:" : "Fuso horário:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Не удалось переименовать временный файл в результирующий, операция отменена вызовом обработчика",
"Could not rename part file to final file" : "Не удалось переименовать временный файл в результирующий",
"Failed to check file size: %1$s" : "Не удалось проверить размер файла: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, существует",
"Could not open file: %1$s, file doesn't seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, не существует",
"Encryption not ready: %1$s" : "Подсистема шифрования не готова: %1$s",
"Failed to open file: %1$s" : "Не удалось открыть файл: %1$s",
"Failed to unlink: %1$s" : "Не удалось разорвать связь: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Через неделю, %1$s, затем %2$s и %3$s","Через %n недели, %1$s, затем %2$s и %3$s","Через %n недель, %1$s, затем %2$s и %3$s","Через %n недель, %1$s, затем %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Через месяц, %1$s, затем %2$s и %3$s","Через %n месяца, %1$s, затем %2$s и %3$s","Через %n месяцев, %1$s, затем %2$s и %3$s","Через %n месяцев, %1$s, затем %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Через год, %1$s, затем %2$s и %3$s","Через %n года, %1$s, затем %2$s и %3$s","Через %n лет, %1$s, затем %2$s и %3$s","Через %n лет, %1$s, затем %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, существует",
"Could not open file: %1$s, file doesn't seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, не существует",
"No results." : "Неверный целевой путь.",
"Start typing." : "Начать печатать.",
"Time zone:" : "Часовой пояс:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Не удалось переименовать временный файл в результирующий, операция отменена вызовом обработчика",
"Could not rename part file to final file" : "Не удалось переименовать временный файл в результирующий",
"Failed to check file size: %1$s" : "Не удалось проверить размер файла: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, существует",
"Could not open file: %1$s, file doesn't seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, не существует",
"Encryption not ready: %1$s" : "Подсистема шифрования не готова: %1$s",
"Failed to open file: %1$s" : "Не удалось открыть файл: %1$s",
"Failed to unlink: %1$s" : "Не удалось разорвать связь: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Через неделю, %1$s, затем %2$s и %3$s","Через %n недели, %1$s, затем %2$s и %3$s","Через %n недель, %1$s, затем %2$s и %3$s","Через %n недель, %1$s, затем %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Через месяц, %1$s, затем %2$s и %3$s","Через %n месяца, %1$s, затем %2$s и %3$s","Через %n месяцев, %1$s, затем %2$s и %3$s","Через %n месяцев, %1$s, затем %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Через год, %1$s, затем %2$s и %3$s","Через %n года, %1$s, затем %2$s и %3$s","Через %n лет, %1$s, затем %2$s и %3$s","Через %n лет, %1$s, затем %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, существует",
"Could not open file: %1$s, file doesn't seem to exist" : "Не удалось открыть файл: %1$s, файл, похоже, не существует",
"No results." : "Неверный целевой путь.",
"Start typing." : "Начать печатать.",
"Time zone:" : "Часовой пояс:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Nepodarilo sa premenovať dočasný súbor na finálny, zrušené háčikom (hook)",
"Could not rename part file to final file" : "Nepodarilo sa premenovať dočasný súbor na finálny.",
"Failed to check file size: %1$s" : "Kontrola veľkosti súboru zlyhala: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Encryption not ready: %1$s" : "Šifrovanie nie je dostupné: %1$s",
"Failed to open file: %1$s" : "Otvorenie súboru zlyhalo: %1$s",
"Failed to unlink: %1$s" : "Odpojenie zlyhalo: %1$s",
@@ -319,6 +317,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týždeň %1$s potom %2$s a %3$s","Za %n týždne %1$s potom %2$s a %3$s","Za %n týždňov %1$s potom %2$s a %3$s","Za %n týždňov %1$s potom %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za mesiac %1$s potom %2$s a %3$s","Za %n mesiace %1$s potom %2$s a %3$s","Za %n mesiacov %1$s potom %2$s a %3$s","Za %n mesiacov %1$s potom %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s potom %2$s a %3$s","Za %n roky %1$s potom %2$s a %3$s","Za %n rokov %1$s potom %2$s a %3$s","Za %n rokov %1$s potom %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"No results." : "Žiadne výsledky.",
"Start typing." : "Začnite písať.",
"Time zone:" : "Časová zóna:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "Nepodarilo sa premenovať dočasný súbor na finálny, zrušené háčikom (hook)",
"Could not rename part file to final file" : "Nepodarilo sa premenovať dočasný súbor na finálny.",
"Failed to check file size: %1$s" : "Kontrola veľkosti súboru zlyhala: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Encryption not ready: %1$s" : "Šifrovanie nie je dostupné: %1$s",
"Failed to open file: %1$s" : "Otvorenie súboru zlyhalo: %1$s",
"Failed to unlink: %1$s" : "Odpojenie zlyhalo: %1$s",
@@ -317,6 +315,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týždeň %1$s potom %2$s a %3$s","Za %n týždne %1$s potom %2$s a %3$s","Za %n týždňov %1$s potom %2$s a %3$s","Za %n týždňov %1$s potom %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za mesiac %1$s potom %2$s a %3$s","Za %n mesiace %1$s potom %2$s a %3$s","Za %n mesiacov %1$s potom %2$s a %3$s","Za %n mesiacov %1$s potom %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s potom %2$s a %3$s","Za %n roky %1$s potom %2$s a %3$s","Za %n rokov %1$s potom %2$s a %3$s","Za %n rokov %1$s potom %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nie je možné otvoriť súbor: %1$s, vyzerá to že súbor neexistuje",
"No results." : "Žiadne výsledky.",
"Start typing." : "Začnite písať.",
"Time zone:" : "Časová zóna:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Делимични фајл не може да се преименује у коначни фајл, отказала је кука",
"Could not rename part file to final file" : "Делимични фајл не може да се преименује у коначни фајл",
"Failed to check file size: %1$s" : "Није успела провера величине фајла: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл постоји",
"Could not open file: %1$s, file doesn't seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл не постоји",
"Encryption not ready: %1$s" : "Шифрирање није спремно: %1$s",
"Failed to open file: %1$s" : "Фајл не може да се отвори: %1$s",
"Failed to unlink: %1$s" : "Није успело уклањање линка: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["За %n недељу, у %1$s па онда у %2$s и %3$s","За %n недеље, у %1$s па онда у %2$s и %3$s","За %n недеља, у %1$s па онда у %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["За %n месец, у %1$s па онда у %2$s и %3$s","За %n месеца, у %1$s па онда у %2$s и %3$s","За %n месеци, у %1$s па онда у %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["За %n годину, у %1$s па онда у %2$s и %3$s","За %n године, у %1$s па онда у %2$s и %3$s","За %n година, у %1$s па онда у %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл постоји",
"Could not open file: %1$s, file doesn't seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл не постоји",
"No results." : "Нема резултата.",
"Start typing." : "Почните да куцате",
"Time zone:" : "Временска зона:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Делимични фајл не може да се преименује у коначни фајл, отказала је кука",
"Could not rename part file to final file" : "Делимични фајл не може да се преименује у коначни фајл",
"Failed to check file size: %1$s" : "Није успела провера величине фајла: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл постоји",
"Could not open file: %1$s, file doesn't seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл не постоји",
"Encryption not ready: %1$s" : "Шифрирање није спремно: %1$s",
"Failed to open file: %1$s" : "Фајл не може да се отвори: %1$s",
"Failed to unlink: %1$s" : "Није успело уклањање линка: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["За %n недељу, у %1$s па онда у %2$s и %3$s","За %n недеље, у %1$s па онда у %2$s и %3$s","За %n недеља, у %1$s па онда у %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["За %n месец, у %1$s па онда у %2$s и %3$s","За %n месеца, у %1$s па онда у %2$s и %3$s","За %n месеци, у %1$s па онда у %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["За %n годину, у %1$s па онда у %2$s и %3$s","За %n године, у %1$s па онда у %2$s и %3$s","За %n година, у %1$s па онда у %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл постоји",
"Could not open file: %1$s, file doesn't seem to exist" : "Фајл не може да се отвори: %1$s, изгледа да фајл не постоји",
"No results." : "Нема резултата.",
"Start typing." : "Почните да куцате",
"Time zone:" : "Временска зона:"
+2 -2
View File
@@ -233,8 +233,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Kunde inte byta namn på filfragment till slutgiltigt filnamn, avbröts av en kopplad åtgärd.",
"Could not rename part file to final file" : "Kunde inte ändra namn från temporära filen till slutliga filen",
"Failed to check file size: %1$s" : "Kunde inte kontrollera filstorleken: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunde inte öppna filen: %1$s, filen verkar inte finnas",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunde inte öppna filen: %1$s, filen verkar inte finnas",
"Encryption not ready: %1$s" : "Kryptering ej redo: %1$s",
"Failed to open file: %1$s" : "Kunde inte öppna fil: %1$s",
"Failed to unlink: %1$s" : "Kunde inte ta bort: %1$s",
@@ -366,6 +364,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Om en vecka den %1$s sedan den %2$s och %3$s","Om %n veckor den %1$s sedan den %2$s och %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Om en månad den %1$s sedan den %2$s och %3$s","Om %n månader den %1$s sedan den %2$s och %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Om ett år den %1$s sedan den %2$s och %3$s","Om %n år den %1$s sedan den %2$s och %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunde inte öppna filen: %1$s, filen verkar inte finnas",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunde inte öppna filen: %1$s, filen verkar inte finnas",
"No results." : "Inga resultat.",
"Start typing." : "Börja skriva.",
"Time zone:" : "Tidszon:"

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