diff --git a/.drone.yml b/.drone.yml
index ec444529107debfa5264d52463de69fb46298258..f697c836eb2c8f5555b07119d599de5ad7019b6c 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -52,7 +52,7 @@ steps:
   commands:
     - git submodule update --init
 - name: checkers
-  image: nextcloudci/php7.1:php7.1-16
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - ./autotest-checkers.sh
   secrets: [ github_token ]
@@ -93,11 +93,6 @@ steps:
   image: docker:git
   commands:
     - git submodule update --init
-- name: syntax-php7.1
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - composer install
-    - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
 - name: syntax-php7.2
   image: nextcloudci/php7.2:php7.2-12
   commands:
@@ -134,7 +129,7 @@ steps:
   commands:
     - git submodule update --init
 - name: litmus-v1
-  image: nextcloudci/litmus-php7.1:1
+  image: nextcloudci/litmus-php7.2:1
   commands:
     - bash tests/travis/install.sh sqlite
     - bash apps/dav/tests/travis/litmus-v1/script.sh
@@ -162,7 +157,7 @@ steps:
   commands:
     - git submodule update --init
 - name: caldavtester-new-endpoint
-  image: nextcloudci/litmus-php7.1:1
+  image: nextcloudci/litmus-php7.2:1
   commands:
     - bash tests/travis/install.sh sqlite
     - bash apps/dav/tests/travis/caldav/install.sh
@@ -186,7 +181,7 @@ steps:
   commands:
     - git submodule update --init
 - name: caldavtester-old-endpoint
-  image: nextcloudci/litmus-php7.1:1
+  image: nextcloudci/litmus-php7.2:1
   commands:
     - bash tests/travis/install.sh sqlite
     - bash apps/dav/tests/travis/caldav/install.sh
@@ -210,7 +205,7 @@ steps:
   commands:
     - git submodule update --init
 - name: carddavtester-new-endpoint
-  image: nextcloudci/litmus-php7.1:1
+  image: nextcloudci/litmus-php7.2:1
   commands:
     - bash tests/travis/install.sh sqlite
     - bash apps/dav/tests/travis/carddav/install.sh
@@ -234,7 +229,7 @@ steps:
   commands:
     - git submodule update --init
 - name: carddavtester-old-endpoint
-  image: nextcloudci/litmus-php7.1:1
+  image: nextcloudci/litmus-php7.2:1
   commands:
     - bash tests/travis/install.sh sqlite
     - bash apps/dav/tests/travis/carddav/install.sh
@@ -327,10 +322,6 @@ steps:
   image: docker:git
   commands:
     - git submodule update --init
-- name: nodb-php7.1
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
 - name: nodb-php7.2
   image: nextcloudci/php7.2:php7.2-11
   commands:
@@ -361,10 +352,6 @@ steps:
   image: docker:git
   commands:
     - git submodule update --init
-- name: sqlite-php7.1
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
 - name: sqlite-php7.2
   image: nextcloudci/php7.2:php7.2-12
   commands:
@@ -388,15 +375,15 @@ trigger:
 
 ---
 kind: pipeline
-name: mariadb10.1-php7.1
+name: mariadb10.1-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: mariadb10.1-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: mariadb10.1-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mariadb
 
@@ -423,15 +410,15 @@ trigger:
 
 ---
 kind: pipeline
-name: mariadb10.2-php7.1
+name: mariadb10.2-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: mariadb10.2-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: mariadb10.2-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mariadb
 
@@ -457,15 +444,15 @@ trigger:
 
 ---
 kind: pipeline
-name: mariadb10.3-php7.1
+name: mariadb10.3-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: mariadb10.3-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: mariadb10.3-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mariadb
 
@@ -560,40 +547,6 @@ trigger:
     - pull_request
     - push
 
----
-kind: pipeline
-name: mysql5.7-php7.1
-
-steps:
-- name: submodules
-  image: docker:git
-  commands:
-    - git submodule update --init
-- name: mysql-php7.1
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
-
-services:
-- name: cache
-  image: redis
-- name: mysql
-  image: mysql:5.7
-  environment:
-    MYSQL_ROOT_PASSWORD: owncloud
-    MYSQL_USER: oc_autotest
-    MYSQL_PASSWORD: owncloud
-    MYSQL_DATABASE: oc_autotest
-  tmpfs:
-    - /var/lib/mysql
-
-trigger:
-  branch:
-    - master
-    - stable*
-  event:
-    - push
-
 ---
 kind: pipeline
 name: mysql5.7-php7.2
@@ -660,15 +613,15 @@ trigger:
 
 ---
 kind: pipeline
-name: mysql5.6-php7.1
+name: mysql5.6-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: mysql5.6-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: mysql5.6-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
 
@@ -729,15 +682,15 @@ trigger:
 
 ---
 kind: pipeline
-name: postgres10-php7.1
+name: postgres10-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: postgres-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: postgres-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - sleep 10 # gives the database enough time to initialize
     - POSTGRES=10 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
@@ -763,15 +716,15 @@ trigger:
 
 ---
 kind: pipeline
-name: postgres11-php7.1
+name: postgres11-php7.2
 
 steps:
 - name: submodules
   image: docker:git
   commands:
     - git submodule update --init
-- name: postgres-php7.1
-  image: nextcloudci/php7.1:php7.1-16
+- name: postgres-php7.2
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - sleep 10 # gives the database enough time to initialize
     - POSTGRES=11 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
@@ -796,41 +749,6 @@ trigger:
     - pull_request
     - push
 
----
-kind: pipeline
-name: mysqlmb4-php7.1
-
-steps:
-- name: submodules
-  image: docker:git
-  commands:
-    - git submodule update --init
-- name: mysqlmb4-php7.1
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
-
-services:
-- name: cache
-  image: redis
-- name: mysqlmb4
-  image: mysql:5.7.22
-  environment:
-    MYSQL_ROOT_PASSWORD: owncloud
-    MYSQL_USER: oc_autotest
-    MYSQL_PASSWORD: owncloud
-    MYSQL_DATABASE: oc_autotest
-  command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ]
-  tmpfs:
-    - /var/lib/mysql
-
-trigger:
-  branch:
-    - master
-    - stable*
-  event:
-    - push
-
 ---
 kind: pipeline
 name: mysqlmb4-php7.2
@@ -2123,7 +2041,7 @@ steps:
   commands:
     - git submodule update --init
 - name: nodb-codecov
-  image: nextcloudci/php7.1:php7.1-16
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - phpenmod xdebug
     - TEST_SELECTION=NODB ./autotest.sh sqlite
@@ -2152,7 +2070,7 @@ steps:
   commands:
     - git submodule update --init
 - name: db-codecov
-  image: nextcloudci/php7.1:php7.1-16
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - phpenmod xdebug
     - TEST_SELECTION=QUICKDB ./autotest.sh sqlite
@@ -2181,7 +2099,7 @@ steps:
   commands:
     - git submodule update --init
 - name: object-store
-  image: nextcloudci/php7.1:php7.1-16
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - phpenmod xdebug
     - ./tests/drone-wait-objectstore.sh
@@ -2212,7 +2130,7 @@ steps:
   commands:
     - git submodule update --init
 - name: object-store
-  image: nextcloudci/php7.1:php7.1-16
+  image: nextcloudci/php7.2:php7.2-12
   commands:
     - phpenmod xdebug
     - ./tests/drone-wait-objectstore.sh
@@ -2334,34 +2252,34 @@ trigger:
     - pull_request
     - push
 
----
-kind: pipeline
-name: memcache-redis-cluster
-
-steps:
-- name: submodules
-  image: docker:git
-  commands:
-    - git submodule update --init
-- name: memcache-redis-cluster
-  image: nextcloudci/php7.1:php7.1-16
-  commands:
-    - phpenmod xdebug
-    - sleep 20
-    - ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
-    - wget https://codecov.io/bash -O codecov.sh
-    - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
-    - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
-
-services:
-- name: cache-cluster
-  image: morrisjobke/redis-cluster
-
-trigger:
-  branch:
-    - master
-    - stable*
-  event:
-    - pull_request
-    - push
+#---
+#kind: pipeline
+#name: memcache-redis-cluster
+#
+#steps:
+#- name: submodules
+#  image: docker:git
+#  commands:
+#    - git submodule update --init
+#- name: memcache-redis-cluster
+#  image: nextcloudci/php7.2:php7.2-12
+#  commands:
+#    - phpenmod xdebug
+#    - sleep 20
+#    - ENABLE_REDIS_CLUSTER=true ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
+#    - wget https://codecov.io/bash -O codecov.sh
+#    - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+#    - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+#
+#services:
+#- name: cache-cluster
+#  image: morrisjobke/redis-cluster
+#
+#trigger:
+#  branch:
+#    - master
+#    - stable*
+#  event:
+#    - pull_request
+#    - push
 
diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md
index a76e2be6657e74e40b1bd6edd428c4def5edea5f..f942d96c606c8cac710b7db36889c9b403d28c72 100644
--- a/.github/ISSUE_TEMPLATE/Feature_request.md
+++ b/.github/ISSUE_TEMPLATE/Feature_request.md
@@ -5,16 +5,18 @@ labels: enhancement, 0. Needs triage
 ---
 
 <!--
-Thanks for reporting issues back to Nextcloud! This is the issue tracker of Nextcloud, if you have any support question please check out https://nextcloud.com/support
+Thanks for reporting issues back to Nextcloud!
+
+Note: This is the **issue tracker of Nextcloud**, please do NOT use this to get answers to your questions or get help for fixing your installation. This is a place to report bugs to developers, after your server has been debugged. You can find help debugging your system on our home user forums: https://help.nextcloud.com or, if you use Nextcloud in a large organization, ask our engineers on https://portal.nextcloud.com. See also  https://nextcloud.com/support for support options.
 
 This is the bug tracker for the Server component. Find other components at https://github.com/nextcloud/
 
 For reporting potential security issues please see https://nextcloud.com/security/
 
-To make it possible for us to help you please fill out below information carefully. 
+To make it possible for us to best accommodate your use case, please fill out the information below carefully. 
 You can also use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
 
-If you are a customer, please submit your issue directly in the Nextcloud Portal https://portal.nextcloud.com so it gets resolved more quickly by our dedicated engineers.
+If you are a customer and are using Nextcloud Enterprise, please submit your issue directly in the Nextcloud Portal https://portal.nextcloud.com so it gets resolved more quickly by our dedicated engineers.
 
 Note that Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
 --> 
diff --git a/apps/accessibility/l10n/sq.js b/apps/accessibility/l10n/sq.js
index af5cb0835b704fd926559287a2fdac8400109284..35fe3415740ec784c46de13d4aa59983904419f6 100644
--- a/apps/accessibility/l10n/sq.js
+++ b/apps/accessibility/l10n/sq.js
@@ -3,6 +3,8 @@ OC.L10N.register(
     {
     "Dark theme" : "Temë e errët",
     "A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Një temë e errët për të lehtësuar sytë duke ulur shkëlqimin dhe ndritshmërinë e përgjithshme. Është ende në zhvillim, prandaj ju lutemi raportoni çdo çështje që mund të gjeni.",
+    "High contrast mode" : "Modalitet me kontrast të lartë",
+    "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Një modalitet me kontrast të lartë për të lehtësuar lundrimin. Cilësia vizuale do të reduktohet por qartësia do të rritet",
     "Dyslexia font" : "Fonti Dyslexia",
     "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic është një font / karakter tipografik i lirë i dizajnuar për të zbutur disa nga gabimet e zakonshme të leximit të shkaktuara nga disleksija.",
     "Accessibility" : "Aksesueshmëria",
diff --git a/apps/accessibility/l10n/sq.json b/apps/accessibility/l10n/sq.json
index aedf4590f49f7ce916494555188768adbae38cdb..29e2cdbbc571c3c9debe90993465194a4083c17d 100644
--- a/apps/accessibility/l10n/sq.json
+++ b/apps/accessibility/l10n/sq.json
@@ -1,6 +1,8 @@
 { "translations": {
     "Dark theme" : "Temë e errët",
     "A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Një temë e errët për të lehtësuar sytë duke ulur shkëlqimin dhe ndritshmërinë e përgjithshme. Është ende në zhvillim, prandaj ju lutemi raportoni çdo çështje që mund të gjeni.",
+    "High contrast mode" : "Modalitet me kontrast të lartë",
+    "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Një modalitet me kontrast të lartë për të lehtësuar lundrimin. Cilësia vizuale do të reduktohet por qartësia do të rritet",
     "Dyslexia font" : "Fonti Dyslexia",
     "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic është një font / karakter tipografik i lirë i dizajnuar për të zbutur disa nga gabimet e zakonshme të leximit të shkaktuara nga disleksija.",
     "Accessibility" : "Aksesueshmëria",
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index bc72fd24e7156eb9b3bdb71ec73452ebb591864c..3ce305d75f38ab74b02e578343752a484a6ba616 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -252,10 +252,22 @@ class File extends Node implements IFile {
 				try {
 					$this->changeLock(ILockingProvider::LOCK_EXCLUSIVE);
 				} catch (LockedException $e) {
-					if ($needsPartFile) {
-						$partStorage->unlink($internalPartPath);
+					// during very large uploads, the shared lock we got at the start might have been expired
+					// meaning that the above lock can fail not just only because somebody else got a shared lock
+					// or because there is no existing shared lock to make exclusive
+					//
+					// Thus we try to get a new exclusive lock, if the original lock failed because of a different shared
+					// lock this will still fail, if our original shared lock expired the new lock will be successful and
+					// the entire operation will be safe
+
+					try {
+						$this->acquireLock(ILockingProvider::LOCK_EXCLUSIVE);
+					} catch (LockedException $e) {
+						if ($needsPartFile) {
+							$partStorage->unlink($internalPartPath);
+						}
+						throw new FileLocked($e->getMessage(), $e->getCode(), $e);
 					}
-					throw new FileLocked($e->getMessage(), $e->getCode(), $e);
 				}
 
 				// rename to correct path
diff --git a/apps/dav/tests/unit/Connector/Sabre/FileTest.php b/apps/dav/tests/unit/Connector/Sabre/FileTest.php
index 3e3e80f752510bcaecb397142237e1c0824cdd6a..c579a904260bed711d55b99b3dc87a9b809aa189 100644
--- a/apps/dav/tests/unit/Connector/Sabre/FileTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/FileTest.php
@@ -1201,4 +1201,25 @@ class FileTest extends TestCase {
 
 		$this->assertEquals('new content', $view->file_get_contents('root/file.txt'));
 	}
+
+	public function testPutLockExpired() {
+		$view = new \OC\Files\View('/' . $this->user . '/files/');
+
+		$path = 'test-locking.txt';
+		$info = new \OC\Files\FileInfo(
+			'/' . $this->user . '/files/' . $path,
+			$this->getMockStorage(),
+			null,
+			['permissions' => \OCP\Constants::PERMISSION_ALL],
+			null
+		);
+
+		$file = new \OCA\DAV\Connector\Sabre\File($view, $info);
+
+		// don't lock before the PUT to simulate an expired shared lock
+		$this->assertNotEmpty($file->put($this->getStream('test data')));
+
+		// afterMethod unlocks
+		$view->unlockFile($path, ILockingProvider::LOCK_SHARED);
+	}
 }
diff --git a/apps/federatedfilesharing/l10n/sl.js b/apps/federatedfilesharing/l10n/sl.js
index 9d0e1a47a6d113686b958eba9be9b36d12ac11f8..5912baf709dd9dda5335f2269a142f8b78de9260 100644
--- a/apps/federatedfilesharing/l10n/sl.js
+++ b/apps/federatedfilesharing/l10n/sl.js
@@ -1,7 +1,7 @@
 OC.L10N.register(
     "federatedfilesharing",
     {
-    "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ali želite dodati oddaljeni delež {ime} od {lastnika}@{daljinsko}?",
+    "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ali želite dodati oddaljeno mesto uporabe {name} uporabnika {owner}@{remote}?",
     "Remote share" : "Oddaljeno mesto za souporabo",
     "Remote share password" : "Geslo za oddaljeno souporabo",
     "Cancel" : "Prekliči",
@@ -9,30 +9,33 @@ OC.L10N.register(
     "Copy" : "Kopiraj",
     "Copied!" : "Kopirano!",
     "Not supported!" : "Ni podprto!",
-    "Press ⌘-C to copy." : "Pritisni ⌘-C za kopiranje.",
-    "Press Ctrl-C to copy." : "Pritisni Ctrl-C za kopiranje.",
-    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka Nextcloud",
-    "Server to server sharing is not enabled on this server" : "Na tem strežniku souporaba strežnik na strežnik ni omogočena.",
+    "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.",
+    "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.",
+    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
+    "Server to server sharing is not enabled on this server" : "Na tem strežniku souporaba s strežnika na strežnik ni omogočena.",
     "Couldn't establish a federated share." : "Ni mogoče vzpostaviti zveznega mesta za souporabo.",
     "Couldn't establish a federated share, maybe the password was wrong." : "Zvezne povezave za souporabo ni mogoče ustvariti. Morda je navedeno napačno geslo.",
     "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Zvezne povezave za souporabo ni mogoče ustvariti. Kaže, da je podana zahteva za povezavo z nepodprto staro različico oblaka (Nextzcloud ≤ 9).",
-    "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
+    "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti mesta souporabe zveznega oblaka z istim uporabnikom",
     "File is already shared with %s" : "Datoteka je že v souporabi pri %s",
-    "Could not find share" : "Ni mogoče najti mape v souporabi",
+    "Could not find share" : "Mape v souporabi ni mogoče najti",
     "Federated sharing" : "Souporaba v zveznem oblaku",
     "Accept" : "Sprejmi",
     "Decline" : "Zavrni",
-    "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #Nextcloud ID zveznega oblaka, več na %s",
-    "Share with me through my #Nextcloud Federated Cloud ID" : "Omogoči souporabo prek #Nextcloud ID zveznega oblaka",
+    "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #Določila ID zveznega oblaka Nextcloud; več na %s",
+    "Share with me through my #Nextcloud Federated Cloud ID" : "Omogoči souporabo prek #Določila ID zveznega oblaka Nextcloud",
     "Sharing" : "Souporaba",
     "Federated file sharing" : "Souporaba v zveznem oblaku",
     "Provide federated file sharing across servers" : "Omogoči zvezno souporabo prek različnih strežnikov",
     "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
     "Open documentation" : "Odpri dokumentacijo",
+    "Adjust how people can share between servers." : "Določila, kako lahko uporabniki omogočajo souporabo med različnimi strežniki.",
     "Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
     "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
+    "Allow users on this server to send shares to groups on other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo za skupine na drugih strežnikih.",
+    "Search global and public address book for users" : "Preišči javne in splošne imenike za uporabnike",
     "Federated Cloud" : "Zvezni oblak",
-    "Your Federated Cloud ID:" : "Vaš ID zveznega oblaka:",
+    "Your Federated Cloud ID:" : "ID zveznega oblaka:",
     "Add to your website" : "Dodaj na spletišče",
     "Share with me via Nextcloud" : "Omogoči souporabo prek oblaka Nextcloud",
     "HTML Code:" : "Koda HTML:"
diff --git a/apps/federatedfilesharing/l10n/sl.json b/apps/federatedfilesharing/l10n/sl.json
index 619c2be222aa327f745d099407c02343ac6e6133..ebedbbfcc0668ae4a8f81185a76a678ae067b03f 100644
--- a/apps/federatedfilesharing/l10n/sl.json
+++ b/apps/federatedfilesharing/l10n/sl.json
@@ -1,5 +1,5 @@
 { "translations": {
-    "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ali želite dodati oddaljeni delež {ime} od {lastnika}@{daljinsko}?",
+    "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ali želite dodati oddaljeno mesto uporabe {name} uporabnika {owner}@{remote}?",
     "Remote share" : "Oddaljeno mesto za souporabo",
     "Remote share password" : "Geslo za oddaljeno souporabo",
     "Cancel" : "Prekliči",
@@ -7,30 +7,33 @@
     "Copy" : "Kopiraj",
     "Copied!" : "Kopirano!",
     "Not supported!" : "Ni podprto!",
-    "Press ⌘-C to copy." : "Pritisni ⌘-C za kopiranje.",
-    "Press Ctrl-C to copy." : "Pritisni Ctrl-C za kopiranje.",
-    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka Nextcloud",
-    "Server to server sharing is not enabled on this server" : "Na tem strežniku souporaba strežnik na strežnik ni omogočena.",
+    "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.",
+    "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.",
+    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
+    "Server to server sharing is not enabled on this server" : "Na tem strežniku souporaba s strežnika na strežnik ni omogočena.",
     "Couldn't establish a federated share." : "Ni mogoče vzpostaviti zveznega mesta za souporabo.",
     "Couldn't establish a federated share, maybe the password was wrong." : "Zvezne povezave za souporabo ni mogoče ustvariti. Morda je navedeno napačno geslo.",
     "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Zvezne povezave za souporabo ni mogoče ustvariti. Kaže, da je podana zahteva za povezavo z nepodprto staro različico oblaka (Nextzcloud ≤ 9).",
-    "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
+    "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti mesta souporabe zveznega oblaka z istim uporabnikom",
     "File is already shared with %s" : "Datoteka je že v souporabi pri %s",
-    "Could not find share" : "Ni mogoče najti mape v souporabi",
+    "Could not find share" : "Mape v souporabi ni mogoče najti",
     "Federated sharing" : "Souporaba v zveznem oblaku",
     "Accept" : "Sprejmi",
     "Decline" : "Zavrni",
-    "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #Nextcloud ID zveznega oblaka, več na %s",
-    "Share with me through my #Nextcloud Federated Cloud ID" : "Omogoči souporabo prek #Nextcloud ID zveznega oblaka",
+    "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #Določila ID zveznega oblaka Nextcloud; več na %s",
+    "Share with me through my #Nextcloud Federated Cloud ID" : "Omogoči souporabo prek #Določila ID zveznega oblaka Nextcloud",
     "Sharing" : "Souporaba",
     "Federated file sharing" : "Souporaba v zveznem oblaku",
     "Provide federated file sharing across servers" : "Omogoči zvezno souporabo prek različnih strežnikov",
     "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
     "Open documentation" : "Odpri dokumentacijo",
+    "Adjust how people can share between servers." : "Določila, kako lahko uporabniki omogočajo souporabo med različnimi strežniki.",
     "Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
     "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
+    "Allow users on this server to send shares to groups on other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo za skupine na drugih strežnikih.",
+    "Search global and public address book for users" : "Preišči javne in splošne imenike za uporabnike",
     "Federated Cloud" : "Zvezni oblak",
-    "Your Federated Cloud ID:" : "Vaš ID zveznega oblaka:",
+    "Your Federated Cloud ID:" : "ID zveznega oblaka:",
     "Add to your website" : "Dodaj na spletišče",
     "Share with me via Nextcloud" : "Omogoči souporabo prek oblaka Nextcloud",
     "HTML Code:" : "Koda HTML:"
diff --git a/apps/files/js/dist/sidebar.js b/apps/files/js/dist/sidebar.js
index ca27e1e896be4cc9172d8193acb150ef200b8341..c7e6e08b50e74bff4797396d32701cd23129e4e2 100644
Binary files a/apps/files/js/dist/sidebar.js and b/apps/files/js/dist/sidebar.js differ
diff --git a/apps/files/js/dist/sidebar.js.map b/apps/files/js/dist/sidebar.js.map
index c15c259d609377e4f61d69e6a13accb4eaf10882..a595a32aba7b115914710afbb23a4314656b9552 100644
Binary files a/apps/files/js/dist/sidebar.js.map and b/apps/files/js/dist/sidebar.js.map differ
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index 571cdcf6c38080557a32401d50cd3810acaa2a9d..24f8279116dea8dde1dd9fc274cb6aa1998347aa 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -708,7 +708,7 @@
 					// close sidebar on delete
 					const path = context.dir + '/' + fileName
 					if (OCA.Files.Sidebar && OCA.Files.Sidebar.file === path) {
-						OCA.Files.Sidebar.file = undefined
+						OCA.Files.Sidebar.close()
 					}
 				}
 			});
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 0424ba2006b02bec5225528b257f63fd7722d3be..d2a23283f12bc7e0274f022ebf715fe2246f833b 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -613,7 +613,7 @@
 			console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.');
 			this._updateDetailsView(fileName);
 			if (tabId) {
-				OCA.Files.Sidebar.activeTab = tabId;
+				OCA.Files.Sidebar.setActiveTab(tabId);
 			}
 		},
 
@@ -630,7 +630,7 @@
 			}
 
 			if (!fileName) {
-				OCA.Files.Sidebar.file = null
+				OCA.Files.Sidebar.close()
 				return
 			} else if (typeof fileName !== 'string') {
 				fileName = ''
@@ -644,7 +644,7 @@
 			var path = model.attributes.path + '/' + model.attributes.name
 
 			// open sidebar and set file
-			OCA.Files.Sidebar.file = path.replace('//', '/')
+			OCA.Files.Sidebar.open(path.replace('//', '/'))
 		},
 
 		/**
diff --git a/apps/files/js/operationprogressbar.js b/apps/files/js/operationprogressbar.js
old mode 100644
new mode 100755
index 1c054ec67b6bef9f01c8ea2aa333fe42cf8c4f6f..f1138163f1b3b35a734f24bfe35348b5e412aed0
--- a/apps/files/js/operationprogressbar.js
+++ b/apps/files/js/operationprogressbar.js
@@ -63,9 +63,10 @@
 			$('#uploadprogressbar .ui-progressbar-value>em').addClass('inner');
 			$('#uploadprogressbar>em').replaceWith(labelHtml);
 			$('#uploadprogressbar>em').addClass('outer');
-			$('#uploadprogressbar').tooltip({placement: 'bottom'});
-			if(title) {
-				$('#uploadprogressbar').attr('original-title', title);
+			$('#uploadprogressbar').tooltip({placement: 'bottom', container: '#uploadprogresswrapper'});
+			if (title) {
+				$('#uploadprogressbar').attr('data-original-title', title);
+				$('#uploadprogresswrapper .tooltip-inner').text(title);
 			}
 			if(textDesktop || textMobile) {
 				$('#uploadprogresswrapper .stop').show();
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index ee414f30e9ee54964074bd4f9e71073af4cd1cc7..0796adce15c694c5c6f371934d5a0f3c7385b22a 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -140,6 +140,7 @@ OC.L10N.register(
     "Error while loading the file data" : "Chyba při načítání dat souboru",
     "Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
     "%s used" : "%s použito",
+    "%s%% of %s used" : "%s%% z %s použito",
     "%1$s of %2$s used" : "%1$s z %2$s použito",
     "Settings" : "Nastavení",
     "Show hidden files" : "Zobrazit skryté soubory",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index 00c6a97d2dc939656f7df9884e0e011a5064de2f..ae00973a4ba64e52d0282778e2b176c4c80dddc4 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -138,6 +138,7 @@
     "Error while loading the file data" : "Chyba při načítání dat souboru",
     "Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
     "%s used" : "%s použito",
+    "%s%% of %s used" : "%s%% z %s použito",
     "%1$s of %2$s used" : "%1$s z %2$s použito",
     "Settings" : "Nastavení",
     "Show hidden files" : "Zobrazit skryté soubory",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index e35f4ec3a2770588f3b302d3460a251a2377557d..6866739dfc2e185a8699808cc47b82806a8d698f 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -26,6 +26,7 @@ OC.L10N.register(
     "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
     "Actions" : "작업",
     "Rename" : "이름 바꾸기",
+    "Delete folder" : "폴더 삭제",
     "Disconnect storage" : "저장소 연결 해제",
     "Unshare" : "공유 해제",
     "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 24b1891431149908f8a3681337270319c2fd7db4..7a9f4a1cc539327861f514b020f4ad0f7ec9b4ee 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -24,6 +24,7 @@
     "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
     "Actions" : "작업",
     "Rename" : "이름 바꾸기",
+    "Delete folder" : "폴더 삭제",
     "Disconnect storage" : "저장소 연결 해제",
     "Unshare" : "공유 해제",
     "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 54e44103ed57cf7cadc534736a629cbea20614f8..796bf7a1c7c0b75dd95c5adeb0ca0f1f783f082a 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -15,15 +15,15 @@ OC.L10N.register(
     "Close" : "Закрыть",
     "Could not create folder \"{dir}\"" : "Невозможно создать каталог «{dir}»",
     "This will stop your current uploads." : "Это действие остановит активные сеансы передачи файлов на сервер. ",
-    "Upload cancelled." : "Выгрузка отменена.",
+    "Upload cancelled." : "Отправка отменена.",
     "Processing files …" : "Обработка файлов…",
     "…" : "…",
-    "Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить «{filename}», так как это либо каталог, либо файл нулевого размера",
+    "Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно передать «{filename}», так как это либо каталог, либо файл нулевого размера",
     "Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, вы передаёте на сервер {size1}, но доступно только {size2}",
     "Target folder \"{dir}\" does not exist any more" : "Целевой каталог «{dir}» более не существует",
     "Not enough free space" : "Недостаточно свободного места",
     "An unknown error has occurred" : "Произошла неизвестная ошибка",
-    "Uploading …" : "Загрузка…",
+    "Uploading …" : "Передача…",
     "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
     "Uploading that item is not supported" : "Загрузка этого элемента не поддерживается",
     "Target folder does not exist any more" : "Каталог больше не существует",
@@ -68,8 +68,8 @@ OC.L10N.register(
     "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
     "{dirs} and {files}" : "{dirs} и {files}",
     "_including %n hidden_::_including %n hidden_" : ["включая %n скрытый","включая %n скрытых","включая %n скрытых","включая %n скрытых"],
-    "You don’t have permission to upload or create files here" : "У вас нет разрешений на создание или загрузку файлов в эту папку.",
-    "_Uploading %n file_::_Uploading %n files_" : ["Выгружа%nется  файл","Выгружаются %n файла","Выгружаются %n файлов","Загружаются %n файлов"],
+    "You don’t have permission to upload or create files here" : "У вас нет разрешений на создание или отправку файлов в эту папку.",
+    "_Uploading %n file_::_Uploading %n files_" : ["Выгружа%nется  файл","Выгружаются %n файла","Выгружаются %n файлов","Отправляются %n файлов"],
     "New" : "Новый",
     "Select file range" : "Выбор диапазона файлов",
     "{used} of {quota} used" : "использовано {used} из {quota}",
@@ -92,7 +92,7 @@ OC.L10N.register(
     "Favorite" : "Добавить в избранное",
     "You can only favorite a single file or folder at a time" : "Одновременно можно выбрать только один файл или папку",
     "New folder" : "Новый каталог",
-    "Upload file" : "Загрузить файл",
+    "Upload file" : "Отправить файл",
     "Not favorited" : "Не избранное",
     "Remove from favorites" : "Удалить из избранных",
     "Add to favorites" : "Добавить в избранное",
@@ -135,7 +135,7 @@ OC.L10N.register(
     "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничить уведомления о создании и изменении ваших <strong>избранных файлов</strong> <em>(отображать только в приложении события)</em>",
     "A file or folder has been <strong>restored</strong>" : "Файл или каталог <strong>восстановлен</strong>",
     "Unlimited" : "Неограничено",
-    "Upload (max. %s)" : "Загрузка (максимум %s)",
+    "Upload (max. %s)" : "Отправка (максимум %s)",
     "File Management" : "Управление файлами",
     "%s used" : "%s использовано",
     "%s%% of %s used" : "использовано %s%% из %s",
@@ -150,7 +150,7 @@ OC.L10N.register(
     "No entries found in this folder" : "В этом каталоге ничего не найдено",
     "Select all" : "Выбрать все",
     "Upload too large" : "Файл слишком велик",
-    "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файлы, которые вы пытаетесь загрузить, превышают лимит максимального размера на этом сервере.",
+    "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файлы, которые вы пытаетесь передать, превышают лимит максимального размера на этом сервере.",
     "No favorites yet" : "В избранное ещё ничего не добавлено ",
     "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные",
     "Tags" : "Метки",
@@ -163,12 +163,12 @@ OC.L10N.register(
     "Text file" : "Текстовый файл",
     "New text file.txt" : "Новый текстовый файл.txt",
     "File handling" : "Управление файлами",
-    "Maximum upload size" : "Максимальный размер загружаемого файла",
+    "Maximum upload size" : "Максимальный размер выгружаемого файла",
     "max. possible: " : "макс. возможно: ",
     "Save" : "Сохранить",
     "With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.",
     "Missing permissions to edit from here." : "Отсутствуют права на внесение здесь изменений.",
-    "Cancel upload" : "Отменить загрузку",
+    "Cancel upload" : "Отменить передачу",
     "%s of %s used" : "использовано %s из %s",
     "%1$s%% of %2$s used" : "использовано %1$s%% из %2$s"
 },
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 0bfeec70c37905acd0989a0582c0e7ba82a6a75b..ef859521c18a9528bf1696b07bfa59d3d8a9c823 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -13,15 +13,15 @@
     "Close" : "Закрыть",
     "Could not create folder \"{dir}\"" : "Невозможно создать каталог «{dir}»",
     "This will stop your current uploads." : "Это действие остановит активные сеансы передачи файлов на сервер. ",
-    "Upload cancelled." : "Выгрузка отменена.",
+    "Upload cancelled." : "Отправка отменена.",
     "Processing files …" : "Обработка файлов…",
     "…" : "…",
-    "Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить «{filename}», так как это либо каталог, либо файл нулевого размера",
+    "Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно передать «{filename}», так как это либо каталог, либо файл нулевого размера",
     "Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, вы передаёте на сервер {size1}, но доступно только {size2}",
     "Target folder \"{dir}\" does not exist any more" : "Целевой каталог «{dir}» более не существует",
     "Not enough free space" : "Недостаточно свободного места",
     "An unknown error has occurred" : "Произошла неизвестная ошибка",
-    "Uploading …" : "Загрузка…",
+    "Uploading …" : "Передача…",
     "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
     "Uploading that item is not supported" : "Загрузка этого элемента не поддерживается",
     "Target folder does not exist any more" : "Каталог больше не существует",
@@ -66,8 +66,8 @@
     "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
     "{dirs} and {files}" : "{dirs} и {files}",
     "_including %n hidden_::_including %n hidden_" : ["включая %n скрытый","включая %n скрытых","включая %n скрытых","включая %n скрытых"],
-    "You don’t have permission to upload or create files here" : "У вас нет разрешений на создание или загрузку файлов в эту папку.",
-    "_Uploading %n file_::_Uploading %n files_" : ["Выгружа%nется  файл","Выгружаются %n файла","Выгружаются %n файлов","Загружаются %n файлов"],
+    "You don’t have permission to upload or create files here" : "У вас нет разрешений на создание или отправку файлов в эту папку.",
+    "_Uploading %n file_::_Uploading %n files_" : ["Выгружа%nется  файл","Выгружаются %n файла","Выгружаются %n файлов","Отправляются %n файлов"],
     "New" : "Новый",
     "Select file range" : "Выбор диапазона файлов",
     "{used} of {quota} used" : "использовано {used} из {quota}",
@@ -90,7 +90,7 @@
     "Favorite" : "Добавить в избранное",
     "You can only favorite a single file or folder at a time" : "Одновременно можно выбрать только один файл или папку",
     "New folder" : "Новый каталог",
-    "Upload file" : "Загрузить файл",
+    "Upload file" : "Отправить файл",
     "Not favorited" : "Не избранное",
     "Remove from favorites" : "Удалить из избранных",
     "Add to favorites" : "Добавить в избранное",
@@ -133,7 +133,7 @@
     "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничить уведомления о создании и изменении ваших <strong>избранных файлов</strong> <em>(отображать только в приложении события)</em>",
     "A file or folder has been <strong>restored</strong>" : "Файл или каталог <strong>восстановлен</strong>",
     "Unlimited" : "Неограничено",
-    "Upload (max. %s)" : "Загрузка (максимум %s)",
+    "Upload (max. %s)" : "Отправка (максимум %s)",
     "File Management" : "Управление файлами",
     "%s used" : "%s использовано",
     "%s%% of %s used" : "использовано %s%% из %s",
@@ -148,7 +148,7 @@
     "No entries found in this folder" : "В этом каталоге ничего не найдено",
     "Select all" : "Выбрать все",
     "Upload too large" : "Файл слишком велик",
-    "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файлы, которые вы пытаетесь загрузить, превышают лимит максимального размера на этом сервере.",
+    "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файлы, которые вы пытаетесь передать, превышают лимит максимального размера на этом сервере.",
     "No favorites yet" : "В избранное ещё ничего не добавлено ",
     "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные",
     "Tags" : "Метки",
@@ -161,12 +161,12 @@
     "Text file" : "Текстовый файл",
     "New text file.txt" : "Новый текстовый файл.txt",
     "File handling" : "Управление файлами",
-    "Maximum upload size" : "Максимальный размер загружаемого файла",
+    "Maximum upload size" : "Максимальный размер выгружаемого файла",
     "max. possible: " : "макс. возможно: ",
     "Save" : "Сохранить",
     "With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.",
     "Missing permissions to edit from here." : "Отсутствуют права на внесение здесь изменений.",
-    "Cancel upload" : "Отменить загрузку",
+    "Cancel upload" : "Отменить передачу",
     "%s of %s used" : "использовано %s из %s",
     "%1$s%% of %2$s used" : "использовано %1$s%% из %2$s"
 },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 4642c083da05975dcf90eca43375967eac105e06..fdf3b242a35f4fdd157d4d6b6cb347b423a1955a 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -58,7 +58,7 @@ OC.L10N.register(
     "Could not rename \"{fileName}\"" : "Datoteke »{fileName}« ni mogoče preimenovati",
     "Could not create file \"{file}\"" : "Datoteke »{file}« ni mogoče ustvariti.",
     "Could not create file \"{file}\" because it already exists" : "Datoteke »{file}« ni mogoče ustvariti, ker datoteka z istim imenom že obstaja.",
-    "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape \"{dir}\", ker že obstaja",
+    "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape »{dir}«, ker ta že obstaja",
     "Error deleting file \"{fileName}\"." : "Prišli je do napake med brisanjem datoteke »{fileName}«.",
     "No search results in other folders for {tag}{filter}{endtag}" : "Za iskalni niz {tag}{filter}{endtag} ni zadetkov v nobeni mapi",
     "Name" : "Ime",
@@ -99,7 +99,7 @@ OC.L10N.register(
     "An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
     "Added to favorites" : "Dodano med priljubljene",
     "Removed from favorites" : "Odstranjeno iz priljubljenih",
-    "You added {file} to your favorites" : "Med priljubljene je dodana je datoteka {file}",
+    "You added {file} to your favorites" : "Med priljubljene dodate datoteko {file}",
     "You removed {file} from your favorites" : "Odstranili ste {file} od priljubljenih",
     "File changes" : "Spremembe datoteke",
     "Created by {user}" : "Ustvarjeno od {user}",
@@ -108,15 +108,15 @@ OC.L10N.register(
     "Restored by {user}" : "Obnovljeno od {user}",
     "Renamed by {user}" : "Preimenovano od {user}",
     "Moved by {user}" : "Premaknjeno od {user}",
-    "\"remote user\"" : "\"oddaljeni uporabnik\"",
+    "\"remote user\"" : "»oddaljeni uporabnik«",
     "You created {file}" : "Ustvarite datoteko {file}",
-    "You created an encrypted file in {file}" : "Ustvarjena je šifrirana datoteka v {file}",
+    "You created an encrypted file in {file}" : "Ustvarite šifrirano datoteko v {file}",
     "{user} created {file}" : "{user} ustvari datoteko {file}",
-    "{user} created an encrypted file in {file}" : "{user} ustvari šifrirano datoteko {file}",
-    "{file} was created in a public folder" : "{file} ustvarjena je bila v javni mapi",
+    "{user} created an encrypted file in {file}" : "{user} ustvari šifrirano datoteko v {file}",
+    "{file} was created in a public folder" : "Datoteka {file} je ustvarjena v javni mapi",
     "You changed {file}" : "Spremenite datoteko {file}",
     "You changed an encrypted file in {file}" : "Spremenite šifrirano datoteko v {file}",
-    "{user} changed {file}" : "{user} spremenil/a {file}",
+    "{user} changed {file}" : "{user} spremeni datoteko {file}",
     "{user} changed an encrypted file in {file}" : "Uporabnik {user} spremeni šifrirano datoteko {file}",
     "You deleted {file}" : "Izbrišete datoteko {file}",
     "You deleted an encrypted file in {file}" : "Izbrišete šifrirano datoteko {file}",
@@ -124,15 +124,15 @@ OC.L10N.register(
     "{user} deleted an encrypted file in {file}" : "{user} izbriše šifrirano datoteko {file}",
     "You restored {file}" : "Obnovite datoteko {file}",
     "{user} restored {file}" : "{user} obnovi datoteko {file}",
-    "You renamed {oldfile} to {newfile}" : "Preimenujete {oldfile} v {newfile}",
-    "{user} renamed {oldfile} to {newfile}" : "{user} preimenuje {oldfile} v {newfile}",
-    "You moved {oldfile} to {newfile}" : "Premaknete {oldfile} v {newfile}",
-    "{user} moved {oldfile} to {newfile}" : "{user} premakne {oldfile} v {newfile}",
-    "A file has been added to or removed from your <strong>favorites</strong>" : "Datoteka je bila ali dodana ali umaknjena iz <strong>priljubljenih</strong>",
+    "You renamed {oldfile} to {newfile}" : "Preimenujete datoteko {oldfile} v {newfile}",
+    "{user} renamed {oldfile} to {newfile}" : "{user} preimenuje datoteko {oldfile} v {newfile}",
+    "You moved {oldfile} to {newfile}" : "Premaknete datoteko {oldfile} v {newfile}",
+    "{user} moved {oldfile} to {newfile}" : "{user} premakne datoteko {oldfile} v {newfile}",
+    "A file has been added to or removed from your <strong>favorites</strong>" : "Datoteka je bila, ali dodana ali umaknjena iz <strong>priljubljenih</strong>",
     "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Datoteka ali mapa je bila <strong>spremenjena</strong> ali <strong>preimenovana</strong>",
     "A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je bila <strong>ustvarjena</strong>",
     "A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je bila <strong>izbrisana</strong>",
-    "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>",
+    "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih</strong> datotek <em>(le za pretok)</em>",
     "A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je bila <strong>obnovljena</strong>",
     "Unlimited" : "Neomejeno",
     "Upload (max. %s)" : "Pošiljanje (omejitev %s)",
@@ -158,12 +158,12 @@ OC.L10N.register(
     "Tags" : "Oznake",
     "Deleted files" : "Izbrisane datoteke",
     "Shares" : "Souporaba",
-    "Shared with others" : "V skupni rabi z ostalimi",
+    "Shared with others" : "V souporabi  z drugimi",
     "Shared with you" : "V skupni rabi z vami",
-    "Shared by link" : "Deljeno s povezavo",
-    "Deleted shares" : "Izbrisane povezave za souporabo",
+    "Shared by link" : "V souporabi prek povezave",
+    "Deleted shares" : "Izbrisana mesta souporabe",
     "Text file" : "Besedilna datoteka",
-    "New text file.txt" : "Nova datoteka.txt",
+    "New text file.txt" : "nova_datoteka.txt",
     "File handling" : "Upravljanje z datotekami",
     "Maximum upload size" : "Največja velikost za pošiljanje",
     "max. possible: " : "največ mogoče:",
@@ -171,7 +171,7 @@ OC.L10N.register(
     "With PHP-FPM it might take 5 minutes for changes to be applied." : "Uveljavljanje sprememb prek PHP-FPM lahko traja tudi 5  minut.",
     "Missing permissions to edit from here." : "Ni ustreznih dovoljenj za urejanje na tej ravni.",
     "Cancel upload" : "Prekliči pošiljanje",
-    "%s of %s used" : "%s od %s uporabljeno",
+    "%s of %s used" : "Uporabljeno %s od %s",
     "%1$s%% of %2$s used" : "Uporabljeno %1$s%% od %2$s"
 },
 "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 29a39f46050233a45100c74af9df2520a47a8fb4..accf76f76bbc268e4dad2c1424da21fb3fab972b 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -56,7 +56,7 @@
     "Could not rename \"{fileName}\"" : "Datoteke »{fileName}« ni mogoče preimenovati",
     "Could not create file \"{file}\"" : "Datoteke »{file}« ni mogoče ustvariti.",
     "Could not create file \"{file}\" because it already exists" : "Datoteke »{file}« ni mogoče ustvariti, ker datoteka z istim imenom že obstaja.",
-    "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape \"{dir}\", ker že obstaja",
+    "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape »{dir}«, ker ta že obstaja",
     "Error deleting file \"{fileName}\"." : "Prišli je do napake med brisanjem datoteke »{fileName}«.",
     "No search results in other folders for {tag}{filter}{endtag}" : "Za iskalni niz {tag}{filter}{endtag} ni zadetkov v nobeni mapi",
     "Name" : "Ime",
@@ -97,7 +97,7 @@
     "An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
     "Added to favorites" : "Dodano med priljubljene",
     "Removed from favorites" : "Odstranjeno iz priljubljenih",
-    "You added {file} to your favorites" : "Med priljubljene je dodana je datoteka {file}",
+    "You added {file} to your favorites" : "Med priljubljene dodate datoteko {file}",
     "You removed {file} from your favorites" : "Odstranili ste {file} od priljubljenih",
     "File changes" : "Spremembe datoteke",
     "Created by {user}" : "Ustvarjeno od {user}",
@@ -106,15 +106,15 @@
     "Restored by {user}" : "Obnovljeno od {user}",
     "Renamed by {user}" : "Preimenovano od {user}",
     "Moved by {user}" : "Premaknjeno od {user}",
-    "\"remote user\"" : "\"oddaljeni uporabnik\"",
+    "\"remote user\"" : "»oddaljeni uporabnik«",
     "You created {file}" : "Ustvarite datoteko {file}",
-    "You created an encrypted file in {file}" : "Ustvarjena je šifrirana datoteka v {file}",
+    "You created an encrypted file in {file}" : "Ustvarite šifrirano datoteko v {file}",
     "{user} created {file}" : "{user} ustvari datoteko {file}",
-    "{user} created an encrypted file in {file}" : "{user} ustvari šifrirano datoteko {file}",
-    "{file} was created in a public folder" : "{file} ustvarjena je bila v javni mapi",
+    "{user} created an encrypted file in {file}" : "{user} ustvari šifrirano datoteko v {file}",
+    "{file} was created in a public folder" : "Datoteka {file} je ustvarjena v javni mapi",
     "You changed {file}" : "Spremenite datoteko {file}",
     "You changed an encrypted file in {file}" : "Spremenite šifrirano datoteko v {file}",
-    "{user} changed {file}" : "{user} spremenil/a {file}",
+    "{user} changed {file}" : "{user} spremeni datoteko {file}",
     "{user} changed an encrypted file in {file}" : "Uporabnik {user} spremeni šifrirano datoteko {file}",
     "You deleted {file}" : "Izbrišete datoteko {file}",
     "You deleted an encrypted file in {file}" : "Izbrišete šifrirano datoteko {file}",
@@ -122,15 +122,15 @@
     "{user} deleted an encrypted file in {file}" : "{user} izbriše šifrirano datoteko {file}",
     "You restored {file}" : "Obnovite datoteko {file}",
     "{user} restored {file}" : "{user} obnovi datoteko {file}",
-    "You renamed {oldfile} to {newfile}" : "Preimenujete {oldfile} v {newfile}",
-    "{user} renamed {oldfile} to {newfile}" : "{user} preimenuje {oldfile} v {newfile}",
-    "You moved {oldfile} to {newfile}" : "Premaknete {oldfile} v {newfile}",
-    "{user} moved {oldfile} to {newfile}" : "{user} premakne {oldfile} v {newfile}",
-    "A file has been added to or removed from your <strong>favorites</strong>" : "Datoteka je bila ali dodana ali umaknjena iz <strong>priljubljenih</strong>",
+    "You renamed {oldfile} to {newfile}" : "Preimenujete datoteko {oldfile} v {newfile}",
+    "{user} renamed {oldfile} to {newfile}" : "{user} preimenuje datoteko {oldfile} v {newfile}",
+    "You moved {oldfile} to {newfile}" : "Premaknete datoteko {oldfile} v {newfile}",
+    "{user} moved {oldfile} to {newfile}" : "{user} premakne datoteko {oldfile} v {newfile}",
+    "A file has been added to or removed from your <strong>favorites</strong>" : "Datoteka je bila, ali dodana ali umaknjena iz <strong>priljubljenih</strong>",
     "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Datoteka ali mapa je bila <strong>spremenjena</strong> ali <strong>preimenovana</strong>",
     "A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je bila <strong>ustvarjena</strong>",
     "A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je bila <strong>izbrisana</strong>",
-    "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>",
+    "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih</strong> datotek <em>(le za pretok)</em>",
     "A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je bila <strong>obnovljena</strong>",
     "Unlimited" : "Neomejeno",
     "Upload (max. %s)" : "Pošiljanje (omejitev %s)",
@@ -156,12 +156,12 @@
     "Tags" : "Oznake",
     "Deleted files" : "Izbrisane datoteke",
     "Shares" : "Souporaba",
-    "Shared with others" : "V skupni rabi z ostalimi",
+    "Shared with others" : "V souporabi  z drugimi",
     "Shared with you" : "V skupni rabi z vami",
-    "Shared by link" : "Deljeno s povezavo",
-    "Deleted shares" : "Izbrisane povezave za souporabo",
+    "Shared by link" : "V souporabi prek povezave",
+    "Deleted shares" : "Izbrisana mesta souporabe",
     "Text file" : "Besedilna datoteka",
-    "New text file.txt" : "Nova datoteka.txt",
+    "New text file.txt" : "nova_datoteka.txt",
     "File handling" : "Upravljanje z datotekami",
     "Maximum upload size" : "Največja velikost za pošiljanje",
     "max. possible: " : "največ mogoče:",
@@ -169,7 +169,7 @@
     "With PHP-FPM it might take 5 minutes for changes to be applied." : "Uveljavljanje sprememb prek PHP-FPM lahko traja tudi 5  minut.",
     "Missing permissions to edit from here." : "Ni ustreznih dovoljenj za urejanje na tej ravni.",
     "Cancel upload" : "Prekliči pošiljanje",
-    "%s of %s used" : "%s od %s uporabljeno",
+    "%s of %s used" : "Uporabljeno %s od %s",
     "%1$s%% of %2$s used" : "Uporabljeno %1$s%% od %2$s"
 },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
 }
\ No newline at end of file
diff --git a/apps/files/lib/Command/TransferOwnership.php b/apps/files/lib/Command/TransferOwnership.php
index f417898f2172d06b9b48c902a564fc6d0371c436..a77a02a49475f20f0a6d7f1e6b760bbc22230ca2 100644
--- a/apps/files/lib/Command/TransferOwnership.php
+++ b/apps/files/lib/Command/TransferOwnership.php
@@ -32,6 +32,7 @@ use OC\Files\Filesystem;
 use OC\Files\View;
 use OCP\Files\FileInfo;
 use OCP\Files\IHomeStorage;
+use OCP\Files\IRootFolder;
 use OCP\Files\Mount\IMountManager;
 use OCP\IUser;
 use OCP\IUserManager;
@@ -76,7 +77,10 @@ class TransferOwnership extends Command {
 	/** @var string */
 	private $finalTarget;
 
-	public function __construct(IUserManager $userManager, IManager $shareManager, IMountManager $mountManager) {
+	public function __construct(IUserManager $userManager,
+								IManager $shareManager,
+								IMountManager $mountManager,
+								IRootFolder $rootFolder) {
 		$this->userManager = $userManager;
 		$this->shareManager = $shareManager;
 		$this->mountManager = $mountManager;
@@ -174,6 +178,15 @@ class TransferOwnership extends Command {
 	 */
 	protected function analyse(OutputInterface $output) {
 		$view = new View();
+
+		$output->writeln('Validating quota');
+		$size = $view->getFileInfo($this->sourcePath, false)->getSize(false);
+		$freeSpace = $view->free_space($this->destinationUser . '/files/');
+		if ($size > $freeSpace) {
+			$output->writeln('<error>Target user does not have enough free space available</error>');
+			throw new \Exception('Execution terminated');
+		}
+
 		$output->writeln("Analysing files of $this->sourceUser ...");
 		$progress = new ProgressBar($output);
 		$progress->start();
@@ -207,7 +220,6 @@ class TransferOwnership extends Command {
 			}
 			throw new \Exception('Execution terminated.');
 		}
-
 	}
 
 	/**
diff --git a/apps/files/src/services/Sidebar.js b/apps/files/src/services/Sidebar.js
index 2bb836272fa98ab3747e10b8976a951c26731d95..f2a1f8f21243b3fb6f07b503bcf643836e9fa343 100644
--- a/apps/files/src/services/Sidebar.js
+++ b/apps/files/src/services/Sidebar.js
@@ -49,11 +49,10 @@ export default class Sidebar {
 	}
 
 	/**
-	 * @memberof Sidebar
 	 * Register a new tab view
 	 *
-	 * @param {Object} tab a new unregistered tab
 	 * @memberof Sidebar
+	 * @param {Object} tab a new unregistered tab
 	 * @returns {Boolean}
 	 */
 	registerTab(tab) {
@@ -77,32 +76,41 @@ export default class Sidebar {
 	}
 
 	/**
-	 * Set the current sidebar file data
+	 * Open the sidebar for the given file
 	 *
-	 * @param {string} path the file path to load
 	 * @memberof Sidebar
+	 * @param {string} path the file path to load
 	 */
-	set file(path) {
+	open(path) {
 		this.#state.file = path
 	}
 
 	/**
-	 * Set the current sidebar file data
+	 * Close the sidebar
+	 *
+	 * @memberof Sidebar
+	 */
+	close() {
+		this.#state.file = ''
+	}
+
+	/**
+	 * Return current opened file
 	 *
-	 * @returns {String} the current opened file
 	 * @memberof Sidebar
+	 * @returns {String} the current opened file
 	 */
 	get file() {
 		return this.#state.file
 	}
 
 	/**
-	 * Set the current sidebar tab
+	 * Set the current visible sidebar tab
 	 *
-	 * @param {string} id the tab unique id
 	 * @memberof Sidebar
+	 * @param {string} id the tab unique id
 	 */
-	set activeTab(id) {
+	setActiveTab(id) {
 		this.#state.activeTab = id
 	}
 
diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue
index 02913d36877a1bf5a60fa28ed24e5d2845dc2ba1..47a2174b8cbae9cfc5227d01e3e2f586c41d6001 100644
--- a/apps/files/src/views/Sidebar.vue
+++ b/apps/files/src/views/Sidebar.vue
@@ -261,7 +261,7 @@ export default {
 		},
 		onClose() {
 			this.resetData()
-			OCA.Files.Sidebar.file = ''
+			OCA.Files.Sidebar.close()
 		},
 		resetData() {
 			this.error = null
@@ -297,7 +297,7 @@ export default {
 		 * @param {string} id tab unique id
 		 */
 		setActiveTab(id) {
-			OCA.Files.Sidebar.activeTab = id
+			OCA.Files.Sidebar.setActiveTab(id)
 		},
 
 		/**
diff --git a/apps/files_external/lib/Lib/Backend/SMB.php b/apps/files_external/lib/Lib/Backend/SMB.php
index a1fcd7fe305d9142d81a8ae3ae1a7e0a99489363..e9bb5665606e0d259e2db2d7ad354d0911d36050 100644
--- a/apps/files_external/lib/Lib/Backend/SMB.php
+++ b/apps/files_external/lib/Lib/Backend/SMB.php
@@ -55,6 +55,7 @@ class SMB extends Backend {
 					->setFlag(DefinitionParameter::FLAG_OPTIONAL),
 				(new DefinitionParameter('timeout', $l->t('Timeout')))
 					->setType(DefinitionParameter::VALUE_HIDDEN)
+					->setFlag(DefinitionParameter::FLAG_OPTIONAL),
 			])
 			->addAuthScheme(AuthMechanism::SCHEME_PASSWORD)
 			->addAuthScheme(AuthMechanism::SCHEME_SMB)
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 715b0f42666a33e83778dc6779c41bc4bd1cb61c..ccb564ad17dde9cae88f300047c18bd036b601c4 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -95,8 +95,8 @@ OC.L10N.register(
     "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором",
     "Please specify a valid group" : "Укажите верную группу",
     "Public link sharing is disabled by the administrator" : "Возможность предоставления общего доступа созданием общедоступных ссылок отключена администратором",
-    "Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
-    "Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
+    "Public upload disabled by the administrator" : "Выгрузка в общедоступную папку запрещена администратором",
+    "Public upload is only possible for publicly shared folders" : "Общедоступная выгрузка возможна только в общедоступные папки",
     "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
     "Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
     "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к  «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
@@ -133,7 +133,7 @@ OC.L10N.register(
     "Share note" : "Комментарий к общему ресурсу",
     "Toggle grid view" : "Включить или отключить режим просмотра сеткой",
     "Download %s" : "Скачать %s",
-    "Upload files to %s" : "Загрузка файлов пользователю %s",
+    "Upload files to %s" : "Отправка файлов пользователю %s",
     "Note" : "Примечание",
     "Select or drop files" : "Выберите или перетащите файлы",
     "Uploading files…" : "Файлы передаются на сервер…",
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index 6ed78b683afc245a3f52debacd0e88375589bd77..2808af7cf7c591335edbea2563d9363c09df1d69 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -93,8 +93,8 @@
     "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором",
     "Please specify a valid group" : "Укажите верную группу",
     "Public link sharing is disabled by the administrator" : "Возможность предоставления общего доступа созданием общедоступных ссылок отключена администратором",
-    "Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
-    "Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
+    "Public upload disabled by the administrator" : "Выгрузка в общедоступную папку запрещена администратором",
+    "Public upload is only possible for publicly shared folders" : "Общедоступная выгрузка возможна только в общедоступные папки",
     "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
     "Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
     "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к  «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
@@ -131,7 +131,7 @@
     "Share note" : "Комментарий к общему ресурсу",
     "Toggle grid view" : "Включить или отключить режим просмотра сеткой",
     "Download %s" : "Скачать %s",
-    "Upload files to %s" : "Загрузка файлов пользователю %s",
+    "Upload files to %s" : "Отправка файлов пользователю %s",
     "Note" : "Примечание",
     "Select or drop files" : "Выберите или перетащите файлы",
     "Uploading files…" : "Файлы передаются на сервер…",
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 2c3c9480077e860ccc188744d418870c4d6c09c5..d62633e92c60f8c104e6f6b7375bc77ab7454eb7 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -115,9 +115,9 @@ OC.L10N.register(
     "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin",
     "Share API is disabled" : "Paylaşım API arayüzü devre dışı",
     "Files sharing" : "Dosya paylaşımı",
-    "Share will expire tomorrow" : "Paylaşım yarın sona erecektir",
-    "One or more of your shares will expire tomorrow" : "Bir veya daha fazla paylaşımınız yarın sonra erecektir",
-    "Your share of {node} will expire tomorrow" : "{node} paylaşımınız yarın sona erecektir",
+    "Share will expire tomorrow" : "Paylaşımın süresi yarın dolacak",
+    "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın süresi yarın dolacak",
+    "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın süresi yarın dolacak",
     "File sharing" : "Dosya paylaşımı",
     "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Bu uygulama kullanıcıların Nextcloud üzerinde dosya paylaşabilmesini sağlar. Etkinleştirildiğinde, yöneticiler dosya paylaşabilecek grupları belirleyebilir. Seçilmiş gruplardaki kullanıcılar Nextcloud üzerindeki diğer kullanıcı ve gruplar ile dosya ve klasör paylaşabilir. Ek olarak, yönetici bağlantı paylaşımı özelliğini etkinleştirmiş ise, Nextcloud üzerinde olmayan kullanıcılar ile dosya paylaşımı bağlantıları kullanılabilir. Yöneticiler ayrıca parola ve son kullanma tarihi kullanımını zorunlu kılmanın yanında, paylaşım bağlantıları ile sunucudan sunucuya paylaşım ve mobil aygıtlar ile paylaşım gibi özellikleri etkinleştirebilir.\nBu özellik devre dışı bırakıldığında, sunucu, eşitleme istemcileri ve mobil uygulamalar üzerinden alıcılar ile paylaşılmış dosya ve klasörler kaldırılır. Ayrıntılı bilgi almak için Nextcloud belgelerine bakabilirsiniz.",
     "Allow editing" : "Düzenlemeye izin ver",
@@ -178,7 +178,7 @@ OC.L10N.register(
     "Enter a note for the share recipient" : "Paylaşım alıcısı için bir not yazın",
     "Shared" : "Paylaşılan",
     "Share" : "PaylaÅŸ",
-    "Shared with" : "Paylaşılan",
+    "Shared with" : "Şunlarla paylaşılmış",
     "Shared with you and the group {group} by {owner}" : "{owner} tarafından sizinle ve {group} gubu ile paylaşılmış",
     "Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} çevresi ile paylaşılmış",
     "Shared with you and the conversation {conversation} by {owner}" : "{owner} tarafından sizinle ve {conversation} görüşmesi ile paylaştırılmış",
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index ff2e88a097c561e0a3f23c7dff393473e16df98a..8690be5aa5805fd9521ba15cd9a9e7fe0faaf0f8 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -113,9 +113,9 @@
     "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin",
     "Share API is disabled" : "Paylaşım API arayüzü devre dışı",
     "Files sharing" : "Dosya paylaşımı",
-    "Share will expire tomorrow" : "Paylaşım yarın sona erecektir",
-    "One or more of your shares will expire tomorrow" : "Bir veya daha fazla paylaşımınız yarın sonra erecektir",
-    "Your share of {node} will expire tomorrow" : "{node} paylaşımınız yarın sona erecektir",
+    "Share will expire tomorrow" : "Paylaşımın süresi yarın dolacak",
+    "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın süresi yarın dolacak",
+    "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın süresi yarın dolacak",
     "File sharing" : "Dosya paylaşımı",
     "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Bu uygulama kullanıcıların Nextcloud üzerinde dosya paylaşabilmesini sağlar. Etkinleştirildiğinde, yöneticiler dosya paylaşabilecek grupları belirleyebilir. Seçilmiş gruplardaki kullanıcılar Nextcloud üzerindeki diğer kullanıcı ve gruplar ile dosya ve klasör paylaşabilir. Ek olarak, yönetici bağlantı paylaşımı özelliğini etkinleştirmiş ise, Nextcloud üzerinde olmayan kullanıcılar ile dosya paylaşımı bağlantıları kullanılabilir. Yöneticiler ayrıca parola ve son kullanma tarihi kullanımını zorunlu kılmanın yanında, paylaşım bağlantıları ile sunucudan sunucuya paylaşım ve mobil aygıtlar ile paylaşım gibi özellikleri etkinleştirebilir.\nBu özellik devre dışı bırakıldığında, sunucu, eşitleme istemcileri ve mobil uygulamalar üzerinden alıcılar ile paylaşılmış dosya ve klasörler kaldırılır. Ayrıntılı bilgi almak için Nextcloud belgelerine bakabilirsiniz.",
     "Allow editing" : "Düzenlemeye izin ver",
@@ -176,7 +176,7 @@
     "Enter a note for the share recipient" : "Paylaşım alıcısı için bir not yazın",
     "Shared" : "Paylaşılan",
     "Share" : "PaylaÅŸ",
-    "Shared with" : "Paylaşılan",
+    "Shared with" : "Şunlarla paylaşılmış",
     "Shared with you and the group {group} by {owner}" : "{owner} tarafından sizinle ve {group} gubu ile paylaşılmış",
     "Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} çevresi ile paylaşılmış",
     "Shared with you and the conversation {conversation} by {owner}" : "{owner} tarafından sizinle ve {conversation} görüşmesi ile paylaştırılmış",
diff --git a/apps/files_versions/js/files_versions.js b/apps/files_versions/js/files_versions.js
index 4ff8ae1a75504cca595114f5673b0c539e42b930..35dd26a448064940e192f36543ef67d971d5f8d6 100644
Binary files a/apps/files_versions/js/files_versions.js and b/apps/files_versions/js/files_versions.js differ
diff --git a/apps/files_versions/js/files_versions.js.map b/apps/files_versions/js/files_versions.js.map
index 52b6ac1997c7b2a8c58ba7a632ccdbb645f82674..a4445cf035d157fc8b00712c2b64c990d766906b 100644
Binary files a/apps/files_versions/js/files_versions.js.map and b/apps/files_versions/js/files_versions.js.map differ
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index a2e30cd7494904675062e2b6d2ab90e87e6fa0b3..78e4b4d84bb28d0cb86e2884a3ffbcfb07f69436 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Uložit změny",
     "This app is supported via your current Nextcloud subscription." : "Tato aplikace je podporována prostřednictvím vašeho stávajícího předplatného Nextcloud.",
     "Supported" : "Podporováno",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Doporučené aplikace jsou vyvíjeny komunitou. Jsou propojeny do zbytkem nextcloudu a připraveny na produkční nasazení.",
+    "Featured" : "Doporučené",
     "by" : "od",
     "Update to {version}" : "Aktualizovat na {version}",
     "Remove" : "Odstranit",
@@ -206,9 +208,11 @@ OC.L10N.register(
     "Enable user" : "Zpřístupnit uživatelský účet",
     "Resend welcome email" : "Znovu poslat uvítací e-mail",
     "{size} used" : "{size} použito",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "V případě ztráty zařízení, nebo např. odchodu z firmy, toto může vzdáleně vymazat Nextcloud data ze všech zařízení asociovaných s uživatelem {userid}. Funguje jen pokud se zařízení připojí k internetu.",
     "Remote wipe of devices" : "Vymazat obsah zařízení na dálku",
     "Wipe {userid}'s devices" : "Vymazat zařízení {userid}",
     "Cancel" : "Storno",
+    "Fully delete {userid}'s account including all their personal files, app data, etc." : "Naprosto vymazat účet {userid}, všechny osobní soubory, data atd.",
     "Account deletion" : "Smazání účtu",
     "Delete {userid}'s account" : "Smazat účet {userid}",
     "Welcome mail sent!" : "Uvítací e-mail odeslán!",
@@ -384,19 +388,26 @@ OC.L10N.register(
     "Press ⌘-C to copy." : "Zkopírujete stisknutím ⌘-C.",
     "Press Ctrl-C to copy." : "Zkopírujete stisknutím Ctrl-C.",
     "Error while loading browser sessions and device tokens" : "Chyba při načítání sezení prohlížeče a tokenů přístroje",
+    "Afrikaans (Namibia)" : "Afrikánština (Namibie)",
     "Afrikaans (South Africa)" : "afrikánština (Jihoafrická republika)",
     "Afrikaans" : "Afrikánština",
+    "Akan (Ghana)" : "Akanština (Ghana)",
+    "Akan" : "Akanština",
     "Albanian (Albania)" : "albánština (Albánie)",
     "Albanian" : "Albánština",
     "Amharic (Ethiopia)" : "amharština (Etiopie)",
     "Arabic (Algeria)" : "arabština (Alžír)",
+    "Arabic (Bahrain)" : "Arabština (Bahrain)",
     "Arabic (Egypt)" : "Arabština (Egypt)",
     "Arabic (Iraq)" : "Arabština (Irák)",
     "Arabic (Jordan)" : "Arabština (Jordán)",
     "Arabic (Kuwait)" : "Arabština (Kuvajt)",
     "Arabic (Lebanon)" : "Arabština (Libanon)",
     "Arabic (Libya)" : "Arabština (Libye)",
+    "Arabic (Morocco)" : "Arabština (Moroko)",
+    "Arabic (Oman)" : "Arabština (Omán)",
     "Arabic (Qatar)" : "arabština (Katar)",
+    "Arabic (Saudi Arabia)" : "Arabština (Saudská Arábie)",
     "Arabic (Yemen)" : "arabština (Jemen)",
     "Arabic" : "arabština",
     "Armenian" : "arménština",
@@ -563,6 +574,7 @@ OC.L10N.register(
     "Vietnamese" : "Vietnamština",
     "Welsh" : "Velština",
     "Yoruba" : "jorubština",
+    "Zulu (South Africa)" : "Zuluština (Jihoafrická republika)",
     "Zulu" : "zuluština",
     "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou. Poskytují klíčové funkce a jsou připravené na produkční nasazení.",
     "Official" : "Oficiální",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 63a39c268f49d812cbb2445ec208620374ebeeb0..79dc269be4f94006e763fc8647c60fe90a963db8 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -121,6 +121,8 @@
     "Save changes" : "Uložit změny",
     "This app is supported via your current Nextcloud subscription." : "Tato aplikace je podporována prostřednictvím vašeho stávajícího předplatného Nextcloud.",
     "Supported" : "Podporováno",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Doporučené aplikace jsou vyvíjeny komunitou. Jsou propojeny do zbytkem nextcloudu a připraveny na produkční nasazení.",
+    "Featured" : "Doporučené",
     "by" : "od",
     "Update to {version}" : "Aktualizovat na {version}",
     "Remove" : "Odstranit",
@@ -204,9 +206,11 @@
     "Enable user" : "Zpřístupnit uživatelský účet",
     "Resend welcome email" : "Znovu poslat uvítací e-mail",
     "{size} used" : "{size} použito",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "V případě ztráty zařízení, nebo např. odchodu z firmy, toto může vzdáleně vymazat Nextcloud data ze všech zařízení asociovaných s uživatelem {userid}. Funguje jen pokud se zařízení připojí k internetu.",
     "Remote wipe of devices" : "Vymazat obsah zařízení na dálku",
     "Wipe {userid}'s devices" : "Vymazat zařízení {userid}",
     "Cancel" : "Storno",
+    "Fully delete {userid}'s account including all their personal files, app data, etc." : "Naprosto vymazat účet {userid}, všechny osobní soubory, data atd.",
     "Account deletion" : "Smazání účtu",
     "Delete {userid}'s account" : "Smazat účet {userid}",
     "Welcome mail sent!" : "Uvítací e-mail odeslán!",
@@ -382,19 +386,26 @@
     "Press ⌘-C to copy." : "Zkopírujete stisknutím ⌘-C.",
     "Press Ctrl-C to copy." : "Zkopírujete stisknutím Ctrl-C.",
     "Error while loading browser sessions and device tokens" : "Chyba při načítání sezení prohlížeče a tokenů přístroje",
+    "Afrikaans (Namibia)" : "Afrikánština (Namibie)",
     "Afrikaans (South Africa)" : "afrikánština (Jihoafrická republika)",
     "Afrikaans" : "Afrikánština",
+    "Akan (Ghana)" : "Akanština (Ghana)",
+    "Akan" : "Akanština",
     "Albanian (Albania)" : "albánština (Albánie)",
     "Albanian" : "Albánština",
     "Amharic (Ethiopia)" : "amharština (Etiopie)",
     "Arabic (Algeria)" : "arabština (Alžír)",
+    "Arabic (Bahrain)" : "Arabština (Bahrain)",
     "Arabic (Egypt)" : "Arabština (Egypt)",
     "Arabic (Iraq)" : "Arabština (Irák)",
     "Arabic (Jordan)" : "Arabština (Jordán)",
     "Arabic (Kuwait)" : "Arabština (Kuvajt)",
     "Arabic (Lebanon)" : "Arabština (Libanon)",
     "Arabic (Libya)" : "Arabština (Libye)",
+    "Arabic (Morocco)" : "Arabština (Moroko)",
+    "Arabic (Oman)" : "Arabština (Omán)",
     "Arabic (Qatar)" : "arabština (Katar)",
+    "Arabic (Saudi Arabia)" : "Arabština (Saudská Arábie)",
     "Arabic (Yemen)" : "arabština (Jemen)",
     "Arabic" : "arabština",
     "Armenian" : "arménština",
@@ -561,6 +572,7 @@
     "Vietnamese" : "Vietnamština",
     "Welsh" : "Velština",
     "Yoruba" : "jorubština",
+    "Zulu (South Africa)" : "Zuluština (Jihoafrická republika)",
     "Zulu" : "zuluština",
     "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou. Poskytují klíčové funkce a jsou připravené na produkční nasazení.",
     "Official" : "Oficiální",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 955f84389c2c50fb60056882c8cd9a656fae4ae9..293ad4c8db4d06693f57d9e0033b506a7ad5b3a4 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Änderungen speichern",
     "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.",
     "Supported" : "Unterstützt",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
+    "Featured" : "Offiziell",
     "by" : "von",
     "Update to {version}" : "Aktualisieren auf {version}",
     "Remove" : "Entfernen",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index b65629d5bab3081b821d8ce33d13d9b210213151..0d125f45dfcc0a80f037ab98362b5a874ca5ba84 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -121,6 +121,8 @@
     "Save changes" : "Änderungen speichern",
     "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.",
     "Supported" : "Unterstützt",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
+    "Featured" : "Offiziell",
     "by" : "von",
     "Update to {version}" : "Aktualisieren auf {version}",
     "Remove" : "Entfernen",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index fef35671e0fe16beca7f0531f151086abd1242e9..d1945c38bf56047cedd2de6cd7b99918fe25c069 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Änderungen speichern ",
     "This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.",
     "Supported" : "Unterstützt",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
+    "Featured" : "Offiziell",
     "by" : "von",
     "Update to {version}" : "Aktualisieren auf {version}",
     "Remove" : "Entfernen",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index 7e4d01e19f0db895ec0bf321b6dad55c41056f74..e19617bba277f505cb7b336e079c37d439985466 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -121,6 +121,8 @@
     "Save changes" : "Änderungen speichern ",
     "This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.",
     "Supported" : "Unterstützt",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
+    "Featured" : "Offiziell",
     "by" : "von",
     "Update to {version}" : "Aktualisieren auf {version}",
     "Remove" : "Entfernen",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index 522d6e30133bee63c3b3d4be67fc71b4823b2c72..64dcd7ae1aa69a4c2f68a9c3e7a7eab61cd8c55e 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Guardar cambios",
     "This app is supported via your current Nextcloud subscription." : "Esta App está soportada a través de su suscripción actual de Nexcloud.",
     "Supported" : "Soportada",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps destacadas son d estrelladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y está preparadas para su empleo en producción. ",
+    "Featured" : "Destacadas",
     "by" : "por",
     "Update to {version}" : "Actualizar a {version}",
     "Remove" : "Eliminar",
@@ -206,6 +208,7 @@ OC.L10N.register(
     "Enable user" : "Habilitar usuario",
     "Resend welcome email" : "Volver a enviar correo de bienvenida",
     "{size} used" : "{size} usados",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "En caso de pérdida del dispositivo o dejar la organización, esto elimina remotamente los datos de Nextcloud de todos los dispositivos asociados con {userid}. Nota: sólo funciona si los dispositivos están conectados a Internet.",
     "Remote wipe of devices" : "Eliminación remota de dispositivos",
     "Wipe {userid}'s devices" : "Eliminar dispositivos de {userid}",
     "Cancel" : "Cancelar",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index a95879c5ce4f37443ace702a7f03f3b28deaf051..f99178ddf55debcd93294b2785b6c1d9080a133e 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -121,6 +121,8 @@
     "Save changes" : "Guardar cambios",
     "This app is supported via your current Nextcloud subscription." : "Esta App está soportada a través de su suscripción actual de Nexcloud.",
     "Supported" : "Soportada",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps destacadas son d estrelladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y está preparadas para su empleo en producción. ",
+    "Featured" : "Destacadas",
     "by" : "por",
     "Update to {version}" : "Actualizar a {version}",
     "Remove" : "Eliminar",
@@ -204,6 +206,7 @@
     "Enable user" : "Habilitar usuario",
     "Resend welcome email" : "Volver a enviar correo de bienvenida",
     "{size} used" : "{size} usados",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "En caso de pérdida del dispositivo o dejar la organización, esto elimina remotamente los datos de Nextcloud de todos los dispositivos asociados con {userid}. Nota: sólo funciona si los dispositivos están conectados a Internet.",
     "Remote wipe of devices" : "Eliminación remota de dispositivos",
     "Wipe {userid}'s devices" : "Eliminar dispositivos de {userid}",
     "Cancel" : "Cancelar",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index bb48fe111c8aa0b2feda8969b76cc120ce771e75..55ed6491d21c0c57fbff1f3d6773ef58979c7ed6 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -206,7 +206,10 @@ OC.L10N.register(
     "Enable user" : "Activer l'utilisateur",
     "Resend welcome email" : "Renvoyer l'e-mail de bienvenue",
     "{size} used" : "{size} utilisé",
+    "Remote wipe of devices" : "Vider les appareils à distance",
+    "Wipe {userid}'s devices" : "Vider les appareils de {userid}",
     "Cancel" : "Annuler",
+    "Account deletion" : "Suppression de compte",
     "Delete {userid}'s account" : "Supprimer le compte {userid}",
     "Welcome mail sent!" : "E-mail de bienvenue envoyé !",
     "Display name" : "Nom à afficher",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index e33468d6b7d3c07647fa6931f8daa2a377a535a5..4459c9e38f5fac625b7306d871544a9487be78ad 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -204,7 +204,10 @@
     "Enable user" : "Activer l'utilisateur",
     "Resend welcome email" : "Renvoyer l'e-mail de bienvenue",
     "{size} used" : "{size} utilisé",
+    "Remote wipe of devices" : "Vider les appareils à distance",
+    "Wipe {userid}'s devices" : "Vider les appareils de {userid}",
     "Cancel" : "Annuler",
+    "Account deletion" : "Suppression de compte",
     "Delete {userid}'s account" : "Supprimer le compte {userid}",
     "Welcome mail sent!" : "E-mail de bienvenue envoyé !",
     "Display name" : "Nom à afficher",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index f381597be1c0e45fe834a16ab15b7bbcc9e41b57..3d064d98d2112c5c0d62c28346b92e38572f7783 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Gardar os cambios",
     "This app is supported via your current Nextcloud subscription." : "Esta aplicación é compatíbel cos súa subscrición actual a Nextcloud.",
     "Supported" : "Compatíbel",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.",
+    "Featured" : "Destacada",
     "by" : "por",
     "Update to {version}" : "Actualizar a {version}",
     "Remove" : "Retirar",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index e6964181c0ef184afe2f6eee173f933020413475..2a2b7025d6ba5e4afb844b6fc65ff13f46c37e74 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -121,6 +121,8 @@
     "Save changes" : "Gardar os cambios",
     "This app is supported via your current Nextcloud subscription." : "Esta aplicación é compatíbel cos súa subscrición actual a Nextcloud.",
     "Supported" : "Compatíbel",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.",
+    "Featured" : "Destacada",
     "by" : "por",
     "Update to {version}" : "Actualizar a {version}",
     "Remove" : "Retirar",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index a7c9f23d9a94ffe2d9cdeac013e237b3cb631573..d5b7c79f7495fb57ab9cd010c85991f6a6be109b 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Salva le modifiche",
     "This app is supported via your current Nextcloud subscription." : "Questa applicazione è supportata tramite la tua sottoscrizione attuale di Nextcloud.",
     "Supported" : "Supportata",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni in evidenza sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
+    "Featured" : "In evidenza",
     "by" : "di",
     "Update to {version}" : "Aggiorna a {version}",
     "Remove" : "Rimuovi",
@@ -820,8 +822,8 @@ OC.L10N.register(
     "Yoruba" : "Yoruba",
     "Zulu (South Africa)" : "Zulu (Sud Africa)",
     "Zulu" : "Zulu",
-    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove  funzionalità e sono pronte per l'uso in produzione.",
-    "Official" : "Ufficiale",
+    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
+    "Official" : "Ufficiali",
     "Store credentials" : "Memorizza le credenziali",
     "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 15 minuti su HTTP.",
     "Use system cron service to call the cron.php file every 15 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 15 minuti.",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index 96b13a07f77aeb449773fdd82a1f6d359eaaa767..03905d1baf2ff87f09b2b6c19bc8cca3afafabd2 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -121,6 +121,8 @@
     "Save changes" : "Salva le modifiche",
     "This app is supported via your current Nextcloud subscription." : "Questa applicazione è supportata tramite la tua sottoscrizione attuale di Nextcloud.",
     "Supported" : "Supportata",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni in evidenza sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
+    "Featured" : "In evidenza",
     "by" : "di",
     "Update to {version}" : "Aggiorna a {version}",
     "Remove" : "Rimuovi",
@@ -818,8 +820,8 @@
     "Yoruba" : "Yoruba",
     "Zulu (South Africa)" : "Zulu (Sud Africa)",
     "Zulu" : "Zulu",
-    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove  funzionalità e sono pronte per l'uso in produzione.",
-    "Official" : "Ufficiale",
+    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
+    "Official" : "Ufficiali",
     "Store credentials" : "Memorizza le credenziali",
     "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 15 minuti su HTTP.",
     "Use system cron service to call the cron.php file every 15 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 15 minuti.",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 77fd89a8e4b9c15ec6fed878d92882db31468bf4..385970fa72bc08fcc6d3d2791b675a2153b560de 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -29,6 +29,7 @@ OC.L10N.register(
     "An error occurred while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
     "An error occurred while changing your locale. Please reload the page and try again." : "지역을 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
     "Select a profile picture" : "프로필 사진 선택",
+    "Week starts on {fdow}" : "{fdow}에 한 주가 시작합니다.",
     "Groups" : "그룹",
     "Group list is empty" : "그룹 목록이 비었음",
     "Unable to retrieve the group list" : "그룹 목록을 받아올 수 없음",
@@ -144,6 +145,7 @@ OC.L10N.register(
     "This session" : "이 세션",
     "Device" : "장치",
     "Last activity" : "최근 활동",
+    "Devices & sessions" : "디바이스 & 세션",
     "Web, desktop and mobile clients currently logged in to your account." : "사용자 계정으로 로그인된 웹, 데스크톱, 모바일 클라이언트 목록입니다.",
     "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다",
     "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다",
@@ -239,6 +241,7 @@ OC.L10N.register(
     "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.",
     "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.",
     "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중",
+    "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">설치 가이드 ↗</a>를 다시 한 번 확인한 다음 <a href=\"%2$s\">로그</a>의 경고나 에러를 확인하세요.",
     "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.",
     "Version" : "버전",
     "Two-Factor Authentication" : "2단계 인증",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index 1b682f736b67de3a4ccc0cc39cb678800af67b96..5a6e48fd91bc2fde05356d9b2f6d2941b8534fa8 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -27,6 +27,7 @@
     "An error occurred while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
     "An error occurred while changing your locale. Please reload the page and try again." : "지역을 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
     "Select a profile picture" : "프로필 사진 선택",
+    "Week starts on {fdow}" : "{fdow}에 한 주가 시작합니다.",
     "Groups" : "그룹",
     "Group list is empty" : "그룹 목록이 비었음",
     "Unable to retrieve the group list" : "그룹 목록을 받아올 수 없음",
@@ -142,6 +143,7 @@
     "This session" : "이 세션",
     "Device" : "장치",
     "Last activity" : "최근 활동",
+    "Devices & sessions" : "디바이스 & 세션",
     "Web, desktop and mobile clients currently logged in to your account." : "사용자 계정으로 로그인된 웹, 데스크톱, 모바일 클라이언트 목록입니다.",
     "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다",
     "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다",
@@ -237,6 +239,7 @@
     "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.",
     "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.",
     "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중",
+    "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">설치 가이드 ↗</a>를 다시 한 번 확인한 다음 <a href=\"%2$s\">로그</a>의 경고나 에러를 확인하세요.",
     "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.",
     "Version" : "버전",
     "Two-Factor Authentication" : "2단계 인증",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index 8b781d7f2f1195444bec4a5544c52f2230d2fde7..8e17ec75938dcdc99bd54248c01938079d1e4848 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Zapisz zmiany",
     "This app is supported via your current Nextcloud subscription." : "Ta aplikacja jest obsługiwana za pośrednictwem bieżącej subskrypcji Nextcloud.",
     "Supported" : "Wspierany",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Polecane aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.",
+    "Featured" : "Polecane",
     "by" : "przez",
     "Update to {version}" : "Aktualizuj do {version}",
     "Remove" : "Usuń",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index 8ea20710c3db0c70ade2154031a45970a0230192..daaf96e9c6ede6e9f3bab3ac25b145646a22544c 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -121,6 +121,8 @@
     "Save changes" : "Zapisz zmiany",
     "This app is supported via your current Nextcloud subscription." : "Ta aplikacja jest obsługiwana za pośrednictwem bieżącej subskrypcji Nextcloud.",
     "Supported" : "Wspierany",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Polecane aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.",
+    "Featured" : "Polecane",
     "by" : "przez",
     "Update to {version}" : "Aktualizuj do {version}",
     "Remove" : "Usuń",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 06fb02c14fa63c209072ebd8b5aa7ff1600d4c70..d00d6a40074bbcd91f34a88f436eb32b0da1a4c6 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Salvar mudanças",
     "This app is supported via your current Nextcloud subscription." : "Este aplicativo é suportado pela sua assinatura atual do Nextcloud.",
     "Supported" : "Suportado",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos em destaque são desenvolvidos pela comunidade. Eles oferecem funcionalidade central e estão prontos para uso em produção.",
+    "Featured" : "Destaques",
     "by" : "por",
     "Update to {version}" : "Atualizar para {version}",
     "Remove" : "Excluir",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index d6883fee0bba2e87177d5af43fd9034d95ea7849..9c8fbf54b18b856b313a871f4d5f9733ceed9576 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -121,6 +121,8 @@
     "Save changes" : "Salvar mudanças",
     "This app is supported via your current Nextcloud subscription." : "Este aplicativo é suportado pela sua assinatura atual do Nextcloud.",
     "Supported" : "Suportado",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos em destaque são desenvolvidos pela comunidade. Eles oferecem funcionalidade central e estão prontos para uso em produção.",
+    "Featured" : "Destaques",
     "by" : "por",
     "Update to {version}" : "Atualizar para {version}",
     "Remove" : "Excluir",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index 42c69ce5f623e71a2b19427cfb611384901de603..63c04f5add480be1d5a454adeba4ea1a54355790 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -7,7 +7,7 @@ OC.L10N.register(
     "Not saved" : "Не сохранено",
     "Sending…" : "Отправка…",
     "Email sent" : "Письмо отправлено",
-    "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.",
+    "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста отправьте сертификат PEM в ASCII кодировке.",
     "Valid until {date}" : "Действительно до {дата}",
     "Delete" : "Удалить",
     "Local" : "Локально",
@@ -295,7 +295,7 @@ OC.L10N.register(
     "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.",
     "Enable server-side encryption" : "Включить шифрование на стороне сервера",
     "Please read carefully before activating server-side encryption: " : "Внимательно изучите следующее перед включением шифрования на стороне сервера:",
-    "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, загруженные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
+    "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
     "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена  дополнительная информация о работе приложения «Шифрование» и примеры его использования.",
     "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.",
     "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
@@ -334,8 +334,8 @@ OC.L10N.register(
     "Exclude groups from sharing" : "Запретить выбранным группам предоставлять общий доступ",
     "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.",
     "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Включить автоматическое завершение имен пользователей в диалоге предоставления общего доступа. Если отключено, то необходимо вводить полное имя или адрес эл. почты.",
-    "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе на странице загрузки публичной ссылки (Показывать только когда список файлов скрыт)",
-    "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на загрузку при скрытом списке файлов",
+    "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе от ответственности на странице отправки публичной ссылки (Показывать только когда список файлов скрыт)",
+    "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на отправку при скрытом списке файлов",
     "Default share permissions" : "Права общего доступа по умолчанию",
     "Personal" : "Личное",
     "Administration" : "Администрирование",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index c1e5f079ccba61ec612da5ba4b7484bd50539dd1..43ddc7b0f58b3ee0abbf327eb1a82e237d3590fd 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -5,7 +5,7 @@
     "Not saved" : "Не сохранено",
     "Sending…" : "Отправка…",
     "Email sent" : "Письмо отправлено",
-    "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.",
+    "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста отправьте сертификат PEM в ASCII кодировке.",
     "Valid until {date}" : "Действительно до {дата}",
     "Delete" : "Удалить",
     "Local" : "Локально",
@@ -293,7 +293,7 @@
     "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.",
     "Enable server-side encryption" : "Включить шифрование на стороне сервера",
     "Please read carefully before activating server-side encryption: " : "Внимательно изучите следующее перед включением шифрования на стороне сервера:",
-    "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, загруженные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
+    "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
     "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена  дополнительная информация о работе приложения «Шифрование» и примеры его использования.",
     "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.",
     "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
@@ -332,8 +332,8 @@
     "Exclude groups from sharing" : "Запретить выбранным группам предоставлять общий доступ",
     "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.",
     "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Включить автоматическое завершение имен пользователей в диалоге предоставления общего доступа. Если отключено, то необходимо вводить полное имя или адрес эл. почты.",
-    "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе на странице загрузки публичной ссылки (Показывать только когда список файлов скрыт)",
-    "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на загрузку при скрытом списке файлов",
+    "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе от ответственности на странице отправки публичной ссылки (Показывать только когда список файлов скрыт)",
+    "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на отправку при скрытом списке файлов",
     "Default share permissions" : "Права общего доступа по умолчанию",
     "Personal" : "Личное",
     "Administration" : "Администрирование",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index 8ef654ac57bc65e3f71a38a2269a53f29edcbef7..3c6c9721566463d5586dc81a2b733fc2f65f30af 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "Spara ändringar",
     "This app is supported via your current Nextcloud subscription." : "Den här appen stöds via din nuvarande Nextcloud-prenumeration.",
     "Supported" : "Stöds",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Utvalda appar utvecklas av och inom gemenskapen. De erbjuder central funktionalitet och är redo för produktionsanvändning.",
+    "Featured" : "Utvalda",
     "by" : "av",
     "Update to {version}" : "Uppdatera till {version}",
     "Remove" : "Ta bort",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index 80655f6211bb11b8e41307f980914b7c8543eea2..d8a2a694c7f4d7ae23703a4d63b3291e80fa6320 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -121,6 +121,8 @@
     "Save changes" : "Spara ändringar",
     "This app is supported via your current Nextcloud subscription." : "Den här appen stöds via din nuvarande Nextcloud-prenumeration.",
     "Supported" : "Stöds",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Utvalda appar utvecklas av och inom gemenskapen. De erbjuder central funktionalitet och är redo för produktionsanvändning.",
+    "Featured" : "Utvalda",
     "by" : "av",
     "Update to {version}" : "Uppdatera till {version}",
     "Remove" : "Ta bort",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 74bd2cb64ea9bcc52f32ee00fa8d2e91bb04e1b4..cb10bf5f77d9c8f215164df6385d6de9d7000749 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -123,6 +123,8 @@ OC.L10N.register(
     "Save changes" : "DeÄŸiÅŸiklikleri kaydet",
     "This app is supported via your current Nextcloud subscription." : "Bu uygulamanın desteği geçerli Nextcloud aboneliğiniz ile sağlanır.",
     "Supported" : "Destekleniyor",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Öne çıkarılmış uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
+    "Featured" : "Öne Çıkarılmış",
     "by" : "KiÅŸi:",
     "Update to {version}" : "{version} sürümüne güncelle",
     "Remove" : "Kaldır",
@@ -206,13 +208,13 @@ OC.L10N.register(
     "Enable user" : "Kullanıcıyı etkinleştir",
     "Resend welcome email" : "Karşılama e-postasını yeniden gönder",
     "{size} used" : "{size} kullanılmış",
-    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Cihaz kaybolumu yada organizasyondan çıkış durumunda, {userid} ait olan cihazlardan tüm Nextcloud verilerini siler. Sadece cihazlar internete erişimi varsa çalışır.",
-    "Remote wipe of devices" : "Uzaktan silme cihazları",
-    "Wipe {userid}'s devices" : "{userid}'ın cihazlarını sil",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Aygıt kaybedildiğinde ya da kuruluş ile çalışma sona erdirildiğinde, bu özellik {userid} ile ilişkili tüm aygıtlardaki Nextcloud verilerini silebilir. Bu özellik yalnız aygıtların İnternet erişimi olduğunda kullanılabilir.",
+    "Remote wipe of devices" : "Uzaktan aygıt temizleme",
+    "Wipe {userid}'s devices" : "{userid} aygıtlarını temizle",
     "Cancel" : "İptal",
-    "Fully delete {userid}'s account including all their personal files, app data, etc." : "{userid}'ın tüm hesabını, kişisel dosyaları, uygulama veriler vs dahil olmak üzere sil",
-    "Account deletion" : "Hesap silimi",
-    "Delete {userid}'s account" : "{userid}'ın hesıbını sil",
+    "Fully delete {userid}'s account including all their personal files, app data, etc." : "{userid} için kişisel dosyalar ve uygulama verileri gibi tüm hesap bilgilerini tamamen siler",
+    "Account deletion" : "Hesap silme",
+    "Delete {userid}'s account" : "{userid} hesabını sil",
     "Welcome mail sent!" : "Karşılama e-postası gönderildi!",
     "Display name" : "Görüntülenecek ad",
     "Email" : "E-posta",
@@ -820,7 +822,7 @@ OC.L10N.register(
     "Yoruba" : "Yoruba",
     "Zulu (South Africa)" : "Zulu (Güney Afrika)",
     "Zulu" : "Zulu",
-    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.",
+    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
     "Official" : "Resmi",
     "Store credentials" : "Kimlik bilgileri kaydedilsin",
     "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index f5e8d3adfb3de3cff5551cb2751a04f485718e39..4c5a950a9fdf4eba7492083f6dae75ef6fc0972e 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -121,6 +121,8 @@
     "Save changes" : "DeÄŸiÅŸiklikleri kaydet",
     "This app is supported via your current Nextcloud subscription." : "Bu uygulamanın desteği geçerli Nextcloud aboneliğiniz ile sağlanır.",
     "Supported" : "Destekleniyor",
+    "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Öne çıkarılmış uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
+    "Featured" : "Öne Çıkarılmış",
     "by" : "KiÅŸi:",
     "Update to {version}" : "{version} sürümüne güncelle",
     "Remove" : "Kaldır",
@@ -204,13 +206,13 @@
     "Enable user" : "Kullanıcıyı etkinleştir",
     "Resend welcome email" : "Karşılama e-postasını yeniden gönder",
     "{size} used" : "{size} kullanılmış",
-    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Cihaz kaybolumu yada organizasyondan çıkış durumunda, {userid} ait olan cihazlardan tüm Nextcloud verilerini siler. Sadece cihazlar internete erişimi varsa çalışır.",
-    "Remote wipe of devices" : "Uzaktan silme cihazları",
-    "Wipe {userid}'s devices" : "{userid}'ın cihazlarını sil",
+    "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Aygıt kaybedildiğinde ya da kuruluş ile çalışma sona erdirildiğinde, bu özellik {userid} ile ilişkili tüm aygıtlardaki Nextcloud verilerini silebilir. Bu özellik yalnız aygıtların İnternet erişimi olduğunda kullanılabilir.",
+    "Remote wipe of devices" : "Uzaktan aygıt temizleme",
+    "Wipe {userid}'s devices" : "{userid} aygıtlarını temizle",
     "Cancel" : "İptal",
-    "Fully delete {userid}'s account including all their personal files, app data, etc." : "{userid}'ın tüm hesabını, kişisel dosyaları, uygulama veriler vs dahil olmak üzere sil",
-    "Account deletion" : "Hesap silimi",
-    "Delete {userid}'s account" : "{userid}'ın hesıbını sil",
+    "Fully delete {userid}'s account including all their personal files, app data, etc." : "{userid} için kişisel dosyalar ve uygulama verileri gibi tüm hesap bilgilerini tamamen siler",
+    "Account deletion" : "Hesap silme",
+    "Delete {userid}'s account" : "{userid} hesabını sil",
     "Welcome mail sent!" : "Karşılama e-postası gönderildi!",
     "Display name" : "Görüntülenecek ad",
     "Email" : "E-posta",
@@ -818,7 +820,7 @@
     "Yoruba" : "Yoruba",
     "Zulu (South Africa)" : "Zulu (Güney Afrika)",
     "Zulu" : "Zulu",
-    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.",
+    "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
     "Official" : "Resmi",
     "Store credentials" : "Kimlik bilgileri kaydedilsin",
     "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
diff --git a/apps/systemtags/l10n/sl.js b/apps/systemtags/l10n/sl.js
index 622d961d84f2f2d57a64f1ca6a56c1c2764a4f8f..868a19f68fd1c842af2e5ff24749e491ed370030 100644
--- a/apps/systemtags/l10n/sl.js
+++ b/apps/systemtags/l10n/sl.js
@@ -13,7 +13,7 @@ OC.L10N.register(
     "Removed system tag {systemtag}" : "Odstranjena je sistemska oznaka {systemtag}",
     "Removed system tag %1$s" : "Odstranjena je sistemska oznaka %1$s",
     "%1$s created system tag %2$s" : "Uporabnik %1$s je ustvaril sistemsko oznako %2$s",
-    "%1$s deleted system tag %2$s" : "Uporabnik %1$s je izbrisal sistemsko oznako %2$s",
+    "%1$s deleted system tag %2$s" : "Uporabnik %1$s izbriše sistemsko oznako %2$s",
     "%1$s updated system tag %3$s to %2$s" : "Uporabnik %1$s je posodobil sistemsko oznako %3$s za %2$s",
     "You added system tag %2$s to %1$s" : "Datoteki %1$s je dodana oznaka %2$s.",
     "You added system tag {systemtag} to {file}" : "Datoteki {file} je dodana oznaka {systemtag}",
diff --git a/apps/systemtags/l10n/sl.json b/apps/systemtags/l10n/sl.json
index 83268a124d9fe542c1bddb716756fafbf1c72c4f..94e03b44720b9a0ef2007ef36376851fa372f4a0 100644
--- a/apps/systemtags/l10n/sl.json
+++ b/apps/systemtags/l10n/sl.json
@@ -11,7 +11,7 @@
     "Removed system tag {systemtag}" : "Odstranjena je sistemska oznaka {systemtag}",
     "Removed system tag %1$s" : "Odstranjena je sistemska oznaka %1$s",
     "%1$s created system tag %2$s" : "Uporabnik %1$s je ustvaril sistemsko oznako %2$s",
-    "%1$s deleted system tag %2$s" : "Uporabnik %1$s je izbrisal sistemsko oznako %2$s",
+    "%1$s deleted system tag %2$s" : "Uporabnik %1$s izbriše sistemsko oznako %2$s",
     "%1$s updated system tag %3$s to %2$s" : "Uporabnik %1$s je posodobil sistemsko oznako %3$s za %2$s",
     "You added system tag %2$s to %1$s" : "Datoteki %1$s je dodana oznaka %2$s.",
     "You added system tag {systemtag} to {file}" : "Datoteki {file} je dodana oznaka {systemtag}",
diff --git a/apps/theming/l10n/ru.js b/apps/theming/l10n/ru.js
index 6819e3de277f5e035511f43016f8ca988c38acb6..ce7675d99cf780917acdf34cdb5093630bb7d9b5 100644
--- a/apps/theming/l10n/ru.js
+++ b/apps/theming/l10n/ru.js
@@ -16,14 +16,14 @@ OC.L10N.register(
     "The given slogan is too long" : "Указанный слоган слишком длинный",
     "The given color is invalid" : "Задан неправильный цвет",
     "The file was uploaded" : "Файл был загружен",
-    "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер загруженного файла превышает установленный предел upload_max_filesize в php.ini:",
-    "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер загруженного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
+    "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер переданного файла превышает установленный предел upload_max_filesize в php.ini:",
+    "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер переданного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
     "The file was only partially uploaded" : "Файл был получен частично",
-    "No file was uploaded" : "Не было загружено ни одного файла",
+    "No file was uploaded" : "Не было отправлено ни одного файла",
     "Missing a temporary folder" : "Отсутствует временный каталог",
     "Could not write file to disk" : "Невозможно записать файл на диск",
     "A PHP extension stopped the file upload" : "Расширение PHP прервало загрузку файла",
-    "No file uploaded" : "Нет загруженных файлов",
+    "No file uploaded" : "Нет отправленных файлов",
     "Unsupported image type" : "Неподдерживаемый тип изображения",
     "You are already using a custom theme. Theming app settings might be overwritten by that." : "Вы уже используете настраиваемую тему. Из за этого установки приложения для тем могут быть перезаписаны.",
     "Theming" : "Темы оформления",
diff --git a/apps/theming/l10n/ru.json b/apps/theming/l10n/ru.json
index 6930a01bbec126e5b5a808cb906cdc898e2d1710..328f6297fd593f106c004bcb275bd1d85de59728 100644
--- a/apps/theming/l10n/ru.json
+++ b/apps/theming/l10n/ru.json
@@ -14,14 +14,14 @@
     "The given slogan is too long" : "Указанный слоган слишком длинный",
     "The given color is invalid" : "Задан неправильный цвет",
     "The file was uploaded" : "Файл был загружен",
-    "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер загруженного файла превышает установленный предел upload_max_filesize в php.ini:",
-    "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер загруженного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
+    "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер переданного файла превышает установленный предел upload_max_filesize в php.ini:",
+    "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер переданного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
     "The file was only partially uploaded" : "Файл был получен частично",
-    "No file was uploaded" : "Не было загружено ни одного файла",
+    "No file was uploaded" : "Не было отправлено ни одного файла",
     "Missing a temporary folder" : "Отсутствует временный каталог",
     "Could not write file to disk" : "Невозможно записать файл на диск",
     "A PHP extension stopped the file upload" : "Расширение PHP прервало загрузку файла",
-    "No file uploaded" : "Нет загруженных файлов",
+    "No file uploaded" : "Нет отправленных файлов",
     "Unsupported image type" : "Неподдерживаемый тип изображения",
     "You are already using a custom theme. Theming app settings might be overwritten by that." : "Вы уже используете настраиваемую тему. Из за этого установки приложения для тем могут быть перезаписаны.",
     "Theming" : "Темы оформления",
diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js
index 49eb3f90fcd71f74045615ef6c1811f86a5b3c42..a04cd9ba59628f1b8f869eb99dcbeae968e6bc5f 100644
--- a/apps/user_ldap/l10n/sk.js
+++ b/apps/user_ldap/l10n/sk.js
@@ -3,12 +3,16 @@ OC.L10N.register(
     {
     "Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.",
     "Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.",
+    "Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavenie: anonymné pripojenie nie je povolené.",
     "Valid configuration, connection established!" : "Platná konfigurácia, spojenie nadviazané!",
+    "Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
+    "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.",
     "No action specified" : "Nie je vybraná akcia",
     "No configuration specified" : "Nie je určená konfigurácia",
     "No data specified" : "Nie sú vybraté dáta",
     " Could not set configuration %s" : "Nemôžem nastaviť konfiguráciu %s",
     "Action does not exist" : "Takáto akcia neexistuje",
+    "Renewing …" : "Obnovujem...",
     "Very weak password" : "Veľmi slabé heslo",
     "Weak password" : "Slabé heslo",
     "So-so password" : "Priemerné heslo",
@@ -28,6 +32,7 @@ OC.L10N.register(
     "{nthServer}. Server" : "{nthServer}. Server",
     "No object found in the given Base DN. Please revise." : "Objekt nebol nájdený v zadanej základnej DN. Overte to prosím.",
     "More than 1,000 directory entries available." : "V adresári je dostupných viac ako 1000 položiek.",
+    "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} dostupný záznam v zadanej základnej DN","{objectsFound} dostupné záznamy v zadanej základnej DN","{objectsFound} dostupných záznamov v zadanej základnej DN","{objectsFound} dostupných záznamov v zadanej základnej DN"],
     "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Nastala chyba. Overte základnú DN, nastavenia pripojenia a prihlasovacie údaje.",
     "Do you really want to delete the current Server Configuration?" : "Naozaj chcete zmazať súčasné nastavenie servera?",
     "Confirm Deletion" : "Potvrdiť vymazanie",
@@ -39,9 +44,13 @@ OC.L10N.register(
     "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Prepnutie režimu povolí automatické LDAP požiadavky. V závislosti na veľkosti vášho LDAP môže vyhľadávanie chvíľu trvať. Naozaj chcete prepnúť režim?",
     "Mode switch" : "Prepínač režimov",
     "Select attributes" : "Vyberte atribúty",
+    "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku): <br/>",
     "User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
+    "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvážte zúženie vyhľadávania, pretože zahŕňalo mnoho užívateľov, z ktorých sa bude môcť prihlásiť iba prvý z nich.",
+    "An unspecified error occurred. Please check log and settings." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.",
     "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.",
     "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.",
+    "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chýba zástupný znak %uid. Bude nahradený prihlasovacím menom pri požiadavke do LDAP / AD.",
     "Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
     "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Pole skupín bolo vypnuté, pretože LDAP / AD server nepodporuje memberOf.",
     "Password change rejected. Hint: " : "Zmena hesla zamietnutá. Vodítko:",
@@ -54,6 +63,7 @@ OC.L10N.register(
     "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"],
     "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu",
     "Invalid Host" : "Neplatný hostiteľ",
+    "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aplikácia umožňuje administrátorom pripojenie Nextcloud k užívateľskému adresáru LDAP.",
     "Test Configuration" : "Test nastavenia",
     "Help" : "Pomoc",
     "Groups meeting these criteria are available in %s:" : "Skupiny spĺňajúce tieto kritériá sú k dispozícii v %s:",
diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json
index 5551efeaf822acf6f19513d2816cce69f1ef9fe2..45d4e0042a84a2dabab8ac24307fb5180f23472d 100644
--- a/apps/user_ldap/l10n/sk.json
+++ b/apps/user_ldap/l10n/sk.json
@@ -1,12 +1,16 @@
 { "translations": {
     "Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.",
     "Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.",
+    "Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavenie: anonymné pripojenie nie je povolené.",
     "Valid configuration, connection established!" : "Platná konfigurácia, spojenie nadviazané!",
+    "Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
+    "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.",
     "No action specified" : "Nie je vybraná akcia",
     "No configuration specified" : "Nie je určená konfigurácia",
     "No data specified" : "Nie sú vybraté dáta",
     " Could not set configuration %s" : "Nemôžem nastaviť konfiguráciu %s",
     "Action does not exist" : "Takáto akcia neexistuje",
+    "Renewing …" : "Obnovujem...",
     "Very weak password" : "Veľmi slabé heslo",
     "Weak password" : "Slabé heslo",
     "So-so password" : "Priemerné heslo",
@@ -26,6 +30,7 @@
     "{nthServer}. Server" : "{nthServer}. Server",
     "No object found in the given Base DN. Please revise." : "Objekt nebol nájdený v zadanej základnej DN. Overte to prosím.",
     "More than 1,000 directory entries available." : "V adresári je dostupných viac ako 1000 položiek.",
+    "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} dostupný záznam v zadanej základnej DN","{objectsFound} dostupné záznamy v zadanej základnej DN","{objectsFound} dostupných záznamov v zadanej základnej DN","{objectsFound} dostupných záznamov v zadanej základnej DN"],
     "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Nastala chyba. Overte základnú DN, nastavenia pripojenia a prihlasovacie údaje.",
     "Do you really want to delete the current Server Configuration?" : "Naozaj chcete zmazať súčasné nastavenie servera?",
     "Confirm Deletion" : "Potvrdiť vymazanie",
@@ -37,9 +42,13 @@
     "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Prepnutie režimu povolí automatické LDAP požiadavky. V závislosti na veľkosti vášho LDAP môže vyhľadávanie chvíľu trvať. Naozaj chcete prepnúť režim?",
     "Mode switch" : "Prepínač režimov",
     "Select attributes" : "Vyberte atribúty",
+    "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku): <br/>",
     "User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
+    "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvážte zúženie vyhľadávania, pretože zahŕňalo mnoho užívateľov, z ktorých sa bude môcť prihlásiť iba prvý z nich.",
+    "An unspecified error occurred. Please check log and settings." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.",
     "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.",
     "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.",
+    "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chýba zástupný znak %uid. Bude nahradený prihlasovacím menom pri požiadavke do LDAP / AD.",
     "Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
     "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Pole skupín bolo vypnuté, pretože LDAP / AD server nepodporuje memberOf.",
     "Password change rejected. Hint: " : "Zmena hesla zamietnutá. Vodítko:",
@@ -52,6 +61,7 @@
     "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"],
     "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu",
     "Invalid Host" : "Neplatný hostiteľ",
+    "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aplikácia umožňuje administrátorom pripojenie Nextcloud k užívateľskému adresáru LDAP.",
     "Test Configuration" : "Test nastavenia",
     "Help" : "Pomoc",
     "Groups meeting these criteria are available in %s:" : "Skupiny spĺňajúce tieto kritériá sú k dispozícii v %s:",
diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js
index fb492bce9568a52d21fab0218dd71fb79e07939f..58f4425d9e0cfdbea53debb54b36bf7230f17de7 100644
--- a/apps/workflowengine/l10n/cs.js
+++ b/apps/workflowengine/l10n/cs.js
@@ -40,11 +40,13 @@ OC.L10N.register(
     "Images" : "Obrázky",
     "Office documents" : "Kancelářské dokumenty",
     "PDF documents" : "PDF dokumenty",
+    "Custom mimetype" : "Uživatelsky určený mimetyp",
     "Select a tag" : "Vybrat štítek",
     "No results" : "Žádné výsledky",
     "%s (invisible)" : "%s (neviditelné)",
     "%s (restricted)" : "%s (omezeno)",
     "Please enter a valid time span" : "Zadejte platné časové rozmezí",
+    "Select a request URL" : "Vyberte URL požadavku",
     "Predefined URLs" : "Předdefinované URL",
     "Files WebDAV" : "Soubory WebDAV",
     "Others" : "Ostatní",
diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json
index 901c19f4cb1602d81b09e8a33a6795ce441a8a7d..b5a633e9b2ba2c70337d70580e85a9efe953953e 100644
--- a/apps/workflowengine/l10n/cs.json
+++ b/apps/workflowengine/l10n/cs.json
@@ -38,11 +38,13 @@
     "Images" : "Obrázky",
     "Office documents" : "Kancelářské dokumenty",
     "PDF documents" : "PDF dokumenty",
+    "Custom mimetype" : "Uživatelsky určený mimetyp",
     "Select a tag" : "Vybrat štítek",
     "No results" : "Žádné výsledky",
     "%s (invisible)" : "%s (neviditelné)",
     "%s (restricted)" : "%s (omezeno)",
     "Please enter a valid time span" : "Zadejte platné časové rozmezí",
+    "Select a request URL" : "Vyberte URL požadavku",
     "Predefined URLs" : "Předdefinované URL",
     "Files WebDAV" : "Soubory WebDAV",
     "Others" : "Ostatní",
diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js
index c474b6c72f793877fe05763c69791c1ec2f8e31b..2cac8e6e570fe05c79bdefa61cfaad2bd8f375c0 100644
--- a/apps/workflowengine/l10n/sk.js
+++ b/apps/workflowengine/l10n/sk.js
@@ -36,13 +36,16 @@ OC.L10N.register(
     "Select a filter" : "Vybrať filter",
     "Select a comparator" : "Vybrať porovnávač",
     "Select a file type" : "Vyberte typ súboru",
+    "e.g. httpd/unix-directory" : "napr. adresár  httpd/unix",
     "Images" : "Obrázky",
     "Office documents" : "Dokumenty Office",
     "PDF documents" : "Dokumenty PDF",
     "Custom mimetype" : "Vlastné typy mime",
+    "Select a tag" : "Vyber štítok",
     "No results" : "Žiadne výsledky",
     "%s (invisible)" : "%s (neviditeľné)",
     "%s (restricted)" : "%s (obmedzené)",
+    "Please enter a valid time span" : "Zadajte prosím platné časové rozmedzie",
     "Select a request URL" : "Vybrať URL požiadavku",
     "Predefined URLs" : "Preddefinované URL",
     "Files WebDAV" : "WebDAV súbory",
@@ -56,6 +59,8 @@ OC.L10N.register(
     "Custom user agent" : "Vlastný agent užívateľa",
     "When" : "Keď",
     "and" : "a",
+    "Cancel" : "Zrušiť",
+    "Delete" : "Zmazať",
     "The configuration is invalid" : "Konfigurácia je neplatná",
     "Show less" : "Zobraziť menej",
     "Show more" : "Zobraziť viac",
diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json
index 8786b9d7995a3dd30a51ebbb9be8bd93aafb8cca..42ae50760e4bab3a736b9c48fe83fac657b9db4f 100644
--- a/apps/workflowengine/l10n/sk.json
+++ b/apps/workflowengine/l10n/sk.json
@@ -34,13 +34,16 @@
     "Select a filter" : "Vybrať filter",
     "Select a comparator" : "Vybrať porovnávač",
     "Select a file type" : "Vyberte typ súboru",
+    "e.g. httpd/unix-directory" : "napr. adresár  httpd/unix",
     "Images" : "Obrázky",
     "Office documents" : "Dokumenty Office",
     "PDF documents" : "Dokumenty PDF",
     "Custom mimetype" : "Vlastné typy mime",
+    "Select a tag" : "Vyber štítok",
     "No results" : "Žiadne výsledky",
     "%s (invisible)" : "%s (neviditeľné)",
     "%s (restricted)" : "%s (obmedzené)",
+    "Please enter a valid time span" : "Zadajte prosím platné časové rozmedzie",
     "Select a request URL" : "Vybrať URL požiadavku",
     "Predefined URLs" : "Preddefinované URL",
     "Files WebDAV" : "WebDAV súbory",
@@ -54,6 +57,8 @@
     "Custom user agent" : "Vlastný agent užívateľa",
     "When" : "Keď",
     "and" : "a",
+    "Cancel" : "Zrušiť",
+    "Delete" : "Zmazať",
     "The configuration is invalid" : "Konfigurácia je neplatná",
     "Show less" : "Zobraziť menej",
     "Show more" : "Zobraziť viac",
diff --git a/apps/workflowengine/l10n/sl.js b/apps/workflowengine/l10n/sl.js
index d69e376e20349429781e9f9a269a36506c45a386..2d92853ccde412f6d64d9b439035367955be8529 100644
--- a/apps/workflowengine/l10n/sl.js
+++ b/apps/workflowengine/l10n/sl.js
@@ -25,6 +25,7 @@ OC.L10N.register(
     "iOS client" : "Odjemalec za iOS",
     "Desktop client" : "Odjemalec za namizne računalnike",
     "Thunderbird & Outlook addons" : "Razširitve za Thunderbird in Outlook",
+    "Cancel" : "Prekliči",
     "File name" : "Ime datoteke",
     "is" : "je",
     "is not" : "ni",
diff --git a/apps/workflowengine/l10n/sl.json b/apps/workflowengine/l10n/sl.json
index d24a30a42c1f3b8e320c14551b0f19dd36d28534..5e23a4b7bf05627a3599ade2025e229573d94d1e 100644
--- a/apps/workflowengine/l10n/sl.json
+++ b/apps/workflowengine/l10n/sl.json
@@ -23,6 +23,7 @@
     "iOS client" : "Odjemalec za iOS",
     "Desktop client" : "Odjemalec za namizne računalnike",
     "Thunderbird & Outlook addons" : "Razširitve za Thunderbird in Outlook",
+    "Cancel" : "Prekliči",
     "File name" : "Ime datoteke",
     "is" : "je",
     "is not" : "ni",
diff --git a/apps/workflowengine/l10n/sv.js b/apps/workflowengine/l10n/sv.js
index 0648129b6710a99e095a8a077375f3fa48346449..238cb3fa7ff6502722372403dd4471ff27091e66 100644
--- a/apps/workflowengine/l10n/sv.js
+++ b/apps/workflowengine/l10n/sv.js
@@ -21,14 +21,18 @@ OC.L10N.register(
     "File copied" : "Fil kopierad",
     "Tag assigned" : "Tagg tilldelad",
     "Operation #%s does not exist" : "Operationen #%s existerar inte",
+    "Entity %s does not exist" : "Objekt 1%s finns inte",
     "No events are chosen." : "Inga händelser valda",
+    "Entity %s has no event %s" : "Objekt 1%s har ingen händelse 1%s",
     "Operation %s does not exist" : "Operationen %s existerar inte",
     "Operation %s is invalid" : "Operationen %s är ogiltig",
     "Check %s does not exist" : "Kontroll av %s existerar inte",
     "Check %s is invalid" : "Kontroll av %s är ogiltig",
+    "Check %s is not allowed with this entity" : "Kontroll 1%s tillåts ej för det här objektet",
     "Check #%s does not exist" : "Kontroll av #%s existerar inte",
     "Check %s is invalid or does not exist" : "Kontroll av %s är ogiltig eller existerar inte",
     "Workflows" : "Arbetsflöden",
+    "Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor",
     "Select a filter" : "Välj ett filter",
     "Select a comparator" : "Välj en jämförelse",
     "Select a file type" : "Välj en filtyp",
diff --git a/apps/workflowengine/l10n/sv.json b/apps/workflowengine/l10n/sv.json
index e25c887e78a2b583fd228fa8eeccfa2d52dc647e..84fa74a0cad0f55f06e5b7742c32120da5a86e77 100644
--- a/apps/workflowengine/l10n/sv.json
+++ b/apps/workflowengine/l10n/sv.json
@@ -19,14 +19,18 @@
     "File copied" : "Fil kopierad",
     "Tag assigned" : "Tagg tilldelad",
     "Operation #%s does not exist" : "Operationen #%s existerar inte",
+    "Entity %s does not exist" : "Objekt 1%s finns inte",
     "No events are chosen." : "Inga händelser valda",
+    "Entity %s has no event %s" : "Objekt 1%s har ingen händelse 1%s",
     "Operation %s does not exist" : "Operationen %s existerar inte",
     "Operation %s is invalid" : "Operationen %s är ogiltig",
     "Check %s does not exist" : "Kontroll av %s existerar inte",
     "Check %s is invalid" : "Kontroll av %s är ogiltig",
+    "Check %s is not allowed with this entity" : "Kontroll 1%s tillåts ej för det här objektet",
     "Check #%s does not exist" : "Kontroll av #%s existerar inte",
     "Check %s is invalid or does not exist" : "Kontroll av %s är ogiltig eller existerar inte",
     "Workflows" : "Arbetsflöden",
+    "Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor",
     "Select a filter" : "Välj ett filter",
     "Select a comparator" : "Välj en jämförelse",
     "Select a file type" : "Välj en filtyp",
diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js
index bbe3fa0f3d63b41e6bcefc07b00b8f6e5e52f73a..a2604802231e1173961f0989ea4042a441f071c4 100644
--- a/apps/workflowengine/l10n/tr.js
+++ b/apps/workflowengine/l10n/tr.js
@@ -37,7 +37,7 @@ OC.L10N.register(
     "Select a filter" : "Bir süzgeç seçin",
     "Select a comparator" : "Bir karşılaştırıcı seçin",
     "Select a file type" : "Bir dosya türü seçin",
-    "e.g. httpd/unix-directory" : "örnek e.g. httpd/unix-directory",
+    "e.g. httpd/unix-directory" : "örnek httpd/unix-directory",
     "Images" : "Görseller",
     "Office documents" : "Office belgeleri",
     "PDF documents" : "PDF belgeleri",
diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json
index f0f45dcc1fdf563cdcfc0b1f82929dd8b83484bc..79b60aebb46c6d67e68c769a5a8660084369e277 100644
--- a/apps/workflowengine/l10n/tr.json
+++ b/apps/workflowengine/l10n/tr.json
@@ -35,7 +35,7 @@
     "Select a filter" : "Bir süzgeç seçin",
     "Select a comparator" : "Bir karşılaştırıcı seçin",
     "Select a file type" : "Bir dosya türü seçin",
-    "e.g. httpd/unix-directory" : "örnek e.g. httpd/unix-directory",
+    "e.g. httpd/unix-directory" : "örnek httpd/unix-directory",
     "Images" : "Görseller",
     "Office documents" : "Office belgeleri",
     "PDF documents" : "PDF belgeleri",
diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php
index cea6ac7a1e54900377f75bb8668982218e427911..8ac291b9289c3ac1090005878c0c08117088d77a 100644
--- a/apps/workflowengine/lib/AppInfo/Application.php
+++ b/apps/workflowengine/lib/AppInfo/Application.php
@@ -23,12 +23,14 @@ namespace OCA\WorkflowEngine\AppInfo;
 
 use OCA\WorkflowEngine\Manager;
 use OCP\AppFramework\QueryException;
+use OCP\EventDispatcher\Event;
 use OCP\Template;
 use OCA\WorkflowEngine\Controller\RequestTime;
 use OCP\WorkflowEngine\IEntity;
+use OCP\WorkflowEngine\IEntityCompat;
 use OCP\WorkflowEngine\IOperation;
+use OCP\WorkflowEngine\IOperationCompat;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\GenericEvent;
 
 class Application extends \OCP\AppFramework\App {
 
@@ -54,7 +56,7 @@ class Application extends \OCP\AppFramework\App {
 	public function registerHooksAndListeners() {
 		$this->dispatcher->addListener(
 			'OCP\WorkflowEngine::loadAdditionalSettingScripts',
-			function() {
+			function () {
 				if (!function_exists('style')) {
 					// This is hacky, but we need to load the template class
 					class_exists(Template::class, true);
@@ -88,15 +90,35 @@ class Application extends \OCP\AppFramework\App {
 				array_map(function (string $eventName) use ($operationClass, $entityClass) {
 					$this->dispatcher->addListener(
 						$eventName,
-						function (GenericEvent $event) use ($eventName, $operationClass, $entityClass) {
+						function ($event) use ($eventName, $operationClass, $entityClass) {
 							$ruleMatcher = $this->manager->getRuleMatcher();
 							try {
 								/** @var IEntity $entity */
 								$entity = $this->getContainer()->query($entityClass);
-								$entity->prepareRuleMatcher($ruleMatcher, $eventName, $event);
 								/** @var IOperation $operation */
 								$operation = $this->getContainer()->query($operationClass);
-								$operation->onEvent($eventName, $event, $ruleMatcher);
+
+								if ($event instanceof Event) {
+									$entity->prepareRuleMatcher($ruleMatcher, $eventName, $event);
+									$operation->onEvent($eventName, $event, $ruleMatcher);
+								} else if ($entity instanceof IEntityCompat && $operation instanceof IOperationCompat) {
+									// TODO: Remove this block (and the compat classes) in the first major release in 2023
+									$entity->prepareRuleMatcherCompat($ruleMatcher, $eventName, $event);
+									$operation->onEventCompat($eventName, $event, $ruleMatcher);
+								} else {
+									$logger = $this->getContainer()->getServer()->getLogger();
+									$logger->warning(
+										'Cannot handle event {name} of {event} against entity {entity} and operation {operation}',
+										[
+											'app' => self::APP_ID,
+											'name' => $eventName,
+											'event' => get_class($event),
+											'entity' => $entityClass,
+											'operation' => $operationClass,
+										]
+									);
+								}
+
 							} catch (QueryException $e) {
 								// Ignore query exceptions since they might occur when an entity/operation were setup before by an app that is disabled now
 							}
diff --git a/apps/workflowengine/lib/Entity/File.php b/apps/workflowengine/lib/Entity/File.php
index 8fb035afacc54e86bd4d4555e3b33d8125ca0b38..a9d71d5f8c1294ccf5406bce5d63fc71b6c55830 100644
--- a/apps/workflowengine/lib/Entity/File.php
+++ b/apps/workflowengine/lib/Entity/File.php
@@ -24,8 +24,11 @@ declare(strict_types=1);
 
 namespace OCA\WorkflowEngine\Entity;
 
+use OCA\WorkflowEngine\AppInfo\Application;
+use OCP\EventDispatcher\Event;
 use OCP\Files\IRootFolder;
 use OCP\IL10N;
+use OCP\ILogger;
 use OCP\IURLGenerator;
 use OCP\SystemTag\MapperEvent;
 use OCP\WorkflowEngine\GenericEntityEvent;
@@ -40,12 +43,15 @@ class File implements IEntity {
 	/** @var IURLGenerator */
 	protected $urlGenerator;
 	/** @var IRootFolder */
-	private $root;
+	protected $root;
+	/** @var ILogger */
+	protected $logger;
 
-	public function __construct(IL10N $l10n, IURLGenerator $urlGenerator, IRootFolder $root) {
+	public function __construct(IL10N $l10n, IURLGenerator $urlGenerator, IRootFolder $root, ILogger $logger) {
 		$this->l10n = $l10n;
 		$this->urlGenerator = $urlGenerator;
 		$this->root = $root;
+		$this->logger = $logger;
 	}
 
 	public function getName(): string {
@@ -59,20 +65,20 @@ class File implements IEntity {
 	public function getEvents(): array {
 		$namespace = '\OCP\Files::';
 		return [
-			new GenericEntityEvent($this->l10n->t('File created'), $namespace . 'postCreate' ),
-			new GenericEntityEvent($this->l10n->t('File updated'), $namespace . 'postWrite' ),
-			new GenericEntityEvent($this->l10n->t('File renamed'), $namespace . 'postRename' ),
-			new GenericEntityEvent($this->l10n->t('File deleted'), $namespace . 'postDelete' ),
-			new GenericEntityEvent($this->l10n->t('File accessed'), $namespace . 'postTouch' ),
-			new GenericEntityEvent($this->l10n->t('File copied'), $namespace . 'postCopy' ),
-			new GenericEntityEvent($this->l10n->t('Tag assigned'), MapperEvent::EVENT_ASSIGN ),
+			new GenericEntityEvent($this->l10n->t('File created'), $namespace . 'postCreate'),
+			new GenericEntityEvent($this->l10n->t('File updated'), $namespace . 'postWrite'),
+			new GenericEntityEvent($this->l10n->t('File renamed'), $namespace . 'postRename'),
+			new GenericEntityEvent($this->l10n->t('File deleted'), $namespace . 'postDelete'),
+			new GenericEntityEvent($this->l10n->t('File accessed'), $namespace . 'postTouch'),
+			new GenericEntityEvent($this->l10n->t('File copied'), $namespace . 'postCopy'),
+			new GenericEntityEvent($this->l10n->t('Tag assigned'), MapperEvent::EVENT_ASSIGN),
 		];
 	}
 
-	/**
-	 * @since 18.0.0
-	 */
-	public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, GenericEvent $event): void {
+	public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, Event $event): void {
+		if (!$event instanceof GenericEvent && !$event instanceof MapperEvent) {
+			return;
+		}
 		switch ($eventName) {
 			case 'postCreate':
 			case 'postWrite':
@@ -85,11 +91,11 @@ class File implements IEntity {
 				$ruleMatcher->setEntitySubject($this, $event->getSubject()[1]);
 				break;
 			case MapperEvent::EVENT_ASSIGN:
-				if(!$event instanceof MapperEvent || $event->getObjectType() !== 'files') {
+				if (!$event instanceof MapperEvent || $event->getObjectType() !== 'files') {
 					break;
 				}
 				$nodes = $this->root->getById((int)$event->getObjectId());
-				if(is_array($nodes) && !empty($nodes)) {
+				if (is_array($nodes) && !empty($nodes)) {
 					$node = array_shift($nodes);
 					$ruleMatcher->setEntitySubject($this, $node);
 				}
diff --git a/apps/workflowengine/tests/ManagerTest.php b/apps/workflowengine/tests/ManagerTest.php
index aac5e5eadf5cff9b0846af1222ae401bfb69b447..92111a6989b35cbf81f35c40117e3607ac03f124 100644
--- a/apps/workflowengine/tests/ManagerTest.php
+++ b/apps/workflowengine/tests/ManagerTest.php
@@ -279,7 +279,12 @@ class ManagerTest extends TestCase {
 					return $this->createMock(IOperation::class);
 				} else if($class === File::class) {
 					return $this->getMockBuilder(File::class)
-						->setConstructorArgs([$this->l, $this->createMock(IURLGenerator::class), $this->createMock(IRootFolder::class)])
+						->setConstructorArgs([
+							$this->l,
+							$this->createMock(IURLGenerator::class),
+							$this->createMock(IRootFolder::class),
+							$this->createMock(ILogger::class)
+						])
 						->setMethodsExcept(['getEvents'])
 						->getMock();
 				}
diff --git a/build/package-lock.json b/build/package-lock.json
index c7ad3990ee600556d35f9a9644f8b5c923ec3fb1..309648476dd61dfc8c227ad85f9ef84d36e0696d 100644
--- a/build/package-lock.json
+++ b/build/package-lock.json
@@ -2079,9 +2079,9 @@
       "dev": true
     },
     "handlebars": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz",
-      "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==",
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz",
+      "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==",
       "dev": true,
       "requires": {
         "neo-async": "^2.6.0",
@@ -4639,9 +4639,9 @@
       "dev": true
     },
     "uglify-js": {
-      "version": "3.6.8",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz",
-      "integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==",
+      "version": "3.6.9",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
+      "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
       "dev": true,
       "optional": true,
       "requires": {
diff --git a/build/package.json b/build/package.json
index e5068ce85d49d58a855a70a062f3a450cec1619b..73811c5c0b9da938573c22fd2930f97eea816181 100644
--- a/build/package.json
+++ b/build/package.json
@@ -11,7 +11,7 @@
   "contributors": [],
   "dependencies": {},
   "devDependencies": {
-    "handlebars": "^4.5.1",
+    "handlebars": "^4.5.2",
     "jasmine-core": "~2.5.2",
     "jasmine-sinon": "^0.4.0",
     "jsdoc": "^3.6.3",
diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php
index bffedf1922473418ce9186bb5db9d6a88c918ce8..ba594469a7f94bbd063cf0205cb9e16121a643a0 100644
--- a/core/Controller/ClientFlowLoginController.php
+++ b/core/Controller/ClientFlowLoginController.php
@@ -6,6 +6,7 @@
  * @author Lukas Reschke <lukas@statuscode.ch>
  * @author Morris Jobke <hey@morrisjobke.de>
  * @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Russell Ault <russell@auksnest.ca>
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -337,9 +338,16 @@ class ClientFlowLoginController extends Controller {
 			$accessToken->setTokenId($generatedToken->getId());
 			$this->accessTokenMapper->insert($accessToken);
 
-			$redirectUri = sprintf(
-				'%s?state=%s&code=%s',
-				$client->getRedirectUri(),
+			$redirectUri = $client->getRedirectUri();
+			
+			if (parse_url($redirectUri, PHP_URL_QUERY)) {
+				$redirectUri .= '&';
+			} else {
+				$redirectUri .= '?';
+			}
+
+			$redirectUri .= sprintf(
+				'state=%s&code=%s',
 				urlencode($this->session->get('oauth.state')),
 				urlencode($code)
 			);
diff --git a/core/img/actions/more-white.svg b/core/img/actions/more-white.svg
new file mode 100644
index 0000000000000000000000000000000000000000..bed27ebf9e5cfd66240f1ce2c67ea94119fc8416
--- /dev/null
+++ b/core/img/actions/more-white.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 16 16" width="16" height="16"><path d="M3 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm5 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm5 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z" fill="#fff"/></svg>
diff --git a/core/js/dist/login.js b/core/js/dist/login.js
index 12838050fb40521a279459d9b48079137f65ab18..642dd0b367e90d955fd0d2585b5d7af936b691e9 100644
Binary files a/core/js/dist/login.js and b/core/js/dist/login.js differ
diff --git a/core/js/dist/login.js.map b/core/js/dist/login.js.map
index 2d66c613b5a7f3ee2db355ab3fa6a40e0f0a470d..bfd8169ecbc87bec234c520a14db8b13dee2115d 100644
Binary files a/core/js/dist/login.js.map and b/core/js/dist/login.js.map differ
diff --git a/core/js/dist/main.js b/core/js/dist/main.js
index 29bafa3add15dda0dc93069ae4eaa80f3371b29d..8fec989abd16ce02a0ab603f41142287ade274bd 100644
Binary files a/core/js/dist/main.js and b/core/js/dist/main.js differ
diff --git a/core/js/dist/main.js.map b/core/js/dist/main.js.map
index bbe0f4c0d6421c10237fc9f2e638eb05fd8a0a1c..0b60d65d1d20011871bf0ed1d4b733b9aa0a32e8 100644
Binary files a/core/js/dist/main.js.map and b/core/js/dist/main.js.map differ
diff --git a/core/js/dist/maintenance.js b/core/js/dist/maintenance.js
index 3e3dfcc32898e2af6f17be8649f5439b0492810f..22de1f92a32c880b0b13e37282dab5dabbbcd15d 100644
Binary files a/core/js/dist/maintenance.js and b/core/js/dist/maintenance.js differ
diff --git a/core/js/dist/maintenance.js.map b/core/js/dist/maintenance.js.map
index b33fd8e7178386b7428fe98766403b6650ce77ed..f92ed2df6336cf6f72012114cf32872aa166cb9c 100644
Binary files a/core/js/dist/maintenance.js.map and b/core/js/dist/maintenance.js.map differ
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 7729a1f6c1347fafa3045504c430d9b8b5fad5d7..86122db14bf4ddec35192c16a613df974c9750bc 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -197,6 +197,9 @@ OC.L10N.register(
     "seconds ago" : "ì´ˆ ì „",
     "Connection to server lost" : "서버 연결이 끊어짐",
     "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["페이지 불러오기 오류, %n초 후 새로 고침"],
+    "Add to a project" : "프로젝트에 추가",
+    "Connect items to a project to make them easier to find" : "폴더 또는 파일을 찾기 쉽게 프로젝트에 연결하세요.",
+    "Type to search for existing projects" : "이미 존재하는 프로젝트를 찾기 위해 입력하세요.",
     "New in" : "새로운 것",
     "View changelog" : "변경 기록 확인",
     "No action available" : "사용할 수 있는 동작 없음",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index b6f0931c64333b4f7d643e5b30e6acaf4893a192..fea4cfcd7d67244d93b7a900116309d082c3af66 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -195,6 +195,9 @@
     "seconds ago" : "ì´ˆ ì „",
     "Connection to server lost" : "서버 연결이 끊어짐",
     "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["페이지 불러오기 오류, %n초 후 새로 고침"],
+    "Add to a project" : "프로젝트에 추가",
+    "Connect items to a project to make them easier to find" : "폴더 또는 파일을 찾기 쉽게 프로젝트에 연결하세요.",
+    "Type to search for existing projects" : "이미 존재하는 프로젝트를 찾기 위해 입력하세요.",
     "New in" : "새로운 것",
     "View changelog" : "변경 기록 확인",
     "No action available" : "사용할 수 있는 동작 없음",
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index 4c0f93f7b5cf92177e6461d4f162ec92aa73f84e..9b612c7cfc26caccdf33da9a514d8e161c9c440d 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -224,7 +224,7 @@ OC.L10N.register(
     "Help" : "Pomoc",
     "Access forbidden" : "Prístup odmietnutý",
     "File not found" : "Súbor nenájdený",
-    "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument nebol nájdený na servri.  Je možné že zdieľanie bolo vymazané alebo expirovalo?",
+    "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Na serveri sa nepodarilo nájsť dokument. Je možné, že bolo zrušené sprístupnenie alebo skončila jeho platnosť.",
     "Back to %s" : "Späť na %s",
     "Error" : "Chyba",
     "Internal Server Error" : "Vnútorná chyba servera",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index 7abf082823fad6c5d884ac7e090af29ab317153f..c7f1d51007514b8b8b510319ad1bb9e5a691e1e0 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -222,7 +222,7 @@
     "Help" : "Pomoc",
     "Access forbidden" : "Prístup odmietnutý",
     "File not found" : "Súbor nenájdený",
-    "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument nebol nájdený na servri.  Je možné že zdieľanie bolo vymazané alebo expirovalo?",
+    "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Na serveri sa nepodarilo nájsť dokument. Je možné, že bolo zrušené sprístupnenie alebo skončila jeho platnosť.",
     "Back to %s" : "Späť na %s",
     "Error" : "Chyba",
     "Internal Server Error" : "Vnútorná chyba servera",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 3013a88fa80c0d040582324f63e8cbef1638bcb2..6860087fa3bc718f376c8d0f232c075498a9922e 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -46,7 +46,7 @@ OC.L10N.register(
     "Checking updates of apps" : "Poteka preverjanje za posodobitve programov",
     "Checking for update of app \"%s\" in appstore" : "Poteka preverjanje posodobitev za program »%s« v trgovini",
     "Update app \"%s\" from appstore" : "Posodobi program »%s« iz trgovine",
-    "Checked for update of app \"%s\" in appstore" : "Preverjenje posodobitev za »%s« v trgovini",
+    "Checked for update of app \"%s\" in appstore" : "Preverjanje posodobitev za »%s« v trgovini",
     "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).",
     "Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
     "Updated \"%1$s\" to %2$s" : "Posodabljanje »%1$s« na različico %2$s",
@@ -66,7 +66,17 @@ OC.L10N.register(
     "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Spletni strežnik ni ustrezno nastavljen za razreševanje naslova »{url}«. Več podrobnosti je zapisanih v <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentaciji</a>.",
     "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Kaže, da okolje PHP ni ustrezno nastavljeno za poizvedovanje sistemskih spremenljivk. Preizkus z ukazom getegetenv(\"PATH\") vrne le prazen odziv.",
     "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Preverite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">namestitveno dokumentacijo ↗</a> za nastavitve PHP strežnika, še posebej, če uporabljate php-fpm.",
+    "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Manjka modul PHP »fileinfo«. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.",
+    "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ni mogoče izvesti opravila cron prek vmesnika ukazne vrstice. Pojavile so se tehnične napake:",
+    "Last background job execution ran {relativeTime}. Something seems wrong." : " Zadnje ozadnje izvajanje opravila je potekalo{ relativeTime}. Kaže, da je nekaj narobe.",
     "Check the background job settings" : "Preverite nastavitve ozadnjih opravil",
+    "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Strežnik je brez vzpostavljene internetne povezave. Več končnih točk ni mogoče doseči. To pomeni, da priklapljanje zunanjih diskov,  opozorila za posodobitve in namestitve programske opreme iz drugih virov, niso mogoče. Oddaljen dostop do datotek in pošiljanje obvesti najverjetneje prav tako ne deluje. Vzpostavite povezavo, da omogočite vso funkcionalnost.",
+    "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Ni nastavljenega predpomnilnika. Za izboljšanje hitrosti delovanja je treba predpomnilnik memcache, če je na voljo, ustrezno nastaviti. Več podrobnosti je na voljo v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
+    "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Iz varnostnih razlogov je priporočljivo nastaviti ustrezen vir za naključno ustvarjanje podatkov, ki ga uporablja PHP. Več podrobnosti je zavedenih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
+    "You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Trenutno je zagnana različica PHP {version}. Priporočljivo je posodobiti sistem na najnovejšo različico in s tem namestiti <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">funkcijske in varnostne posodobitve delovanja, ki jih zagotavlja skupnost PHP</a>. Pakete je priporočljivo posodobiti takoj, ko so na voljo za nameščeno distribucijo.",
+    "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Predpomnilnik memcached je nastavljen kot porazdeljen predpomnilnik, vendar pa je nameščen napačen modul PHP »memcache«. Modul \\OC\\Memcache\\Memcached podpirao le »memcached«, ne pa tudi »memcache«. Več podrobnosti za oba modula je zapisanih <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">na wiki straneh</a>.",
+    "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Nekatere datoteke ne opravijo preizkusa celovitosti. Več podrobnosti o težavi je opisanih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neveljavnih datotek … </a>/ <a href=\"{rescanEndpoint}\">Ponovni preizkus …</a>)",
+    "Missing index \"{indexName}\" in table \"{tableName}\"." : "Manjka kazalo » {indexName} « v razpredelnici »{tableName}«.",
     "Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Uporaba vgrajenega pošiljalnika pošte ni več podprta. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Posodobite nastavitve poštnega strežnika ↗<a/>.",
     "The PHP memory limit is below the recommended value of 512MB." : "Omejitev pomnilnika PHP je pod priporočljivo vrednostjo 512 MB.",
     "Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
@@ -187,6 +197,7 @@ OC.L10N.register(
     "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Na strežniku ni mogoče najti dokumentacije. Morda je mesto souprabe izbrisano ali pa so potekla dovoljenja.",
     "Error" : "Napaka",
     "Internal Server Error" : "Notranja napaka strežnika",
+    "The server was unable to complete your request." : "Odziv strežnika kaže, da ni mogoče končati zahteve.",
     "More details can be found in the server log." : "Več podrobnosti je zabeleženih v dnevniški datoteki strežnika.",
     "Technical details" : "Tehnične podrobnosti",
     "Remote Address: %s" : "Oddaljen naslov: %s",
@@ -204,7 +215,7 @@ OC.L10N.register(
     "Storage & database" : "Shramba in podatkovna zbirka",
     "Data folder" : "Podatkovna mapa",
     "Configure the database" : "Nastavi podatkovno zbirko",
-    "Only %s is available." : "Le %s je na voljo.",
+    "Only %s is available." : "Na voljo je le %s.",
     "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.",
     "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.",
     "Database user" : "Uporabnik podatkovne zbirke",
@@ -212,12 +223,17 @@ OC.L10N.register(
     "Database name" : "Ime podatkovne zbirke",
     "Database tablespace" : "Razpredelnica podatkovne zbirke",
     "Database host" : "Gostitelj podatkovne zbirke",
+    "Please specify the port number along with the host name (e.g., localhost:5432)." : "Skupaj z imenom gostitelja je treba določiti tudi številko vrat (na primer localhost:5432).",
     "Performance warning" : "Opozorilo učinkovitosti delovanja",
+    "You chose SQLite as database." : "Kot podatkovna zbirka bo uporabljena zbirka SQLite.",
     "Finish setup" : "Končaj nastavitev",
     "Finishing …" : "Poteka zaključevanje opravila ...",
     "Need help?" : "Ali potrebujete pomoč?",
     "See the documentation" : "Preverite dokumentacijo",
     "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Program zahteva podporo JavaScript za pravilno delovanje. Med nastavitvami omogočite {linkstart}JavaScript{linkend} in osvežite spletno stran.",
+    "Get your own free account" : "Pridobite brezplačni račun",
+    "Skip to main content" : "Preskoči na glavno vsebino",
+    "Skip to navigation of app" : "Preskoči na program za krmarjenje",
     "More apps" : "Več programov",
     "More" : "Več",
     "More apps menu" : "Meni več programov",
@@ -232,6 +248,7 @@ OC.L10N.register(
     "Grant access" : "Odobri dostop",
     "Account access" : "Dostop do računa",
     "Account connected" : "Račun je povezan",
+    "You can close this window." : "To okno lahko zaprete.",
     "This share is password-protected" : "To mesto je zaščiteno z geslom",
     "The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
     "Two-factor authentication" : "Dvo-stopenjska overitev",
@@ -240,6 +257,7 @@ OC.L10N.register(
     "Cancel log in" : "Prekini prijavo",
     "Setup two-factor authentication" : "Nastavite dvostopenjsko overitev",
     "Error while validating your second factor" : "Napaka med preverjanjem drugega koraka",
+    "Access through untrusted domain" : "Dostop prek domene, ki ni zaupanja vredna",
     "App update required" : "Zahtevana je posodobitev programa",
     "%1$s will be updated to version %2$s" : "Okolje %1$s bo posodobljeno na različico %2$s",
     "These apps will be updated:" : "Posodobljeni bodo programi:",
@@ -250,7 +268,8 @@ OC.L10N.register(
     "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:",
     "Detailed logs" : "Podrobni dnevniški zapisi",
     "Update needed" : "Zahtevana je posodobitev",
-    "Upgrade via web on my own risk" : "Posodobi preko spleta na moje tveganje",
+    "For help, see the  <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Za pomoč si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacijo</a>.",
+    "Upgrade via web on my own risk" : "Posodobi prek spleta kljub večjemu tveganju",
     "Maintenance mode" : "Vzdrževalni način",
     "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko zadrži izvajanje postopka.",
     "This page will refresh itself when the instance is available again." : "Stran bo osvežena, ko bo vsebina spet na voljo.",
@@ -263,7 +282,7 @@ OC.L10N.register(
     "Sending email …" : "Poteka pošiljanje elektronske pošte ...",
     "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Do spletišča je omogočen dostop prek protokola HTTP. Priporočljivo je omogočiti podporo za varni protokol HTTPS, kot je to opisano med <a href=\"{docUrl}\">varnostnimi namigi</a>.",
     "Shared" : "V souporabi",
-    "Shared with" : "V skupni rabi z",
+    "Shared with" : "V skupni rabi z uporabnikom",
     "Shared by" : "V souporabi od",
     "Choose a password for the public link" : "Izberite geslo za javno povezavo",
     "Choose a password for the public link or press the \"Enter\" key" : "Izberite geslo za javno povezavo ali pritisnite tipko »Enter«.",
@@ -294,6 +313,7 @@ OC.L10N.register(
     "Share to {name}" : "Omogoči souporabo z uporabnikom {name}",
     "Share link" : "Povezava do mape souporabe",
     "New share link" : "Nova povezava za souporabo",
+    "Created on {time}" : "Ustvarjeno {time}",
     "Could not unshare" : "Ni mogoče preklicati souporabe",
     "Shared with you and the group {group} by {owner}" : "{owner} omogoči souporabo z vami in s skupino {group}.",
     "Shared with you by {owner}" : "{owner} vam omogoči souporabo",
@@ -310,7 +330,7 @@ OC.L10N.register(
     "Can delete" : "Lahko izbriše",
     "Access control" : "Nadzor dostopa",
     "Error while sharing" : "Napaka med omogočanjem souporabe",
-    "Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.",
+    "Share details could not be loaded for this item." : "Podrobnosti souporabe za ta predmet ni mogoče naložiti.",
     "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin, skladnih z iskalnim nizom {search}",
     "No users found for {search}" : "Ni najdenih uporabnikov, skladnih z iskalnim nizom {search}",
     "An error occurred. Please try again" : "Prišlo je do napake. Poskusite znova.",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index c8379224b7c3459d630058617129898e8aca9b99..258c19aa6a9319256e6f4b5b7da7c6b7464a3cb0 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -44,7 +44,7 @@
     "Checking updates of apps" : "Poteka preverjanje za posodobitve programov",
     "Checking for update of app \"%s\" in appstore" : "Poteka preverjanje posodobitev za program »%s« v trgovini",
     "Update app \"%s\" from appstore" : "Posodobi program »%s« iz trgovine",
-    "Checked for update of app \"%s\" in appstore" : "Preverjenje posodobitev za »%s« v trgovini",
+    "Checked for update of app \"%s\" in appstore" : "Preverjanje posodobitev za »%s« v trgovini",
     "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).",
     "Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
     "Updated \"%1$s\" to %2$s" : "Posodabljanje »%1$s« na različico %2$s",
@@ -64,7 +64,17 @@
     "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Spletni strežnik ni ustrezno nastavljen za razreševanje naslova »{url}«. Več podrobnosti je zapisanih v <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentaciji</a>.",
     "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Kaže, da okolje PHP ni ustrezno nastavljeno za poizvedovanje sistemskih spremenljivk. Preizkus z ukazom getegetenv(\"PATH\") vrne le prazen odziv.",
     "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Preverite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">namestitveno dokumentacijo ↗</a> za nastavitve PHP strežnika, še posebej, če uporabljate php-fpm.",
+    "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Manjka modul PHP »fileinfo«. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.",
+    "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ni mogoče izvesti opravila cron prek vmesnika ukazne vrstice. Pojavile so se tehnične napake:",
+    "Last background job execution ran {relativeTime}. Something seems wrong." : " Zadnje ozadnje izvajanje opravila je potekalo{ relativeTime}. Kaže, da je nekaj narobe.",
     "Check the background job settings" : "Preverite nastavitve ozadnjih opravil",
+    "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Strežnik je brez vzpostavljene internetne povezave. Več končnih točk ni mogoče doseči. To pomeni, da priklapljanje zunanjih diskov,  opozorila za posodobitve in namestitve programske opreme iz drugih virov, niso mogoče. Oddaljen dostop do datotek in pošiljanje obvesti najverjetneje prav tako ne deluje. Vzpostavite povezavo, da omogočite vso funkcionalnost.",
+    "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Ni nastavljenega predpomnilnika. Za izboljšanje hitrosti delovanja je treba predpomnilnik memcache, če je na voljo, ustrezno nastaviti. Več podrobnosti je na voljo v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
+    "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Iz varnostnih razlogov je priporočljivo nastaviti ustrezen vir za naključno ustvarjanje podatkov, ki ga uporablja PHP. Več podrobnosti je zavedenih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
+    "You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Trenutno je zagnana različica PHP {version}. Priporočljivo je posodobiti sistem na najnovejšo različico in s tem namestiti <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">funkcijske in varnostne posodobitve delovanja, ki jih zagotavlja skupnost PHP</a>. Pakete je priporočljivo posodobiti takoj, ko so na voljo za nameščeno distribucijo.",
+    "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Predpomnilnik memcached je nastavljen kot porazdeljen predpomnilnik, vendar pa je nameščen napačen modul PHP »memcache«. Modul \\OC\\Memcache\\Memcached podpirao le »memcached«, ne pa tudi »memcache«. Več podrobnosti za oba modula je zapisanih <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">na wiki straneh</a>.",
+    "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Nekatere datoteke ne opravijo preizkusa celovitosti. Več podrobnosti o težavi je opisanih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neveljavnih datotek … </a>/ <a href=\"{rescanEndpoint}\">Ponovni preizkus …</a>)",
+    "Missing index \"{indexName}\" in table \"{tableName}\"." : "Manjka kazalo » {indexName} « v razpredelnici »{tableName}«.",
     "Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Uporaba vgrajenega pošiljalnika pošte ni več podprta. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Posodobite nastavitve poštnega strežnika ↗<a/>.",
     "The PHP memory limit is below the recommended value of 512MB." : "Omejitev pomnilnika PHP je pod priporočljivo vrednostjo 512 MB.",
     "Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
@@ -185,6 +195,7 @@
     "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Na strežniku ni mogoče najti dokumentacije. Morda je mesto souprabe izbrisano ali pa so potekla dovoljenja.",
     "Error" : "Napaka",
     "Internal Server Error" : "Notranja napaka strežnika",
+    "The server was unable to complete your request." : "Odziv strežnika kaže, da ni mogoče končati zahteve.",
     "More details can be found in the server log." : "Več podrobnosti je zabeleženih v dnevniški datoteki strežnika.",
     "Technical details" : "Tehnične podrobnosti",
     "Remote Address: %s" : "Oddaljen naslov: %s",
@@ -202,7 +213,7 @@
     "Storage & database" : "Shramba in podatkovna zbirka",
     "Data folder" : "Podatkovna mapa",
     "Configure the database" : "Nastavi podatkovno zbirko",
-    "Only %s is available." : "Le %s je na voljo.",
+    "Only %s is available." : "Na voljo je le %s.",
     "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.",
     "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.",
     "Database user" : "Uporabnik podatkovne zbirke",
@@ -210,12 +221,17 @@
     "Database name" : "Ime podatkovne zbirke",
     "Database tablespace" : "Razpredelnica podatkovne zbirke",
     "Database host" : "Gostitelj podatkovne zbirke",
+    "Please specify the port number along with the host name (e.g., localhost:5432)." : "Skupaj z imenom gostitelja je treba določiti tudi številko vrat (na primer localhost:5432).",
     "Performance warning" : "Opozorilo učinkovitosti delovanja",
+    "You chose SQLite as database." : "Kot podatkovna zbirka bo uporabljena zbirka SQLite.",
     "Finish setup" : "Končaj nastavitev",
     "Finishing …" : "Poteka zaključevanje opravila ...",
     "Need help?" : "Ali potrebujete pomoč?",
     "See the documentation" : "Preverite dokumentacijo",
     "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Program zahteva podporo JavaScript za pravilno delovanje. Med nastavitvami omogočite {linkstart}JavaScript{linkend} in osvežite spletno stran.",
+    "Get your own free account" : "Pridobite brezplačni račun",
+    "Skip to main content" : "Preskoči na glavno vsebino",
+    "Skip to navigation of app" : "Preskoči na program za krmarjenje",
     "More apps" : "Več programov",
     "More" : "Več",
     "More apps menu" : "Meni več programov",
@@ -230,6 +246,7 @@
     "Grant access" : "Odobri dostop",
     "Account access" : "Dostop do računa",
     "Account connected" : "Račun je povezan",
+    "You can close this window." : "To okno lahko zaprete.",
     "This share is password-protected" : "To mesto je zaščiteno z geslom",
     "The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
     "Two-factor authentication" : "Dvo-stopenjska overitev",
@@ -238,6 +255,7 @@
     "Cancel log in" : "Prekini prijavo",
     "Setup two-factor authentication" : "Nastavite dvostopenjsko overitev",
     "Error while validating your second factor" : "Napaka med preverjanjem drugega koraka",
+    "Access through untrusted domain" : "Dostop prek domene, ki ni zaupanja vredna",
     "App update required" : "Zahtevana je posodobitev programa",
     "%1$s will be updated to version %2$s" : "Okolje %1$s bo posodobljeno na različico %2$s",
     "These apps will be updated:" : "Posodobljeni bodo programi:",
@@ -248,7 +266,8 @@
     "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:",
     "Detailed logs" : "Podrobni dnevniški zapisi",
     "Update needed" : "Zahtevana je posodobitev",
-    "Upgrade via web on my own risk" : "Posodobi preko spleta na moje tveganje",
+    "For help, see the  <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Za pomoč si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentacijo</a>.",
+    "Upgrade via web on my own risk" : "Posodobi prek spleta kljub večjemu tveganju",
     "Maintenance mode" : "Vzdrževalni način",
     "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko zadrži izvajanje postopka.",
     "This page will refresh itself when the instance is available again." : "Stran bo osvežena, ko bo vsebina spet na voljo.",
@@ -261,7 +280,7 @@
     "Sending email …" : "Poteka pošiljanje elektronske pošte ...",
     "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Do spletišča je omogočen dostop prek protokola HTTP. Priporočljivo je omogočiti podporo za varni protokol HTTPS, kot je to opisano med <a href=\"{docUrl}\">varnostnimi namigi</a>.",
     "Shared" : "V souporabi",
-    "Shared with" : "V skupni rabi z",
+    "Shared with" : "V skupni rabi z uporabnikom",
     "Shared by" : "V souporabi od",
     "Choose a password for the public link" : "Izberite geslo za javno povezavo",
     "Choose a password for the public link or press the \"Enter\" key" : "Izberite geslo za javno povezavo ali pritisnite tipko »Enter«.",
@@ -292,6 +311,7 @@
     "Share to {name}" : "Omogoči souporabo z uporabnikom {name}",
     "Share link" : "Povezava do mape souporabe",
     "New share link" : "Nova povezava za souporabo",
+    "Created on {time}" : "Ustvarjeno {time}",
     "Could not unshare" : "Ni mogoče preklicati souporabe",
     "Shared with you and the group {group} by {owner}" : "{owner} omogoči souporabo z vami in s skupino {group}.",
     "Shared with you by {owner}" : "{owner} vam omogoči souporabo",
@@ -308,7 +328,7 @@
     "Can delete" : "Lahko izbriše",
     "Access control" : "Nadzor dostopa",
     "Error while sharing" : "Napaka med omogočanjem souporabe",
-    "Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.",
+    "Share details could not be loaded for this item." : "Podrobnosti souporabe za ta predmet ni mogoče naložiti.",
     "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin, skladnih z iskalnim nizom {search}",
     "No users found for {search}" : "Ni najdenih uporabnikov, skladnih z iskalnim nizom {search}",
     "An error occurred. Please try again" : "Prišlo je do napake. Poskusite znova.",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index eb26dbdd3e3d749c8fb5b87b683591a4565e44ba..7fd1732814da69df9aadb180a457c8a00b361486 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -64,8 +64,11 @@ OC.L10N.register(
     "Strong password" : "Starkt lösenord",
     "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Din webbserver är ännu inte korrekt inställd för att tillåta filsynkronisering, eftersom WebDAV-gränssnittet verkar vara trasigt.",
     "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Din webbserver är inte korrekt inställd för att lösa \"{url}\". Ytterligare information finns i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentationen</a>.",
+    "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP verkar inte vara korrekt inställd för att fråga efter systemmiljövariabler. Testet med getenv(\"PATH\") ger bara ett tomt svar.",
+    "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivskyddade konfigurationen har aktiverats. Detta förhindrar att vissa konfigurationer ställs in via webbgränssnittet. Dessutom måste filen göras skrivbar manuellt för varje uppdatering.",
     "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-modulen \"fileinfo\" saknas. Det rekommenderas starkt att göra det möjligt för den här modulen att få bästa resultat med MIME-typdetektering.",
     "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Det var inte möjligt att utföra cron-jobbet via CLI. Följande tekniska fel har uppstått:",
+    "Last background job execution ran {relativeTime}. Something seems wrong." : "Senaste bakgrundsjobb körde {relativeTime}. Något verkar fel.",
     "Check the background job settings" : "Kontrollera inställningarna för bakgrundsjobb",
     "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Den här servern har ingen fungerande Internetanslutning: flera slutpunkter kunde inte nås. Det innebär att några av funktionerna som montering av extern lagring, aviseringar om uppdateringar eller installation av tredjepartsprogram inte fungerar. Åtkomst till filer på distans och sändning av e-postmeddelanden kanske inte heller fungerar. Upprätta en anslutning från den här servern till Internet för att njuta av alla funktioner.",
     "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Inget minnescache har konfigurerats. För att förbättra prestanda, konfigurera en memcache, om tillgänglig. Ytterligare information finns i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentationen</a>.",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 0ab928748c343425cc065d58ad37b039499f34fe..2a52d99214f96ac9203492be31551f37ba74b4c8 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -62,8 +62,11 @@
     "Strong password" : "Starkt lösenord",
     "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Din webbserver är ännu inte korrekt inställd för att tillåta filsynkronisering, eftersom WebDAV-gränssnittet verkar vara trasigt.",
     "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Din webbserver är inte korrekt inställd för att lösa \"{url}\". Ytterligare information finns i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentationen</a>.",
+    "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP verkar inte vara korrekt inställd för att fråga efter systemmiljövariabler. Testet med getenv(\"PATH\") ger bara ett tomt svar.",
+    "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivskyddade konfigurationen har aktiverats. Detta förhindrar att vissa konfigurationer ställs in via webbgränssnittet. Dessutom måste filen göras skrivbar manuellt för varje uppdatering.",
     "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-modulen \"fileinfo\" saknas. Det rekommenderas starkt att göra det möjligt för den här modulen att få bästa resultat med MIME-typdetektering.",
     "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Det var inte möjligt att utföra cron-jobbet via CLI. Följande tekniska fel har uppstått:",
+    "Last background job execution ran {relativeTime}. Something seems wrong." : "Senaste bakgrundsjobb körde {relativeTime}. Något verkar fel.",
     "Check the background job settings" : "Kontrollera inställningarna för bakgrundsjobb",
     "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Den här servern har ingen fungerande Internetanslutning: flera slutpunkter kunde inte nås. Det innebär att några av funktionerna som montering av extern lagring, aviseringar om uppdateringar eller installation av tredjepartsprogram inte fungerar. Åtkomst till filer på distans och sändning av e-postmeddelanden kanske inte heller fungerar. Upprätta en anslutning från den här servern till Internet för att njuta av alla funktioner.",
     "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Inget minnescache har konfigurerats. För att förbättra prestanda, konfigurera en memcache, om tillgänglig. Ytterligare information finns i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentationen</a>.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index d71e37dc986400598d2edcf84ba3246e08356c18..419fdb1f82263c9fcadfd9e1af6fab8b89479bfe 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -288,6 +288,8 @@ OC.L10N.register(
     "Account access" : "账户访问",
     "You are about to grant %1$s access to your %2$s account." : "您正在授权 %1$s 访问您的 %2$s 账户。",
     "Account connected" : "账号已连接",
+    "Your client should now be connected!" : "您的客户端现在应该可以连接了!",
+    "You can close this window." : "您可以关闭此窗口。",
     "This share is password-protected" : "这个共享是被密码保护的",
     "The password is wrong. Try again." : "密码错误。请重试。",
     "Two-factor authentication" : "两步验证",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 51ad96a86135adfbb466f29d3c86458c1f0f3bd0..7da16e51ad2a63fbe70c20a078cb52ea0669e82f 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -286,6 +286,8 @@
     "Account access" : "账户访问",
     "You are about to grant %1$s access to your %2$s account." : "您正在授权 %1$s 访问您的 %2$s 账户。",
     "Account connected" : "账号已连接",
+    "Your client should now be connected!" : "您的客户端现在应该可以连接了!",
+    "You can close this window." : "您可以关闭此窗口。",
     "This share is password-protected" : "这个共享是被密码保护的",
     "The password is wrong. Try again." : "密码错误。请重试。",
     "Two-factor authentication" : "两步验证",
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 47fbcb21727dfad925bc1e5f9daccba35df74a82..cf28f634cab234e8fdc918338675243eb47090a9 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -446,10 +446,12 @@ return array(
     'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir . '/lib/public/WorkflowEngine/IComplexOperation.php',
     'OCP\\WorkflowEngine\\IEntity' => $baseDir . '/lib/public/WorkflowEngine/IEntity.php',
     'OCP\\WorkflowEngine\\IEntityCheck' => $baseDir . '/lib/public/WorkflowEngine/IEntityCheck.php',
+    'OCP\\WorkflowEngine\\IEntityCompat' => $baseDir . '/lib/public/WorkflowEngine/IEntityCompat.php',
     'OCP\\WorkflowEngine\\IEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/IEntityEvent.php',
     'OCP\\WorkflowEngine\\IFileCheck' => $baseDir . '/lib/public/WorkflowEngine/IFileCheck.php',
     'OCP\\WorkflowEngine\\IManager' => $baseDir . '/lib/public/WorkflowEngine/IManager.php',
     'OCP\\WorkflowEngine\\IOperation' => $baseDir . '/lib/public/WorkflowEngine/IOperation.php',
+    'OCP\\WorkflowEngine\\IOperationCompat' => $baseDir . '/lib/public/WorkflowEngine/IOperationCompat.php',
     'OCP\\WorkflowEngine\\IRuleMatcher' => $baseDir . '/lib/public/WorkflowEngine/IRuleMatcher.php',
     'OCP\\WorkflowEngine\\ISpecificOperation' => $baseDir . '/lib/public/WorkflowEngine/ISpecificOperation.php',
     'OC\\Accounts\\Account' => $baseDir . '/lib/private/Accounts/Account.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 8f7be7e4b26ff9353b8315a666b5aebaf6c1b8b3..aa12c20ac1357ac8e85e966fce67160a7df7482d 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -475,10 +475,12 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
         'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IComplexOperation.php',
         'OCP\\WorkflowEngine\\IEntity' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntity.php',
         'OCP\\WorkflowEngine\\IEntityCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCheck.php',
+        'OCP\\WorkflowEngine\\IEntityCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCompat.php',
         'OCP\\WorkflowEngine\\IEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityEvent.php',
         'OCP\\WorkflowEngine\\IFileCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IFileCheck.php',
         'OCP\\WorkflowEngine\\IManager' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IManager.php',
         'OCP\\WorkflowEngine\\IOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperation.php',
+        'OCP\\WorkflowEngine\\IOperationCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperationCompat.php',
         'OCP\\WorkflowEngine\\IRuleMatcher' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IRuleMatcher.php',
         'OCP\\WorkflowEngine\\ISpecificOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ISpecificOperation.php',
         'OC\\Accounts\\Account' => __DIR__ . '/../../..' . '/lib/private/Accounts/Account.php',
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index 3b5ab7e7d66fa0b63bb1f9152d971bb2328c1b84..f04233d4131271270439f0467bcbf7dc9aced0e2 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -4,7 +4,7 @@ OC.L10N.register(
     "Cannot write into \"config\" directory!" : "Mapa 'config' nima določenih ustreznih dovoljenj za pisanje!",
     "This can usually be fixed by giving the webserver write access to the config directory" : "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo.",
     "See %s" : "Oglejte si %s",
-    "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev",
+    "Sample configuration detected" : "Zaznana je neustrezna vzorčna nastavitev",
     "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "V sistem je bila kopirana datoteka s vzorčnimi nastavitvami. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
     "%1$s and %2$s" : "%1$s in %2$s",
     "%1$s, %2$s and %3$s" : "%1$s, %2$s in %3$s",
@@ -83,7 +83,7 @@ OC.L10N.register(
     "Set an admin username." : "Nastavi uporabniško ime skrbnika.",
     "Set an admin password." : "Nastavi skrbniško geslo.",
     "Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
-    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
+    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
     "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Souporaba ozadnjega programa %s mora vsebovati tudi vmesnik OCP\\Share_Backend",
     "Sharing backend %s not found" : "Ozadnjega programa %s za souporabo ni mogoče najti",
     "Sharing backend for %s not found" : "Ozadnjega programa za souporabo za %s ni mogoče najti",
@@ -157,13 +157,13 @@ OC.L10N.register(
     "Please install one of these locales on your system and restart your webserver." : "Namestiti je treba podporo za vsaj eno od navedenih jezikovnih določil v sistemu in nato ponovno zagnati spletni strežnik.",
     "Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
     "PHP module %s not installed." : "Modul PHP %s ni nameščen.",
-    "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
-    "Adjusting this setting in php.ini will make Nextcloud run again" : "Nastavitev tega parametra v <bold>php.ini</bold> bo vzpostavilo ponovno delovanje NextCloud",
+    "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP »%s« ni nastavljena na »%s«.",
+    "Adjusting this setting in php.ini will make Nextcloud run again" : "Prilagoditev te nastavitve v php.ini vzpostavi ponovno delovanje okolja NextCloud",
     "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je nastavljeno na \"%s\" namesto pričakovane vrednosti \"0\"",
     "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za reštev te težave nastavi <code>mbstring.func_overload</code> na <code>0</code> v tvojem php.ini",
-    "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora iti vsaj 2.7.0. Trenutno je nameščena %s.",
+    "libxml2 2.7.0 is at least required. Currently %s is installed." : "Različica knjižnice libxml2 mora biti 2.7.0 ali višja. Trenutno je nameščena %s.",
     "To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
-    "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
+    "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Kaže, da je PHP nastavljen tako, da odreže vrstične predmete docblock. To povzroči, da nekateri jedrni programi niso dosegljivi.",
     "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
     "PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
     "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
@@ -188,7 +188,7 @@ OC.L10N.register(
     "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
     "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
     "Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
-    "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno nastavil.",
+    "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
     "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
     "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja."
 },
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 346c81521e7fe00ed725ae967a3803fc6ffd9db5..d507b14c22c78ca6daf323a2b14b5a52e168e433 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -2,7 +2,7 @@
     "Cannot write into \"config\" directory!" : "Mapa 'config' nima določenih ustreznih dovoljenj za pisanje!",
     "This can usually be fixed by giving the webserver write access to the config directory" : "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo.",
     "See %s" : "Oglejte si %s",
-    "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev",
+    "Sample configuration detected" : "Zaznana je neustrezna vzorčna nastavitev",
     "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "V sistem je bila kopirana datoteka s vzorčnimi nastavitvami. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
     "%1$s and %2$s" : "%1$s in %2$s",
     "%1$s, %2$s and %3$s" : "%1$s, %2$s in %3$s",
@@ -81,7 +81,7 @@
     "Set an admin username." : "Nastavi uporabniško ime skrbnika.",
     "Set an admin password." : "Nastavi skrbniško geslo.",
     "Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
-    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
+    "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
     "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Souporaba ozadnjega programa %s mora vsebovati tudi vmesnik OCP\\Share_Backend",
     "Sharing backend %s not found" : "Ozadnjega programa %s za souporabo ni mogoče najti",
     "Sharing backend for %s not found" : "Ozadnjega programa za souporabo za %s ni mogoče najti",
@@ -155,13 +155,13 @@
     "Please install one of these locales on your system and restart your webserver." : "Namestiti je treba podporo za vsaj eno od navedenih jezikovnih določil v sistemu in nato ponovno zagnati spletni strežnik.",
     "Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
     "PHP module %s not installed." : "Modul PHP %s ni nameščen.",
-    "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
-    "Adjusting this setting in php.ini will make Nextcloud run again" : "Nastavitev tega parametra v <bold>php.ini</bold> bo vzpostavilo ponovno delovanje NextCloud",
+    "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP »%s« ni nastavljena na »%s«.",
+    "Adjusting this setting in php.ini will make Nextcloud run again" : "Prilagoditev te nastavitve v php.ini vzpostavi ponovno delovanje okolja NextCloud",
     "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je nastavljeno na \"%s\" namesto pričakovane vrednosti \"0\"",
     "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za reštev te težave nastavi <code>mbstring.func_overload</code> na <code>0</code> v tvojem php.ini",
-    "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora iti vsaj 2.7.0. Trenutno je nameščena %s.",
+    "libxml2 2.7.0 is at least required. Currently %s is installed." : "Različica knjižnice libxml2 mora biti 2.7.0 ali višja. Trenutno je nameščena %s.",
     "To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
-    "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
+    "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Kaže, da je PHP nastavljen tako, da odreže vrstične predmete docblock. To povzroči, da nekateri jedrni programi niso dosegljivi.",
     "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
     "PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
     "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
@@ -186,7 +186,7 @@
     "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
     "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
     "Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
-    "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno nastavil.",
+    "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
     "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
     "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja."
 },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index 9e47f9064d97b053ef7df1f955b28ec9ecf3c70b..146262c3f9518b10289caf2fae7091e59747e88a 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -55,6 +55,7 @@ use OC\App\Platform;
 use OC\DB\MigrationService;
 use OC\Installer;
 use OC\Repair;
+use OC\ServerNotAvailableException;
 use OCP\App\ManagerEvent;
 use OCP\ILogger;
 
@@ -153,6 +154,9 @@ class OC_App {
 			try {
 				self::requireAppFile($app);
 			} catch (Throwable $ex) {
+				if($ex instanceof ServerNotAvailableException) {
+					throw $ex;
+				}
 				\OC::$server->getLogger()->logException($ex);
 				if (!\OC::$server->getAppManager()->isShipped($app)) {
 					// Only disable apps which are not shipped
diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php
index 1e68dd24af063803af29de7b4ea4d65900198f4b..aa3d339544357ed5c87ab442e00532c28014bf83 100644
--- a/lib/private/legacy/eventsource.php
+++ b/lib/private/legacy/eventsource.php
@@ -27,7 +27,7 @@
  */
 
 /**
- * wrapper for server side events (http://en.wikipedia.org/wiki/Server-sent_events)
+ * wrapper for server side events (https://en.wikipedia.org/wiki/Server-sent_events)
  * includes a fallback for older browsers and IE
  *
  * use server side events with caution, to many open requests can hang the server
diff --git a/lib/public/WorkflowEngine/IEntity.php b/lib/public/WorkflowEngine/IEntity.php
index c08e9072a380da0418adfdf881b020876c4ee44d..b8205600498a5f5241d77119be24f73a95998686 100644
--- a/lib/public/WorkflowEngine/IEntity.php
+++ b/lib/public/WorkflowEngine/IEntity.php
@@ -24,7 +24,7 @@ declare(strict_types=1);
 
 namespace OCP\WorkflowEngine;
 
-use Symfony\Component\EventDispatcher\GenericEvent;
+use OCP\EventDispatcher\Event;
 
 /**
  * Interface IEntity
@@ -72,6 +72,6 @@ interface IEntity {
 	/**
 	 * @since 18.0.0
 	 */
-	public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, GenericEvent $event): void;
+	public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, Event $event): void;
 
 }
diff --git a/lib/public/WorkflowEngine/IEntityCompat.php b/lib/public/WorkflowEngine/IEntityCompat.php
new file mode 100644
index 0000000000000000000000000000000000000000..1a3ffc7bc10e92147eddd1ab76d73514111f5a6b
--- /dev/null
+++ b/lib/public/WorkflowEngine/IEntityCompat.php
@@ -0,0 +1,47 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IEntityCompat
+ *
+ * This interface extends IEntity to provide compatibility with old style
+ * Event classes. It is only present for a transition period and will be
+ * removed in 2023 again.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ * @deprecated
+ */
+interface IEntityCompat extends IEntity {
+	/**
+	 * Like prepareRuleMatcherCompat, but works with events that are not based
+	 * on \OCP\EventDispatcher\Event.
+	 *
+	 * @since 18.0.0
+	 * @deprecated
+	 */
+	public function prepareRuleMatcherCompat(IRuleMatcher $ruleMatcher, string $eventName, $event): void;
+}
diff --git a/lib/public/WorkflowEngine/IOperation.php b/lib/public/WorkflowEngine/IOperation.php
index d16fd618a84bbe15be8a7a6001cad2e746c67b7e..d01c6021c5fcf69b7b5ec5590280fcd88f46a3a4 100644
--- a/lib/public/WorkflowEngine/IOperation.php
+++ b/lib/public/WorkflowEngine/IOperation.php
@@ -23,7 +23,7 @@
 
 namespace OCP\WorkflowEngine;
 
-use Symfony\Component\EventDispatcher\GenericEvent;
+use OCP\EventDispatcher\Event;
 
 /**
  * Interface IOperation
@@ -99,5 +99,5 @@ interface IOperation {
 	 *
 	 * @since 18.0.0
 	 */
-	public function onEvent(string $eventName, GenericEvent $event, IRuleMatcher $ruleMatcher): void;
+	public function onEvent(string $eventName, Event $event, IRuleMatcher $ruleMatcher): void;
 }
diff --git a/lib/public/WorkflowEngine/IOperationCompat.php b/lib/public/WorkflowEngine/IOperationCompat.php
new file mode 100644
index 0000000000000000000000000000000000000000..434e6da03161b128f2420415bec27e088d3a9563
--- /dev/null
+++ b/lib/public/WorkflowEngine/IOperationCompat.php
@@ -0,0 +1,50 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IOperationCompat
+ *
+ * This interface extends IOperation to provide compatibility with old style
+ * Event classes. It is only present for a transition period and will be
+ * removed in 2023 again.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ * @deprecated
+ */
+interface IOperationCompat {
+	/**
+	 * Like onEvent, but used with events that are not based on
+	 * \OCP\EventDispatcher\Event.
+	 *
+	 * This method is introduced for compatibility reasons and will be removed
+	 * in 2023 again.
+	 *
+	 * @since 18.0.0
+	 * @deprecated
+	 */
+	public function onEventCompat(string $eventName, $event, IRuleMatcher $ruleMatcher): void;
+}
diff --git a/package-lock.json b/package-lock.json
index 2020602a47908cfea50a72287ae0b4498a1ca750..a475fd483d1297912c88e347f87c8f1494d7df4d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5257,9 +5257,9 @@
       "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
     },
     "handlebars": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz",
-      "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==",
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz",
+      "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==",
       "requires": {
         "neo-async": "^2.6.0",
         "optimist": "^0.6.1",
@@ -9036,9 +9036,9 @@
       "dev": true
     },
     "uglify-js": {
-      "version": "3.6.8",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz",
-      "integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==",
+      "version": "3.6.9",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
+      "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
       "optional": true,
       "requires": {
         "commander": "~2.20.3",
diff --git a/package.json b/package.json
index 7bc12f45cf87d892e97c3987ddbba7f0efb7857e..04f3ccc34d246a8fb9fae1498b40dba1c4aa73ab 100644
--- a/package.json
+++ b/package.json
@@ -41,7 +41,7 @@
     "debounce": "^1.2.0",
     "dompurify": "^2.0.7",
     "escape-html": "^1.0.3",
-    "handlebars": "^4.5.1",
+    "handlebars": "^4.5.2",
     "jcrop": "git+https://github.com/ChristophWurst/Jcrop.git#v0.9.12-npm3",
     "jquery": "2.1.4",
     "jquery-migrate": "^1.4.1",
diff --git a/tests/Core/Controller/ClientFlowLoginControllerTest.php b/tests/Core/Controller/ClientFlowLoginControllerTest.php
index 50280e18371f38101d0398b15479071c6159c466..1401eac67d82168fe2ab98562556aa0673656a1a 100644
--- a/tests/Core/Controller/ClientFlowLoginControllerTest.php
+++ b/tests/Core/Controller/ClientFlowLoginControllerTest.php
@@ -398,7 +398,16 @@ class ClientFlowLoginControllerTest extends TestCase {
 		$this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken'));
 	}
 
-	public function testGeneratePasswordWithPasswordForOauthClient() {
+	/**
+	 * @param string $redirectUri
+	 * @param string $redirectUrl
+	 *
+	 * @testWith
+	 * ["https://example.com/redirect.php", "https://example.com/redirect.php?state=MyOauthState&code=MyAccessCode"]
+	 * ["https://example.com/redirect.php?hello=world", "https://example.com/redirect.php?hello=world&state=MyOauthState&code=MyAccessCode"]
+	 *
+	 */
+	public function testGeneratePasswordWithPasswordForOauthClient($redirectUri, $redirectUrl) {		
 		$this->session
 			->expects($this->at(0))
 			->method('get')
@@ -471,7 +480,7 @@ class ClientFlowLoginControllerTest extends TestCase {
 			->willReturn($token);
 		$client = new Client();
 		$client->setName('My OAuth client');
-		$client->setRedirectUri('https://example.com/redirect.php');
+		$client->setRedirectUri($redirectUri);
 		$this->clientMapper
 			->expects($this->once())
 			->method('getByIdentifier')
@@ -481,7 +490,7 @@ class ClientFlowLoginControllerTest extends TestCase {
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatch');
 
-		$expected = new Http\RedirectResponse('https://example.com/redirect.php?state=MyOauthState&code=MyAccessCode');
+		$expected = new Http\RedirectResponse($redirectUrl);
 		$this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken', 'MyClientIdentifier'));
 	}