summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-08-03 15:07:42 +0200
committerGitHub <noreply@github.com>2017-08-03 15:07:42 +0200
commitac4927809c2cf8d66c9f6aa84a7009b521a8d0d7 (patch)
treea2cec81b3b5da84a3462adff4e03a1f07ceb9321
parent7de9eb16d80d31162b5f3930daa45f8e0df45ccc (diff)
parentbb865a55febe7b712a0e6cc7e1e93034f60a0e8b (diff)
downloadnextcloud-server-ac4927809c2cf8d66c9f6aa84a7009b521a8d0d7.tar.gz
nextcloud-server-ac4927809c2cf8d66c9f6aa84a7009b521a8d0d7.zip
Merge branch 'master' into clean-settings-layout
-rw-r--r--.drone.yml122
-rw-r--r--.scrutinizer.yml5
m---------3rdparty0
-rw-r--r--CHANGELOG.md20
-rw-r--r--README.md1
-rw-r--r--apps/comments/appinfo/routes.php11
-rw-r--r--apps/comments/l10n/el.js2
-rw-r--r--apps/comments/l10n/el.json2
-rw-r--r--apps/comments/l10n/lt_LT.js32
-rw-r--r--apps/comments/l10n/lt_LT.json32
-rw-r--r--apps/comments/l10n/zh_TW.js2
-rw-r--r--apps/comments/l10n/zh_TW.json2
-rw-r--r--apps/comments/lib/Activity/Listener.php4
-rw-r--r--apps/comments/lib/Activity/Provider.php6
-rw-r--r--apps/comments/lib/Controller/Notifications.php2
-rw-r--r--apps/comments/lib/Notification/Notifier.php2
-rw-r--r--apps/dav/appinfo/v1/publicwebdav.php4
-rw-r--r--apps/dav/l10n/el.js41
-rw-r--r--apps/dav/l10n/el.json41
-rw-r--r--apps/dav/l10n/sq.js9
-rw-r--r--apps/dav/l10n/sq.json9
-rw-r--r--apps/dav/lib/CalDAV/Activity/Provider/Calendar.php10
-rw-r--r--apps/dav/lib/CalDAV/Activity/Provider/Event.php4
-rw-r--r--apps/dav/lib/CalDAV/Activity/Provider/Todo.php4
-rw-r--r--apps/dav/lib/CalDAV/BirthdayService.php2
-rw-r--r--apps/dav/lib/CalDAV/CalDavBackend.php21
-rw-r--r--apps/dav/lib/CalDAV/Plugin.php2
-rw-r--r--apps/dav/lib/CalDAV/Search/SearchPlugin.php4
-rw-r--r--apps/dav/lib/CardDAV/CardDavBackend.php9
-rw-r--r--apps/dav/lib/CardDAV/Plugin.php6
-rw-r--r--apps/dav/lib/Connector/LegacyDAVACL.php2
-rw-r--r--apps/dav/lib/Connector/Sabre/Directory.php4
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php10
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php10
-rw-r--r--apps/dav/lib/Connector/Sabre/Node.php4
-rw-r--r--apps/dav/lib/Connector/Sabre/ObjectTree.php8
-rw-r--r--apps/dav/lib/Connector/Sabre/Principal.php4
-rw-r--r--apps/dav/lib/Connector/Sabre/QuotaPlugin.php2
-rw-r--r--apps/dav/lib/DAV/Sharing/Backend.php2
-rw-r--r--apps/dav/lib/DAV/SystemPrincipalBackend.php2
-rw-r--r--apps/dav/lib/Files/FilesHome.php2
-rw-r--r--apps/dav/lib/Files/RootCollection.php2
-rw-r--r--apps/dav/lib/Upload/AssemblyStream.php88
-rw-r--r--apps/encryption/l10n/el.js4
-rw-r--r--apps/encryption/l10n/el.json4
-rw-r--r--apps/encryption/l10n/es_MX.js2
-rw-r--r--apps/encryption/l10n/es_MX.json2
-rw-r--r--apps/encryption/l10n/it.js1
-rw-r--r--apps/encryption/l10n/it.json1
-rw-r--r--apps/encryption/l10n/ja.js3
-rw-r--r--apps/encryption/l10n/ja.json3
-rw-r--r--apps/encryption/l10n/lt_LT.js67
-rw-r--r--apps/encryption/l10n/lt_LT.json67
-rw-r--r--apps/encryption/l10n/sq.js4
-rw-r--r--apps/encryption/l10n/sq.json4
-rw-r--r--apps/encryption/lib/Crypto/Crypt.php2
-rw-r--r--apps/encryption/lib/Crypto/Encryption.php29
-rw-r--r--apps/federatedfilesharing/l10n/cs.js4
-rw-r--r--apps/federatedfilesharing/l10n/cs.json4
-rw-r--r--apps/federatedfilesharing/l10n/de.js4
-rw-r--r--apps/federatedfilesharing/l10n/de.json4
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.js4
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.json4
-rw-r--r--apps/federatedfilesharing/l10n/el.js47
-rw-r--r--apps/federatedfilesharing/l10n/el.json47
-rw-r--r--apps/federatedfilesharing/l10n/en_GB.js4
-rw-r--r--apps/federatedfilesharing/l10n/en_GB.json4
-rw-r--r--apps/federatedfilesharing/l10n/es.js14
-rw-r--r--apps/federatedfilesharing/l10n/es.json14
-rw-r--r--apps/federatedfilesharing/l10n/es_AR.js2
-rw-r--r--apps/federatedfilesharing/l10n/es_AR.json2
-rw-r--r--apps/federatedfilesharing/l10n/es_MX.js4
-rw-r--r--apps/federatedfilesharing/l10n/es_MX.json4
-rw-r--r--apps/federatedfilesharing/l10n/fi.js2
-rw-r--r--apps/federatedfilesharing/l10n/fi.json2
-rw-r--r--apps/federatedfilesharing/l10n/fr.js4
-rw-r--r--apps/federatedfilesharing/l10n/fr.json4
-rw-r--r--apps/federatedfilesharing/l10n/hu.js2
-rw-r--r--apps/federatedfilesharing/l10n/hu.json2
-rw-r--r--apps/federatedfilesharing/l10n/ia.js2
-rw-r--r--apps/federatedfilesharing/l10n/ia.json2
-rw-r--r--apps/federatedfilesharing/l10n/id.js2
-rw-r--r--apps/federatedfilesharing/l10n/id.json2
-rw-r--r--apps/federatedfilesharing/l10n/is.js4
-rw-r--r--apps/federatedfilesharing/l10n/is.json4
-rw-r--r--apps/federatedfilesharing/l10n/it.js3
-rw-r--r--apps/federatedfilesharing/l10n/it.json3
-rw-r--r--apps/federatedfilesharing/l10n/ko.js2
-rw-r--r--apps/federatedfilesharing/l10n/ko.json2
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.js64
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.json64
-rw-r--r--apps/federatedfilesharing/l10n/nb.js4
-rw-r--r--apps/federatedfilesharing/l10n/nb.json4
-rw-r--r--apps/federatedfilesharing/l10n/nl.js8
-rw-r--r--apps/federatedfilesharing/l10n/nl.json8
-rw-r--r--apps/federatedfilesharing/l10n/pl.js2
-rw-r--r--apps/federatedfilesharing/l10n/pl.json2
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.js4
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.json4
-rw-r--r--apps/federatedfilesharing/l10n/ru.js4
-rw-r--r--apps/federatedfilesharing/l10n/ru.json4
-rw-r--r--apps/federatedfilesharing/l10n/sq.js17
-rw-r--r--apps/federatedfilesharing/l10n/sq.json17
-rw-r--r--apps/federatedfilesharing/l10n/sv.js2
-rw-r--r--apps/federatedfilesharing/l10n/sv.json2
-rw-r--r--apps/federatedfilesharing/l10n/tr.js4
-rw-r--r--apps/federatedfilesharing/l10n/tr.json4
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.js4
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.json4
-rw-r--r--apps/federatedfilesharing/l10n/zh_TW.js16
-rw-r--r--apps/federatedfilesharing/l10n/zh_TW.json16
-rw-r--r--apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php2
-rw-r--r--apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php4
-rw-r--r--apps/federatedfilesharing/lib/Controller/RequestHandlerController.php4
-rw-r--r--apps/federatedfilesharing/templates/settings-personal.php2
-rw-r--r--apps/federation/l10n/de.js2
-rw-r--r--apps/federation/l10n/de.json2
-rw-r--r--apps/federation/l10n/de_DE.js2
-rw-r--r--apps/federation/l10n/de_DE.json2
-rw-r--r--apps/federation/l10n/el.js4
-rw-r--r--apps/federation/l10n/el.json4
-rw-r--r--apps/federation/l10n/es.js2
-rw-r--r--apps/federation/l10n/es.json2
-rw-r--r--apps/federation/l10n/lt_LT.js16
-rw-r--r--apps/federation/l10n/lt_LT.json14
-rw-r--r--apps/federation/l10n/zh_TW.js11
-rw-r--r--apps/federation/l10n/zh_TW.json11
-rw-r--r--apps/federation/lib/AppInfo/Application.php84
-rw-r--r--apps/federation/lib/BackgroundJob/GetSharedSecret.php94
-rw-r--r--apps/federation/lib/BackgroundJob/RequestSharedSecret.php91
-rw-r--r--apps/federation/lib/Command/SyncFederationAddressBooks.php2
-rw-r--r--apps/federation/lib/Controller/OCSAuthAPIController.php20
-rw-r--r--apps/federation/lib/Controller/SettingsController.php1
-rw-r--r--apps/federation/lib/DAV/FedAuth.php2
-rw-r--r--apps/federation/lib/DbHandler.php38
-rw-r--r--apps/federation/lib/Middleware/AddServerMiddleware.php9
-rw-r--r--apps/federation/lib/SyncJob.php21
-rw-r--r--apps/federation/lib/TrustedServers.php12
-rw-r--r--apps/federation/tests/BackgroundJob/GetSharedSecretTest.php90
-rw-r--r--apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php93
-rw-r--r--apps/federation/tests/Controller/OCSAuthAPIControllerTest.php52
-rw-r--r--apps/federation/tests/TrustedServersTest.php18
-rw-r--r--apps/files/ajax/download.php2
-rw-r--r--apps/files/l10n/bg.js4
-rw-r--r--apps/files/l10n/bg.json4
-rw-r--r--apps/files/l10n/cs.js6
-rw-r--r--apps/files/l10n/cs.json6
-rw-r--r--apps/files/l10n/da.js4
-rw-r--r--apps/files/l10n/da.json4
-rw-r--r--apps/files/l10n/de.js6
-rw-r--r--apps/files/l10n/de.json6
-rw-r--r--apps/files/l10n/de_DE.js6
-rw-r--r--apps/files/l10n/de_DE.json6
-rw-r--r--apps/files/l10n/el.js12
-rw-r--r--apps/files/l10n/el.json12
-rw-r--r--apps/files/l10n/en_GB.js6
-rw-r--r--apps/files/l10n/en_GB.json6
-rw-r--r--apps/files/l10n/es.js18
-rw-r--r--apps/files/l10n/es.json18
-rw-r--r--apps/files/l10n/es_AR.js4
-rw-r--r--apps/files/l10n/es_AR.json4
-rw-r--r--apps/files/l10n/es_MX.js8
-rw-r--r--apps/files/l10n/es_MX.json8
-rw-r--r--apps/files/l10n/eu.js5
-rw-r--r--apps/files/l10n/eu.json5
-rw-r--r--apps/files/l10n/fi.js4
-rw-r--r--apps/files/l10n/fi.json4
-rw-r--r--apps/files/l10n/fr.js6
-rw-r--r--apps/files/l10n/fr.json6
-rw-r--r--apps/files/l10n/hu.js4
-rw-r--r--apps/files/l10n/hu.json4
-rw-r--r--apps/files/l10n/ia.js4
-rw-r--r--apps/files/l10n/ia.json4
-rw-r--r--apps/files/l10n/is.js6
-rw-r--r--apps/files/l10n/is.json6
-rw-r--r--apps/files/l10n/it.js6
-rw-r--r--apps/files/l10n/it.json6
-rw-r--r--apps/files/l10n/ja.js6
-rw-r--r--apps/files/l10n/ja.json6
-rw-r--r--apps/files/l10n/ko.js4
-rw-r--r--apps/files/l10n/ko.json4
-rw-r--r--apps/files/l10n/lb.js4
-rw-r--r--apps/files/l10n/lb.json4
-rw-r--r--apps/files/l10n/lt_LT.js31
-rw-r--r--apps/files/l10n/lt_LT.json31
-rw-r--r--apps/files/l10n/lv.js4
-rw-r--r--apps/files/l10n/lv.json4
-rw-r--r--apps/files/l10n/nb.js6
-rw-r--r--apps/files/l10n/nb.json6
-rw-r--r--apps/files/l10n/nl.js6
-rw-r--r--apps/files/l10n/nl.json6
-rw-r--r--apps/files/l10n/pl.js4
-rw-r--r--apps/files/l10n/pl.json4
-rw-r--r--apps/files/l10n/pt_BR.js6
-rw-r--r--apps/files/l10n/pt_BR.json6
-rw-r--r--apps/files/l10n/ru.js6
-rw-r--r--apps/files/l10n/ru.json6
-rw-r--r--apps/files/l10n/sk.js4
-rw-r--r--apps/files/l10n/sk.json4
-rw-r--r--apps/files/l10n/sq.js19
-rw-r--r--apps/files/l10n/sq.json19
-rw-r--r--apps/files/l10n/sv.js4
-rw-r--r--apps/files/l10n/sv.json4
-rw-r--r--apps/files/l10n/tr.js6
-rw-r--r--apps/files/l10n/tr.json6
-rw-r--r--apps/files/l10n/vi.js2
-rw-r--r--apps/files/l10n/vi.json2
-rw-r--r--apps/files/l10n/zh_CN.js6
-rw-r--r--apps/files/l10n/zh_CN.json6
-rw-r--r--apps/files/l10n/zh_TW.js101
-rw-r--r--apps/files/l10n/zh_TW.json101
-rw-r--r--apps/files/lib/Activity/Settings/FileDeleted.php2
-rw-r--r--apps/files/lib/Activity/Settings/FileRestored.php2
-rw-r--r--apps/files/lib/Helper.php2
-rw-r--r--apps/files/lib/Settings/Admin.php2
-rw-r--r--apps/files_external/ajax/oauth2.php6
-rw-r--r--apps/files_external/js/statusmanager.js4
-rw-r--r--apps/files_external/l10n/cs.js4
-rw-r--r--apps/files_external/l10n/cs.json4
-rw-r--r--apps/files_external/l10n/de.js4
-rw-r--r--apps/files_external/l10n/de.json4
-rw-r--r--apps/files_external/l10n/de_DE.js4
-rw-r--r--apps/files_external/l10n/de_DE.json4
-rw-r--r--apps/files_external/l10n/el.js6
-rw-r--r--apps/files_external/l10n/el.json6
-rw-r--r--apps/files_external/l10n/en_GB.js4
-rw-r--r--apps/files_external/l10n/en_GB.json4
-rw-r--r--apps/files_external/l10n/es.js4
-rw-r--r--apps/files_external/l10n/es.json4
-rw-r--r--apps/files_external/l10n/es_AR.js2
-rw-r--r--apps/files_external/l10n/es_AR.json2
-rw-r--r--apps/files_external/l10n/es_MX.js4
-rw-r--r--apps/files_external/l10n/es_MX.json4
-rw-r--r--apps/files_external/l10n/fi.js2
-rw-r--r--apps/files_external/l10n/fi.json2
-rw-r--r--apps/files_external/l10n/fr.js4
-rw-r--r--apps/files_external/l10n/fr.json4
-rw-r--r--apps/files_external/l10n/he.js2
-rw-r--r--apps/files_external/l10n/he.json2
-rw-r--r--apps/files_external/l10n/hu.js2
-rw-r--r--apps/files_external/l10n/hu.json2
-rw-r--r--apps/files_external/l10n/id.js2
-rw-r--r--apps/files_external/l10n/id.json2
-rw-r--r--apps/files_external/l10n/is.js4
-rw-r--r--apps/files_external/l10n/is.json4
-rw-r--r--apps/files_external/l10n/it.js2
-rw-r--r--apps/files_external/l10n/it.json2
-rw-r--r--apps/files_external/l10n/ja.js6
-rw-r--r--apps/files_external/l10n/ja.json6
-rw-r--r--apps/files_external/l10n/ko.js2
-rw-r--r--apps/files_external/l10n/ko.json2
-rw-r--r--apps/files_external/l10n/lt_LT.js130
-rw-r--r--apps/files_external/l10n/lt_LT.json130
-rw-r--r--apps/files_external/l10n/nb.js4
-rw-r--r--apps/files_external/l10n/nb.json4
-rw-r--r--apps/files_external/l10n/nl.js4
-rw-r--r--apps/files_external/l10n/nl.json4
-rw-r--r--apps/files_external/l10n/pl.js2
-rw-r--r--apps/files_external/l10n/pl.json2
-rw-r--r--apps/files_external/l10n/pt_BR.js4
-rw-r--r--apps/files_external/l10n/pt_BR.json4
-rw-r--r--apps/files_external/l10n/pt_PT.js2
-rw-r--r--apps/files_external/l10n/pt_PT.json2
-rw-r--r--apps/files_external/l10n/ru.js4
-rw-r--r--apps/files_external/l10n/ru.json4
-rw-r--r--apps/files_external/l10n/sl.js2
-rw-r--r--apps/files_external/l10n/sl.json2
-rw-r--r--apps/files_external/l10n/sq.js7
-rw-r--r--apps/files_external/l10n/sq.json7
-rw-r--r--apps/files_external/l10n/sv.js2
-rw-r--r--apps/files_external/l10n/sv.json2
-rw-r--r--apps/files_external/l10n/th.js2
-rw-r--r--apps/files_external/l10n/th.json2
-rw-r--r--apps/files_external/l10n/tr.js4
-rw-r--r--apps/files_external/l10n/tr.json4
-rw-r--r--apps/files_external/l10n/zh_CN.js4
-rw-r--r--apps/files_external/l10n/zh_CN.json4
-rw-r--r--apps/files_external/l10n/zh_TW.js1
-rw-r--r--apps/files_external/l10n/zh_TW.json1
-rw-r--r--apps/files_external/lib/Command/Applicable.php10
-rw-r--r--apps/files_external/lib/Command/Create.php6
-rw-r--r--apps/files_external/lib/Command/Delete.php2
-rw-r--r--apps/files_external/lib/Command/Import.php8
-rw-r--r--apps/files_external/lib/Command/ListCommand.php2
-rw-r--r--apps/files_external/lib/Command/Notify.php2
-rw-r--r--apps/files_external/lib/Lib/Auth/AuthMechanism.php2
-rw-r--r--apps/files_external/lib/Lib/Backend/Backend.php2
-rw-r--r--apps/files_external/lib/Lib/FrontendDefinitionTrait.php2
-rw-r--r--apps/files_external/lib/Lib/IdentifierTrait.php4
-rw-r--r--apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php2
-rw-r--r--apps/files_external/lib/Lib/Storage/Dropbox.php8
-rw-r--r--apps/files_external/lib/Lib/Storage/FTP.php2
-rw-r--r--apps/files_external/lib/Lib/Storage/OwnCloud.php4
-rw-r--r--apps/files_external/lib/Lib/Storage/SFTP.php14
-rw-r--r--apps/files_external/lib/Lib/Storage/SMB.php4
-rw-r--r--apps/files_external/lib/Lib/Storage/Swift.php12
-rw-r--r--apps/files_external/lib/Service/DBConfigService.php4
-rw-r--r--apps/files_external/lib/Settings/PersonalSection.php16
-rw-r--r--apps/files_external/lib/config.php6
-rw-r--r--apps/files_external/templates/settings.php6
-rw-r--r--apps/files_sharing/appinfo/routes.php6
-rw-r--r--apps/files_sharing/css/public.scss10
-rw-r--r--apps/files_sharing/l10n/cs.js1
-rw-r--r--apps/files_sharing/l10n/cs.json1
-rw-r--r--apps/files_sharing/l10n/de.js1
-rw-r--r--apps/files_sharing/l10n/de.json1
-rw-r--r--apps/files_sharing/l10n/de_DE.js1
-rw-r--r--apps/files_sharing/l10n/de_DE.json1
-rw-r--r--apps/files_sharing/l10n/el.js1
-rw-r--r--apps/files_sharing/l10n/el.json1
-rw-r--r--apps/files_sharing/l10n/en_GB.js1
-rw-r--r--apps/files_sharing/l10n/en_GB.json1
-rw-r--r--apps/files_sharing/l10n/es.js1
-rw-r--r--apps/files_sharing/l10n/es.json1
-rw-r--r--apps/files_sharing/l10n/es_MX.js3
-rw-r--r--apps/files_sharing/l10n/es_MX.json3
-rw-r--r--apps/files_sharing/l10n/fr.js1
-rw-r--r--apps/files_sharing/l10n/fr.json1
-rw-r--r--apps/files_sharing/l10n/is.js1
-rw-r--r--apps/files_sharing/l10n/is.json1
-rw-r--r--apps/files_sharing/l10n/lt_LT.js157
-rw-r--r--apps/files_sharing/l10n/lt_LT.json157
-rw-r--r--apps/files_sharing/l10n/nb.js5
-rw-r--r--apps/files_sharing/l10n/nb.json5
-rw-r--r--apps/files_sharing/l10n/nl.js1
-rw-r--r--apps/files_sharing/l10n/nl.json1
-rw-r--r--apps/files_sharing/l10n/pt_BR.js1
-rw-r--r--apps/files_sharing/l10n/pt_BR.json1
-rw-r--r--apps/files_sharing/l10n/ru.js81
-rw-r--r--apps/files_sharing/l10n/ru.json81
-rw-r--r--apps/files_sharing/l10n/sq.js18
-rw-r--r--apps/files_sharing/l10n/sq.json18
-rw-r--r--apps/files_sharing/l10n/tr.js1
-rw-r--r--apps/files_sharing/l10n/tr.json1
-rw-r--r--apps/files_sharing/l10n/zh_CN.js1
-rw-r--r--apps/files_sharing/l10n/zh_CN.json1
-rw-r--r--apps/files_sharing/l10n/zh_TW.js108
-rw-r--r--apps/files_sharing/l10n/zh_TW.json108
-rw-r--r--apps/files_sharing/lib/Activity/Providers/RemoteShares.php2
-rw-r--r--apps/files_sharing/lib/Activity/Settings/RemoteShare.php2
-rw-r--r--apps/files_sharing/lib/Activity/Settings/Shared.php2
-rw-r--r--apps/files_sharing/lib/Capabilities.php2
-rw-r--r--apps/files_sharing/lib/Command/CleanupRemoteStorages.php6
-rw-r--r--apps/files_sharing/lib/Controller/RemoteController.php12
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php2
-rw-r--r--apps/files_sharing/lib/Controller/ShareController.php4
-rw-r--r--apps/files_sharing/lib/Controller/ShareesAPIController.php1
-rw-r--r--apps/files_sharing/lib/ExpireSharesJob.php1
-rw-r--r--apps/files_sharing/lib/External/Manager.php28
-rw-r--r--apps/files_sharing/lib/Helper.php4
-rw-r--r--apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php5
-rw-r--r--apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php7
-rw-r--r--apps/files_sharing/lib/ShareBackend/File.php8
-rw-r--r--apps/files_sharing/lib/ShareBackend/Folder.php10
-rw-r--r--apps/files_sharing/templates/public.php17
-rw-r--r--apps/files_sharing/tests/BackendTest.php2
-rw-r--r--apps/files_sharing/tests/CapabilitiesTest.php3
-rw-r--r--apps/files_sharing/tests/Command/CleanupRemoteStoragesTest.php1
-rw-r--r--apps/files_sharing/tests/HelperTest.php2
-rw-r--r--apps/files_sharing/tests/MountProviderTest.php1
-rw-r--r--apps/files_sharing/tests/SharedMountTest.php18
-rw-r--r--apps/files_sharing/tests/SizePropagationTest.php1
-rw-r--r--apps/files_sharing/tests/UnshareChildrenTest.php2
-rw-r--r--apps/files_sharing/tests/UpdaterTest.php8
-rw-r--r--apps/files_trashbin/l10n/sq.js2
-rw-r--r--apps/files_trashbin/l10n/sq.json2
-rw-r--r--apps/files_trashbin/lib/Storage.php2
-rw-r--r--apps/files_trashbin/lib/Trashbin.php31
-rw-r--r--apps/files_trashbin/tests/Command/CleanUpTest.php2
-rw-r--r--apps/files_versions/l10n/lt_LT.js1
-rw-r--r--apps/files_versions/l10n/lt_LT.json1
-rw-r--r--apps/files_versions/l10n/zh_TW.js7
-rw-r--r--apps/files_versions/l10n/zh_TW.json7
-rw-r--r--apps/files_versions/lib/Hooks.php10
-rw-r--r--apps/files_versions/lib/Storage.php158
-rw-r--r--apps/files_versions/tests/Command/CleanupTest.php2
-rw-r--r--apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php2
-rw-r--r--apps/oauth2/l10n/af.js1
-rw-r--r--apps/oauth2/l10n/af.json1
-rw-r--r--apps/oauth2/l10n/ca.js14
-rw-r--r--apps/oauth2/l10n/ca.json12
-rw-r--r--apps/oauth2/l10n/cs.js2
-rw-r--r--apps/oauth2/l10n/cs.json2
-rw-r--r--apps/oauth2/l10n/de.js2
-rw-r--r--apps/oauth2/l10n/de.json2
-rw-r--r--apps/oauth2/l10n/de_DE.js2
-rw-r--r--apps/oauth2/l10n/de_DE.json2
-rw-r--r--apps/oauth2/l10n/el.js5
-rw-r--r--apps/oauth2/l10n/el.json5
-rw-r--r--apps/oauth2/l10n/en_GB.js2
-rw-r--r--apps/oauth2/l10n/en_GB.json2
-rw-r--r--apps/oauth2/l10n/es.js2
-rw-r--r--apps/oauth2/l10n/es.json2
-rw-r--r--apps/oauth2/l10n/es_AR.js1
-rw-r--r--apps/oauth2/l10n/es_AR.json1
-rw-r--r--apps/oauth2/l10n/es_MX.js2
-rw-r--r--apps/oauth2/l10n/es_MX.json2
-rw-r--r--apps/oauth2/l10n/fi.js1
-rw-r--r--apps/oauth2/l10n/fi.json1
-rw-r--r--apps/oauth2/l10n/fr.js2
-rw-r--r--apps/oauth2/l10n/fr.json2
-rw-r--r--apps/oauth2/l10n/is.js2
-rw-r--r--apps/oauth2/l10n/is.json2
-rw-r--r--apps/oauth2/l10n/it.js2
-rw-r--r--apps/oauth2/l10n/it.json2
-rw-r--r--apps/oauth2/l10n/lt_LT.js1
-rw-r--r--apps/oauth2/l10n/lt_LT.json1
-rw-r--r--apps/oauth2/l10n/lv.js1
-rw-r--r--apps/oauth2/l10n/lv.json1
-rw-r--r--apps/oauth2/l10n/nb.js2
-rw-r--r--apps/oauth2/l10n/nb.json2
-rw-r--r--apps/oauth2/l10n/nl.js2
-rw-r--r--apps/oauth2/l10n/nl.json2
-rw-r--r--apps/oauth2/l10n/pl.js1
-rw-r--r--apps/oauth2/l10n/pl.json1
-rw-r--r--apps/oauth2/l10n/pt_BR.js2
-rw-r--r--apps/oauth2/l10n/pt_BR.json2
-rw-r--r--apps/oauth2/l10n/ru.js2
-rw-r--r--apps/oauth2/l10n/ru.json2
-rw-r--r--apps/oauth2/l10n/sq.js14
-rw-r--r--apps/oauth2/l10n/sq.json12
-rw-r--r--apps/oauth2/l10n/tr.js2
-rw-r--r--apps/oauth2/l10n/tr.json2
-rw-r--r--apps/oauth2/l10n/zh_CN.js2
-rw-r--r--apps/oauth2/l10n/zh_CN.json2
-rw-r--r--apps/oauth2/templates/admin.php2
-rw-r--r--apps/provisioning_api/lib/Controller/AppsController.php4
-rw-r--r--apps/provisioning_api/lib/Controller/GroupsController.php18
-rw-r--r--apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php7
-rw-r--r--apps/provisioning_api/tests/Controller/GroupsControllerTest.php8
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php2
-rw-r--r--apps/sharebymail/l10n/es_MX.js2
-rw-r--r--apps/sharebymail/l10n/es_MX.json2
-rw-r--r--apps/sharebymail/l10n/sq.js50
-rw-r--r--apps/sharebymail/l10n/sq.json48
-rw-r--r--apps/sharebymail/l10n/zh_CN.js1
-rw-r--r--apps/sharebymail/l10n/zh_CN.json1
-rw-r--r--apps/sharebymail/lib/ShareByMailProvider.php6
-rw-r--r--apps/systemtags/l10n/el.js2
-rw-r--r--apps/systemtags/l10n/el.json2
-rw-r--r--apps/systemtags/l10n/lv.js9
-rw-r--r--apps/systemtags/l10n/lv.json9
-rw-r--r--apps/systemtags/l10n/sq.js13
-rw-r--r--apps/systemtags/l10n/sq.json13
-rw-r--r--apps/testing/appinfo/app.php2
-rw-r--r--apps/testing/appinfo/routes.php118
-rw-r--r--apps/testing/lib/AppInfo/Application.php (renamed from apps/testing/lib/Application.php)2
-rw-r--r--apps/testing/lib/Controller/ConfigController.php (renamed from apps/testing/lib/Config.php)50
-rw-r--r--apps/testing/lib/Controller/LockingController.php246
-rw-r--r--apps/testing/lib/Locking/FakeDBLockingProvider.php (renamed from apps/testing/locking/fakedblockingprovider.php)0
-rw-r--r--apps/testing/locking/provisioning.php227
-rw-r--r--apps/theming/css/theming.scss4
-rw-r--r--apps/theming/l10n/ar.js4
-rw-r--r--apps/theming/l10n/ar.json4
-rw-r--r--apps/theming/l10n/ca.js31
-rw-r--r--apps/theming/l10n/ca.json29
-rw-r--r--apps/theming/l10n/ja.js31
-rw-r--r--apps/theming/l10n/ja.json29
-rw-r--r--apps/theming/l10n/lv.js31
-rw-r--r--apps/theming/l10n/lv.json29
-rw-r--r--apps/theming/l10n/sq.js31
-rw-r--r--apps/theming/l10n/sq.json29
-rw-r--r--apps/theming/l10n/zh_TW.js31
-rw-r--r--apps/theming/l10n/zh_TW.json29
-rw-r--r--apps/theming/lib/ThemingDefaults.php31
-rw-r--r--apps/theming/lib/Util.php11
-rw-r--r--apps/theming/tests/ThemingDefaultsTest.php61
-rw-r--r--apps/twofactor_backupcodes/l10n/sq.js19
-rw-r--r--apps/twofactor_backupcodes/l10n/sq.json17
-rw-r--r--apps/twofactor_backupcodes/l10n/zh_TW.js19
-rw-r--r--apps/twofactor_backupcodes/l10n/zh_TW.json17
-rw-r--r--apps/updatenotification/css/admin.css3
-rw-r--r--apps/updatenotification/l10n/el.js5
-rw-r--r--apps/updatenotification/l10n/el.json5
-rw-r--r--apps/updatenotification/l10n/is.js1
-rw-r--r--apps/updatenotification/l10n/is.json1
-rw-r--r--apps/updatenotification/l10n/ja.js2
-rw-r--r--apps/updatenotification/l10n/ja.json2
-rw-r--r--apps/updatenotification/l10n/lt_LT.js21
-rw-r--r--apps/updatenotification/l10n/lt_LT.json21
-rw-r--r--apps/updatenotification/l10n/sq.js1
-rw-r--r--apps/updatenotification/l10n/sq.json1
-rw-r--r--apps/updatenotification/l10n/zh_CN.js1
-rw-r--r--apps/updatenotification/l10n/zh_CN.json1
-rw-r--r--apps/updatenotification/l10n/zh_TW.js6
-rw-r--r--apps/updatenotification/l10n/zh_TW.json6
-rw-r--r--apps/updatenotification/lib/Controller/AdminController.php12
-rw-r--r--apps/updatenotification/lib/Notification/Notifier.php2
-rw-r--r--apps/updatenotification/templates/admin.php49
-rw-r--r--apps/updatenotification/tests/Controller/AdminControllerTest.php16
-rw-r--r--apps/user_ldap/ajax/testConfiguration.php8
-rw-r--r--apps/user_ldap/appinfo/install.php5
-rw-r--r--apps/user_ldap/js/wizard/wizardTabLoginFilter.js6
-rw-r--r--apps/user_ldap/l10n/ast.js7
-rw-r--r--apps/user_ldap/l10n/ast.json7
-rw-r--r--apps/user_ldap/l10n/cs.js16
-rw-r--r--apps/user_ldap/l10n/cs.json16
-rw-r--r--apps/user_ldap/l10n/da.js8
-rw-r--r--apps/user_ldap/l10n/da.json8
-rw-r--r--apps/user_ldap/l10n/de.js16
-rw-r--r--apps/user_ldap/l10n/de.json16
-rw-r--r--apps/user_ldap/l10n/de_DE.js16
-rw-r--r--apps/user_ldap/l10n/de_DE.json16
-rw-r--r--apps/user_ldap/l10n/el.js20
-rw-r--r--apps/user_ldap/l10n/el.json20
-rw-r--r--apps/user_ldap/l10n/en_GB.js16
-rw-r--r--apps/user_ldap/l10n/en_GB.json16
-rw-r--r--apps/user_ldap/l10n/es.js14
-rw-r--r--apps/user_ldap/l10n/es.json14
-rw-r--r--apps/user_ldap/l10n/es_AR.js8
-rw-r--r--apps/user_ldap/l10n/es_AR.json8
-rw-r--r--apps/user_ldap/l10n/es_MX.js16
-rw-r--r--apps/user_ldap/l10n/es_MX.json16
-rw-r--r--apps/user_ldap/l10n/fr.js16
-rw-r--r--apps/user_ldap/l10n/fr.json16
-rw-r--r--apps/user_ldap/l10n/id.js8
-rw-r--r--apps/user_ldap/l10n/id.json8
-rw-r--r--apps/user_ldap/l10n/it.js8
-rw-r--r--apps/user_ldap/l10n/it.json8
-rw-r--r--apps/user_ldap/l10n/ja.js14
-rw-r--r--apps/user_ldap/l10n/ja.json14
-rw-r--r--apps/user_ldap/l10n/ko.js8
-rw-r--r--apps/user_ldap/l10n/ko.json8
-rw-r--r--apps/user_ldap/l10n/nb.js16
-rw-r--r--apps/user_ldap/l10n/nb.json16
-rw-r--r--apps/user_ldap/l10n/nl.js8
-rw-r--r--apps/user_ldap/l10n/nl.json8
-rw-r--r--apps/user_ldap/l10n/pl.js8
-rw-r--r--apps/user_ldap/l10n/pl.json8
-rw-r--r--apps/user_ldap/l10n/pt_BR.js16
-rw-r--r--apps/user_ldap/l10n/pt_BR.json16
-rw-r--r--apps/user_ldap/l10n/pt_PT.js7
-rw-r--r--apps/user_ldap/l10n/pt_PT.json7
-rw-r--r--apps/user_ldap/l10n/ru.js18
-rw-r--r--apps/user_ldap/l10n/ru.json18
-rw-r--r--apps/user_ldap/l10n/sk.js7
-rw-r--r--apps/user_ldap/l10n/sk.json7
-rw-r--r--apps/user_ldap/l10n/sl.js7
-rw-r--r--apps/user_ldap/l10n/sl.json7
-rw-r--r--apps/user_ldap/l10n/sq.js37
-rw-r--r--apps/user_ldap/l10n/sq.json37
-rw-r--r--apps/user_ldap/l10n/sv.js16
-rw-r--r--apps/user_ldap/l10n/sv.json16
-rw-r--r--apps/user_ldap/l10n/th.js7
-rw-r--r--apps/user_ldap/l10n/th.json7
-rw-r--r--apps/user_ldap/l10n/tr.js16
-rw-r--r--apps/user_ldap/l10n/tr.json16
-rw-r--r--apps/user_ldap/l10n/zh_CN.js25
-rw-r--r--apps/user_ldap/l10n/zh_CN.json25
-rw-r--r--apps/user_ldap/lib/Configuration.php2
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php2
-rw-r--r--apps/user_ldap/lib/Group_Proxy.php2
-rw-r--r--apps/user_ldap/lib/Notification/Notifier.php4
-rw-r--r--apps/user_ldap/lib/User_LDAP.php2
-rw-r--r--apps/user_ldap/lib/User_Proxy.php2
-rw-r--r--apps/user_ldap/lib/Wizard.php6
-rw-r--r--apps/user_ldap/templates/part.wizard-loginfilter.php6
-rw-r--r--apps/workflowengine/l10n/el.js5
-rw-r--r--apps/workflowengine/l10n/el.json5
-rw-r--r--apps/workflowengine/l10n/lt_LT.js74
-rw-r--r--apps/workflowengine/l10n/lt_LT.json72
-rw-r--r--apps/workflowengine/l10n/lv.js2
-rw-r--r--apps/workflowengine/l10n/lv.json2
-rw-r--r--apps/workflowengine/l10n/zh_TW.js4
-rw-r--r--apps/workflowengine/l10n/zh_TW.json4
-rw-r--r--apps/workflowengine/lib/Manager.php10
-rw-r--r--build/.phan/config.php159
-rw-r--r--build/.phan/plugin-checker.php44
-rw-r--r--build/.phan/plugins/SqlInjectionCheckerPlugin.php134
-rw-r--r--build/.phan/stubs/APCIterator.php82
-rw-r--r--build/.phan/stubs/APCUIterator.php82
-rw-r--r--build/.phan/stubs/apc.php318
-rw-r--r--build/.phan/stubs/apcu.php235
-rw-r--r--build/.phan/stubs/memcached.php1257
-rw-r--r--build/.phan/stubs/xcache.php217
-rw-r--r--build/.phan/tests/SqlInjectionCheckerTest.php72
-rw-r--r--build/files-checker.php1
-rwxr-xr-xbuild/image-optimization.sh (renamed from core/img/image-optimization.sh)2
-rw-r--r--config/config.sample.php6
-rw-r--r--core/Command/App/Install.php77
-rw-r--r--core/Command/App/ListApps.php2
-rw-r--r--core/Command/Db/ConvertType.php96
-rw-r--r--core/Command/Db/GenerateChangeScript.php89
-rw-r--r--core/Command/Db/Migrations/GenerateCommand.php26
-rw-r--r--core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php199
-rw-r--r--core/Command/Maintenance/Install.php4
-rw-r--r--core/Controller/AvatarController.php5
-rw-r--r--core/Controller/ContactsMenuController.php7
-rw-r--r--core/Controller/LoginController.php2
-rw-r--r--core/Controller/LostController.php2
-rw-r--r--core/Controller/OCSController.php6
-rw-r--r--core/Middleware/TwoFactorMiddleware.php2
-rw-r--r--core/Migrations/Version13000Date20170718121200.php897
-rw-r--r--core/ajax/update.php6
-rw-r--r--core/css/header.scss12
-rw-r--r--core/css/icons.scss26
-rw-r--r--core/css/inputs.scss5
-rw-r--r--core/css/styles.scss77
-rw-r--r--core/img/actions/arrow-left.svg1
-rw-r--r--core/img/actions/arrow-right.svg1
-rw-r--r--core/img/places/contacts-dark.svg1
-rw-r--r--core/img/places/contacts.svg2
-rw-r--r--core/js/files/client.js5
-rw-r--r--core/js/jquery-showpassword.js2
-rw-r--r--core/js/js.js4
-rw-r--r--core/js/tests/specs/setupchecksSpec.js8
-rw-r--r--core/l10n/ca.js112
-rw-r--r--core/l10n/ca.json112
-rw-r--r--core/l10n/de_DE.js2
-rw-r--r--core/l10n/de_DE.json2
-rw-r--r--core/l10n/el.js64
-rw-r--r--core/l10n/el.json64
-rw-r--r--core/l10n/es_MX.js8
-rw-r--r--core/l10n/es_MX.json8
-rw-r--r--core/l10n/ja.js1
-rw-r--r--core/l10n/ja.json1
-rw-r--r--core/l10n/lt_LT.js345
-rw-r--r--core/l10n/lt_LT.json343
-rw-r--r--core/l10n/lv.js51
-rw-r--r--core/l10n/lv.json51
-rw-r--r--core/l10n/nb.js2
-rw-r--r--core/l10n/nb.json2
-rw-r--r--core/l10n/ro.js9
-rw-r--r--core/l10n/ro.json9
-rw-r--r--core/l10n/ru.js2
-rw-r--r--core/l10n/ru.json2
-rw-r--r--core/l10n/sq.js45
-rw-r--r--core/l10n/sq.json45
-rw-r--r--core/l10n/vi.js3
-rw-r--r--core/l10n/vi.json3
-rw-r--r--core/l10n/zh_TW.js48
-rw-r--r--core/l10n/zh_TW.json48
-rw-r--r--core/register_command.php5
-rw-r--r--core/routes.php4
-rw-r--r--core/templates/403.php8
-rw-r--r--core/templates/404.php8
-rw-r--r--core/templates/layout.guest.php1
-rw-r--r--core/templates/layout.user.php8
-rw-r--r--db_structure.xml2291
-rw-r--r--lib/composer/composer/autoload_classmap.php7
-rw-r--r--lib/composer/composer/autoload_static.php7
-rw-r--r--lib/l10n/ast.js4
-rw-r--r--lib/l10n/ast.json4
-rw-r--r--lib/l10n/cs.js5
-rw-r--r--lib/l10n/cs.json5
-rw-r--r--lib/l10n/de.js8
-rw-r--r--lib/l10n/de.json8
-rw-r--r--lib/l10n/de_DE.js8
-rw-r--r--lib/l10n/de_DE.json8
-rw-r--r--lib/l10n/el.js54
-rw-r--r--lib/l10n/el.json54
-rw-r--r--lib/l10n/en_GB.js5
-rw-r--r--lib/l10n/en_GB.json5
-rw-r--r--lib/l10n/es.js8
-rw-r--r--lib/l10n/es.json8
-rw-r--r--lib/l10n/es_AR.js4
-rw-r--r--lib/l10n/es_AR.json4
-rw-r--r--lib/l10n/es_MX.js8
-rw-r--r--lib/l10n/es_MX.json8
-rw-r--r--lib/l10n/fi.js2
-rw-r--r--lib/l10n/fi.json2
-rw-r--r--lib/l10n/fr.js8
-rw-r--r--lib/l10n/fr.json8
-rw-r--r--lib/l10n/he.js4
-rw-r--r--lib/l10n/he.json4
-rw-r--r--lib/l10n/hu.js4
-rw-r--r--lib/l10n/hu.json4
-rw-r--r--lib/l10n/is.js17
-rw-r--r--lib/l10n/is.json17
-rw-r--r--lib/l10n/it.js18
-rw-r--r--lib/l10n/it.json18
-rw-r--r--lib/l10n/ja.js6
-rw-r--r--lib/l10n/ja.json6
-rw-r--r--lib/l10n/ko.js4
-rw-r--r--lib/l10n/ko.json4
-rw-r--r--lib/l10n/nb.js5
-rw-r--r--lib/l10n/nb.json5
-rw-r--r--lib/l10n/nl.js4
-rw-r--r--lib/l10n/nl.json4
-rw-r--r--lib/l10n/pl.js4
-rw-r--r--lib/l10n/pl.json4
-rw-r--r--lib/l10n/pt_BR.js8
-rw-r--r--lib/l10n/pt_BR.json8
-rw-r--r--lib/l10n/ru.js5
-rw-r--r--lib/l10n/ru.json5
-rw-r--r--lib/l10n/sk.js4
-rw-r--r--lib/l10n/sk.json4
-rw-r--r--lib/l10n/sq.js54
-rw-r--r--lib/l10n/sq.json54
-rw-r--r--lib/l10n/sv.js4
-rw-r--r--lib/l10n/sv.json4
-rw-r--r--lib/l10n/tr.js8
-rw-r--r--lib/l10n/tr.json8
-rw-r--r--lib/l10n/zh_CN.js5
-rw-r--r--lib/l10n/zh_CN.json5
-rw-r--r--lib/l10n/zh_TW.js4
-rw-r--r--lib/l10n/zh_TW.json4
-rw-r--r--lib/private/Activity/Manager.php2
-rw-r--r--lib/private/AllConfig.php2
-rw-r--r--lib/private/App/AppStore/Bundles/BundleFetcher.php1
-rw-r--r--lib/private/App/AppStore/Bundles/EducationBundle.php50
-rw-r--r--lib/private/App/CodeChecker/MigrationSchemaChecker.php6
-rw-r--r--lib/private/App/DependencyAnalyzer.php13
-rw-r--r--lib/private/App/InfoParser.php2
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php16
-rw-r--r--lib/private/AppFramework/Http/Request.php2
-rw-r--r--lib/private/AppFramework/Middleware/OCSMiddleware.php12
-rw-r--r--lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php1
-rw-r--r--lib/private/AppFramework/Middleware/SessionMiddleware.php5
-rw-r--r--lib/private/Archive/Archive.php32
-rw-r--r--lib/private/Archive/TAR.php30
-rw-r--r--lib/private/Archive/ZIP.php30
-rw-r--r--lib/private/Authentication/Token/DefaultTokenMapper.php7
-rw-r--r--lib/private/Authentication/Token/DefaultTokenProvider.php2
-rw-r--r--lib/private/Authentication/Token/IProvider.php2
-rw-r--r--lib/private/BackgroundJob/Job.php2
-rw-r--r--lib/private/BackgroundJob/JobList.php1
-rw-r--r--lib/private/BackgroundJob/QueuedJob.php2
-rw-r--r--lib/private/BackgroundJob/TimedJob.php2
-rw-r--r--lib/private/Command/AsyncBus.php2
-rw-r--r--lib/private/Comments/Manager.php20
-rw-r--r--lib/private/DB/Connection.php1
-rw-r--r--lib/private/DB/MigrationService.php6
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php23
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php24
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php2
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php2
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php34
-rw-r--r--lib/private/DB/QueryBuilder/QuoteHelper.php2
-rw-r--r--lib/private/DB/SchemaWrapper.php2
-rw-r--r--lib/private/DatabaseException.php11
-rw-r--r--lib/private/Diagnostics/QueryLogger.php2
-rw-r--r--lib/private/Files/Cache/Cache.php5
-rw-r--r--lib/private/Files/Cache/Propagator.php2
-rw-r--r--lib/private/Files/Cache/Scanner.php2
-rw-r--r--lib/private/Files/Config/UserMountCache.php12
-rw-r--r--lib/private/Files/FileInfo.php2
-rw-r--r--lib/private/Files/Filesystem.php8
-rw-r--r--lib/private/Files/ObjectStore/S3.php8
-rw-r--r--lib/private/Files/Storage/Common.php9
-rw-r--r--lib/private/Files/Storage/FailedStorage.php5
-rw-r--r--lib/private/Files/Storage/Local.php9
-rw-r--r--lib/private/Files/Storage/Wrapper/Availability.php6
-rw-r--r--lib/private/Files/Storage/Wrapper/Encoding.php9
-rw-r--r--lib/private/Files/Storage/Wrapper/Encryption.php16
-rw-r--r--lib/private/Files/Storage/Wrapper/Jail.php9
-rw-r--r--lib/private/Files/Storage/Wrapper/Quota.php9
-rw-r--r--lib/private/Files/Storage/Wrapper/Wrapper.php9
-rw-r--r--lib/private/Files/View.php31
-rw-r--r--lib/private/Group/Group.php9
-rw-r--r--lib/private/Group/Manager.php8
-rw-r--r--lib/private/Hooks/LegacyEmitter.php7
-rw-r--r--lib/private/Hooks/PublicEmitter.php2
-rw-r--r--lib/private/L10N/L10N.php8
-rw-r--r--lib/private/L10N/L10NString.php (renamed from lib/private/legacy/l10n/string.php)12
-rw-r--r--lib/private/Lock/DBLockingProvider.php1
-rw-r--r--lib/private/Lockdown/Filesystem/NullStorage.php5
-rw-r--r--lib/private/Mail/EMailTemplate.php4
-rw-r--r--lib/private/Mail/Mailer.php4
-rw-r--r--lib/private/Mail/Message.php2
-rw-r--r--lib/private/Memcache/Memcached.php12
-rw-r--r--lib/private/Memcache/XCache.php12
-rw-r--r--lib/private/Migration/BackgroundRepair.php2
-rw-r--r--lib/private/Notification/Manager.php2
-rw-r--r--lib/private/OCS/Exception.php4
-rw-r--r--lib/private/OCS/PrivateData.php114
-rw-r--r--lib/private/Preview/Bitmap.php2
-rw-r--r--lib/private/Preview/Office.php4
-rw-r--r--lib/private/Preview/SVG.php2
-rw-r--r--lib/private/Preview/Watcher.php8
-rw-r--r--lib/private/Repair/CleanTags.php3
-rw-r--r--lib/private/Repair/NC12/UpdateLanguageCodes.php3
-rw-r--r--lib/private/Repair/NC13/RepairInvalidPaths.php28
-rw-r--r--lib/private/Repair/OldGroupMembershipShares.php1
-rw-r--r--lib/private/Repair/RepairInvalidShares.php1
-rw-r--r--lib/private/Route/Router.php2
-rw-r--r--lib/private/Search/Provider/File.php2
-rw-r--r--lib/private/Search/Result/File.php2
-rw-r--r--lib/private/Security/Bruteforce/Throttler.php1
-rw-r--r--lib/private/Security/CSRF/CsrfToken.php2
-rw-r--r--lib/private/Security/CertificateManager.php4
-rw-r--r--lib/private/Security/Crypto.php4
-rw-r--r--lib/private/Security/Hasher.php4
-rw-r--r--lib/private/Security/TrustedDomainHelper.php4
-rw-r--r--lib/private/Server.php12
-rw-r--r--lib/private/Session/CryptoWrapper.php8
-rw-r--r--lib/private/Settings/Mapper.php1
-rw-r--r--lib/private/Settings/Personal/PersonalInfo.php6
-rw-r--r--lib/private/Settings/RemoveOrphaned.php2
-rw-r--r--lib/private/Setup.php11
-rw-r--r--lib/private/Setup/AbstractDatabase.php5
-rw-r--r--lib/private/Setup/MySQL.php6
-rw-r--r--lib/private/Setup/OCI.php9
-rw-r--r--lib/private/Setup/PostgreSQL.php10
-rw-r--r--lib/private/Setup/Sqlite.php1
-rw-r--r--lib/private/Share/Share.php9
-rw-r--r--lib/private/Share20/DefaultShareProvider.php2
-rw-r--r--lib/private/Share20/LegacyHooks.php17
-rw-r--r--lib/private/Share20/Manager.php114
-rw-r--r--lib/private/Share20/ProviderFactory.php2
-rw-r--r--lib/private/SystemTag/SystemTagManager.php2
-rw-r--r--lib/private/SystemTag/SystemTagObjectMapper.php2
-rw-r--r--lib/private/Tags.php2
-rw-r--r--lib/private/TempManager.php2
-rw-r--r--lib/private/Template/JSCombiner.php15
-rw-r--r--lib/private/Template/JSConfigHelper.php2
-rw-r--r--lib/private/TemplateLayout.php3
-rw-r--r--lib/private/Updater.php8
-rw-r--r--lib/private/User/Manager.php6
-rw-r--r--lib/private/legacy/api.php7
-rw-r--r--lib/private/legacy/app.php25
-rw-r--r--lib/private/legacy/db.php14
-rw-r--r--lib/private/legacy/db/statementwrapper.php2
-rw-r--r--lib/private/legacy/defaults.php9
-rw-r--r--lib/private/legacy/eventsource.php1
-rw-r--r--lib/private/legacy/helper.php4
-rw-r--r--lib/private/legacy/json.php11
-rw-r--r--lib/private/legacy/ocs/privatedata.php28
-rw-r--r--lib/private/legacy/response.php10
-rw-r--r--lib/private/legacy/template.php16
-rw-r--r--lib/private/legacy/template/functions.php13
-rw-r--r--lib/private/legacy/user.php135
-rw-r--r--lib/private/legacy/user/backend.php62
-rw-r--r--lib/private/legacy/user/interface.php29
-rw-r--r--lib/private/legacy/util.php27
-rw-r--r--lib/public/App/ManagerEvent.php4
-rw-r--r--lib/public/AppFramework/ApiController.php2
-rw-r--r--lib/public/AppFramework/App.php1
-rw-r--r--lib/public/AppFramework/Controller.php106
-rw-r--r--lib/public/AppFramework/Http/DataDisplayResponse.php2
-rw-r--r--lib/public/AppFramework/Http/ICallbackResponse.php2
-rw-r--r--lib/public/AppFramework/Http/OCSResponse.php1
-rw-r--r--lib/public/AppFramework/Http/Response.php18
-rw-r--r--lib/public/AppFramework/IApi.php10
-rw-r--r--lib/public/AppFramework/IAppContainer.php14
-rw-r--r--lib/public/BackgroundJob/IJob.php2
-rw-r--r--lib/public/Comments/ICommentsManager.php4
-rw-r--r--lib/public/Contacts/IManager.php239
-rw-r--r--lib/public/DB.php6
-rw-r--r--lib/public/DB/QueryBuilder/IExpressionBuilder.php18
-rw-r--r--lib/public/DB/QueryBuilder/IQueryBuilder.php2
-rw-r--r--lib/public/Defaults.php3
-rw-r--r--lib/public/Diagnostics/IQueryLogger.php4
-rw-r--r--lib/public/Encryption/Exceptions/GenericEncryptionException.php2
-rw-r--r--lib/public/Files.php14
-rw-r--r--lib/public/Files/ForbiddenException.php2
-rw-r--r--lib/public/Files/IAppData.php1
-rw-r--r--lib/public/Files/ObjectStore/IObjectStore.php9
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFile.php1
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFolder.php1
-rw-r--r--lib/public/Files/SimpleFS/ISimpleRoot.php1
-rw-r--r--lib/public/Files/Storage.php8
-rw-r--r--lib/public/Files/Storage/IStorage.php8
-rw-r--r--lib/public/Files/StorageAuthException.php5
-rw-r--r--lib/public/Files/StorageBadConfigException.php5
-rw-r--r--lib/public/Files/StorageConnectionException.php5
-rw-r--r--lib/public/Files/StorageNotAvailableException.php2
-rw-r--r--lib/public/Files/StorageTimeoutException.php5
-rw-r--r--lib/public/IDateTimeFormatter.php30
-rw-r--r--lib/public/IGroup.php4
-rw-r--r--lib/public/IGroupManager.php4
-rw-r--r--lib/public/IL10N.php4
-rw-r--r--lib/public/ILogger.php2
-rw-r--r--lib/public/JSON.php19
-rw-r--r--lib/public/Lock/LockedException.php2
-rw-r--r--lib/public/Mail/IEMailTemplate.php2
-rw-r--r--lib/public/Response.php1
-rw-r--r--lib/public/Search/PagedProvider.php4
-rw-r--r--lib/public/Security/ISecureRandom.php2
-rw-r--r--lib/public/Share.php4
-rw-r--r--lib/public/Share/Exceptions/GenericShareException.php2
-rw-r--r--lib/public/SystemTag/ManagerEvent.php2
-rw-r--r--lib/public/SystemTag/TagNotFoundException.php2
-rw-r--r--lib/public/Template.php47
-rw-r--r--lib/public/User.php5
-rw-r--r--lib/public/UserInterface.php2
-rw-r--r--lib/public/Util.php40
-rw-r--r--ocs/providers.php2
-rw-r--r--ocs/routes.php69
-rw-r--r--public.php4
-rw-r--r--remote.php2
-rw-r--r--settings/BackgroundJobs/VerifyUserData.php2
-rw-r--r--settings/Controller/AuthSettingsController.php14
-rw-r--r--settings/Controller/CertificateController.php10
-rw-r--r--settings/Controller/ChangePasswordController.php3
-rw-r--r--settings/Controller/UsersController.php11
-rw-r--r--settings/Hooks.php6
-rw-r--r--settings/Middleware/SubadminMiddleware.php5
-rw-r--r--settings/ajax/togglesubadmins.php4
-rw-r--r--settings/ajax/uninstallapp.php2
-rw-r--r--settings/ajax/updateapp.php4
-rw-r--r--settings/js/apps.js4
-rw-r--r--settings/js/federationsettingsview.js4
-rw-r--r--settings/js/settings/personalInfo.js2
-rw-r--r--settings/l10n/ast.js2
-rw-r--r--settings/l10n/ast.json2
-rw-r--r--settings/l10n/ca.js30
-rw-r--r--settings/l10n/ca.json30
-rw-r--r--settings/l10n/cs.js7
-rw-r--r--settings/l10n/cs.json7
-rw-r--r--settings/l10n/de.js7
-rw-r--r--settings/l10n/de.json7
-rw-r--r--settings/l10n/de_DE.js7
-rw-r--r--settings/l10n/de_DE.json7
-rw-r--r--settings/l10n/el.js54
-rw-r--r--settings/l10n/el.json54
-rw-r--r--settings/l10n/en_GB.js6
-rw-r--r--settings/l10n/en_GB.json6
-rw-r--r--settings/l10n/es.js11
-rw-r--r--settings/l10n/es.json11
-rw-r--r--settings/l10n/es_AR.js4
-rw-r--r--settings/l10n/es_AR.json4
-rw-r--r--settings/l10n/es_MX.js9
-rw-r--r--settings/l10n/es_MX.json9
-rw-r--r--settings/l10n/eu.js2
-rw-r--r--settings/l10n/eu.json2
-rw-r--r--settings/l10n/fi.js2
-rw-r--r--settings/l10n/fi.json2
-rw-r--r--settings/l10n/fr.js7
-rw-r--r--settings/l10n/fr.json7
-rw-r--r--settings/l10n/he.js2
-rw-r--r--settings/l10n/he.json2
-rw-r--r--settings/l10n/hu.js2
-rw-r--r--settings/l10n/hu.json2
-rw-r--r--settings/l10n/ia.js1
-rw-r--r--settings/l10n/ia.json1
-rw-r--r--settings/l10n/id.js2
-rw-r--r--settings/l10n/id.json2
-rw-r--r--settings/l10n/is.js22
-rw-r--r--settings/l10n/is.json22
-rw-r--r--settings/l10n/it.js2
-rw-r--r--settings/l10n/it.json2
-rw-r--r--settings/l10n/ja.js8
-rw-r--r--settings/l10n/ja.json8
-rw-r--r--settings/l10n/ko.js4
-rw-r--r--settings/l10n/ko.json4
-rw-r--r--settings/l10n/nb.js6
-rw-r--r--settings/l10n/nb.json6
-rw-r--r--settings/l10n/nl.js16
-rw-r--r--settings/l10n/nl.json16
-rw-r--r--settings/l10n/pl.js4
-rw-r--r--settings/l10n/pl.json4
-rw-r--r--settings/l10n/pt_BR.js9
-rw-r--r--settings/l10n/pt_BR.json9
-rw-r--r--settings/l10n/pt_PT.js2
-rw-r--r--settings/l10n/pt_PT.json2
-rw-r--r--settings/l10n/ru.js6
-rw-r--r--settings/l10n/ru.json6
-rw-r--r--settings/l10n/sk.js2
-rw-r--r--settings/l10n/sk.json2
-rw-r--r--settings/l10n/sl.js2
-rw-r--r--settings/l10n/sl.json2
-rw-r--r--settings/l10n/sq.js67
-rw-r--r--settings/l10n/sq.json67
-rw-r--r--settings/l10n/sv.js2
-rw-r--r--settings/l10n/sv.json2
-rw-r--r--settings/l10n/th.js2
-rw-r--r--settings/l10n/th.json2
-rw-r--r--settings/l10n/tr.js7
-rw-r--r--settings/l10n/tr.json7
-rw-r--r--settings/l10n/zh_CN.js22
-rw-r--r--settings/l10n/zh_CN.json22
-rw-r--r--settings/l10n/zh_TW.js72
-rw-r--r--settings/l10n/zh_TW.json72
-rw-r--r--settings/templates/settings/admin/server.php2
-rw-r--r--settings/users.php2
-rw-r--r--status.php2
-rw-r--r--tests/Core/Controller/ChangePasswordControllerTest.php4
-rw-r--r--tests/Core/Controller/LoginControllerTest.php4
-rw-r--r--tests/Core/Controller/OCSControllerTest.php6
-rw-r--r--tests/Core/Middleware/TwoFactorMiddlewareTest.php17
-rw-r--r--tests/Core/Templates/TemplatesTest.php20
-rw-r--r--tests/Settings/Controller/CertificateControllerTest.php2
-rw-r--r--tests/Settings/Controller/CheckSetupControllerTest.php16
-rw-r--r--tests/Settings/Mailer/NewUserMailHelperTest.php4
-rw-r--r--tests/acceptance/features/core/NextcloudTestServerLocalHelper.php22
-rwxr-xr-xtests/acceptance/installAndConfigureServer.sh12
-rwxr-xr-xtests/acceptance/run-local.sh75
-rw-r--r--tests/data/emails/new-account-email-custom.html2
-rw-r--r--tests/data/emails/new-account-email-single-button.html2
-rw-r--r--tests/data/emails/new-account-email.html2
-rw-r--r--tests/lib/App/AppStore/Bundles/BundleFetcherTest.php2
-rw-r--r--tests/lib/App/AppStore/Bundles/EducationBundleTest.php44
-rw-r--r--tests/lib/AppFramework/Controller/ControllerTest.php69
-rw-r--r--tests/lib/AppFramework/Http/ResponseTest.php5
-rw-r--r--tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php1
-rw-r--r--tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php4
-rw-r--r--tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php84
-rw-r--r--tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php22
-rw-r--r--tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php21
-rw-r--r--tests/lib/Comments/ManagerTest.php50
-rw-r--r--tests/lib/DB/QueryBuilder/FunctionBuilderTest.php8
-rw-r--r--tests/lib/DB/QueryBuilder/QueryBuilderTest.php50
-rw-r--r--tests/lib/Files/Cache/CacheTest.php74
-rw-r--r--tests/lib/Files/Cache/QuerySearchHelperTest.php41
-rw-r--r--tests/lib/Files/Config/UserMountCacheTest.php2
-rw-r--r--tests/lib/Files/ViewTest.php5
-rw-r--r--tests/lib/Group/GroupTest.php4
-rw-r--r--tests/lib/OCS/PrivatedataTest.php172
-rw-r--r--tests/lib/Repair/NC12/UpdateLanguageCodesTest.php3
-rw-r--r--tests/lib/Repair/RepairInvalidPathsTest.php34
-rw-r--r--tests/lib/Share/ShareTest.php8
-rw-r--r--tests/lib/Share20/LegacyHooksTest.php54
-rw-r--r--tests/lib/Share20/ManagerTest.php81
-rw-r--r--tests/lib/Template/JSCombinerTest.php25
-rw-r--r--tests/lib/Updater/VersionCheckTest.php12
-rw-r--r--tests/lib/Util/User/Dummy.php6
-rw-r--r--tests/lib/UtilTest.php2
-rw-r--r--themes/example/defaults.php1
-rw-r--r--version.php2
1011 files changed, 12366 insertions, 7186 deletions
diff --git a/.drone.yml b/.drone.yml
index bd06ae13739..11bc75092d5 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -13,7 +13,7 @@ pipeline:
matrix:
TESTS: jsunit
checkers:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- ./autotest-checkers.sh
when:
@@ -23,12 +23,12 @@ pipeline:
image: nextcloudci/php5.6:php5.6-7
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 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
+ - ./lib/composer/bin/parallel-lint --exclude build/.phan/ --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
when:
matrix:
TESTS: syntax-php5.6
syntax-php7.0:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
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 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
@@ -36,13 +36,24 @@ pipeline:
matrix:
TESTS: syntax-php7.0
syntax-php7.1:
- image: nextcloudci/php7.1:php7.1-11
+ image: nextcloudci/php7.1:php7.1-12
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 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
when:
matrix:
TESTS: syntax-php7.1
+ phan:
+ image: nextcloudci/php7.1:php7.1-12
+ commands:
+ - rm /etc/php/7.1/cli/conf.d/20-xdebug.ini
+ - composer install
+ - composer require --dev "etsy/phan:dev-master"
+ - ./lib/composer/etsy/phan/phan -k build/.phan/config.php
+ - php ./build/.phan/plugin-checker.php
+ when:
+ matrix:
+ TESTS: phan
litmus-v1:
image: nextcloudci/litmus-php7.0:litmus-php7.0-4
commands:
@@ -143,7 +154,7 @@ pipeline:
DB: NODB
PHP: 5.6
nodb-php7.0:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
when:
@@ -151,7 +162,7 @@ pipeline:
DB: NODB
PHP: "7.0"
nodb-php7.1:
- image: nextcloudci/php7.1:php7.1-11
+ image: nextcloudci/php7.1:php7.1-12
commands:
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
when:
@@ -167,7 +178,7 @@ pipeline:
DB: sqlite
PHP: 5.6
sqlite-php7.0:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
when:
@@ -175,7 +186,7 @@ pipeline:
DB: sqlite
PHP: "7.0"
sqlite-php7.1:
- image: nextcloudci/php7.1:php7.1-11
+ image: nextcloudci/php7.1:php7.1-12
commands:
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
when:
@@ -199,6 +210,15 @@ pipeline:
matrix:
DB: postgres
PHP: 5.6
+ postgres-php7.0:
+ image: nextcloudci/php7.0:php7.0-13
+ commands:
+ - sleep 10 # gives the database enough time to initialize
+ - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
+ when:
+ matrix:
+ DB: postgres
+ PHP: 7.0
mysqlmb4-php5.6:
image: nextcloudci/php5.6:php5.6-7
commands:
@@ -459,26 +479,26 @@ pipeline:
acceptance-access-levels:
image: nextcloudci/integration-php7.0:integration-php7.0-4
commands:
- - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/access-levels.feature
+ - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature
when:
matrix:
TESTS-ACCEPTANCE: access-levels
acceptance-app-files:
image: nextcloudci/integration-php7.0:integration-php7.0-4
commands:
- - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/app-files.feature
+ - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files --selenium-server selenium:4444 allow-git-repository-modifications features/app-files.feature
when:
matrix:
TESTS-ACCEPTANCE: app-files
acceptance-login:
image: nextcloudci/integration-php7.0:integration-php7.0-4
commands:
- - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/login.feature
+ - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-login --selenium-server selenium:4444 allow-git-repository-modifications features/login.feature
when:
matrix:
TESTS-ACCEPTANCE: login
nodb-codecov:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- TEST_SELECTION=NODB ./autotest.sh sqlite
- wget https://codecov.io/bash -O codecov.sh
@@ -488,7 +508,7 @@ pipeline:
matrix:
TESTS: nodb-codecov
db-codecov:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- TEST_SELECTION=QUICKDB ./autotest.sh sqlite
- wget https://codecov.io/bash -O codecov.sh
@@ -498,7 +518,7 @@ pipeline:
matrix:
TESTS: db-codecov
object-store:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- TEST_SELECTION=PRIMARY-${OBJECT_STORE} ./autotest.sh sqlite
- wget https://codecov.io/bash -O codecov.sh
@@ -519,7 +539,7 @@ pipeline:
matrix:
TEST: memcache-memcached
memcache-redis-cluster:
- image: nextcloudci/php7.0:php7.0-7
+ image: nextcloudci/php7.0:php7.0-13
commands:
- sleep 10
- ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
@@ -536,6 +556,36 @@ matrix:
ENABLE_REDIS: true
- TESTS: db-codecov
ENABLE_REDIS: true
+ - DB: NODB
+ PHP: 5.6
+ ENABLE_REDIS: true
+ - DB: NODB
+ PHP: 7.0
+ ENABLE_REDIS: true
+ - DB: NODB
+ PHP: 7.1
+ ENABLE_REDIS: true
+ - DB: sqlite
+ PHP: 5.6
+ ENABLE_REDIS: true
+ - DB: sqlite
+ PHP: 7.0
+ ENABLE_REDIS: true
+ - DB: sqlite
+ PHP: 7.1
+ ENABLE_REDIS: true
+ - DB: mysql
+ PHP: 5.6
+ ENABLE_REDIS: true
+ - DB: postgres
+ PHP: 5.6
+ ENABLE_REDIS: true
+ - DB: postgres
+ PHP: 7.0
+ ENABLE_REDIS: true
+ - DB: mysqlmb4
+ PHP: 5.6
+ ENABLE_REDIS: true
- TESTS: integration-capabilities_features
- TESTS: integration-federation_features
- TESTS: integration-maintenance-mode
@@ -564,16 +614,17 @@ matrix:
- TESTS: integration-transfer-ownership-features
- TESTS: integration-ldap-features
- TESTS: integration-trashbin
-# - TESTS: acceptance
-# TESTS-ACCEPTANCE: access-levels
-# - TESTS: acceptance
-# TESTS-ACCEPTANCE: app-files
-# - TESTS: acceptance
-# TESTS-ACCEPTANCE: login
+ - TESTS: acceptance
+ TESTS-ACCEPTANCE: access-levels
+ - TESTS: acceptance
+ TESTS-ACCEPTANCE: app-files
+ - TESTS: acceptance
+ TESTS-ACCEPTANCE: login
- TESTS: jsunit
- TESTS: syntax-php5.6
- TESTS: syntax-php7.0
- TESTS: syntax-php7.1
+ - TESTS: phan
- TESTS: litmus-v1
- TESTS: litmus-v2
- TESTS: caldavtester-old-endpoint
@@ -589,33 +640,6 @@ matrix:
# ENABLE_REDIS_CLUSTER: true
- TESTS: sqlite-php7.0-webdav-apache
ENABLE_REDIS: true
- - DB: NODB
- PHP: 5.6
- ENABLE_REDIS: true
- - DB: NODB
- PHP: 7.0
- ENABLE_REDIS: true
- - DB: NODB
- PHP: 7.1
- ENABLE_REDIS: true
- - DB: sqlite
- PHP: 5.6
- ENABLE_REDIS: true
- - DB: sqlite
- PHP: 7.0
- ENABLE_REDIS: true
- - DB: sqlite
- PHP: 7.1
- ENABLE_REDIS: true
- - DB: mysql
- PHP: 5.6
- ENABLE_REDIS: true
- - DB: postgres
- PHP: 5.6
- ENABLE_REDIS: true
- - DB: mysqlmb4
- PHP: 5.6
- ENABLE_REDIS: true
services:
cache:
@@ -632,7 +656,7 @@ services:
image: postgres
environment:
- POSTGRES_USER=oc_autotest
- - POSTGRES_PASSWORD=oc_autotest
+ - POSTGRES_PASSWORD=owncloud
when:
matrix:
DB: postgres
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 07743ee9813..1851bd4095b 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -1,6 +1,11 @@
before_commands:
- 'git submodule update --init --recursive'
+checks:
+ php:
+ excluded_dependencies:
+ - etsy/phan
+
filter:
excluded_paths:
- '3rdparty/*'
diff --git a/3rdparty b/3rdparty
-Subproject cae79927de50c6ab0bf77e5653015b6579ae2ae
+Subproject 107e29e4c81d6b255abee5bc77fef3040df6ca0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3f61c17c268..9789386dd09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,20 +1,4 @@
-ChangeLog
+Changelog
=========
-NC 11 (2016-12-13)
-------------------
-* PHP 5.4 and 5.5 no longer supported
-* PHP 7.1 support
-* OC_L10N removed use \OCP\IL10N (#1948)
-* Preview handling is improved by sharing previews:
- * Preview sharing (shared files/external storages)
- * Previews are stored in the AppData
- * Previews are served faster by not first converting them to image objects
-* Core preview route changed:
- * Route for the urlgenerator changed from 'core_ajax_preview' to 'core.Preview.getPreview'
- * $urlGenerator->linkToRoute('core_ajax_preview', ...) => $urlGenerator->linkToRoute('core.Preview.getPreview', ...)
-* Avatars are cached
-* Avatars are moved to AppData
- * For existing avatars this happens automatically in a background job which means that on upgrade you might
- not see your avatar right away. However after the job has run it should show up again automatically.
-
+The change log is at [https://nextcloud.com/changelog/](https://nextcloud.com/changelog/). \ No newline at end of file
diff --git a/README.md b/README.md
index 17035a4d91f..9b7aa4298bc 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,7 @@
* :clipboard: [Forum](https://help.nextcloud.com)
* :busts_in_silhouette: [Facebook](https://facebook.com/nextclouders)
* :hatching_chick: [Twitter](https://twitter.com/Nextclouders)
+* :elephant: [Mastodon](https://mastodon.xyz/@nextcloud)
[…learn more about how to get support for Nextcloud here!](https://nextcloud.com/support)
diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php
index ab751ddb2a2..66b3abe61be 100644
--- a/apps/comments/appinfo/routes.php
+++ b/apps/comments/appinfo/routes.php
@@ -20,9 +20,8 @@
*
*/
-use \OCA\Comments\AppInfo\Application;
-
-$application = new Application();
-$application->registerRoutes($this, ['routes' => [
- ['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'],
-]]);
+return [
+ 'routes' => [
+ ['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'],
+ ]
+];
diff --git a/apps/comments/l10n/el.js b/apps/comments/l10n/el.js
index fa36f68d1a0..e96144e1c6c 100644
--- a/apps/comments/l10n/el.js
+++ b/apps/comments/l10n/el.js
@@ -8,7 +8,7 @@ OC.L10N.register(
"Post" : "Δημοσίευση",
"Cancel" : "Ακύρωση",
"Edit comment" : "Επεξεργασία σχολίου",
- "[Deleted user]" : "[Διαγραφή χρήστη]",
+ "[Deleted user]" : "[Διαγραμμένος χρήστης]",
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
"More comments …" : "Περισσότερα σχόλια ...",
"Save" : "Αποθήκευση",
diff --git a/apps/comments/l10n/el.json b/apps/comments/l10n/el.json
index 9181bd9eb73..062e814114f 100644
--- a/apps/comments/l10n/el.json
+++ b/apps/comments/l10n/el.json
@@ -6,7 +6,7 @@
"Post" : "Δημοσίευση",
"Cancel" : "Ακύρωση",
"Edit comment" : "Επεξεργασία σχολίου",
- "[Deleted user]" : "[Διαγραφή χρήστη]",
+ "[Deleted user]" : "[Διαγραμμένος χρήστης]",
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
"More comments …" : "Περισσότερα σχόλια ...",
"Save" : "Αποθήκευση",
diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js
index ef4967e9fcc..bfd7488b8fe 100644
--- a/apps/comments/l10n/lt_LT.js
+++ b/apps/comments/l10n/lt_LT.js
@@ -1,8 +1,34 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "Atšaukti",
- "Save" : "Išsaugoti",
- "Comment" : "Komentaras"
+ "Comments" : "Komentarai",
+ "Unknown user" : "Nežinomas naudotojas",
+ "New comment …" : "Naujas komentaras …",
+ "Delete comment" : "Ištrinti komentarą",
+ "Post" : "Įrašas",
+ "Cancel" : "Atsisakyti",
+ "Edit comment" : "Redaguoti komentarą",
+ "[Deleted user]" : "[Ištrintas naudotojas]",
+ "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!",
+ "More comments …" : "Daugiau komentarų …",
+ "Save" : "Įrašyti",
+ "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}",
+ "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}",
+ "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}",
+ "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida",
+ "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"],
+ "Comment" : "Komentaras",
+ "You commented" : "Jūs pakomentavote",
+ "%1$s commented" : "%1$s pakomentavo",
+ "{author} commented" : "{author} pakomentavo",
+ "You commented on %1$s" : "Pakomentavote %1$s",
+ "You commented on {file}" : "Pakomentavote {file}",
+ "%1$s commented on %2$s" : "%1$s pakomentavo %2$s",
+ "{author} commented on {file}" : "{author} pakomentavo {file}",
+ "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"",
+ "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json
index 59432d7b6b4..d85b132b337 100644
--- a/apps/comments/l10n/lt_LT.json
+++ b/apps/comments/l10n/lt_LT.json
@@ -1,6 +1,32 @@
{ "translations": {
- "Cancel" : "Atšaukti",
- "Save" : "Išsaugoti",
- "Comment" : "Komentaras"
+ "Comments" : "Komentarai",
+ "Unknown user" : "Nežinomas naudotojas",
+ "New comment …" : "Naujas komentaras …",
+ "Delete comment" : "Ištrinti komentarą",
+ "Post" : "Įrašas",
+ "Cancel" : "Atsisakyti",
+ "Edit comment" : "Redaguoti komentarą",
+ "[Deleted user]" : "[Ištrintas naudotojas]",
+ "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!",
+ "More comments …" : "Daugiau komentarų …",
+ "Save" : "Įrašyti",
+ "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}",
+ "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}",
+ "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}",
+ "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida",
+ "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"],
+ "Comment" : "Komentaras",
+ "You commented" : "Jūs pakomentavote",
+ "%1$s commented" : "%1$s pakomentavo",
+ "{author} commented" : "{author} pakomentavo",
+ "You commented on %1$s" : "Pakomentavote %1$s",
+ "You commented on {file}" : "Pakomentavote {file}",
+ "%1$s commented on %2$s" : "%1$s pakomentavo %2$s",
+ "{author} commented on {file}" : "{author} pakomentavo {file}",
+ "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"",
+ "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js
index e57ae8e7d40..634b3355a49 100644
--- a/apps/comments/l10n/zh_TW.js
+++ b/apps/comments/l10n/zh_TW.js
@@ -26,6 +26,8 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s 在 %2$s 留言",
"{author} commented on {file}" : "{author} 對 {file} 留言",
"<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "用戶(被刪除)在 “%s” 留言中提到你",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "用戶(被刪除)在 “{file}” 留言中提到你",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你",
"{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你"
},
diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json
index b77bcb88fa8..28935e79c96 100644
--- a/apps/comments/l10n/zh_TW.json
+++ b/apps/comments/l10n/zh_TW.json
@@ -24,6 +24,8 @@
"%1$s commented on %2$s" : "%1$s 在 %2$s 留言",
"{author} commented on {file}" : "{author} 對 {file} 留言",
"<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "用戶(被刪除)在 “%s” 留言中提到你",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "用戶(被刪除)在 “{file}” 留言中提到你",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你",
"{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php
index 16852296cf1..94176921f05 100644
--- a/apps/comments/lib/Activity/Listener.php
+++ b/apps/comments/lib/Activity/Listener.php
@@ -84,7 +84,7 @@ class Listener {
// Get all mount point owners
$cache = $this->mountCollection->getMountCache();
- $mounts = $cache->getMountsForFileId($event->getComment()->getObjectId());
+ $mounts = $cache->getMountsForFileId((int)$event->getComment()->getObjectId());
if (empty($mounts)) {
return;
}
@@ -93,7 +93,7 @@ class Listener {
foreach ($mounts as $mount) {
$owner = $mount->getUser()->getUID();
$ownerFolder = $this->rootFolder->getUserFolder($owner);
- $nodes = $ownerFolder->getById($event->getComment()->getObjectId());
+ $nodes = $ownerFolder->getById((int)$event->getComment()->getObjectId());
if (!empty($nodes)) {
/** @var Node $node */
$node = array_shift($nodes);
diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php
index 7bf686e796e..ea4810f92ed 100644
--- a/apps/comments/lib/Activity/Provider.php
+++ b/apps/comments/lib/Activity/Provider.php
@@ -147,7 +147,7 @@ class Provider implements IProvider {
trim($subjectParameters[1], '/'),
]))
->setRichSubject($this->l->t('You commented on {file}'), [
- 'file' => $this->generateFileParameter($event->getObjectId(), $subjectParameters[1]),
+ 'file' => $this->generateFileParameter((int)$event->getObjectId(), $subjectParameters[1]),
]);
} else {
$author = $this->generateUserParameter($subjectParameters[0]);
@@ -157,7 +157,7 @@ class Provider implements IProvider {
]))
->setRichSubject($this->l->t('{author} commented on {file}'), [
'author' => $author,
- 'file' => $this->generateFileParameter($event->getObjectId(), $subjectParameters[1]),
+ 'file' => $this->generateFileParameter((int)$event->getObjectId(), $subjectParameters[1]),
]);
}
} else {
@@ -173,7 +173,7 @@ class Provider implements IProvider {
protected function parseMessage(IEvent $event) {
$messageParameters = $event->getMessageParameters();
try {
- $comment = $this->commentsManager->get((int) $messageParameters[0]);
+ $comment = $this->commentsManager->get((string) $messageParameters[0]);
$message = $comment->getMessage();
$message = str_replace("\n", '<br />', str_replace(['<', '>'], ['&lt;', '&gt;'], $message));
diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/Notifications.php
index c2a8175d17a..9a07e2fbad7 100644
--- a/apps/comments/lib/Controller/Notifications.php
+++ b/apps/comments/lib/Controller/Notifications.php
@@ -96,7 +96,7 @@ class Notifications extends Controller {
if($comment->getObjectType() !== 'files') {
return new NotFoundResponse();
}
- $files = $this->folder->getById($comment->getObjectId());
+ $files = $this->folder->getById((int)$comment->getObjectId());
if(count($files) === 0) {
$this->markProcessed($comment);
return new NotFoundResponse();
diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php
index 09092da539c..60dd85f74c5 100644
--- a/apps/comments/lib/Notification/Notifier.php
+++ b/apps/comments/lib/Notification/Notifier.php
@@ -94,7 +94,7 @@ class Notifier implements INotifier {
throw new \InvalidArgumentException('Unsupported comment object');
}
$userFolder = $this->rootFolder->getUserFolder($notification->getUser());
- $nodes = $userFolder->getById($parameters[1]);
+ $nodes = $userFolder->getById((int)$parameters[1]);
if(empty($nodes)) {
throw new \InvalidArgumentException('Cannot resolve file id to Node instance');
}
diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php
index 3ef1c2e62a5..37fcebe605c 100644
--- a/apps/dav/appinfo/v1/publicwebdav.php
+++ b/apps/dav/appinfo/v1/publicwebdav.php
@@ -79,10 +79,12 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct
\OC\Files\Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) {
return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => $share->getPermissions() | \OCP\Constants::PERMISSION_SHARE));
});
+
\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog);
+ OC_Util::tearDownFS();
OC_Util::setupFS($owner);
- $ownerView = \OC\Files\Filesystem::getView();
+ $ownerView = new \OC\Files\View('/'. $owner . '/files');
$path = $ownerView->getPath($fileId);
$fileInfo = $ownerView->getFileInfo($path);
$linkCheckPlugin->setFileInfo($fileInfo);
diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js
index 28a4bb0a1f6..6178ce44f32 100644
--- a/apps/dav/l10n/el.js
+++ b/apps/dav/l10n/el.js
@@ -1,11 +1,50 @@
OC.L10N.register(
"dav",
{
+ "Calendar" : "Ημερολόγιο",
+ "Todos" : "Εργασίες προς εκτέλεση",
+ "{actor} created calendar {calendar}" : "{actor} δημιουργήθηκε το ημερολόγιο {calendar}",
+ "You created calendar {calendar}" : "Δημιουργήσατε ημερολόγιο {ημερολόγιο}",
+ "{actor} deleted calendar {calendar}" : "{actor} διέγραψε το ημερολόγιο {calendar}",
+ "You deleted calendar {calendar}" : "Διαγράψατε το ημερολόγιο {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} ενημέρωσε το ημερολόγιο {calendar}",
+ "You updated calendar {calendar}" : "Έχετε ενημερώσει το ημερολόγιο {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} διαμοιράστηκε το ημερολόγιο {calendar} με εσάς",
+ "You shared calendar {calendar} with {user}" : "Διαμοιραστήκατε το ημερολογίου {calendar} με {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} διαμοίρασε το ημερολόγιο {calendar} με {user}",
+ "{actor} unshared calendar {calendar} from you" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από εσάς",
+ "You unshared calendar {calendar} from {user}" : "Σταματήσατε τον διαμοιρασμό ημερολογίου {calendar} από {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από τον χρήστη {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από τον εαυτό τους",
+ "You shared calendar {calendar} with group {group}" : "Διαμοιραστείκατε ένα ημερολόγιο {calendar} με την ομάδα {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "Ο {actor} διαμοιράστηκε το ημερολόγιο {calendar} με την ομάδα {group}",
+ "You unshared calendar {calendar} from group {group}" : "Σταματήσατε τον διαμοιρασμό του ημερολογίου {calendar} από την ομάδα {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από την ομάδα {group}",
+ "{actor} created event {event} in calendar {calendar}" : "Ο {actor} δημιούργησε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "You created event {event} in calendar {calendar}" : "Δημιουργήσατε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "Ο {actor} διέγραψε το γεγονός {event} από το ημερολόγιο {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Διαγράψατε το συμβάν {event} από το ημερολόγιο {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} δημιούργησε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}",
+ "You created todo {todo} in list {calendar}" : "Δημιουργήσατε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}",
+ "{actor} deleted todo {todo} from list {calendar}" : "Ο {actor} διέγραψε την εκκρεμότητα {todo} από τη λίστα {ημερολόγιο}",
+ "You deleted todo {todo} from list {calendar}" : "Διέγραψες την εκκρεμότητα {todo} από τη λίστα {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} ενημέρωσε την εκκρεμότητα {todo} στη λίστα {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Ενημέρωσες την εκκρεμότητα {todo} στη λίστα {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} επίλυσε την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Επίλυσες την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} άνοιξε ξανά την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Άνοιξες ξανά την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
+ "A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
+ "A calendar <strong>todo</strong> was modified" : "Ενός ημερολογίου η <strong>εκκρεμότητα</strong> τροποποιήθηκε",
"Contact birthdays" : "Γενέθλια επαφών",
"Personal" : "Προσωπικά",
"Contacts" : "Επαφές",
+ "WebDAV" : "WebDAV",
"Technical details" : "Τεχνικές λεπτομέρειες",
"Remote Address: %s" : "Απομακρυσμένη Διεύθυνση: %s",
- "Request ID: %s" : "Αίτημα ID: %s"
+ "Request ID: %s" : "ID Αιτήματος: %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json
index c9a9111917a..21c2199a0ab 100644
--- a/apps/dav/l10n/el.json
+++ b/apps/dav/l10n/el.json
@@ -1,9 +1,48 @@
{ "translations": {
+ "Calendar" : "Ημερολόγιο",
+ "Todos" : "Εργασίες προς εκτέλεση",
+ "{actor} created calendar {calendar}" : "{actor} δημιουργήθηκε το ημερολόγιο {calendar}",
+ "You created calendar {calendar}" : "Δημιουργήσατε ημερολόγιο {ημερολόγιο}",
+ "{actor} deleted calendar {calendar}" : "{actor} διέγραψε το ημερολόγιο {calendar}",
+ "You deleted calendar {calendar}" : "Διαγράψατε το ημερολόγιο {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} ενημέρωσε το ημερολόγιο {calendar}",
+ "You updated calendar {calendar}" : "Έχετε ενημερώσει το ημερολόγιο {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} διαμοιράστηκε το ημερολόγιο {calendar} με εσάς",
+ "You shared calendar {calendar} with {user}" : "Διαμοιραστήκατε το ημερολογίου {calendar} με {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} διαμοίρασε το ημερολόγιο {calendar} με {user}",
+ "{actor} unshared calendar {calendar} from you" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από εσάς",
+ "You unshared calendar {calendar} from {user}" : "Σταματήσατε τον διαμοιρασμό ημερολογίου {calendar} από {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από τον χρήστη {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από τον εαυτό τους",
+ "You shared calendar {calendar} with group {group}" : "Διαμοιραστείκατε ένα ημερολόγιο {calendar} με την ομάδα {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "Ο {actor} διαμοιράστηκε το ημερολόγιο {calendar} με την ομάδα {group}",
+ "You unshared calendar {calendar} from group {group}" : "Σταματήσατε τον διαμοιρασμό του ημερολογίου {calendar} από την ομάδα {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από την ομάδα {group}",
+ "{actor} created event {event} in calendar {calendar}" : "Ο {actor} δημιούργησε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "You created event {event} in calendar {calendar}" : "Δημιουργήσατε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "Ο {actor} διέγραψε το γεγονός {event} από το ημερολόγιο {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Διαγράψατε το συμβάν {event} από το ημερολόγιο {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} δημιούργησε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}",
+ "You created todo {todo} in list {calendar}" : "Δημιουργήσατε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}",
+ "{actor} deleted todo {todo} from list {calendar}" : "Ο {actor} διέγραψε την εκκρεμότητα {todo} από τη λίστα {ημερολόγιο}",
+ "You deleted todo {todo} from list {calendar}" : "Διέγραψες την εκκρεμότητα {todo} από τη λίστα {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} ενημέρωσε την εκκρεμότητα {todo} στη λίστα {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Ενημέρωσες την εκκρεμότητα {todo} στη λίστα {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} επίλυσε την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Επίλυσες την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} άνοιξε ξανά την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Άνοιξες ξανά την εκκρεμότητα {todo} στην λίστα {calendar}",
+ "A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
+ "A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
+ "A calendar <strong>todo</strong> was modified" : "Ενός ημερολογίου η <strong>εκκρεμότητα</strong> τροποποιήθηκε",
"Contact birthdays" : "Γενέθλια επαφών",
"Personal" : "Προσωπικά",
"Contacts" : "Επαφές",
+ "WebDAV" : "WebDAV",
"Technical details" : "Τεχνικές λεπτομέρειες",
"Remote Address: %s" : "Απομακρυσμένη Διεύθυνση: %s",
- "Request ID: %s" : "Αίτημα ID: %s"
+ "Request ID: %s" : "ID Αιτήματος: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/sq.js b/apps/dav/l10n/sq.js
index 6138da04169..2004b3f5072 100644
--- a/apps/dav/l10n/sq.js
+++ b/apps/dav/l10n/sq.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Calendar" : "Kalendar",
"Todos" : "Për tu bërë",
- "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}",
+ "{actor} created calendar {calendar}" : "{aktori} krijoi kalendarin {kalendarin}",
"You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}",
"You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}",
@@ -31,11 +31,18 @@ OC.L10N.register(
"{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}",
"You deleted todo {todo} from list {calendar}" : "Ju fshit todo{todo} nga lista {calendar}",
"{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}",
+ "You updated todo {todo} in list {calendar}" : "Ju përditësuat përtëbërë {todo} në listën{calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} zgjidhi përtëbërë {todo} në listën {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Ju zgjidhët përtëbërë {todo} në listën {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} rihapi përtëbërë {todo} në listën {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Ju rihapët përtëbërë {todo} në listën {calendar}",
"A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua",
"A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua",
"A calendar <strong>todo</strong> was modified" : "Një kalendar <strong>todo<strong> u modifikua",
+ "Contact birthdays" : "Ditëlindjet e kontakteve",
"Personal" : "Personale",
"Contacts" : "Kontaktet",
+ "WebDAV" : "WebDAV",
"Technical details" : "Detaje teknike",
"Remote Address: %s" : "Adresa remote: %s",
"Request ID: %s" : "ID e kërkesës: %s"
diff --git a/apps/dav/l10n/sq.json b/apps/dav/l10n/sq.json
index 27a36bbff81..fde9a71c324 100644
--- a/apps/dav/l10n/sq.json
+++ b/apps/dav/l10n/sq.json
@@ -1,7 +1,7 @@
{ "translations": {
"Calendar" : "Kalendar",
"Todos" : "Për tu bërë",
- "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}",
+ "{actor} created calendar {calendar}" : "{aktori} krijoi kalendarin {kalendarin}",
"You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}",
"You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}",
@@ -29,11 +29,18 @@
"{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}",
"You deleted todo {todo} from list {calendar}" : "Ju fshit todo{todo} nga lista {calendar}",
"{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}",
+ "You updated todo {todo} in list {calendar}" : "Ju përditësuat përtëbërë {todo} në listën{calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} zgjidhi përtëbërë {todo} në listën {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Ju zgjidhët përtëbërë {todo} në listën {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} rihapi përtëbërë {todo} në listën {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Ju rihapët përtëbërë {todo} në listën {calendar}",
"A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua",
"A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua",
"A calendar <strong>todo</strong> was modified" : "Një kalendar <strong>todo<strong> u modifikua",
+ "Contact birthdays" : "Ditëlindjet e kontakteve",
"Personal" : "Personale",
"Contacts" : "Kontaktet",
+ "WebDAV" : "WebDAV",
"Technical details" : "Detaje teknike",
"Remote Address: %s" : "Adresa remote: %s",
"Request ID: %s" : "ID e kërkesës: %s"
diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php b/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php
index 6082e68dcd2..36d425ecf63 100644
--- a/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php
+++ b/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php
@@ -168,32 +168,32 @@ class Calendar extends Base {
case self::SUBJECT_UNSHARE_USER . '_self':
return [
'actor' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_USER . '_you':
case self::SUBJECT_UNSHARE_USER . '_you':
return [
'user' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_USER . '_by':
case self::SUBJECT_UNSHARE_USER . '_by':
return [
'user' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'actor' => $this->generateUserParameter($parameters[2]),
];
case self::SUBJECT_SHARE_GROUP . '_you':
case self::SUBJECT_UNSHARE_GROUP . '_you':
return [
'group' => $this->generateGroupParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_GROUP . '_by':
case self::SUBJECT_UNSHARE_GROUP . '_by':
return [
'group' => $this->generateGroupParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'actor' => $this->generateUserParameter($parameters[2]),
];
}
diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Event.php b/apps/dav/lib/CalDAV/Activity/Provider/Event.php
index b591eaa351c..2c2e3d01c28 100644
--- a/apps/dav/lib/CalDAV/Activity/Provider/Event.php
+++ b/apps/dav/lib/CalDAV/Activity/Provider/Event.php
@@ -124,14 +124,14 @@ class Event extends Base {
case self::SUBJECT_OBJECT_UPDATE . '_event':
return [
'actor' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'event' => $this->generateObjectParameter($parameters[2]),
];
case self::SUBJECT_OBJECT_ADD . '_event_self':
case self::SUBJECT_OBJECT_DELETE . '_event_self':
case self::SUBJECT_OBJECT_UPDATE . '_event_self':
return [
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'event' => $this->generateObjectParameter($parameters[2]),
];
}
diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
index 0ad1d137455..a665caa0e6a 100644
--- a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
+++ b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
@@ -95,7 +95,7 @@ class Todo extends Event {
case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action':
return [
'actor' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'todo' => $this->generateObjectParameter($parameters[2]),
];
case self::SUBJECT_OBJECT_ADD . '_todo_self':
@@ -104,7 +104,7 @@ class Todo extends Event {
case self::SUBJECT_OBJECT_UPDATE . '_todo_completed_self':
case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action_self':
return [
- 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'todo' => $this->generateObjectParameter($parameters[2]),
];
}
diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php
index 702b74bf1b3..e11f922a636 100644
--- a/apps/dav/lib/CalDAV/BirthdayService.php
+++ b/apps/dav/lib/CalDAV/BirthdayService.php
@@ -270,7 +270,7 @@ class BirthdayService {
* @param string $cardData
* @param array $book
* @param int $calendarId
- * @param string $type
+ * @param string[] $type
*/
private function updateCalendar($cardUri, $cardData, $book, $calendarId, $type) {
$objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics';
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php
index 7fe18cd8656..d078790b6f0 100644
--- a/apps/dav/lib/CalDAV/CalDavBackend.php
+++ b/apps/dav/lib/CalDAV/CalDavBackend.php
@@ -50,6 +50,7 @@ use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\Reader;
use Sabre\VObject\Recur\EventIterator;
+use Sabre\Uri;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
@@ -318,7 +319,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
}
}
- list(, $name) = URLUtil::splitPath($row['principaluri']);
+ list(, $name) = Uri\split($row['principaluri']);
$uri = $row['uri'] . '_shared_by_' . $name;
$row['displayname'] = $row['displayname'] . ' (' . $this->getUserDisplayName($name) . ')';
$components = [];
@@ -432,7 +433,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
->execute();
while($row = $result->fetch()) {
- list(, $name) = URLUtil::splitPath($row['principaluri']);
+ list(, $name) = Uri\split($row['principaluri']);
$row['displayname'] = $row['displayname'] . "($name)";
$components = [];
if ($row['components']) {
@@ -498,7 +499,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
throw new NotFound('Node with name \'' . $uri . '\' could not be found');
}
- list(, $name) = URLUtil::splitPath($row['principaluri']);
+ list(, $name) = Uri\split($row['principaluri']);
$row['displayname'] = $row['displayname'] . ' ' . "($name)";
$components = [];
if ($row['components']) {
@@ -635,6 +636,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
* @param string $calendarUri
* @param array $properties
* @return int
+ * @suppress SqlInjectionChecker
*/
function createCalendar($principalUri, $calendarUri, array $properties) {
$values = [
@@ -695,6 +697,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
*
* Read the PropPatch documentation for more info and examples.
*
+ * @param mixed $calendarId
* @param PropPatch $propPatch
* @return void
*/
@@ -702,6 +705,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$supportedProperties = array_keys($this->propertyMap);
$supportedProperties[] = '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp';
+ /**
+ * @suppress SqlInjectionChecker
+ */
$propPatch->handle($supportedProperties, function($mutations) use ($calendarId) {
$newValues = [];
foreach ($mutations as $propertyName => $propertyValue) {
@@ -1152,7 +1158,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$requirePostFilter = false;
}
// There was a time-range filter
- if ($componentType == 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) {
+ if ($componentType === 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) {
$timeRange = $filters['comp-filters'][0]['time-range'];
// If start time OR the end time is not specified, we can do a
@@ -1618,6 +1624,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$supportedProperties = array_keys($this->subscriptionPropertyMap);
$supportedProperties[] = '{http://calendarserver.org/ns/}source';
+ /**
+ * @suppress SqlInjectionChecker
+ */
$propPatch->handle($supportedProperties, function($mutations) use ($subscriptionId) {
$newValues = [];
@@ -1925,7 +1934,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
public function setPublishStatus($value, $calendar) {
$query = $this->db->getQueryBuilder();
if ($value) {
- $publicUri = $this->random->generate(16, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_DIGITS);
+ $publicUri = $this->random->generate(16, ISecureRandom::CHAR_HUMAN_READABLE);
$query->insert('dav_shares')
->values([
'principaluri' => $query->createNamedParameter($calendar->getPrincipalURI()),
@@ -2096,7 +2105,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
private function convertPrincipal($principalUri, $toV2) {
if ($this->principalBackend->getPrincipalPrefix() === 'principals') {
- list(, $name) = URLUtil::splitPath($principalUri);
+ list(, $name) = Uri\split($principalUri);
if ($toV2 === true) {
return "principals/users/$name";
}
diff --git a/apps/dav/lib/CalDAV/Plugin.php b/apps/dav/lib/CalDAV/Plugin.php
index 5172cea6e27..647dbb5c587 100644
--- a/apps/dav/lib/CalDAV/Plugin.php
+++ b/apps/dav/lib/CalDAV/Plugin.php
@@ -31,7 +31,7 @@ class Plugin extends \Sabre\CalDAV\Plugin {
function getCalendarHomeForPrincipal($principalUrl) {
if (strrpos($principalUrl, 'principals/users', -strlen($principalUrl)) !== false) {
- list(, $principalId) = URLUtil::splitPath($principalUrl);
+ list(, $principalId) = \Sabre\Uri\split($principalUrl);
return self::CALENDAR_ROOT .'/' . $principalId;
}
diff --git a/apps/dav/lib/CalDAV/Search/SearchPlugin.php b/apps/dav/lib/CalDAV/Search/SearchPlugin.php
index d658a50437d..84e095da5f8 100644
--- a/apps/dav/lib/CalDAV/Search/SearchPlugin.php
+++ b/apps/dav/lib/CalDAV/Search/SearchPlugin.php
@@ -134,7 +134,7 @@ class SearchPlugin extends ServerPlugin {
// If we're dealing with the calendar home, the calendar home itself is
// responsible for the calendar-query
- if ($node instanceof CalendarHome && $depth == 2) {
+ if ($node instanceof CalendarHome && $depth === 2) {
$nodePaths = $node->calendarSearch($report->filters, $report->limit, $report->offset);
@@ -156,4 +156,4 @@ class SearchPlugin extends ServerPlugin {
$this->server->generateMultiStatus($result,
$prefer['return'] === 'minimal'));
}
-} \ No newline at end of file
+}
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index 5742f97b701..7c275611951 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -196,7 +196,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
}
}
- list(, $name) = URLUtil::splitPath($row['principaluri']);
+ list(, $name) = \Sabre\Uri\split($row['principaluri']);
$uri = $row['uri'] . '_shared_by_' . $name;
$displayName = $row['displayname'] . ' (' . $this->getUserDisplayName($name) . ')';
@@ -348,6 +348,9 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'{' . Plugin::NS_CARDDAV . '}addressbook-description',
];
+ /**
+ * @suppress SqlInjectionChecker
+ */
$propPatch->handle($supportedProperties, function($mutations) use ($addressBookId) {
$updates = [];
@@ -1016,7 +1019,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
}
$preferred = 0;
foreach($property->parameters as $parameter) {
- if ($parameter->name == 'TYPE' && strtoupper($parameter->getValue()) == 'PREF') {
+ if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') {
$preferred = 1;
break;
}
@@ -1088,7 +1091,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
private function convertPrincipal($principalUri, $toV2) {
if ($this->principalBackend->getPrincipalPrefix() === 'principals') {
- list(, $name) = URLUtil::splitPath($principalUri);
+ list(, $name) = \Sabre\Uri\split($principalUri);
if ($toV2 === true) {
return "principals/users/$name";
}
diff --git a/apps/dav/lib/CardDAV/Plugin.php b/apps/dav/lib/CardDAV/Plugin.php
index b291a8360e1..61b9915b1ad 100644
--- a/apps/dav/lib/CardDAV/Plugin.php
+++ b/apps/dav/lib/CardDAV/Plugin.php
@@ -44,15 +44,15 @@ class Plugin extends \Sabre\CardDAV\Plugin {
protected function getAddressbookHomeForPrincipal($principal) {
if (strrpos($principal, 'principals/users', -strlen($principal)) !== false) {
- list(, $principalId) = URLUtil::splitPath($principal);
+ list(, $principalId) = \Sabre\Uri\split($principal);
return self::ADDRESSBOOK_ROOT . '/users/' . $principalId;
}
if (strrpos($principal, 'principals/groups', -strlen($principal)) !== false) {
- list(, $principalId) = URLUtil::splitPath($principal);
+ list(, $principalId) = \Sabre\Uri\split($principal);
return self::ADDRESSBOOK_ROOT . '/groups/' . $principalId;
}
if (strrpos($principal, 'principals/system', -strlen($principal)) !== false) {
- list(, $principalId) = URLUtil::splitPath($principal);
+ list(, $principalId) = \Sabre\Uri\split($principal);
return self::ADDRESSBOOK_ROOT . '/system/' . $principalId;
}
diff --git a/apps/dav/lib/Connector/LegacyDAVACL.php b/apps/dav/lib/Connector/LegacyDAVACL.php
index 46cbb504cce..704b967a002 100644
--- a/apps/dav/lib/Connector/LegacyDAVACL.php
+++ b/apps/dav/lib/Connector/LegacyDAVACL.php
@@ -51,7 +51,7 @@ class LegacyDAVACL extends DavAclPlugin {
}
private function convertPrincipal($principal, $toV2) {
- list(, $name) = URLUtil::splitPath($principal);
+ list(, $name) = \Sabre\Uri\split($principal);
if ($toV2) {
return "principals/users/$name";
}
diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php
index cb5a2ab8123..6fe9d26614e 100644
--- a/apps/dav/lib/Connector/Sabre/Directory.php
+++ b/apps/dav/lib/Connector/Sabre/Directory.php
@@ -225,7 +225,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node
throw new \Sabre\DAV\Exception\NotFound('File with name ' . $path . ' could not be located');
}
- if ($info['mimetype'] == 'httpd/unix-directory') {
+ if ($info['mimetype'] === 'httpd/unix-directory') {
$node = new \OCA\DAV\Connector\Sabre\Directory($this->fileView, $info, $this->tree, $this->shareManager);
} else {
$node = new \OCA\DAV\Connector\Sabre\File($this->fileView, $info, $this->shareManager);
@@ -387,7 +387,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node
throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists');
}
- list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourceNode->getPath());
+ list($sourceDir,) = \Sabre\Uri\split($sourceNode->getPath());
$destinationDir = $this->getPath();
$sourcePath = $sourceNode->getPath();
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index ab04890d6c7..478321d41f2 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -146,8 +146,8 @@ class File extends Node implements IFile {
// double check if the file was fully received
// compare expected and actual size
if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['REQUEST_METHOD'] === 'PUT') {
- $expected = $_SERVER['CONTENT_LENGTH'];
- if ($count != $expected) {
+ $expected = (int) $_SERVER['CONTENT_LENGTH'];
+ if ($count !== $expected) {
throw new BadRequest('expected filesize ' . $expected . ' got ' . $count);
}
}
@@ -396,7 +396,7 @@ class File extends Node implements IFile {
* @throws ServiceUnavailable
*/
private function createFileChunked($data) {
- list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($this->path);
+ list($path, $name) = \Sabre\Uri\split($this->path);
$info = \OC_FileChunking::decodeName($name);
if (empty($info)) {
@@ -409,8 +409,8 @@ class File extends Node implements IFile {
//detect aborted upload
if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT') {
if (isset($_SERVER['CONTENT_LENGTH'])) {
- $expected = $_SERVER['CONTENT_LENGTH'];
- if ($bytesWritten != $expected) {
+ $expected = (int) $_SERVER['CONTENT_LENGTH'];
+ if ($bytesWritten !== $expected) {
$chunk_handler->remove($info['index']);
throw new BadRequest(
'expected filesize ' . $expected . ' got ' . $bytesWritten);
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index efc9a42e5f5..726dd13cced 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -196,14 +196,14 @@ class FilesPlugin extends ServerPlugin {
if (!$sourceNode instanceof Node) {
return;
}
- list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($source);
- list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination);
+ list($sourceDir,) = \Sabre\Uri\split($source);
+ list($destinationDir,) = \Sabre\Uri\split($destination);
if ($sourceDir !== $destinationDir) {
$sourceNodeFileInfo = $sourceNode->getFileInfo();
- if (is_null($sourceNodeFileInfo)) {
+ if ($sourceNodeFileInfo === null) {
throw new NotFound($source . ' does not exist');
- }
+ }
if (!$sourceNodeFileInfo->isDeletable()) {
throw new Forbidden($source . " cannot be deleted");
@@ -434,7 +434,7 @@ class FilesPlugin extends ServerPlugin {
public function sendFileIdHeader($filePath, \Sabre\DAV\INode $node = null) {
// chunked upload handling
if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
- list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($filePath);
+ list($path, $name) = \Sabre\Uri\split($filePath);
$info = \OC_FileChunking::decodeName($name);
if (!empty($info)) {
$filePath = $path . '/' . $info['name'];
diff --git a/apps/dav/lib/Connector/Sabre/Node.php b/apps/dav/lib/Connector/Sabre/Node.php
index 06933f53e76..b6d4090bf8f 100644
--- a/apps/dav/lib/Connector/Sabre/Node.php
+++ b/apps/dav/lib/Connector/Sabre/Node.php
@@ -126,8 +126,8 @@ abstract class Node implements \Sabre\DAV\INode {
throw new \Sabre\DAV\Exception\Forbidden();
}
- list($parentPath,) = \Sabre\HTTP\URLUtil::splitPath($this->path);
- list(, $newName) = \Sabre\HTTP\URLUtil::splitPath($name);
+ list($parentPath,) = \Sabre\Uri\split($this->path);
+ list(, $newName) = \Sabre\Uri\split($name);
// verify path of the target
$this->verifyPath();
diff --git a/apps/dav/lib/Connector/Sabre/ObjectTree.php b/apps/dav/lib/Connector/Sabre/ObjectTree.php
index acc6dcc3be3..3371c655f29 100644
--- a/apps/dav/lib/Connector/Sabre/ObjectTree.php
+++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php
@@ -80,8 +80,8 @@ class ObjectTree extends \Sabre\DAV\Tree {
private function resolveChunkFile($path) {
if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
// resolve to real file name to find the proper node
- list($dir, $name) = \Sabre\HTTP\URLUtil::splitPath($path);
- if ($dir == '/' || $dir == '.') {
+ list($dir, $name) = \Sabre\Uri\split($path);
+ if ($dir === '/' || $dir === '.') {
$dir = '';
}
@@ -221,7 +221,7 @@ class ObjectTree extends \Sabre\DAV\Tree {
// this will trigger existence check
$this->getNodeForPath($source);
- list($destinationDir, $destinationName) = \Sabre\HTTP\URLUtil::splitPath($destination);
+ list($destinationDir, $destinationName) = \Sabre\Uri\split($destination);
try {
$this->fileView->verifyPath($destinationDir, $destinationName);
} catch (\OCP\Files\InvalidPathException $ex) {
@@ -238,7 +238,7 @@ class ObjectTree extends \Sabre\DAV\Tree {
throw new FileLocked($e->getMessage(), $e->getCode(), $e);
}
- list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination);
+ list($destinationDir,) = \Sabre\Uri\split($destination);
$this->markDirty($destinationDir);
}
}
diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php
index 8713f61767b..dfcbf1e1ca0 100644
--- a/apps/dav/lib/Connector/Sabre/Principal.php
+++ b/apps/dav/lib/Connector/Sabre/Principal.php
@@ -100,7 +100,7 @@ class Principal implements BackendInterface {
* @return array
*/
public function getPrincipalByPath($path) {
- list($prefix, $name) = URLUtil::splitPath($path);
+ list($prefix, $name) = \Sabre\Uri\split($path);
if ($prefix === $this->principalPrefix) {
$user = $this->userManager->get($name);
@@ -138,7 +138,7 @@ class Principal implements BackendInterface {
* @throws Exception
*/
public function getGroupMembership($principal, $needGroups = false) {
- list($prefix, $name) = URLUtil::splitPath($principal);
+ list($prefix, $name) = \Sabre\Uri\split($principal);
if ($prefix === $this->principalPrefix) {
$user = $this->userManager->get($name);
diff --git a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
index f0958c353a1..92f1f6e2e74 100644
--- a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
@@ -91,7 +91,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
if (substr($uri, 0, 1) !== '/') {
$uri = '/' . $uri;
}
- list($parentUri, $newName) = URLUtil::splitPath($uri);
+ list($parentUri, $newName) = \Sabre\Uri\split($uri);
if(is_null($parentUri)) {
$parentUri = '';
}
diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php
index f662d8e1b80..6cc5e3b6f50 100644
--- a/apps/dav/lib/DAV/Sharing/Backend.php
+++ b/apps/dav/lib/DAV/Sharing/Backend.php
@@ -170,7 +170,7 @@ class Backend {
'href' => "principal:${row['principaluri']}",
'commonName' => isset($p['{DAV:}displayname']) ? $p['{DAV:}displayname'] : '',
'status' => 1,
- 'readOnly' => ($row['access'] == self::ACCESS_READ),
+ 'readOnly' => ((int) $row['access'] === self::ACCESS_READ),
'{http://owncloud.org/ns}principal' => $row['principaluri'],
'{http://owncloud.org/ns}group-share' => is_null($p)
];
diff --git a/apps/dav/lib/DAV/SystemPrincipalBackend.php b/apps/dav/lib/DAV/SystemPrincipalBackend.php
index 6a71909c6fd..8c19e92499d 100644
--- a/apps/dav/lib/DAV/SystemPrincipalBackend.php
+++ b/apps/dav/lib/DAV/SystemPrincipalBackend.php
@@ -163,7 +163,7 @@ class SystemPrincipalBackend extends AbstractBackend {
* @return array
*/
function getGroupMembership($principal) {
- list($prefix, $name) = URLUtil::splitPath($principal);
+ list($prefix, $name) = \Sabre\Uri\split($principal);
if ($prefix === 'principals/system') {
$principal = $this->getPrincipalByPath($principal);
diff --git a/apps/dav/lib/Files/FilesHome.php b/apps/dav/lib/Files/FilesHome.php
index 78fd1f4d6d6..8768d6313b1 100644
--- a/apps/dav/lib/Files/FilesHome.php
+++ b/apps/dav/lib/Files/FilesHome.php
@@ -53,7 +53,7 @@ class FilesHome extends Directory {
}
function getName() {
- list(,$name) = URLUtil::splitPath($this->principalInfo['uri']);
+ list(,$name) = \Sabre\Uri\split($this->principalInfo['uri']);
return $name;
}
diff --git a/apps/dav/lib/Files/RootCollection.php b/apps/dav/lib/Files/RootCollection.php
index c73d7c175ce..66e3160eaf8 100644
--- a/apps/dav/lib/Files/RootCollection.php
+++ b/apps/dav/lib/Files/RootCollection.php
@@ -39,7 +39,7 @@ class RootCollection extends AbstractPrincipalCollection {
* @return INode
*/
function getChildForPrincipal(array $principalInfo) {
- list(,$name) = URLUtil::splitPath($principalInfo['uri']);
+ list(,$name) = \Sabre\Uri\split($principalInfo['uri']);
$user = \OC::$server->getUserSession()->getUser();
if (is_null($user) || $name !== $user->getUID()) {
// a user is only allowed to see their own home contents, so in case another collection
diff --git a/apps/dav/lib/Upload/AssemblyStream.php b/apps/dav/lib/Upload/AssemblyStream.php
index b623f717b31..4b327cecaac 100644
--- a/apps/dav/lib/Upload/AssemblyStream.php
+++ b/apps/dav/lib/Upload/AssemblyStream.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCA\DAV\Upload;
use Sabre\DAV\IFile;
@@ -44,15 +45,15 @@ class AssemblyStream implements \Icewind\Streams\File {
/** @var int */
private $pos = 0;
- /** @var array */
- private $sortedNodes;
-
/** @var int */
- private $size;
+ private $size = 0;
/** @var resource */
private $currentStream = null;
+ /** @var int */
+ private $currentNode = 0;
+
/**
* @param string $path
* @param string $mode
@@ -63,24 +64,18 @@ class AssemblyStream implements \Icewind\Streams\File {
public function stream_open($path, $mode, $options, &$opened_path) {
$this->loadContext('assembly');
- // sort the nodes
$nodes = $this->nodes;
// http://stackoverflow.com/a/10985500
- @usort($nodes, function(IFile $a, IFile $b) {
+ @usort($nodes, function (IFile $a, IFile $b) {
return strnatcmp($a->getName(), $b->getName());
});
- $this->nodes = $nodes;
-
- // build additional information
- $this->sortedNodes = [];
- $start = 0;
- foreach($this->nodes as $node) {
- $size = $node->getSize();
- $name = $node->getName();
- $this->sortedNodes[$name] = ['node' => $node, 'start' => $start, 'end' => $start + $size];
- $start += $size;
- $this->size = $start;
+ $this->nodes = array_values($nodes);
+ if (count($this->nodes) > 0) {
+ $this->currentStream = $this->getStream($this->nodes[0]);
}
+ $this->size = array_reduce($this->nodes, function ($size, IFile $file) {
+ return $size + $file->getSize();
+ }, 0);
return true;
}
@@ -105,36 +100,27 @@ class AssemblyStream implements \Icewind\Streams\File {
* @return string
*/
public function stream_read($count) {
- do {
- if ($this->currentStream === null) {
- list($node, $posInNode) = $this->getNodeForPosition($this->pos);
- if (is_null($node)) {
- // reached last node, no more data
- return '';
- }
- $this->currentStream = $this->getStream($node);
- fseek($this->currentStream, $posInNode);
- }
+ if (is_null($this->currentStream)) {
+ return '';
+ }
+ do {
$data = fread($this->currentStream, $count);
- // isset is faster than strlen
- if (isset($data[$count - 1])) {
- // we read the full count
- $read = $count;
- } else {
- // reaching end of stream, which happens less often so strlen is ok
- $read = strlen($data);
- }
+ $read = strlen($data);
if (feof($this->currentStream)) {
fclose($this->currentStream);
- $this->currentNode = null;
- $this->currentStream = null;
+ $this->currentNode++;
+ if ($this->currentNode < count($this->nodes)) {
+ $this->currentStream = $this->getStream($this->nodes[$this->currentNode]);
+ } else {
+ $this->currentStream = null;
+ }
}
// if no data read, try again with the next node because
// returning empty data can make the caller think there is no more
// data left to read
- } while ($read === 0);
+ } while ($read === 0 && !is_null($this->currentStream));
// update position
$this->pos += $read;
@@ -235,9 +221,10 @@ class AssemblyStream implements \Icewind\Streams\File {
public static function wrap(array $nodes) {
$context = stream_context_create([
'assembly' => [
- 'nodes' => $nodes]
+ 'nodes' => $nodes
+ ]
]);
- stream_wrapper_register('assembly', '\OCA\DAV\Upload\AssemblyStream');
+ stream_wrapper_register('assembly', self::class);
try {
$wrapped = fopen('assembly://', 'r', null, $context);
} catch (\BadMethodCallException $e) {
@@ -249,19 +236,6 @@ class AssemblyStream implements \Icewind\Streams\File {
}
/**
- * @param $pos
- * @return IFile | null
- */
- private function getNodeForPosition($pos) {
- foreach($this->sortedNodes as $node) {
- if ($pos >= $node['start'] && $pos < $node['end']) {
- return [$node['node'], $pos - $node['start']];
- }
- }
- return null;
- }
-
- /**
* @param IFile $node
* @return resource
*/
@@ -269,9 +243,11 @@ class AssemblyStream implements \Icewind\Streams\File {
$data = $node->get();
if (is_resource($data)) {
return $data;
+ } else {
+ $tmp = fopen('php://temp', 'w+');
+ fwrite($tmp, $data);
+ rewind($tmp);
+ return $tmp;
}
-
- return fopen('data://text/plain,' . $data,'r');
}
-
}
diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js
index 9693895870b..ad76bad8ef2 100644
--- a/apps/encryption/l10n/el.js
+++ b/apps/encryption/l10n/el.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού",
"Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού",
- "Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού",
+ "Repeated recovery key password does not match the provided recovery key password" : "Ο επαναλαμβανόμενος κωδικός πρόσβασης ανάκτησης δεν ταιριάζει με τον παρεχόμενο κωδικό πρόσβασης κλειδιού ανάκτησης",
"Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης",
"Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
@@ -23,6 +23,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν αρχικοποιηθεί. Πραγματοποιήστε έξοδο και είσοδο στην εφαρμογή εκ νέου.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Παρακαλούμε ενεργοποιήστε την κρυπτογράφηση στον διακομιστή, στις ρυθμίσεις διαχειριστή για να χρησιμοποιήσετε την κρυπτογράφηση",
"Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη",
"Bad Signature" : "Κακή υπογραφή",
"Missing Signature" : "Ελλιπής υπογραφή",
diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json
index c24465c32ad..f1ec0a6c44b 100644
--- a/apps/encryption/l10n/el.json
+++ b/apps/encryption/l10n/el.json
@@ -1,7 +1,7 @@
{ "translations": {
"Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού",
"Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού",
- "Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού",
+ "Repeated recovery key password does not match the provided recovery key password" : "Ο επαναλαμβανόμενος κωδικός πρόσβασης ανάκτησης δεν ταιριάζει με τον παρεχόμενο κωδικό πρόσβασης κλειδιού ανάκτησης",
"Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης",
"Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
@@ -21,6 +21,8 @@
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν αρχικοποιηθεί. Πραγματοποιήστε έξοδο και είσοδο στην εφαρμογή εκ νέου.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Παρακαλούμε ενεργοποιήστε την κρυπτογράφηση στον διακομιστή, στις ρυθμίσεις διαχειριστή για να χρησιμοποιήσετε την κρυπτογράφηση",
"Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη",
"Bad Signature" : "Κακή υπογραφή",
"Missing Signature" : "Ελλιπής υπογραφή",
diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js
index 32993e64514..b0704a1bd65 100644
--- a/apps/encryption/l10n/es_MX.js
+++ b/apps/encryption/l10n/es_MX.js
@@ -30,7 +30,7 @@ OC.L10N.register(
"Missing Signature" : "Firma faltante",
"one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño del archivo que lo vuelva a compartir contigo.",
- "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Por favor solicita al dueño que vuelva a compartirlo contigo.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño que vuelva a compartirlo contigo.",
"Default encryption module" : "Módulo de encripción predeterminado",
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Tus archivos fueron encriptados usando la contraseña '%s'\n\nPor favor inicia sesión en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y tu contraseña de inicio de sesión actual. \n",
"The share will expire on %s." : "El elemento compartido expirará el %s.",
diff --git a/apps/encryption/l10n/es_MX.json b/apps/encryption/l10n/es_MX.json
index a2c72aed1ce..206e3d661ec 100644
--- a/apps/encryption/l10n/es_MX.json
+++ b/apps/encryption/l10n/es_MX.json
@@ -28,7 +28,7 @@
"Missing Signature" : "Firma faltante",
"one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño del archivo que lo vuelva a compartir contigo.",
- "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Por favor solicita al dueño que vuelva a compartirlo contigo.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño que vuelva a compartirlo contigo.",
"Default encryption module" : "Módulo de encripción predeterminado",
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Tus archivos fueron encriptados usando la contraseña '%s'\n\nPor favor inicia sesión en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y tu contraseña de inicio de sesión actual. \n",
"The share will expire on %s." : "El elemento compartido expirará el %s.",
diff --git a/apps/encryption/l10n/it.js b/apps/encryption/l10n/it.js
index ce5a75dfa7d..070df518a4f 100644
--- a/apps/encryption/l10n/it.js
+++ b/apps/encryption/l10n/it.js
@@ -24,6 +24,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate. Disconnettiti ed effettua nuovamente l'accesso.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Abilita la cifratura lato server nelle impostazioni di amministrazione per utilizzare il modulo di cifratura.",
"Encryption app is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta",
"Bad Signature" : "Firma non valida",
"Missing Signature" : "Firma mancante",
diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json
index 5a7539c9dc7..b963d2b3468 100644
--- a/apps/encryption/l10n/it.json
+++ b/apps/encryption/l10n/it.json
@@ -22,6 +22,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate. Disconnettiti ed effettua nuovamente l'accesso.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Abilita la cifratura lato server nelle impostazioni di amministrazione per utilizzare il modulo di cifratura.",
"Encryption app is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta",
"Bad Signature" : "Firma non valida",
"Missing Signature" : "Firma mancante",
diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js
index 5ebe12d7365..dd7e0761361 100644
--- a/apps/encryption/l10n/ja.js
+++ b/apps/encryption/l10n/ja.js
@@ -24,6 +24,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "暗号化モジュールを利用する場合は、管理者設定でサーバーサイド暗号化を有効にしてください。",
"Encryption app is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました",
"Bad Signature" : "不正な署名",
"Missing Signature" : "署名が存在しません",
@@ -31,7 +32,7 @@ OC.L10N.register(
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。",
"Default encryption module" : "デフォルトの暗号化モジュール",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
"The share will expire on %s." : "共有は %s で有効期限が切れます。",
"Cheers!" : "それでは!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>",
diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json
index 4408f7882d6..6bd5eaa9414 100644
--- a/apps/encryption/l10n/ja.json
+++ b/apps/encryption/l10n/ja.json
@@ -22,6 +22,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "暗号化モジュールを利用する場合は、管理者設定でサーバーサイド暗号化を有効にしてください。",
"Encryption app is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました",
"Bad Signature" : "不正な署名",
"Missing Signature" : "署名が存在しません",
@@ -29,7 +30,7 @@
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。",
"Default encryption module" : "デフォルトの暗号化モジュール",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
"The share will expire on %s." : "共有は %s で有効期限が切れます。",
"Cheers!" : "それでは!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>",
diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js
index 68d716eb2e9..b0033c46f7a 100644
--- a/apps/encryption/l10n/lt_LT.js
+++ b/apps/encryption/l10n/lt_LT.js
@@ -1,54 +1,63 @@
OC.L10N.register(
"encryption",
{
- "Missing recovery key password" : "Trūksta atkūrimo rakto slaptažodžio",
- "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį",
+ "Missing recovery key password" : "Atkūrimo raktui apsaugoti reikalingas slaptažodis",
+ "Please repeat the recovery key password" : "Prašome pakartoti slaptažodį atkūrimo raktui apsaugoti",
"Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu",
- "Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas",
- "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
- "Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas",
- "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
+ "Recovery key successfully enabled" : "Atkūrimo raktas pradėtas naudoti",
+ "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko panaudoti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
+ "Recovery key successfully disabled" : "Atkūrimo raktas nebenaudojamas",
+ "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko atjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Missing parameters" : "Trūksta parametrų",
- "Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį",
- "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį",
- "Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį",
+ "Please provide the old recovery password" : "Įveskite seną atkūrimo rakto slaptažodį",
+ "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo rakto slaptažodį",
+ "Please repeat the new recovery password" : "Pakartokite naują atkūrimo rakto slaptažodį",
"Password successfully changed." : "Slaptažodis sėkmingai pakeistas.",
"Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.",
- "Recovery Key disabled" : "Atkūrimo raktas išjungtas",
- "Recovery Key enabled" : "Atstatymo raktas įjungtas",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi",
- "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.",
+ "Recovery Key disabled" : "Atkūrimo raktas nenaudojamas",
+ "Recovery Key enabled" : "Atkūrimo raktas naudojamas",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyksta pradėti naudoti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su sistemos administratoriumi",
+ "Could not update the private key password." : "Nepavyko atnaujinti slaptažodžio privačiam raktui.",
"The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.",
"The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.",
- "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.",
- "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi",
+ "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.",
+ "Encryption app is enabled and ready" : "Šifravimo įskiepis yra paruoštas ir veikia",
"Bad Signature" : "Blogas parašas",
"Missing Signature" : "Trūksta parašo",
- "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje",
+ "one-time password for server-side-encryption" : "vienkartinis slaptažodis skirtas šifravimui",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.",
"Default encryption module" : "Numatytasis šifravimo modulis",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Sveiki,\n\nAdministratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: \"%s\".\n\nPrisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.\n\n",
"The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.",
"Cheers!" : "Sveikinimai!",
- "Encrypt the home storage" : "Šifruoti namų saugyklą",
- "Enable recovery key" : "Įjungti atstatymo raktą",
- "Disable recovery key" : "Išjungti atstatymo raktą",
- "Recovery key password" : "Atkūrimo rakto slaptažodis",
- "Repeat recovery key password" : "Pakartokite atstatymo rakto slaptažodį",
- "Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Sveiki, <br><br>Administratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: <strong>%s</strong>.<br><br> Prisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.<br><br>",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo",
+ "Encrypt the home storage" : "Šifruoti visą saugyklą",
+ "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ši parinktis užšifruos visus duomenis, esančius visoje saugykloje. Jei pasirinkimas šioje skiltyje liks išjungtas, tada duomenys, esantys išorinėje saugykloje bus užšifruoti.",
+ "Enable recovery key" : "Naudoti atstatymo raktą",
+ "Disable recovery key" : "Nenaudoti atstatymo rakto",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Atkūrimo raktas yra papildoma saugumo priemonė skirta duomenų šifravimui. Atkūrimo raktas leidžia asmens duomenų atstatymą, kai asmuo pamiršta slaptažodį.",
+ "Recovery key password" : "Slaptažodis atkūrimo raktui",
+ "Repeat recovery key password" : "Pakartokite slaptažodį atkūrimo raktui ",
+ "Change recovery key password:" : "Pakeisti slaptažodį atkūrimo raktui:",
"Old recovery key password" : "Senas atstatymo rakto slaptažodis",
- "New recovery key password" : "Naujas atstatymo rakto slaptažodis",
- "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį",
+ "New recovery key password" : "Naujas slaptažodis atkūrimo raktui",
+ "Repeat new recovery key password" : "Pakartokite naują slaptažodį atkūrimo raktui",
"Change Password" : "Pakeisti slaptažodį",
"Basic encryption module" : "Pagrindinis šifravimo modulis",
- "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.",
- "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.",
- " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
+ "Your private key password no longer matches your log-in password." : "Jūsų privataus rakto slaptažodis nesutampa su jūsų prisijungimo slaptažodžiu.",
+ "Set your old private key password to your current log-in password:" : "Naudoti privataus rakto slaptažodį kaip prisijungimo slaptažodį:",
+ " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti sistemos administratoriaus atkurti jūsų duomenis.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
- "Update Private Key Password" : "Atnaujinti privačiojo rakto slaptažodį",
+ "Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų duomenų tuo atveju, jei prarasite slaptažodį",
"Enabled" : "Įjungta",
"Disabled" : "Išjungta",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programėlė yra įjungta, tačiau jūsų raktai nėra inicijuoti. Prašome atsijungti ir vėl prisijungti"
diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json
index 85cc95c9302..c413a688850 100644
--- a/apps/encryption/l10n/lt_LT.json
+++ b/apps/encryption/l10n/lt_LT.json
@@ -1,52 +1,61 @@
{ "translations": {
- "Missing recovery key password" : "Trūksta atkūrimo rakto slaptažodžio",
- "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį",
+ "Missing recovery key password" : "Atkūrimo raktui apsaugoti reikalingas slaptažodis",
+ "Please repeat the recovery key password" : "Prašome pakartoti slaptažodį atkūrimo raktui apsaugoti",
"Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu",
- "Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas",
- "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
- "Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas",
- "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
+ "Recovery key successfully enabled" : "Atkūrimo raktas pradėtas naudoti",
+ "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko panaudoti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
+ "Recovery key successfully disabled" : "Atkūrimo raktas nebenaudojamas",
+ "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko atjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Missing parameters" : "Trūksta parametrų",
- "Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį",
- "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį",
- "Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį",
+ "Please provide the old recovery password" : "Įveskite seną atkūrimo rakto slaptažodį",
+ "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo rakto slaptažodį",
+ "Please repeat the new recovery password" : "Pakartokite naują atkūrimo rakto slaptažodį",
"Password successfully changed." : "Slaptažodis sėkmingai pakeistas.",
"Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.",
- "Recovery Key disabled" : "Atkūrimo raktas išjungtas",
- "Recovery Key enabled" : "Atstatymo raktas įjungtas",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi",
- "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.",
+ "Recovery Key disabled" : "Atkūrimo raktas nenaudojamas",
+ "Recovery Key enabled" : "Atkūrimo raktas naudojamas",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyksta pradėti naudoti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su sistemos administratoriumi",
+ "Could not update the private key password." : "Nepavyko atnaujinti slaptažodžio privačiam raktui.",
"The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.",
"The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.",
- "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.",
- "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi",
+ "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.",
+ "Encryption app is enabled and ready" : "Šifravimo įskiepis yra paruoštas ir veikia",
"Bad Signature" : "Blogas parašas",
"Missing Signature" : "Trūksta parašo",
- "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje",
+ "one-time password for server-side-encryption" : "vienkartinis slaptažodis skirtas šifravimui",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.",
"Default encryption module" : "Numatytasis šifravimo modulis",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Sveiki,\n\nAdministratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: \"%s\".\n\nPrisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.\n\n",
"The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.",
"Cheers!" : "Sveikinimai!",
- "Encrypt the home storage" : "Šifruoti namų saugyklą",
- "Enable recovery key" : "Įjungti atstatymo raktą",
- "Disable recovery key" : "Išjungti atstatymo raktą",
- "Recovery key password" : "Atkūrimo rakto slaptažodis",
- "Repeat recovery key password" : "Pakartokite atstatymo rakto slaptažodį",
- "Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Sveiki, <br><br>Administratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: <strong>%s</strong>.<br><br> Prisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.<br><br>",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo",
+ "Encrypt the home storage" : "Šifruoti visą saugyklą",
+ "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ši parinktis užšifruos visus duomenis, esančius visoje saugykloje. Jei pasirinkimas šioje skiltyje liks išjungtas, tada duomenys, esantys išorinėje saugykloje bus užšifruoti.",
+ "Enable recovery key" : "Naudoti atstatymo raktą",
+ "Disable recovery key" : "Nenaudoti atstatymo rakto",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Atkūrimo raktas yra papildoma saugumo priemonė skirta duomenų šifravimui. Atkūrimo raktas leidžia asmens duomenų atstatymą, kai asmuo pamiršta slaptažodį.",
+ "Recovery key password" : "Slaptažodis atkūrimo raktui",
+ "Repeat recovery key password" : "Pakartokite slaptažodį atkūrimo raktui ",
+ "Change recovery key password:" : "Pakeisti slaptažodį atkūrimo raktui:",
"Old recovery key password" : "Senas atstatymo rakto slaptažodis",
- "New recovery key password" : "Naujas atstatymo rakto slaptažodis",
- "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį",
+ "New recovery key password" : "Naujas slaptažodis atkūrimo raktui",
+ "Repeat new recovery key password" : "Pakartokite naują slaptažodį atkūrimo raktui",
"Change Password" : "Pakeisti slaptažodį",
"Basic encryption module" : "Pagrindinis šifravimo modulis",
- "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.",
- "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.",
- " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
+ "Your private key password no longer matches your log-in password." : "Jūsų privataus rakto slaptažodis nesutampa su jūsų prisijungimo slaptažodžiu.",
+ "Set your old private key password to your current log-in password:" : "Naudoti privataus rakto slaptažodį kaip prisijungimo slaptažodį:",
+ " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti sistemos administratoriaus atkurti jūsų duomenis.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
- "Update Private Key Password" : "Atnaujinti privačiojo rakto slaptažodį",
+ "Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų duomenų tuo atveju, jei prarasite slaptažodį",
"Enabled" : "Įjungta",
"Disabled" : "Išjungta",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programėlė yra įjungta, tačiau jūsų raktai nėra inicijuoti. Prašome atsijungti ir vėl prisijungti"
diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js
index df44d8b4154..923708c2964 100644
--- a/apps/encryption/l10n/sq.js
+++ b/apps/encryption/l10n/sq.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"encryption",
{
- "Missing recovery key password" : "Mungon fjalëkalim kyçi rimarrjesh",
+ "Missing recovery key password" : "Mungon fjalëkalimi kyç i rigjenerimit ",
"Please repeat the recovery key password" : "Ju lutemi, rijepni fjalëkalimin për kyç rimarrjesh",
"Repeated recovery key password does not match the provided recovery key password" : "Fjalëkalimi i ridhënë për kyç rimarrjesh s’përputhet me fjalëkalimin e dhënë për kyç rimarrjesh",
"Recovery key successfully enabled" : "Kyçi i rimarrjeve u aktivizua me sukses",
@@ -23,6 +23,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Aplikacioni i Enkriptimit është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe rihyni përsëri",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Ju lutem aktivizoni ekriptimin në anën e serverit në konfigurimet e administratorit në mënyrë që të përdorni modulin e enkriptimit.",
"Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati",
"Bad Signature" : "Nënshkrim i Keq",
"Missing Signature" : "Mungon Nënshkrimi",
diff --git a/apps/encryption/l10n/sq.json b/apps/encryption/l10n/sq.json
index 9805faaf3dd..ed251fd57a7 100644
--- a/apps/encryption/l10n/sq.json
+++ b/apps/encryption/l10n/sq.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Missing recovery key password" : "Mungon fjalëkalim kyçi rimarrjesh",
+ "Missing recovery key password" : "Mungon fjalëkalimi kyç i rigjenerimit ",
"Please repeat the recovery key password" : "Ju lutemi, rijepni fjalëkalimin për kyç rimarrjesh",
"Repeated recovery key password does not match the provided recovery key password" : "Fjalëkalimi i ridhënë për kyç rimarrjesh s’përputhet me fjalëkalimin e dhënë për kyç rimarrjesh",
"Recovery key successfully enabled" : "Kyçi i rimarrjeve u aktivizua me sukses",
@@ -21,6 +21,8 @@
"Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Aplikacioni i Enkriptimit është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe rihyni përsëri",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Ju lutem aktivizoni ekriptimin në anën e serverit në konfigurimet e administratorit në mënyrë që të përdorni modulin e enkriptimit.",
"Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati",
"Bad Signature" : "Nënshkrim i Keq",
"Missing Signature" : "Mungon Nënshkrimi",
diff --git a/apps/encryption/lib/Crypto/Crypt.php b/apps/encryption/lib/Crypto/Crypt.php
index 9a9ac27b96f..6e1b7387c88 100644
--- a/apps/encryption/lib/Crypto/Crypt.php
+++ b/apps/encryption/lib/Crypto/Crypt.php
@@ -605,7 +605,7 @@ class Crypt {
$element = array_shift($exploded);
- while ($element != self::HEADER_END) {
+ while ($element !== self::HEADER_END) {
$result[$element] = array_shift($exploded);
$element = array_shift($exploded);
}
diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php
index 6869177ac31..4d20c103a5d 100644
--- a/apps/encryption/lib/Crypto/Encryption.php
+++ b/apps/encryption/lib/Crypto/Encryption.php
@@ -60,6 +60,9 @@ class Encryption implements IEncryptionModule {
/** @var string */
private $user;
+ /** @var array */
+ private $owner;
+
/** @var string */
private $fileKey;
@@ -136,6 +139,7 @@ class Encryption implements IEncryptionModule {
$this->decryptAll = $decryptAll;
$this->logger = $logger;
$this->l = $il10n;
+ $this->owner = [];
$this->useMasterPassword = $util->isMasterKeyEnabled();
}
@@ -280,13 +284,15 @@ class Encryption implements IEncryptionModule {
}
}
- $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->user);
+ $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->getOwner($path));
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
}
return $result;
}
+
+
/**
* encrypt data
*
@@ -407,7 +413,7 @@ class Encryption implements IEncryptionModule {
}
}
- $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid);
+ $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->getOwner($path));
$encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
@@ -443,13 +449,13 @@ class Encryption implements IEncryptionModule {
return false;
}
- if ($parts[2] == 'files') {
+ if ($parts[2] === 'files') {
return true;
}
- if ($parts[2] == 'files_versions') {
+ if ($parts[2] === 'files_versions') {
return true;
}
- if ($parts[2] == 'files_trashbin') {
+ if ($parts[2] === 'files_trashbin') {
return true;
}
@@ -557,6 +563,19 @@ class Encryption implements IEncryptionModule {
}
/**
+ * get owner of a file
+ *
+ * @param string $path
+ * @return string
+ */
+ protected function getOwner($path) {
+ if (!isset($this->owner[$path])) {
+ $this->owner[$path] = $this->util->getOwner($path);
+ }
+ return $this->owner[$path];
+ }
+
+ /**
* Check if the module is ready to be used by that specific user.
* In case a module is not ready - because e.g. key pairs have not been generated
* upon login this method can return false before any operation starts and might
diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js
index ed397f95ca6..32bb77a4157 100644
--- a/apps/federatedfilesharing/l10n/cs.js
+++ b/apps/federatedfilesharing/l10n/cs.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno",
"Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
"The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.",
"Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.",
"Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát",
"Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné",
"Storage not valid" : "Úložiště není platné",
- "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno",
+ "Federated share added" : "Propojené sdílení bylo přidáno",
"Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení",
"Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json
index 60c4f138bc6..09a6185531e 100644
--- a/apps/federatedfilesharing/l10n/cs.json
+++ b/apps/federatedfilesharing/l10n/cs.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno",
"Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
"The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.",
"Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.",
"Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát",
"Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné",
"Storage not valid" : "Úložiště není platné",
- "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno",
+ "Federated share added" : "Propojené sdílení bylo přidáno",
"Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení",
"Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js
index 7e21e3b8258..8ab6f370924 100644
--- a/apps/federatedfilesharing/l10n/de.js
+++ b/apps/federatedfilesharing/l10n/de.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden",
"Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
"Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt",
+ "Federated share added" : "Federated-Share hinzugefügt ",
"Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden",
"Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json
index 2062d97d4c5..5f322b07fc9 100644
--- a/apps/federatedfilesharing/l10n/de.json
+++ b/apps/federatedfilesharing/l10n/de.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden",
"Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
"Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt",
+ "Federated share added" : "Federated-Share hinzugefügt ",
"Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden",
"Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js
index 1a2fad5b1fc..c183d3ee23a 100644
--- a/apps/federatedfilesharing/l10n/de_DE.js
+++ b/apps/federatedfilesharing/l10n/de_DE.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden",
"Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
"Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt",
+ "Federated share added" : "Federated-Share hinzugefügt ",
"Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden",
"Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json
index 1ea3da04ff4..8ecc17d39e4 100644
--- a/apps/federatedfilesharing/l10n/de_DE.json
+++ b/apps/federatedfilesharing/l10n/de_DE.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden",
"Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
"Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt",
+ "Federated share added" : "Federated-Share hinzugefügt ",
"Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden",
"Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
diff --git a/apps/federatedfilesharing/l10n/el.js b/apps/federatedfilesharing/l10n/el.js
index f59ca88ed69..6928eb29cbc 100644
--- a/apps/federatedfilesharing/l10n/el.js
+++ b/apps/federatedfilesharing/l10n/el.js
@@ -1,22 +1,55 @@
OC.L10N.register(
"federatedfilesharing",
{
+ "Federated sharing" : "Ομόσποσνδος διαμοιρασμός",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Θέλετε να προσθέσουμε τον απομακρυσμένο κοινόχρηστο φάκελο {name} από {owner}@{remote}?",
+ "Remote share" : "Απομακρυσμένος κοινόχρηστος φάκελος",
+ "Remote share password" : "Συνθηματικό απομακρυσμένου κοινόχρηστου φακέλου",
+ "Cancel" : "Άκυρο",
+ "Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου",
+ "Copy" : "Αντιγραφή",
+ "Copied!" : "Αντιγράφτηκε!",
+ "Not supported!" : "Δεν υποστηρίζεται!",
+ "Press ⌘-C to copy." : "Για αντιγραφή πατήστε ⌘-C.",
+ "Press Ctrl-C to copy." : "Για αντιγραφή πατήστε Ctrl-C.",
"Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID",
+ "Server to server sharing is not enabled on this server" : "Ο διαμοιρασμός μεταξύ διακομιστών δεν έχει ενεργοποιηθεί σε αυτόν το διακομιστή",
+ "Couldn't establish a federated share." : "Αδυναμία επίτευξης ομόσπονδου κοινόχρηστου φακέλου",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Δεν μπόρεσε να γίνει ένας federated διαμοιρασμός, μπορεί να ήταν λάθος το συνθηματικό",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Το αίτημα για Federate διαμοιρασμό εστάλη, θα λάβεις μια πρόσκληση. Έλεγξε τις ειδοποιήσεις.",
+ "The mountpoint name contains invalid characters." : "Το σημείο προσάρτησης περιέχει μη έγκυρους χαρακτήρες.",
+ "Not allowed to create a federated share with the owner." : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ιδιοκτήτη",
+ "Invalid or untrusted SSL certificate" : "Μη έγκυρο ή μη έμπιστο πιστοποιητικό SSL",
+ "Could not authenticate to remote share, password might be wrong" : "Αδυναμία πιστοποίησης απομακρυσμένου κοινόχρηστου, το συνθηματικό μπορεί να είναι εσφαλμένο",
+ "Storage not valid" : "Μη έγκυρος αποθηκευτικός χώρος",
+ "Federated share added" : "O Federated διαμοιρασμός προστέθηκε",
+ "Couldn't add remote share" : "Αδυναμία προσθήκης απομακρυσμένου κοινόχρηστου φακέλου",
"Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
+ "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
+ "File is already shared with %s" : "Το αρχείο είναι ήδη κοινόχρηστο με %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Η κοινή χρήση του %s απέτυχε, δεν ήταν δυνατή η εύρεση του %s, ίσως ο διακομιστής δεν είναι προσβάσιμος αυτήν τη στιγμή ή χρησιμοποιεί πιστοποιητικό που έχει υπογράψει αυτόματα.",
+ "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου",
"Accept" : "Αποδοχή",
"Decline" : "Απόρριψη",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου, δείτε %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου",
- "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ",
- "Open documentation" : "Ανοιχτή τεκμηρίωση.",
+ "Sharing" : "Διαμοιρασμός",
+ "Federated file sharing" : "Federated διαμοιρασμός αρχείου",
+ "Federated Cloud Sharing" : "Διαμοιρασμός Federated Cloud",
+ "Open documentation" : "Άνοιγμα τεκμηρίωσης",
+ "Adjust how people can share between servers." : "Προσαρμόστε το πως τα άτομα θα διαμοιράζονται μεταξύ των διακομιστών",
"Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές",
"Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές",
- "Federated Cloud" : "Federated σύννεφο",
+ "Search global and public address book for users" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες",
+ "Allow users to publish their data to a global and public address book" : "Επιτρέψτε στους χρήστες να δημοσιεύουν τα δεδομένα τους σε ένα γενικό και δημόσιο βιβλίο διευθύνσεων",
+ "Federated Cloud" : "Federated Cloud",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Μπορείτε να διαμοιράζεστε με οποιονδήποτε χρησιμοποιεί Nextcloud, ownCloud η Pydio! Απλά προσθέστε το Federated Cloud ID στο πλαίσιο διαλόγου διαμοιρασμού. Θα μοιάζει με person@cloud.example.com",
"Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
- "Share it:" : "Μοιραστείτε το:",
+ "Share it so your friends can share files with you:" : "Διαμοιραστείτε το ώστε οι φίλοι σας να μπορούν να διαμοιράζονται αρχεία με εσάς:",
"Add to your website" : "Προσθήκη στην ιστοσελίδα σας",
- "Share with me via Nextcloud" : "Διαμοιρασμός με εμένα μέσω του ",
- "HTML Code:" : "Κώδικας HTML:"
+ "Share with me via Nextcloud" : "Διαμοιραστείτε με εμένα μέσω του Nextcloud",
+ "HTML Code:" : "Κώδικας HTML:",
+ "Search global and public address book for users and let local users publish their data" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες και επιτρέψτε τους τοπικούς χρήστες να δημοσιεύουν τα δεδομένα τους",
+ "Share it:" : "Μοιραστείτε το:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/el.json b/apps/federatedfilesharing/l10n/el.json
index d5d2e3c3fc6..b49122ddd51 100644
--- a/apps/federatedfilesharing/l10n/el.json
+++ b/apps/federatedfilesharing/l10n/el.json
@@ -1,20 +1,53 @@
{ "translations": {
+ "Federated sharing" : "Ομόσποσνδος διαμοιρασμός",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Θέλετε να προσθέσουμε τον απομακρυσμένο κοινόχρηστο φάκελο {name} από {owner}@{remote}?",
+ "Remote share" : "Απομακρυσμένος κοινόχρηστος φάκελος",
+ "Remote share password" : "Συνθηματικό απομακρυσμένου κοινόχρηστου φακέλου",
+ "Cancel" : "Άκυρο",
+ "Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου",
+ "Copy" : "Αντιγραφή",
+ "Copied!" : "Αντιγράφτηκε!",
+ "Not supported!" : "Δεν υποστηρίζεται!",
+ "Press ⌘-C to copy." : "Για αντιγραφή πατήστε ⌘-C.",
+ "Press Ctrl-C to copy." : "Για αντιγραφή πατήστε Ctrl-C.",
"Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID",
+ "Server to server sharing is not enabled on this server" : "Ο διαμοιρασμός μεταξύ διακομιστών δεν έχει ενεργοποιηθεί σε αυτόν το διακομιστή",
+ "Couldn't establish a federated share." : "Αδυναμία επίτευξης ομόσπονδου κοινόχρηστου φακέλου",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Δεν μπόρεσε να γίνει ένας federated διαμοιρασμός, μπορεί να ήταν λάθος το συνθηματικό",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Το αίτημα για Federate διαμοιρασμό εστάλη, θα λάβεις μια πρόσκληση. Έλεγξε τις ειδοποιήσεις.",
+ "The mountpoint name contains invalid characters." : "Το σημείο προσάρτησης περιέχει μη έγκυρους χαρακτήρες.",
+ "Not allowed to create a federated share with the owner." : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ιδιοκτήτη",
+ "Invalid or untrusted SSL certificate" : "Μη έγκυρο ή μη έμπιστο πιστοποιητικό SSL",
+ "Could not authenticate to remote share, password might be wrong" : "Αδυναμία πιστοποίησης απομακρυσμένου κοινόχρηστου, το συνθηματικό μπορεί να είναι εσφαλμένο",
+ "Storage not valid" : "Μη έγκυρος αποθηκευτικός χώρος",
+ "Federated share added" : "O Federated διαμοιρασμός προστέθηκε",
+ "Couldn't add remote share" : "Αδυναμία προσθήκης απομακρυσμένου κοινόχρηστου φακέλου",
"Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
+ "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
+ "File is already shared with %s" : "Το αρχείο είναι ήδη κοινόχρηστο με %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Η κοινή χρήση του %s απέτυχε, δεν ήταν δυνατή η εύρεση του %s, ίσως ο διακομιστής δεν είναι προσβάσιμος αυτήν τη στιγμή ή χρησιμοποιεί πιστοποιητικό που έχει υπογράψει αυτόματα.",
+ "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου",
"Accept" : "Αποδοχή",
"Decline" : "Απόρριψη",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου, δείτε %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου",
- "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ",
- "Open documentation" : "Ανοιχτή τεκμηρίωση.",
+ "Sharing" : "Διαμοιρασμός",
+ "Federated file sharing" : "Federated διαμοιρασμός αρχείου",
+ "Federated Cloud Sharing" : "Διαμοιρασμός Federated Cloud",
+ "Open documentation" : "Άνοιγμα τεκμηρίωσης",
+ "Adjust how people can share between servers." : "Προσαρμόστε το πως τα άτομα θα διαμοιράζονται μεταξύ των διακομιστών",
"Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές",
"Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές",
- "Federated Cloud" : "Federated σύννεφο",
+ "Search global and public address book for users" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες",
+ "Allow users to publish their data to a global and public address book" : "Επιτρέψτε στους χρήστες να δημοσιεύουν τα δεδομένα τους σε ένα γενικό και δημόσιο βιβλίο διευθύνσεων",
+ "Federated Cloud" : "Federated Cloud",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Μπορείτε να διαμοιράζεστε με οποιονδήποτε χρησιμοποιεί Nextcloud, ownCloud η Pydio! Απλά προσθέστε το Federated Cloud ID στο πλαίσιο διαλόγου διαμοιρασμού. Θα μοιάζει με person@cloud.example.com",
"Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
- "Share it:" : "Μοιραστείτε το:",
+ "Share it so your friends can share files with you:" : "Διαμοιραστείτε το ώστε οι φίλοι σας να μπορούν να διαμοιράζονται αρχεία με εσάς:",
"Add to your website" : "Προσθήκη στην ιστοσελίδα σας",
- "Share with me via Nextcloud" : "Διαμοιρασμός με εμένα μέσω του ",
- "HTML Code:" : "Κώδικας HTML:"
+ "Share with me via Nextcloud" : "Διαμοιραστείτε με εμένα μέσω του Nextcloud",
+ "HTML Code:" : "Κώδικας HTML:",
+ "Search global and public address book for users and let local users publish their data" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες και επιτρέψτε τους τοπικούς χρήστες να δημοσιεύουν τα δεδομένα τους",
+ "Share it:" : "Μοιραστείτε το:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/en_GB.js b/apps/federatedfilesharing/l10n/en_GB.js
index ca72c282713..a20a0400df7 100644
--- a/apps/federatedfilesharing/l10n/en_GB.js
+++ b/apps/federatedfilesharing/l10n/en_GB.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Server to server sharing is not enabled on this server",
"Couldn't establish a federated share." : "Couldn't establish a federated share.",
"Couldn't establish a federated share, maybe the password was wrong." : "Couldn't establish a federated share, maybe the password was wrong.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federated Share request was successful, you will receive a invitation. Check your notifications.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federated Share request sent, you will receive an invitation. Check your notifications.",
"The mountpoint name contains invalid characters." : "The mountpoint name contains invalid characters.",
"Not allowed to create a federated share with the owner." : "Not allowed to create a federated share with the owner.",
"Invalid or untrusted SSL certificate" : "Invalid or untrusted SSL certificate",
"Could not authenticate to remote share, password might be wrong" : "Could not authenticate to remote share, password might be wrong",
"Storage not valid" : "Storage not valid",
- "Federated Share successfully added" : "Federated Share successfully added",
+ "Federated share added" : "Federated share added",
"Couldn't add remote share" : "Couldn't add remote share",
"Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s",
"Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
diff --git a/apps/federatedfilesharing/l10n/en_GB.json b/apps/federatedfilesharing/l10n/en_GB.json
index cf80ce4ae41..63f36180af8 100644
--- a/apps/federatedfilesharing/l10n/en_GB.json
+++ b/apps/federatedfilesharing/l10n/en_GB.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Server to server sharing is not enabled on this server",
"Couldn't establish a federated share." : "Couldn't establish a federated share.",
"Couldn't establish a federated share, maybe the password was wrong." : "Couldn't establish a federated share, maybe the password was wrong.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federated Share request was successful, you will receive a invitation. Check your notifications.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federated Share request sent, you will receive an invitation. Check your notifications.",
"The mountpoint name contains invalid characters." : "The mountpoint name contains invalid characters.",
"Not allowed to create a federated share with the owner." : "Not allowed to create a federated share with the owner.",
"Invalid or untrusted SSL certificate" : "Invalid or untrusted SSL certificate",
"Could not authenticate to remote share, password might be wrong" : "Could not authenticate to remote share, password might be wrong",
"Storage not valid" : "Storage not valid",
- "Federated Share successfully added" : "Federated Share successfully added",
+ "Federated share added" : "Federated share added",
"Couldn't add remote share" : "Couldn't add remote share",
"Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s",
"Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
diff --git a/apps/federatedfilesharing/l10n/es.js b/apps/federatedfilesharing/l10n/es.js
index 6cfe4cf8e08..61a0298145f 100644
--- a/apps/federatedfilesharing/l10n/es.js
+++ b/apps/federatedfilesharing/l10n/es.js
@@ -12,17 +12,17 @@ OC.L10N.register(
"Not supported!" : "¡No se puede!",
"Press ⌘-C to copy." : "Presiona ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.",
- "Invalid Federated Cloud ID" : "ID Nube federada inválida",
+ "Invalid Federated Cloud ID" : "ID de Nube Federada inválida",
"Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor",
"Couldn't establish a federated share." : "No se puede añadir un compartido remoto",
"Couldn't establish a federated share, maybe the password was wrong." : "No se pudo establecer un compartido remoto, puede que la contraseña fuera incorrecta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La petición de crear un compartido remoto fue aceptada, usted recibirá una notificación. Comprueba sus notificaciones.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.",
"The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No se permite crear un recurso compartido federado con el propietario",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "Compartido remoto federado añadido con éxito",
+ "Federated share added" : "Recurso compartido federado añadido",
"Couldn't add remote share" : "No se puede añadir un compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
@@ -35,8 +35,8 @@ OC.L10N.register(
"You received {share} as a remote share from {user}" : "Ha recibido {share} como un compartido remoto de {user}",
"Accept" : "Aceptar",
"Decline" : "Denegar",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud, ver %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud",
"Sharing" : "Compartiendo",
"Federated file sharing" : "Compartición de archivos federada",
"Federated Cloud Sharing" : "Compartido en Cloud Federado",
@@ -47,8 +47,8 @@ OC.L10N.register(
"Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios",
"Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública",
"Federated Cloud" : "Nube Federada",
- "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com",
- "Your Federated Cloud ID:" : "Su ID Nube Federada:",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de Nube Federada en el diálogo de compartir. Algo como person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Tu ID de Nube Federada:",
"Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:",
"Add to your website" : "Añadir a su sitio web",
"Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud",
diff --git a/apps/federatedfilesharing/l10n/es.json b/apps/federatedfilesharing/l10n/es.json
index bf9f2632592..6ebfc2c95c4 100644
--- a/apps/federatedfilesharing/l10n/es.json
+++ b/apps/federatedfilesharing/l10n/es.json
@@ -10,17 +10,17 @@
"Not supported!" : "¡No se puede!",
"Press ⌘-C to copy." : "Presiona ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.",
- "Invalid Federated Cloud ID" : "ID Nube federada inválida",
+ "Invalid Federated Cloud ID" : "ID de Nube Federada inválida",
"Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor",
"Couldn't establish a federated share." : "No se puede añadir un compartido remoto",
"Couldn't establish a federated share, maybe the password was wrong." : "No se pudo establecer un compartido remoto, puede que la contraseña fuera incorrecta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La petición de crear un compartido remoto fue aceptada, usted recibirá una notificación. Comprueba sus notificaciones.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.",
"The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No se permite crear un recurso compartido federado con el propietario",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "Compartido remoto federado añadido con éxito",
+ "Federated share added" : "Recurso compartido federado añadido",
"Couldn't add remote share" : "No se puede añadir un compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
@@ -33,8 +33,8 @@
"You received {share} as a remote share from {user}" : "Ha recibido {share} como un compartido remoto de {user}",
"Accept" : "Aceptar",
"Decline" : "Denegar",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud, ver %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud",
"Sharing" : "Compartiendo",
"Federated file sharing" : "Compartición de archivos federada",
"Federated Cloud Sharing" : "Compartido en Cloud Federado",
@@ -45,8 +45,8 @@
"Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios",
"Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública",
"Federated Cloud" : "Nube Federada",
- "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com",
- "Your Federated Cloud ID:" : "Su ID Nube Federada:",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de Nube Federada en el diálogo de compartir. Algo como person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Tu ID de Nube Federada:",
"Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:",
"Add to your website" : "Añadir a su sitio web",
"Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud",
diff --git a/apps/federatedfilesharing/l10n/es_AR.js b/apps/federatedfilesharing/l10n/es_AR.js
index 4cad923bef3..9bbca245690 100644
--- a/apps/federatedfilesharing/l10n/es_AR.js
+++ b/apps/federatedfilesharing/l10n/es_AR.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor",
"Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ",
"Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ",
"The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente",
"Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario",
diff --git a/apps/federatedfilesharing/l10n/es_AR.json b/apps/federatedfilesharing/l10n/es_AR.json
index 784ebe98211..7b1f71198b0 100644
--- a/apps/federatedfilesharing/l10n/es_AR.json
+++ b/apps/federatedfilesharing/l10n/es_AR.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor",
"Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ",
"Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ",
"The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente",
"Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario",
diff --git a/apps/federatedfilesharing/l10n/es_MX.js b/apps/federatedfilesharing/l10n/es_MX.js
index bc3aef608c0..d8a0eecd203 100644
--- a/apps/federatedfilesharing/l10n/es_MX.js
+++ b/apps/federatedfilesharing/l10n/es_MX.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor",
"Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ",
"Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirás una invitación. Verifica tus notificaciones. ",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitud de elemento compartido Federado enviada, recibiras una invitación. Verifica tus notificaciones.",
"The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar incorrecta",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente",
+ "Federated share added" : "Elemento compartido Federado agregado",
"Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario",
diff --git a/apps/federatedfilesharing/l10n/es_MX.json b/apps/federatedfilesharing/l10n/es_MX.json
index a88cfb6229d..d880af84ea7 100644
--- a/apps/federatedfilesharing/l10n/es_MX.json
+++ b/apps/federatedfilesharing/l10n/es_MX.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor",
"Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ",
"Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirás una invitación. Verifica tus notificaciones. ",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitud de elemento compartido Federado enviada, recibiras una invitación. Verifica tus notificaciones.",
"The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable",
"Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar incorrecta",
"Storage not valid" : "Almacenamiento inválido",
- "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente",
+ "Federated share added" : "Elemento compartido Federado agregado",
"Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto",
"Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario",
diff --git a/apps/federatedfilesharing/l10n/fi.js b/apps/federatedfilesharing/l10n/fi.js
index 2de7e30ed4c..bd6e93a9684 100644
--- a/apps/federatedfilesharing/l10n/fi.js
+++ b/apps/federatedfilesharing/l10n/fi.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Palvelimien kesken jakaminen ei ole käytössä tällä palvelimella",
"Couldn't establish a federated share." : "Ei voinut muodostaa federoitua jakoa.",
"Couldn't establish a federated share, maybe the password was wrong." : "Ei voinut muodostaa federoitua jakoa. Ehkä salasana oli väärin.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federoidun jaon pyyntö onnistui. Tulet saamaan kutsun. Tarkista ilmoituksesi.",
"The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.",
"Not allowed to create a federated share with the owner." : "Omistajan kanssa ei ole sallittua luoda federoitua jakoa.",
"Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne",
"Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä",
"Storage not valid" : "Tallennustila ei ole kelvollinen",
- "Federated Share successfully added" : "Federoitu jako lisätty onnistuneesti",
"Couldn't add remote share" : "Etäjaon liittäminen epäonnistui",
"Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjälle %s",
"Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
diff --git a/apps/federatedfilesharing/l10n/fi.json b/apps/federatedfilesharing/l10n/fi.json
index 47f6300ce80..41586d0b578 100644
--- a/apps/federatedfilesharing/l10n/fi.json
+++ b/apps/federatedfilesharing/l10n/fi.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Palvelimien kesken jakaminen ei ole käytössä tällä palvelimella",
"Couldn't establish a federated share." : "Ei voinut muodostaa federoitua jakoa.",
"Couldn't establish a federated share, maybe the password was wrong." : "Ei voinut muodostaa federoitua jakoa. Ehkä salasana oli väärin.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federoidun jaon pyyntö onnistui. Tulet saamaan kutsun. Tarkista ilmoituksesi.",
"The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.",
"Not allowed to create a federated share with the owner." : "Omistajan kanssa ei ole sallittua luoda federoitua jakoa.",
"Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne",
"Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä",
"Storage not valid" : "Tallennustila ei ole kelvollinen",
- "Federated Share successfully added" : "Federoitu jako lisätty onnistuneesti",
"Couldn't add remote share" : "Etäjaon liittäminen epäonnistui",
"Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjälle %s",
"Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js
index 6c85f654172..937992c61b4 100644
--- a/apps/federatedfilesharing/l10n/fr.js
+++ b/apps/federatedfilesharing/l10n/fr.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
"Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.",
"The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
"Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.",
"Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé",
"Could not authenticate to remote share, password might be wrong" : "Impossible de se connecter au partage distant, le mot de passe peut-être incorrect",
"Storage not valid" : "Support de stockage non valide",
- "Federated Share successfully added" : "Partage fédéré ajouté avec succès",
+ "Federated share added" : "Partage fédéré ajouté",
"Couldn't add remote share" : "Impossible d'ajouter le partage distant",
"Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec %s",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json
index 4e657dd48ec..43edf9eb0c7 100644
--- a/apps/federatedfilesharing/l10n/fr.json
+++ b/apps/federatedfilesharing/l10n/fr.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
"Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.",
"The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
"Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.",
"Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé",
"Could not authenticate to remote share, password might be wrong" : "Impossible de se connecter au partage distant, le mot de passe peut-être incorrect",
"Storage not valid" : "Support de stockage non valide",
- "Federated Share successfully added" : "Partage fédéré ajouté avec succès",
+ "Federated share added" : "Partage fédéré ajouté",
"Couldn't add remote share" : "Impossible d'ajouter le partage distant",
"Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec %s",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
diff --git a/apps/federatedfilesharing/l10n/hu.js b/apps/federatedfilesharing/l10n/hu.js
index fbb225b63ad..f30ba37b29e 100644
--- a/apps/federatedfilesharing/l10n/hu.js
+++ b/apps/federatedfilesharing/l10n/hu.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón",
"Couldn't establish a federated share." : "Egy egyesített megosztás nem hozható létre.",
"Couldn't establish a federated share, maybe the password was wrong." : "Egy egyesített megosztás nem hozható létre, lehet hogy nem megfelelő a jelszó.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Az egyesített megosztási kérés sikeres volt, kapni fogsz egy értesítést. Ellenőrizd az értesítéseidet.",
"The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz ",
"Not allowed to create a federated share with the owner." : "A tulajdonossal nem lehet egyesített megosztást létrehozni.",
"Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány",
"Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.",
"Storage not valid" : "A tároló nem érvényes",
- "Federated Share successfully added" : "Egyesített megosztás sikeresen hozzáadva",
"Couldn't add remote share" : "Távoli megosztás nem adható hozzá",
"Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s",
"Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást",
diff --git a/apps/federatedfilesharing/l10n/hu.json b/apps/federatedfilesharing/l10n/hu.json
index dd92c7f9fcc..c8d717e11d7 100644
--- a/apps/federatedfilesharing/l10n/hu.json
+++ b/apps/federatedfilesharing/l10n/hu.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón",
"Couldn't establish a federated share." : "Egy egyesített megosztás nem hozható létre.",
"Couldn't establish a federated share, maybe the password was wrong." : "Egy egyesített megosztás nem hozható létre, lehet hogy nem megfelelő a jelszó.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Az egyesített megosztási kérés sikeres volt, kapni fogsz egy értesítést. Ellenőrizd az értesítéseidet.",
"The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz ",
"Not allowed to create a federated share with the owner." : "A tulajdonossal nem lehet egyesített megosztást létrehozni.",
"Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány",
"Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.",
"Storage not valid" : "A tároló nem érvényes",
- "Federated Share successfully added" : "Egyesített megosztás sikeresen hozzáadva",
"Couldn't add remote share" : "Távoli megosztás nem adható hozzá",
"Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s",
"Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást",
diff --git a/apps/federatedfilesharing/l10n/ia.js b/apps/federatedfilesharing/l10n/ia.js
index df6da6fde4f..78fdb02aab0 100644
--- a/apps/federatedfilesharing/l10n/ia.js
+++ b/apps/federatedfilesharing/l10n/ia.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Le Compartir de Servitor a Servitor non es activate in iste servitor",
"Couldn't establish a federated share." : "Impossibile establir le Compartir Federate.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossibile establir le Compartir Federate, possibilemente le contrasigno esseva incorrecte.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Le demanda pro un Compartir Federate ha successo, tu recipera un invitation. Verifica tu notificationes.",
"The mountpoint name contains invalid characters." : "Le nomine pro le puncto de montage contine characteres non valide.",
"Not allowed to create a federated share with the owner." : "Il non es permittite crear le Compartir Federate con le proprietario.",
"Invalid or untrusted SSL certificate" : "Certificato SSL non valide o non fiduciari",
"Could not authenticate to remote share, password might be wrong" : "Impossibile authenticar al Compartir Remote, le contrasigno debe esser incorrecte",
"Storage not valid" : "Immagazinage non valide",
- "Federated Share successfully added" : "Le Compartir Federate addite con successo",
"Couldn't add remote share" : "Impossibile adder le Compartir Remote",
"Sharing %s failed, because this item is already shared with %s" : "Compartir %s falleva, proque iste elemento ja es compartite con %s",
"Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator.",
diff --git a/apps/federatedfilesharing/l10n/ia.json b/apps/federatedfilesharing/l10n/ia.json
index 2476b0d8798..af9b3a6be49 100644
--- a/apps/federatedfilesharing/l10n/ia.json
+++ b/apps/federatedfilesharing/l10n/ia.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Le Compartir de Servitor a Servitor non es activate in iste servitor",
"Couldn't establish a federated share." : "Impossibile establir le Compartir Federate.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossibile establir le Compartir Federate, possibilemente le contrasigno esseva incorrecte.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Le demanda pro un Compartir Federate ha successo, tu recipera un invitation. Verifica tu notificationes.",
"The mountpoint name contains invalid characters." : "Le nomine pro le puncto de montage contine characteres non valide.",
"Not allowed to create a federated share with the owner." : "Il non es permittite crear le Compartir Federate con le proprietario.",
"Invalid or untrusted SSL certificate" : "Certificato SSL non valide o non fiduciari",
"Could not authenticate to remote share, password might be wrong" : "Impossibile authenticar al Compartir Remote, le contrasigno debe esser incorrecte",
"Storage not valid" : "Immagazinage non valide",
- "Federated Share successfully added" : "Le Compartir Federate addite con successo",
"Couldn't add remote share" : "Impossibile adder le Compartir Remote",
"Sharing %s failed, because this item is already shared with %s" : "Compartir %s falleva, proque iste elemento ja es compartite con %s",
"Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator.",
diff --git a/apps/federatedfilesharing/l10n/id.js b/apps/federatedfilesharing/l10n/id.js
index 1ac1b75b334..4760bb17b90 100644
--- a/apps/federatedfilesharing/l10n/id.js
+++ b/apps/federatedfilesharing/l10n/id.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini",
"Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi",
"Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.",
"The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.",
"Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.",
"Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya",
"Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah",
"Storage not valid" : "Penyimpanan tidak sah",
- "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan",
"Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote",
"Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
diff --git a/apps/federatedfilesharing/l10n/id.json b/apps/federatedfilesharing/l10n/id.json
index 806aca73b29..95da03dff5b 100644
--- a/apps/federatedfilesharing/l10n/id.json
+++ b/apps/federatedfilesharing/l10n/id.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini",
"Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi",
"Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.",
"The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.",
"Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.",
"Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya",
"Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah",
"Storage not valid" : "Penyimpanan tidak sah",
- "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan",
"Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote",
"Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
diff --git a/apps/federatedfilesharing/l10n/is.js b/apps/federatedfilesharing/l10n/is.js
index 1dde5154801..d384d56dba6 100644
--- a/apps/federatedfilesharing/l10n/is.js
+++ b/apps/federatedfilesharing/l10n/is.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni",
"Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.",
"Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Beiðni um skýjasambandssameign tókst, þú munt fá boðskort. Athugaður skilaboð til þín.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.",
"The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.",
"Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.",
"Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki",
"Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt",
"Storage not valid" : "Geymslan er ekki gild",
- "Federated Share successfully added" : "Tókst að bæta við skýjasambandssameign",
+ "Federated share added" : "Bætti við skýjasambandssameign",
"Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign",
"Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
"Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
diff --git a/apps/federatedfilesharing/l10n/is.json b/apps/federatedfilesharing/l10n/is.json
index c2ff7b6bd64..6d0a065c83d 100644
--- a/apps/federatedfilesharing/l10n/is.json
+++ b/apps/federatedfilesharing/l10n/is.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni",
"Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.",
"Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Beiðni um skýjasambandssameign tókst, þú munt fá boðskort. Athugaður skilaboð til þín.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.",
"The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.",
"Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.",
"Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki",
"Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt",
"Storage not valid" : "Geymslan er ekki gild",
- "Federated Share successfully added" : "Tókst að bæta við skýjasambandssameign",
+ "Federated share added" : "Bætti við skýjasambandssameign",
"Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign",
"Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
"Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js
index bba8d8dd0e6..0b75207b6bd 100644
--- a/apps/federatedfilesharing/l10n/it.js
+++ b/apps/federatedfilesharing/l10n/it.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server",
"Couldn't establish a federated share." : "Impossibile stabilire una condivisione federata.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La richiesta della condivisione federata è stata eseguita con successo, riceverai un invito. Controlla le tue notifiche.",
"The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.",
"Not allowed to create a federated share with the owner." : "Non è consentito creare una condivisione federata con il proprietario.",
"Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile",
"Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata",
"Storage not valid" : "Archiviazione non valida",
- "Federated Share successfully added" : "Condivisione federata aggiunta con successo",
"Couldn't add remote share" : "Impossibile aggiungere la condivisione remota",
"Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
@@ -37,6 +35,7 @@ OC.L10N.register(
"Decline" : "Rifiuta",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud, vedi %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud",
+ "Sharing" : "Condivisione",
"Federated file sharing" : "Condivisione file federata",
"Federated Cloud Sharing" : "Condivisione cloud federata",
"Open documentation" : "Apri la documentazione",
diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json
index e2fffd3fded..5dd8a78d60a 100644
--- a/apps/federatedfilesharing/l10n/it.json
+++ b/apps/federatedfilesharing/l10n/it.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server",
"Couldn't establish a federated share." : "Impossibile stabilire una condivisione federata.",
"Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La richiesta della condivisione federata è stata eseguita con successo, riceverai un invito. Controlla le tue notifiche.",
"The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.",
"Not allowed to create a federated share with the owner." : "Non è consentito creare una condivisione federata con il proprietario.",
"Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile",
"Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata",
"Storage not valid" : "Archiviazione non valida",
- "Federated Share successfully added" : "Condivisione federata aggiunta con successo",
"Couldn't add remote share" : "Impossibile aggiungere la condivisione remota",
"Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
@@ -35,6 +33,7 @@
"Decline" : "Rifiuta",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud, vedi %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud",
+ "Sharing" : "Condivisione",
"Federated file sharing" : "Condivisione file federata",
"Federated Cloud Sharing" : "Condivisione cloud federata",
"Open documentation" : "Apri la documentazione",
diff --git a/apps/federatedfilesharing/l10n/ko.js b/apps/federatedfilesharing/l10n/ko.js
index c82cb1c1846..0670bef5db7 100644
--- a/apps/federatedfilesharing/l10n/ko.js
+++ b/apps/federatedfilesharing/l10n/ko.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음",
"Couldn't establish a federated share." : "연합 공유를 설정할 수 없습니다.",
"Couldn't establish a federated share, maybe the password was wrong." : "연합 공유를 설정할 수 없습니다. 암호가 잘못되었을 수도 있습니다.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "연합 공유 요청이 성공했으며 초대장을 받을 것입니다. 알림을 확인하십시오.",
"The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.",
"Not allowed to create a federated share with the owner." : "소유자와 연합 공유를 만들 수 없음",
"Invalid or untrusted SSL certificate" : "유효하지 않거나 신뢰할 수없는 SSL 인증서",
"Could not authenticate to remote share, password might be wrong" : "원격 공유에 인증할 수 없습니다. 암호가 잘못되었을 수도 있습니다",
"Storage not valid" : "유효하지 않은 저장소",
- "Federated Share successfully added" : "연합 공유를 성공적으로 추가함",
"Couldn't add remote share" : "원격 공유를 추가할 수 없음",
"Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다",
"Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음",
diff --git a/apps/federatedfilesharing/l10n/ko.json b/apps/federatedfilesharing/l10n/ko.json
index fc7492876e3..67081c1410b 100644
--- a/apps/federatedfilesharing/l10n/ko.json
+++ b/apps/federatedfilesharing/l10n/ko.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음",
"Couldn't establish a federated share." : "연합 공유를 설정할 수 없습니다.",
"Couldn't establish a federated share, maybe the password was wrong." : "연합 공유를 설정할 수 없습니다. 암호가 잘못되었을 수도 있습니다.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "연합 공유 요청이 성공했으며 초대장을 받을 것입니다. 알림을 확인하십시오.",
"The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.",
"Not allowed to create a federated share with the owner." : "소유자와 연합 공유를 만들 수 없음",
"Invalid or untrusted SSL certificate" : "유효하지 않거나 신뢰할 수없는 SSL 인증서",
"Could not authenticate to remote share, password might be wrong" : "원격 공유에 인증할 수 없습니다. 암호가 잘못되었을 수도 있습니다",
"Storage not valid" : "유효하지 않은 저장소",
- "Federated Share successfully added" : "연합 공유를 성공적으로 추가함",
"Couldn't add remote share" : "원격 공유를 추가할 수 없음",
"Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다",
"Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음",
diff --git a/apps/federatedfilesharing/l10n/lt_LT.js b/apps/federatedfilesharing/l10n/lt_LT.js
index 4f58f569fb9..5794f568ba4 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.js
+++ b/apps/federatedfilesharing/l10n/lt_LT.js
@@ -1,19 +1,59 @@
OC.L10N.register(
"federatedfilesharing",
{
+ "Federated sharing" : "Dalinimasis kitame serveryje",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite peržiūrėti {name} nuo {owner}@{remote}?",
+ "Remote share" : "Kitame serveryje pasidalinti duomenys",
+ "Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis",
+ "Cancel" : "Atsisakyti",
+ "Add remote share" : "Pasidalinti duomenimis kitame serveryje",
+ "Copy" : "Kopijuoti",
+ "Copied!" : "Nukopijuota!",
+ "Not supported!" : "Nepalaikoma!",
+ "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.",
+ "Press Ctrl-C to copy." : "Paspauskite Ctrl-C, kad nukopijuotumėte.",
+ "Invalid Federated Cloud ID" : "Neteisingas Centralizuoto Serverio ID",
+ "Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje",
+ "Couldn't establish a federated share." : "Neįmanoma pradėti dalintis kitame serveryje.",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Dalinimosi kitame serveryje užklausa išsiųsta. Jūs būsite informuoti, jei pasidalinimas bus sėkmingas. ",
+ "The mountpoint name contains invalid characters." : "Prijungimo taškas turi netinkamų naudoti simbolių.",
+ "Not allowed to create a federated share with the owner." : "Savininkas neleidžia dalintis duomenimis su kitu serveriu.",
+ "Invalid or untrusted SSL certificate" : "Neteisingas arba nepatikimas SSL liudijimas",
+ "Could not authenticate to remote share, password might be wrong" : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?",
+ "Storage not valid" : "Saugykla netinkama naudotis",
+ "Federated share added" : "Pasidalinta per kitą serverį",
+ "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų",
+ "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s",
+ "Not allowed to create a federated share with the same user" : "Negalima dalintis su identišku naudotoju kitame serveryje",
+ "File is already shared with %s" : "Failas jau yra bendrinamas su %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "\"%s\" pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas arba naudoja nepatikimą sertifikatą.",
+ "Could not find share" : "Nepavyko rasti bendrinamų duomenų",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s (%2$s vardu) esantis kitame serveryje",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user} ({behalf} vardu) esantis kitame serveryje",
+ "You received \"%3$s\" as a remote share from %1$s" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s",
+ "You received {share} as a remote share from {user}" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user}",
"Accept" : "Priimti",
"Decline" : "Atmesti",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #Nextcloud padebesius, plačiau %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalink su manimi per #Nextcloud padebesius",
- "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu",
- "Open documentation" : "Atidaryti dokumentą",
- "Allow users on this server to send shares to other servers" : "Leisti vartotojams šiame serveryje dalintis su kitais serveriais",
- "Allow users on this server to receive shares from other servers" : "Leisti vartotojams šiame serveryje priimti dalijimusis iš kitų serverių",
- "Federated Cloud" : "Viešas debesis",
- "Your Federated Cloud ID:" : "Tavo debesies ID:",
- "Share it:" : "Pasidalink:",
- "Add to your website" : "Pridėti tavo puslapį",
- "Share with me via Nextcloud" : "Pasidalink su manimi per Nextcloud",
- "HTML Code:" : "HTML kodas:"
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID",
+ "Sharing" : "Dalinamasis",
+ "Federated file sharing" : "Dalinimasis centralizuotame serveryje",
+ "Federated Cloud Sharing" : "Centralizuotas Dalinimasis Serveriuose",
+ "Open documentation" : "Atverti dokumentaciją",
+ "Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali dalintis duomenimis tarp serverių.",
+ "Allow users on this server to send shares to other servers" : "Leisti šio serverio naudotojams dalintis duomenimis su kitais serveriais",
+ "Allow users on this server to receive shares from other servers" : "Leisti šio serverio naudotojams priimti kituose serveriuose dalinamus duomenis",
+ "Search global and public address book for users" : "Ieškoti vartotojų globaliose ir viešose adresų knygose",
+ "Allow users to publish their data to a global and public address book" : "Leisti naudotojams viešinti savo duomenis globaliose ar viešose adresų knygose",
+ "Federated Cloud" : "Centralizuotas Serveris",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Galite dalintis su visais, kas naudojasi NextCloud, ownCloud ar Pydio! Tiesiog dalinimosi dialoge įrašykite jų Centralizuoto Serverio ID. Pavyzdys: person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Jūsų Centralizuoto Serverio ID:",
+ "Share it so your friends can share files with you:" : "Pasidalinkite tam, kad jūsų draugai galėtų dalintis duomenimis su jumis:",
+ "Add to your website" : "Pridėti jūsų puslapį",
+ "Share with me via Nextcloud" : "Pasidalinti su manimi per NextCloud",
+ "HTML Code:" : "HTML kodas:",
+ "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis",
+ "Share it:" : "Pasidalinti:"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json
index be6ddf080a7..8b879b30343 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.json
+++ b/apps/federatedfilesharing/l10n/lt_LT.json
@@ -1,17 +1,57 @@
{ "translations": {
+ "Federated sharing" : "Dalinimasis kitame serveryje",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite peržiūrėti {name} nuo {owner}@{remote}?",
+ "Remote share" : "Kitame serveryje pasidalinti duomenys",
+ "Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis",
+ "Cancel" : "Atsisakyti",
+ "Add remote share" : "Pasidalinti duomenimis kitame serveryje",
+ "Copy" : "Kopijuoti",
+ "Copied!" : "Nukopijuota!",
+ "Not supported!" : "Nepalaikoma!",
+ "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.",
+ "Press Ctrl-C to copy." : "Paspauskite Ctrl-C, kad nukopijuotumėte.",
+ "Invalid Federated Cloud ID" : "Neteisingas Centralizuoto Serverio ID",
+ "Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje",
+ "Couldn't establish a federated share." : "Neįmanoma pradėti dalintis kitame serveryje.",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Dalinimosi kitame serveryje užklausa išsiųsta. Jūs būsite informuoti, jei pasidalinimas bus sėkmingas. ",
+ "The mountpoint name contains invalid characters." : "Prijungimo taškas turi netinkamų naudoti simbolių.",
+ "Not allowed to create a federated share with the owner." : "Savininkas neleidžia dalintis duomenimis su kitu serveriu.",
+ "Invalid or untrusted SSL certificate" : "Neteisingas arba nepatikimas SSL liudijimas",
+ "Could not authenticate to remote share, password might be wrong" : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?",
+ "Storage not valid" : "Saugykla netinkama naudotis",
+ "Federated share added" : "Pasidalinta per kitą serverį",
+ "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų",
+ "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s",
+ "Not allowed to create a federated share with the same user" : "Negalima dalintis su identišku naudotoju kitame serveryje",
+ "File is already shared with %s" : "Failas jau yra bendrinamas su %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "\"%s\" pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas arba naudoja nepatikimą sertifikatą.",
+ "Could not find share" : "Nepavyko rasti bendrinamų duomenų",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s (%2$s vardu) esantis kitame serveryje",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user} ({behalf} vardu) esantis kitame serveryje",
+ "You received \"%3$s\" as a remote share from %1$s" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s",
+ "You received {share} as a remote share from {user}" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user}",
"Accept" : "Priimti",
"Decline" : "Atmesti",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #Nextcloud padebesius, plačiau %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalink su manimi per #Nextcloud padebesius",
- "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu",
- "Open documentation" : "Atidaryti dokumentą",
- "Allow users on this server to send shares to other servers" : "Leisti vartotojams šiame serveryje dalintis su kitais serveriais",
- "Allow users on this server to receive shares from other servers" : "Leisti vartotojams šiame serveryje priimti dalijimusis iš kitų serverių",
- "Federated Cloud" : "Viešas debesis",
- "Your Federated Cloud ID:" : "Tavo debesies ID:",
- "Share it:" : "Pasidalink:",
- "Add to your website" : "Pridėti tavo puslapį",
- "Share with me via Nextcloud" : "Pasidalink su manimi per Nextcloud",
- "HTML Code:" : "HTML kodas:"
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID",
+ "Sharing" : "Dalinamasis",
+ "Federated file sharing" : "Dalinimasis centralizuotame serveryje",
+ "Federated Cloud Sharing" : "Centralizuotas Dalinimasis Serveriuose",
+ "Open documentation" : "Atverti dokumentaciją",
+ "Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali dalintis duomenimis tarp serverių.",
+ "Allow users on this server to send shares to other servers" : "Leisti šio serverio naudotojams dalintis duomenimis su kitais serveriais",
+ "Allow users on this server to receive shares from other servers" : "Leisti šio serverio naudotojams priimti kituose serveriuose dalinamus duomenis",
+ "Search global and public address book for users" : "Ieškoti vartotojų globaliose ir viešose adresų knygose",
+ "Allow users to publish their data to a global and public address book" : "Leisti naudotojams viešinti savo duomenis globaliose ar viešose adresų knygose",
+ "Federated Cloud" : "Centralizuotas Serveris",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Galite dalintis su visais, kas naudojasi NextCloud, ownCloud ar Pydio! Tiesiog dalinimosi dialoge įrašykite jų Centralizuoto Serverio ID. Pavyzdys: person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Jūsų Centralizuoto Serverio ID:",
+ "Share it so your friends can share files with you:" : "Pasidalinkite tam, kad jūsų draugai galėtų dalintis duomenimis su jumis:",
+ "Add to your website" : "Pridėti jūsų puslapį",
+ "Share with me via Nextcloud" : "Pasidalinti su manimi per NextCloud",
+ "HTML Code:" : "HTML kodas:",
+ "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis",
+ "Share it:" : "Pasidalinti:"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/nb.js b/apps/federatedfilesharing/l10n/nb.js
index 34dea0df47a..4838b3e184f 100644
--- a/apps/federatedfilesharing/l10n/nb.js
+++ b/apps/federatedfilesharing/l10n/nb.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Tjener til tjener deling er ikke aktivert på denne tjeneren",
"Couldn't establish a federated share." : "Kunne ikke etablere en sammenknyttet ressurs",
"Couldn't establish a federated share, maybe the password was wrong." : "Kunne ikke etablere en sammenknyttet ressurs, kanskje passordet var feil.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.",
"The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
"Not allowed to create a federated share with the owner." : "Ikke tillatt å opprette en sammenknyttet ressurs med eieren.",
"Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
"Could not authenticate to remote share, password might be wrong" : "Kunne ikke autentisere mot ekstern ressurs, passordet var kanskje feil.",
"Storage not valid" : "Lagringsplass ikke gyldig",
- "Federated Share successfully added" : "Sammenknyttet ressurs ble lagt til",
+ "Federated share added" : "Sammenknyttet ressurs lagt til",
"Couldn't add remote share" : "Kunne ikke legge til ekstern ressurs",
"Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s",
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet skydeling med den samme brukeren",
diff --git a/apps/federatedfilesharing/l10n/nb.json b/apps/federatedfilesharing/l10n/nb.json
index 90f481f3bb4..17e8f89a75d 100644
--- a/apps/federatedfilesharing/l10n/nb.json
+++ b/apps/federatedfilesharing/l10n/nb.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Tjener til tjener deling er ikke aktivert på denne tjeneren",
"Couldn't establish a federated share." : "Kunne ikke etablere en sammenknyttet ressurs",
"Couldn't establish a federated share, maybe the password was wrong." : "Kunne ikke etablere en sammenknyttet ressurs, kanskje passordet var feil.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.",
"The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
"Not allowed to create a federated share with the owner." : "Ikke tillatt å opprette en sammenknyttet ressurs med eieren.",
"Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
"Could not authenticate to remote share, password might be wrong" : "Kunne ikke autentisere mot ekstern ressurs, passordet var kanskje feil.",
"Storage not valid" : "Lagringsplass ikke gyldig",
- "Federated Share successfully added" : "Sammenknyttet ressurs ble lagt til",
+ "Federated share added" : "Sammenknyttet ressurs lagt til",
"Couldn't add remote share" : "Kunne ikke legge til ekstern ressurs",
"Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s",
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet skydeling med den samme brukeren",
diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js
index 9cb3722dcd4..95a54b29a3a 100644
--- a/apps/federatedfilesharing/l10n/nl.js
+++ b/apps/federatedfilesharing/l10n/nl.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"federatedfilesharing",
{
- "Federated sharing" : "Gefedereerd delen",
+ "Federated sharing" : "Gefedereerd delens",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?",
"Remote share" : "Externe share",
"Remote share password" : "Wachtwoord externe share",
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Server met server delen is op deze server niet ingeschakeld",
"Couldn't establish a federated share." : "Kon geen gefedereerde share tot stand brengen",
"Couldn't establish a federated share, maybe the password was wrong." : "Kon geen gefedereerde share tot stand brengen, misschien was het wachtwoord onjuist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "De gefedereerde share aanvraag is geslaagd, je ontvangt een uitnodiging. Controleer je meldingen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.",
"The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.",
"Not allowed to create a federated share with the owner." : "Het is niet toegestaan om met de eigenaar een gefedereerde share te maken.",
"Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat",
"Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord",
"Storage not valid" : "Opslag ongeldig",
- "Federated Share successfully added" : "Gefedereerde share succesvol toegevoegd",
+ "Federated share added" : "Gefedereerd share is toegevoegd",
"Couldn't add remote share" : "Kon geen externe share toevoegen",
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
@@ -32,7 +32,7 @@ OC.L10N.register(
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
"You received \"%3$s\" as a remote share from %1$s" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s",
- "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren deel verzoek van {user}",
+ "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren share verzoek van {user}",
"Accept" : "Accepteren",
"Decline" : "Afwijzen",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud gefedereerde Cloud ID, zie %s",
diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json
index ac7f025d41f..cd289676b79 100644
--- a/apps/federatedfilesharing/l10n/nl.json
+++ b/apps/federatedfilesharing/l10n/nl.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Federated sharing" : "Gefedereerd delen",
+ "Federated sharing" : "Gefedereerd delens",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?",
"Remote share" : "Externe share",
"Remote share password" : "Wachtwoord externe share",
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Server met server delen is op deze server niet ingeschakeld",
"Couldn't establish a federated share." : "Kon geen gefedereerde share tot stand brengen",
"Couldn't establish a federated share, maybe the password was wrong." : "Kon geen gefedereerde share tot stand brengen, misschien was het wachtwoord onjuist.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "De gefedereerde share aanvraag is geslaagd, je ontvangt een uitnodiging. Controleer je meldingen.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.",
"The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.",
"Not allowed to create a federated share with the owner." : "Het is niet toegestaan om met de eigenaar een gefedereerde share te maken.",
"Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat",
"Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord",
"Storage not valid" : "Opslag ongeldig",
- "Federated Share successfully added" : "Gefedereerde share succesvol toegevoegd",
+ "Federated share added" : "Gefedereerd share is toegevoegd",
"Couldn't add remote share" : "Kon geen externe share toevoegen",
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
@@ -30,7 +30,7 @@
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
"You received \"%3$s\" as a remote share from %1$s" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s",
- "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren deel verzoek van {user}",
+ "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren share verzoek van {user}",
"Accept" : "Accepteren",
"Decline" : "Afwijzen",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud gefedereerde Cloud ID, zie %s",
diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js
index f2ca3cfe57f..a9cf9af12b7 100644
--- a/apps/federatedfilesharing/l10n/pl.js
+++ b/apps/federatedfilesharing/l10n/pl.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Serwer do udostępniania serwera nie jest włączony na tym serwerze",
"Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Żądanie podzielenia się ze Stowarzyszeniem powiedzie się, gdy otrzymasz zaproszenie. Sprawdź swoje powiadomienia.",
"The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.",
"Not allowed to create a federated share with the owner." : "Nie można tworzyć stowarzyszonego udziału ze sobą.",
"Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL",
"Could not authenticate to remote share, password might be wrong" : "Nie udało się uwierzytelnić udziału zdalnego, może być błędne hasło",
"Storage not valid" : "Magazyn nie jest prawidłowy",
- "Federated Share successfully added" : "Udane udostępnienie ze Stowarzyszeniem ",
"Couldn't add remote share" : "Nie można dodać zdalnego zasobu",
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
"Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem",
diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json
index 0c53f857548..d6f29b66d46 100644
--- a/apps/federatedfilesharing/l10n/pl.json
+++ b/apps/federatedfilesharing/l10n/pl.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Serwer do udostępniania serwera nie jest włączony na tym serwerze",
"Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Żądanie podzielenia się ze Stowarzyszeniem powiedzie się, gdy otrzymasz zaproszenie. Sprawdź swoje powiadomienia.",
"The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.",
"Not allowed to create a federated share with the owner." : "Nie można tworzyć stowarzyszonego udziału ze sobą.",
"Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL",
"Could not authenticate to remote share, password might be wrong" : "Nie udało się uwierzytelnić udziału zdalnego, może być błędne hasło",
"Storage not valid" : "Magazyn nie jest prawidłowy",
- "Federated Share successfully added" : "Udane udostępnienie ze Stowarzyszeniem ",
"Couldn't add remote share" : "Nie można dodać zdalnego zasobu",
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
"Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js
index 2042ac315dc..37850879075 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.js
+++ b/apps/federatedfilesharing/l10n/pt_BR.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor",
"Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.",
"Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.",
"The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável",
"Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar-se ao compartilhamento remoto. A senha pode estar incorreta",
"Storage not valid" : "Armazenamento inválido",
- "Federated Share successfully added" : "Compartilhamento federado adicionado com sucesso",
+ "Federated share added" : "Compartilhamento Federado adicionado",
"Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto",
"Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json
index 6fc35b35b62..458216561fc 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.json
+++ b/apps/federatedfilesharing/l10n/pt_BR.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor",
"Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.",
"Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.",
"The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.",
"Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável",
"Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar-se ao compartilhamento remoto. A senha pode estar incorreta",
"Storage not valid" : "Armazenamento inválido",
- "Federated Share successfully added" : "Compartilhamento federado adicionado com sucesso",
+ "Federated share added" : "Compartilhamento Federado adicionado",
"Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto",
"Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário",
diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js
index 6b204563e82..c71c7d8ae60 100644
--- a/apps/federatedfilesharing/l10n/ru.js
+++ b/apps/federatedfilesharing/l10n/ru.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
"Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.",
"Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, возможно неверный пароль.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Был отправлен запрос общего федеративного доступа, Вы получите приглашение. Проверьте свои уведомления.",
"The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
"Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.",
"Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
"Could not authenticate to remote share, password might be wrong" : "Не удалось провести проверку подлинности для доступа к удалённому хранилищу, возможно неправильно указан пароль",
"Storage not valid" : "Хранилище недоступно",
- "Federated Share successfully added" : "Федеративный общий ресурс успешно добавлен",
+ "Federated share added" : "Добавлен общий федеративный ресурс",
"Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться «%s», пользователю%s уже предоставлен доступ к этому элементу",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json
index 9a937895498..e3f7c8c3b2b 100644
--- a/apps/federatedfilesharing/l10n/ru.json
+++ b/apps/federatedfilesharing/l10n/ru.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
"Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.",
"Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, возможно неверный пароль.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Был отправлен запрос общего федеративного доступа, Вы получите приглашение. Проверьте свои уведомления.",
"The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
"Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.",
"Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
"Could not authenticate to remote share, password might be wrong" : "Не удалось провести проверку подлинности для доступа к удалённому хранилищу, возможно неправильно указан пароль",
"Storage not valid" : "Хранилище недоступно",
- "Federated Share successfully added" : "Федеративный общий ресурс успешно добавлен",
+ "Federated share added" : "Добавлен общий федеративный ресурс",
"Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться «%s», пользователю%s уже предоставлен доступ к этому элементу",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js
index cca776554f1..6a34e89a915 100644
--- a/apps/federatedfilesharing/l10n/sq.js
+++ b/apps/federatedfilesharing/l10n/sq.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"Remote share" : "Ndarje në largësi",
"Remote share password" : "Fjalëkalim ndarjeje të largët",
"Cancel" : "Anulo",
+ "Add remote share" : "Shto shpëendarje në distancë",
"Copy" : "Kopjo",
"Copied!" : "U kopjua!",
"Not supported!" : "Nuk mbështetet!",
@@ -13,34 +14,46 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
"Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
- "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar",
+ "Couldn't establish a federated share." : "Nuk mund të vendosej një shpërndarje e federuar.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Kërkesa Ndarja Federative u dërgua, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
+ "The mountpoint name contains invalid characters." : "Emri mountpoint përmban karaktere të pavlefshme.",
"Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin",
"Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë",
+ "Could not authenticate to remote share, password might be wrong" : "Nuk mund të vërtetohej në pjesën e largët, fjalëkalimi mund të jetë i gabuar",
"Storage not valid" : "memorja nuk është e vlefshme",
+ "Federated share added" : "Ndarje e federuar u shtua",
"Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi",
"Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s",
"Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
"File is already shared with %s" : "Skedari është ndarë tashmë me %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar",
"Could not find share" : "Nuk mund të gjenim ndarjen",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s (në emër të %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ",
"You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s",
+ "You received {share} as a remote share from {user}" : "Ju morët {share} si një ndarje të largët nga {user}",
"Accept" : "Pranoje",
"Decline" : "Hidhe poshtë",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud",
"Sharing" : "Ndarje",
+ "Federated file sharing" : "Shpërndarja e skedarëve të federuar",
"Federated Cloud Sharing" : "Ndarje Në Re të Federuar ",
"Open documentation" : "Hap dokumentimin",
+ "Adjust how people can share between servers." : "Përshtatni mënyrën se si njerëzit mund të ndajnë midis serverëve.",
"Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë",
"Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë",
+ "Search global and public address book for users" : "Kërko librin e adresave globale dhe publike për përdoruesit",
+ "Allow users to publish their data to a global and public address book" : "Lejo përdoruesit të publikojnë të dhënat e tyre në një libër adresash botërore dhe globale",
"Federated Cloud" : "Re e Federuar",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Ju mund të ndani me këdo që përdor Nextcloud, ownCloud ose Pydio! Vetëm vendosni ID e tyre të Federated Cloud në dialogun e shpërndarjeve. Duket si person@cloud.example.com",
"Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:",
+ "Share it so your friends can share files with you:" : "Shërndajeni që miqtë tuaj mund të ndajnë skedarë me ju:",
"Add to your website" : "Shtojeni te sajti juaj",
"Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it",
"HTML Code:" : "Kod HTML:",
+ "Search global and public address book for users and let local users publish their data" : "Kërko librin e adresave globale dhe publike për përdoruesit dhe lejo që përdoruesit lokal të publikojnë të dhënat e tyre",
"Share it:" : "Ndajeni:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/sq.json b/apps/federatedfilesharing/l10n/sq.json
index 683231deae0..31e0211bff5 100644
--- a/apps/federatedfilesharing/l10n/sq.json
+++ b/apps/federatedfilesharing/l10n/sq.json
@@ -4,6 +4,7 @@
"Remote share" : "Ndarje në largësi",
"Remote share password" : "Fjalëkalim ndarjeje të largët",
"Cancel" : "Anulo",
+ "Add remote share" : "Shto shpëendarje në distancë",
"Copy" : "Kopjo",
"Copied!" : "U kopjua!",
"Not supported!" : "Nuk mbështetet!",
@@ -11,34 +12,46 @@
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
"Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
- "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar",
+ "Couldn't establish a federated share." : "Nuk mund të vendosej një shpërndarje e federuar.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Kërkesa Ndarja Federative u dërgua, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
+ "The mountpoint name contains invalid characters." : "Emri mountpoint përmban karaktere të pavlefshme.",
"Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin",
"Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë",
+ "Could not authenticate to remote share, password might be wrong" : "Nuk mund të vërtetohej në pjesën e largët, fjalëkalimi mund të jetë i gabuar",
"Storage not valid" : "memorja nuk është e vlefshme",
+ "Federated share added" : "Ndarje e federuar u shtua",
"Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi",
"Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s",
"Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
"File is already shared with %s" : "Skedari është ndarë tashmë me %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar",
"Could not find share" : "Nuk mund të gjenim ndarjen",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s (në emër të %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ",
"You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s",
+ "You received {share} as a remote share from {user}" : "Ju morët {share} si një ndarje të largët nga {user}",
"Accept" : "Pranoje",
"Decline" : "Hidhe poshtë",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud",
"Sharing" : "Ndarje",
+ "Federated file sharing" : "Shpërndarja e skedarëve të federuar",
"Federated Cloud Sharing" : "Ndarje Në Re të Federuar ",
"Open documentation" : "Hap dokumentimin",
+ "Adjust how people can share between servers." : "Përshtatni mënyrën se si njerëzit mund të ndajnë midis serverëve.",
"Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë",
"Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë",
+ "Search global and public address book for users" : "Kërko librin e adresave globale dhe publike për përdoruesit",
+ "Allow users to publish their data to a global and public address book" : "Lejo përdoruesit të publikojnë të dhënat e tyre në një libër adresash botërore dhe globale",
"Federated Cloud" : "Re e Federuar",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Ju mund të ndani me këdo që përdor Nextcloud, ownCloud ose Pydio! Vetëm vendosni ID e tyre të Federated Cloud në dialogun e shpërndarjeve. Duket si person@cloud.example.com",
"Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:",
+ "Share it so your friends can share files with you:" : "Shërndajeni që miqtë tuaj mund të ndajnë skedarë me ju:",
"Add to your website" : "Shtojeni te sajti juaj",
"Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it",
"HTML Code:" : "Kod HTML:",
+ "Search global and public address book for users and let local users publish their data" : "Kërko librin e adresave globale dhe publike për përdoruesit dhe lejo që përdoruesit lokal të publikojnë të dhënat e tyre",
"Share it:" : "Ndajeni:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js
index 3968f627a41..e0fa9690e2f 100644
--- a/apps/federatedfilesharing/l10n/sv.js
+++ b/apps/federatedfilesharing/l10n/sv.js
@@ -16,13 +16,11 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
"Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning",
"Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.",
"The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
"Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren",
"Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
"Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel",
"Storage not valid" : "Lagring ogiltig",
- "Federated Share successfully added" : "Federerad delning lyckades",
"Couldn't add remote share" : "Kunde inte lägga till extern delning",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json
index d5f514f3fda..c0b03cfe256 100644
--- a/apps/federatedfilesharing/l10n/sv.json
+++ b/apps/federatedfilesharing/l10n/sv.json
@@ -14,13 +14,11 @@
"Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
"Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning",
"Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.",
"The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
"Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren",
"Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
"Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel",
"Storage not valid" : "Lagring ogiltig",
- "Federated Share successfully added" : "Federerad delning lyckades",
"Couldn't add remote share" : "Kunde inte lägga till extern delning",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js
index 53f5708edec..da6117e7c42 100644
--- a/apps/federatedfilesharing/l10n/tr.js
+++ b/apps/federatedfilesharing/l10n/tr.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Bu sunucuda sunucudan sunucuya paylaşım etkin değil",
"Couldn't establish a federated share." : "Birleşmiş bir paylaşım oluşturulamadı.",
"Couldn't establish a federated share, maybe the password was wrong." : "Birleşmiş bir paylaşım oluşturulamadı. Parola yanlış olabilir.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Birleşmiş paylaşım oluşturuldu. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
"The mountpoint name contains invalid characters." : "Bağlama noktası adında geçersiz karakterler var.",
"Not allowed to create a federated share with the owner." : "Sahip ile birleşmiş bir paylaşım oluşturmanıza izin verilmiyor.",
"Invalid or untrusted SSL certificate" : "Geçersiz ya da güvenilmez SSL sertifikası",
"Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı. Parola yanlış olabilir",
"Storage not valid" : "Depolama geçersiz",
- "Federated Share successfully added" : "Birleşmiş Paylaşım eklendi",
+ "Federated share added" : "Birleşmiş paylaşım eklendi",
"Couldn't add remote share" : "Uzak paylaşım eklenemedi",
"Sharing %s failed, because this item is already shared with %s" : "%s paylaşılmadı. %s ile zaten paylaşılmış",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json
index 6faa1186f73..ffd3aa02a6d 100644
--- a/apps/federatedfilesharing/l10n/tr.json
+++ b/apps/federatedfilesharing/l10n/tr.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "Bu sunucuda sunucudan sunucuya paylaşım etkin değil",
"Couldn't establish a federated share." : "Birleşmiş bir paylaşım oluşturulamadı.",
"Couldn't establish a federated share, maybe the password was wrong." : "Birleşmiş bir paylaşım oluşturulamadı. Parola yanlış olabilir.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Birleşmiş paylaşım oluşturuldu. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
"The mountpoint name contains invalid characters." : "Bağlama noktası adında geçersiz karakterler var.",
"Not allowed to create a federated share with the owner." : "Sahip ile birleşmiş bir paylaşım oluşturmanıza izin verilmiyor.",
"Invalid or untrusted SSL certificate" : "Geçersiz ya da güvenilmez SSL sertifikası",
"Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı. Parola yanlış olabilir",
"Storage not valid" : "Depolama geçersiz",
- "Federated Share successfully added" : "Birleşmiş Paylaşım eklendi",
+ "Federated share added" : "Birleşmiş paylaşım eklendi",
"Couldn't add remote share" : "Uzak paylaşım eklenemedi",
"Sharing %s failed, because this item is already shared with %s" : "%s paylaşılmadı. %s ile zaten paylaşılmış",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js
index d0f4400fffd..2ca3283c094 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.js
+++ b/apps/federatedfilesharing/l10n/zh_CN.js
@@ -16,13 +16,13 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "此服务器未启用服务器到服务器分享功能",
"Couldn't establish a federated share." : "无法建立一个远程分享",
"Couldn't establish a federated share, maybe the password was wrong." : "无法建立分享,可能密码是错误的。",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "共享协作请求发送成功!通过你将收到通知。注意留意你的通知提醒",
"The mountpoint name contains invalid characters." : "挂载点的名称包含无效字符。",
"Not allowed to create a federated share with the owner." : "不允许与所有者创建联合共享.",
"Invalid or untrusted SSL certificate" : "无效或是不被信任的 SSL 证书",
"Could not authenticate to remote share, password might be wrong" : "无法验证远程共享,可能是密码错误",
"Storage not valid" : "存储不可用",
- "Federated Share successfully added" : "已成功添加联合共享",
+ "Federated share added" : "共享协作已添加",
"Couldn't add remote share" : "无法添加远程共享",
"Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为它已经共享给 %s",
"Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json
index 3b9596453a5..e996d7ce068 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.json
+++ b/apps/federatedfilesharing/l10n/zh_CN.json
@@ -14,13 +14,13 @@
"Server to server sharing is not enabled on this server" : "此服务器未启用服务器到服务器分享功能",
"Couldn't establish a federated share." : "无法建立一个远程分享",
"Couldn't establish a federated share, maybe the password was wrong." : "无法建立分享,可能密码是错误的。",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "共享协作请求发送成功!通过你将收到通知。注意留意你的通知提醒",
"The mountpoint name contains invalid characters." : "挂载点的名称包含无效字符。",
"Not allowed to create a federated share with the owner." : "不允许与所有者创建联合共享.",
"Invalid or untrusted SSL certificate" : "无效或是不被信任的 SSL 证书",
"Could not authenticate to remote share, password might be wrong" : "无法验证远程共享,可能是密码错误",
"Storage not valid" : "存储不可用",
- "Federated Share successfully added" : "已成功添加联合共享",
+ "Federated share added" : "共享协作已添加",
"Couldn't add remote share" : "无法添加远程共享",
"Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为它已经共享给 %s",
"Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
diff --git a/apps/federatedfilesharing/l10n/zh_TW.js b/apps/federatedfilesharing/l10n/zh_TW.js
index f781d1e5b6f..82ccc884ca3 100644
--- a/apps/federatedfilesharing/l10n/zh_TW.js
+++ b/apps/federatedfilesharing/l10n/zh_TW.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Remote share password" : "遠端分享密碼",
"Cancel" : "取消",
"Add remote share" : "加入遠端分享",
+ "Copy" : "複製",
"Copied!" : "已複製",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
@@ -15,24 +16,31 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
"Couldn't establish a federated share." : "無法建立聯盟式分享",
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "聯盟式分享請求成功,您講話收到邀請,請檢查您的通知匣",
"The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元",
+ "Not allowed to create a federated share with the owner." : "不允許與所有者建立聯盟式分享",
+ "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證",
+ "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤",
+ "Storage not valid" : "儲存空間無效",
+ "Federated share added" : "聯盟分享已新增",
+ "Couldn't add remote share" : "無法加入遠端分享",
"Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
"Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享%s失敗,找不到%s,或許目前無法連線到該伺服器",
+ "File is already shared with %s" : "檔案已和 %s 分享",
+ "Could not find share" : "找不到分享",
"Accept" : "接受",
"Decline" : "拒絕",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享",
+ "Sharing" : "分享",
"Federated Cloud Sharing" : "聯盟式雲端分享",
"Open documentation" : "開啟說明文件",
"Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器",
"Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
"Federated Cloud" : "聯盟式雲端",
"Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
- "Share it:" : "分享它:",
"Add to your website" : "新增至您的網站",
"Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
- "HTML Code:" : "HTML Code:"
+ "HTML Code:" : "HTML Code:",
+ "Share it:" : "分享它:"
},
"nplurals=1; plural=0;");
diff --git a/apps/federatedfilesharing/l10n/zh_TW.json b/apps/federatedfilesharing/l10n/zh_TW.json
index 860bcc64913..77bae400756 100644
--- a/apps/federatedfilesharing/l10n/zh_TW.json
+++ b/apps/federatedfilesharing/l10n/zh_TW.json
@@ -5,6 +5,7 @@
"Remote share password" : "遠端分享密碼",
"Cancel" : "取消",
"Add remote share" : "加入遠端分享",
+ "Copy" : "複製",
"Copied!" : "已複製",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
@@ -13,24 +14,31 @@
"Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
"Couldn't establish a federated share." : "無法建立聯盟式分享",
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "聯盟式分享請求成功,您講話收到邀請,請檢查您的通知匣",
"The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元",
+ "Not allowed to create a federated share with the owner." : "不允許與所有者建立聯盟式分享",
+ "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證",
+ "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤",
+ "Storage not valid" : "儲存空間無效",
+ "Federated share added" : "聯盟分享已新增",
+ "Couldn't add remote share" : "無法加入遠端分享",
"Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
"Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享%s失敗,找不到%s,或許目前無法連線到該伺服器",
+ "File is already shared with %s" : "檔案已和 %s 分享",
+ "Could not find share" : "找不到分享",
"Accept" : "接受",
"Decline" : "拒絕",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享",
+ "Sharing" : "分享",
"Federated Cloud Sharing" : "聯盟式雲端分享",
"Open documentation" : "開啟說明文件",
"Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器",
"Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
"Federated Cloud" : "聯盟式雲端",
"Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
- "Share it:" : "分享它:",
"Add to your website" : "新增至您的網站",
"Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
- "HTML Code:" : "HTML Code:"
+ "HTML Code:" : "HTML Code:",
+ "Share it:" : "分享它:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php
index 821647e5e39..bb07c2717f9 100644
--- a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php
+++ b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php
@@ -81,7 +81,7 @@ class RetryJob extends Job {
* run the job, then remove it from the jobList
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
diff --git a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
index 89fdbc64d9a..09bc7333c13 100644
--- a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
+++ b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
@@ -214,7 +214,7 @@ class MountPublicLinkController extends Controller {
$result = json_decode($body, true);
if (is_array($result) && isset($result['remoteUrl'])) {
- return new JSONResponse(['message' => $this->l->t('Federated Share request was successful, you will receive a invitation. Check your notifications.')]);
+ return new JSONResponse(['message' => $this->l->t('Federated Share request sent, you will receive an invitation. Check your notifications.')]);
}
// if we doesn't get the expected response we assume that we try to add
@@ -303,7 +303,7 @@ class MountPublicLinkController extends Controller {
$storage->getScanner()->scanAll();
return new JSONResponse(
[
- 'message' => $this->l->t('Federated Share successfully added'),
+ 'message' => $this->l->t('Federated share added'),
'legacyMount' => '1'
]
);
diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
index 4f64e6147e1..529d7f7db67 100644
--- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
+++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
@@ -194,12 +194,12 @@ class RequestHandlerController extends OCSController {
$declineAction = $notification->createAction();
$declineAction->setLabel('decline')
- ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v1.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE');
+ ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE');
$notification->addAction($declineAction);
$acceptAction = $notification->createAction();
$acceptAction->setLabel('accept')
- ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v1.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST');
+ ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST');
$notification->addAction($acceptAction);
$notificationManager->notify($notification);
diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php
index c6be2a45f16..26365d2b70c 100644
--- a/apps/federatedfilesharing/templates/settings-personal.php
+++ b/apps/federatedfilesharing/templates/settings-personal.php
@@ -7,7 +7,7 @@ style('federatedfilesharing', 'settings-personal');
<?php if ($_['outgoingServer2serverShareEnabled']): ?>
<div id="fileSharingSettings" class="section">
- <h2><?php p($l->t('Federated Cloud')); ?></h2>
+ <h2 data-anchor-name="federated-cloud"><?php p($l->t('Federated Cloud')); ?></h2>
<p class="settings-hint"><?php p($l->t('You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com')); ?></p>
<p>
diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js
index 2b476b94c95..1a2511578e4 100644
--- a/apps/federation/l10n/de.js
+++ b/apps/federation/l10n/de.js
@@ -8,7 +8,7 @@ OC.L10N.register(
"Federation" : "Federation",
"Trusted servers" : "Vertrauenswürdige Server",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
- "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde",
+ "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
"Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen"
diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json
index 2c37fc10fa2..fe99a8dfec6 100644
--- a/apps/federation/l10n/de.json
+++ b/apps/federation/l10n/de.json
@@ -6,7 +6,7 @@
"Federation" : "Federation",
"Trusted servers" : "Vertrauenswürdige Server",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
- "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde",
+ "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
"Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen"
diff --git a/apps/federation/l10n/de_DE.js b/apps/federation/l10n/de_DE.js
index 1a8bef05ae9..c55829d1e6a 100644
--- a/apps/federation/l10n/de_DE.js
+++ b/apps/federation/l10n/de_DE.js
@@ -8,7 +8,7 @@ OC.L10N.register(
"Federation" : "Federation",
"Trusted servers" : "Vertrauenswürdige Server",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
- "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde",
+ "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
"Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen"
diff --git a/apps/federation/l10n/de_DE.json b/apps/federation/l10n/de_DE.json
index c9b54c5f893..2e82f93b65a 100644
--- a/apps/federation/l10n/de_DE.json
+++ b/apps/federation/l10n/de_DE.json
@@ -6,7 +6,7 @@
"Federation" : "Federation",
"Trusted servers" : "Vertrauenswürdige Server",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
- "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde",
+ "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
"Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen"
diff --git a/apps/federation/l10n/el.js b/apps/federation/l10n/el.js
index 2f1a5a6178e..4203fa03e1f 100644
--- a/apps/federation/l10n/el.js
+++ b/apps/federation/l10n/el.js
@@ -7,8 +7,8 @@ OC.L10N.register(
"Could not add server" : "Αδυναμία προσθήκης διακομιστή",
"Federation" : "Federation",
"Trusted servers" : "Έμπιστοι διακομιστές",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.",
- "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Το Federation σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.",
+ "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια faderated κοινή χρήση",
"+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών",
"Trusted server" : "Έμπιστοι διακομιστές",
"Add" : "Προσθήκη"
diff --git a/apps/federation/l10n/el.json b/apps/federation/l10n/el.json
index 5de95089e47..39f9c6059b4 100644
--- a/apps/federation/l10n/el.json
+++ b/apps/federation/l10n/el.json
@@ -5,8 +5,8 @@
"Could not add server" : "Αδυναμία προσθήκης διακομιστή",
"Federation" : "Federation",
"Trusted servers" : "Έμπιστοι διακομιστές",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.",
- "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Το Federation σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.",
+ "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια faderated κοινή χρήση",
"+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών",
"Trusted server" : "Έμπιστοι διακομιστές",
"Add" : "Προσθήκη"
diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js
index 90ffc965f11..0b5120fbc9c 100644
--- a/apps/federation/l10n/es.js
+++ b/apps/federation/l10n/es.js
@@ -7,7 +7,7 @@ OC.L10N.register(
"Could not add server" : "No se ha podido añadir el servidor",
"Federation" : "Federación",
"Trusted servers" : "Servidores de confianza",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, esto se usará para autocompletar la selección de usuarios externos al compartir en federación.",
"Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente",
"+ Add trusted server" : "+ Añadir servidor de confianza",
"Trusted server" : "Servidor de confianza",
diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json
index ab7d0817b3f..4548b3dc709 100644
--- a/apps/federation/l10n/es.json
+++ b/apps/federation/l10n/es.json
@@ -5,7 +5,7 @@
"Could not add server" : "No se ha podido añadir el servidor",
"Federation" : "Federación",
"Trusted servers" : "Servidores de confianza",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, esto se usará para autocompletar la selección de usuarios externos al compartir en federación.",
"Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente",
"+ Add trusted server" : "+ Añadir servidor de confianza",
"Trusted server" : "Servidor de confianza",
diff --git a/apps/federation/l10n/lt_LT.js b/apps/federation/l10n/lt_LT.js
new file mode 100644
index 00000000000..86d46008af7
--- /dev/null
+++ b/apps/federation/l10n/lt_LT.js
@@ -0,0 +1,16 @@
+OC.L10N.register(
+ "federation",
+ {
+ "Added to the list of trusted servers" : "Pridėtas prie patikimų serverių sąrašo",
+ "Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.",
+ "No server to federate with found" : "Rastų serverių sąraše nėra tinkamo serverio bendrinimui",
+ "Could not add server" : "Nepavyko pridėti serverio",
+ "Federation" : "Centralizuotų Serverių sistema",
+ "Trusted servers" : "Patikimi serveriai",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Centralizuotų Serverių sistema leidžia prisijungti ir naudoti naudotojų duomenis, esančius patikimuose serveriuose. Pavyzdžiui, leidžiama įtraukti kito serverio naudotojus duomenų bendrinimui.",
+ "Add server automatically once a federated share was created successfully" : "Pridėti serverį automatiškai, kai Centralizuotas Serverių dalinimosi ryšys buvo sukurtas",
+ "+ Add trusted server" : "+ Pridėti patikimą serverį",
+ "Trusted server" : "Patikimas serveris",
+ "Add" : "Pridėti"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/federation/l10n/lt_LT.json b/apps/federation/l10n/lt_LT.json
new file mode 100644
index 00000000000..767e0e13ec8
--- /dev/null
+++ b/apps/federation/l10n/lt_LT.json
@@ -0,0 +1,14 @@
+{ "translations": {
+ "Added to the list of trusted servers" : "Pridėtas prie patikimų serverių sąrašo",
+ "Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.",
+ "No server to federate with found" : "Rastų serverių sąraše nėra tinkamo serverio bendrinimui",
+ "Could not add server" : "Nepavyko pridėti serverio",
+ "Federation" : "Centralizuotų Serverių sistema",
+ "Trusted servers" : "Patikimi serveriai",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Centralizuotų Serverių sistema leidžia prisijungti ir naudoti naudotojų duomenis, esančius patikimuose serveriuose. Pavyzdžiui, leidžiama įtraukti kito serverio naudotojus duomenų bendrinimui.",
+ "Add server automatically once a federated share was created successfully" : "Pridėti serverį automatiškai, kai Centralizuotas Serverių dalinimosi ryšys buvo sukurtas",
+ "+ Add trusted server" : "+ Pridėti patikimą serverį",
+ "Trusted server" : "Patikimas serveris",
+ "Add" : "Pridėti"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/federation/l10n/zh_TW.js b/apps/federation/l10n/zh_TW.js
index 983aba26154..dbbd9862753 100644
--- a/apps/federation/l10n/zh_TW.js
+++ b/apps/federation/l10n/zh_TW.js
@@ -6,14 +6,11 @@ OC.L10N.register(
"No server to federate with found" : "沒有找到可結盟的伺服器",
"Could not add server" : "無法加入伺服器",
"Federation" : "聯盟",
+ "Trusted servers" : "信任的伺服器",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。",
"Add server automatically once a federated share was created successfully" : "當聯盟分享成功建立的時候自動將伺服器加入信任清單",
- "Trusted Servers" : "信任的伺服器",
- "+ Add Nextcloud server" : "+ 加入 Nextcloud 伺服器",
- "Nextcloud Server" : "Nextcloud 伺服器",
- "Server added to the list of trusted Nextclouds" : "伺服器已被加入至信任的 Nextcloud",
- "No Nextcloud server found" : "找不到 Nextcloud 伺服器",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud 聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。",
- "Trusted Nextcloud Servers" : "信任的 Nextcloud 伺服器"
+ "+ Add trusted server" : "+ 加入信任的伺服器",
+ "Trusted server" : "信任的伺服器",
+ "Add" : "新增"
},
"nplurals=1; plural=0;");
diff --git a/apps/federation/l10n/zh_TW.json b/apps/federation/l10n/zh_TW.json
index 10865e029ed..5b9ce1e29a3 100644
--- a/apps/federation/l10n/zh_TW.json
+++ b/apps/federation/l10n/zh_TW.json
@@ -4,14 +4,11 @@
"No server to federate with found" : "沒有找到可結盟的伺服器",
"Could not add server" : "無法加入伺服器",
"Federation" : "聯盟",
+ "Trusted servers" : "信任的伺服器",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。",
"Add server automatically once a federated share was created successfully" : "當聯盟分享成功建立的時候自動將伺服器加入信任清單",
- "Trusted Servers" : "信任的伺服器",
- "+ Add Nextcloud server" : "+ 加入 Nextcloud 伺服器",
- "Nextcloud Server" : "Nextcloud 伺服器",
- "Server added to the list of trusted Nextclouds" : "伺服器已被加入至信任的 Nextcloud",
- "No Nextcloud server found" : "找不到 Nextcloud 伺服器",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud 聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。",
- "Trusted Nextcloud Servers" : "信任的 Nextcloud 伺服器"
+ "+ Add trusted server" : "+ 加入信任的伺服器",
+ "Trusted server" : "信任的伺服器",
+ "Add" : "新增"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federation/lib/AppInfo/Application.php b/apps/federation/lib/AppInfo/Application.php
index 55647622915..38bbe293a56 100644
--- a/apps/federation/lib/AppInfo/Application.php
+++ b/apps/federation/lib/AppInfo/Application.php
@@ -24,75 +24,29 @@
namespace OCA\Federation\AppInfo;
-use OCA\Federation\Controller\SettingsController;
use OCA\Federation\DAV\FedAuth;
-use OCA\Federation\DbHandler;
use OCA\Federation\Hooks;
use OCA\Federation\Middleware\AddServerMiddleware;
-use OCA\Federation\SyncFederationAddressBooks;
-use OCA\Federation\TrustedServers;
-use OCP\AppFramework\IAppContainer;
+use OCP\AppFramework\App;
use OCP\SabrePluginEvent;
use OCP\Util;
use Sabre\DAV\Auth\Plugin;
+use Sabre\DAV\Server;
-class Application extends \OCP\AppFramework\App {
+class Application extends App {
/**
* @param array $urlParams
*/
- public function __construct($urlParams = array()) {
+ public function __construct($urlParams = []) {
parent::__construct('federation', $urlParams);
- $this->registerService();
$this->registerMiddleware();
}
- private function registerService() {
- $container = $this->getContainer();
-
- $container->registerService('addServerMiddleware', function(IAppContainer $c) {
- return new AddServerMiddleware(
- $c->getAppName(),
- \OC::$server->getL10N($c->getAppName()),
- \OC::$server->getLogger()
- );
- });
-
- $container->registerService('DbHandler', function(IAppContainer $c) {
- return new DbHandler(
- \OC::$server->getDatabaseConnection(),
- \OC::$server->getL10N($c->getAppName())
- );
- });
-
- $container->registerService('TrustedServers', function(IAppContainer $c) {
- $server = $c->getServer();
- return new TrustedServers(
- $c->query('DbHandler'),
- $server->getHTTPClientService(),
- $server->getLogger(),
- $server->getJobList(),
- $server->getSecureRandom(),
- $server->getConfig(),
- $server->getEventDispatcher()
- );
- });
-
- $container->registerService('SettingsController', function (IAppContainer $c) {
- $server = $c->getServer();
- return new SettingsController(
- $c->getAppName(),
- $server->getRequest(),
- $server->getL10N($c->getAppName()),
- $c->query('TrustedServers')
- );
- });
-
- }
-
private function registerMiddleware() {
$container = $this->getContainer();
- $container->registerMiddleware('addServerMiddleware');
+ $container->registerAlias('AddServerMiddleware', AddServerMiddleware::class);
+ $container->registerMiddleWare('AddServerMiddleware');
}
/**
@@ -102,7 +56,7 @@ class Application extends \OCP\AppFramework\App {
public function registerHooks() {
$container = $this->getContainer();
- $hooksManager = new Hooks($container->query('TrustedServers'));
+ $hooksManager = $container->query(Hooks::class);
Util::connectHook(
'OCP\Share',
@@ -111,28 +65,18 @@ class Application extends \OCP\AppFramework\App {
'addServerHook'
);
- $dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
+ $dispatcher = $container->getServer()->getEventDispatcher();
$dispatcher->addListener('OCA\DAV\Connector\Sabre::authInit', function($event) use($container) {
if ($event instanceof SabrePluginEvent) {
- $authPlugin = $event->getServer()->getPlugin('auth');
- if ($authPlugin instanceof Plugin) {
- $h = new DbHandler($container->getServer()->getDatabaseConnection(),
- $container->getServer()->getL10N('federation')
- );
- $authPlugin->addBackend(new FedAuth($h));
+ $server = $event->getServer();
+ if ($server instanceof Server) {
+ $authPlugin = $server->getPlugin('auth');
+ if ($authPlugin instanceof Plugin) {
+ $authPlugin->addBackend($container->query(FedAuth::class));
+ }
}
}
});
}
- /**
- * @return SyncFederationAddressBooks
- */
- public function getSyncService() {
- $syncService = \OC::$server->query('CardDAVSyncService');
- $dbHandler = $this->getContainer()->query('DbHandler');
- $discoveryService = \OC::$server->query(\OCP\OCS\IDiscoveryService::class);
- return new SyncFederationAddressBooks($dbHandler, $syncService, $discoveryService);
- }
-
}
diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php
index b1367be9524..bf9f58999db 100644
--- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php
+++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php
@@ -32,8 +32,10 @@ use OC\BackgroundJob\Job;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClient;
+use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
use OCP\ILogger;
use OCP\IURLGenerator;
@@ -46,7 +48,7 @@ use OCP\OCS\IDiscoveryService;
*
* @package OCA\Federation\Backgroundjob
*/
-class GetSharedSecret extends Job{
+class GetSharedSecret extends Job {
/** @var IClient */
private $httpClient;
@@ -69,6 +71,9 @@ class GetSharedSecret extends Job{
/** @var ILogger */
private $logger;
+ /** @var ITimeFactory */
+ private $timeFactory;
+
/** @var bool */
protected $retainJob = false;
@@ -76,52 +81,46 @@ class GetSharedSecret extends Job{
private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/shared-secret';
+ /** @var int 30 day = 2592000sec */
+ private $maxLifespan = 2592000;
+
/**
* RequestSharedSecret constructor.
*
- * @param IClient $httpClient
+ * @param IClientService $httpClientService
* @param IURLGenerator $urlGenerator
* @param IJobList $jobList
* @param TrustedServers $trustedServers
* @param ILogger $logger
* @param DbHandler $dbHandler
* @param IDiscoveryService $ocsDiscoveryService
+ * @param ITimeFactory $timeFactory
*/
public function __construct(
- IClient $httpClient = null,
- IURLGenerator $urlGenerator = null,
- IJobList $jobList = null,
- TrustedServers $trustedServers = null,
- ILogger $logger = null,
- DbHandler $dbHandler = null,
- IDiscoveryService $ocsDiscoveryService = null
+ IClientService $httpClientService,
+ IURLGenerator $urlGenerator,
+ IJobList $jobList,
+ TrustedServers $trustedServers,
+ ILogger $logger,
+ DbHandler $dbHandler,
+ IDiscoveryService $ocsDiscoveryService,
+ ITimeFactory $timeFactory
) {
- $this->logger = $logger ? $logger : \OC::$server->getLogger();
- $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient();
- $this->jobList = $jobList ? $jobList : \OC::$server->getJobList();
- $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator();
- $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation'));
- $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class);
- if ($trustedServers) {
- $this->trustedServers = $trustedServers;
- } else {
- $this->trustedServers = new TrustedServers(
- $this->dbHandler,
- \OC::$server->getHTTPClientService(),
- $this->logger,
- $this->jobList,
- \OC::$server->getSecureRandom(),
- \OC::$server->getConfig(),
- \OC::$server->getEventDispatcher()
- );
- }
+ $this->logger = $logger;
+ $this->httpClient = $httpClientService->newClient();
+ $this->jobList = $jobList;
+ $this->urlGenerator = $urlGenerator;
+ $this->dbHandler = $dbHandler;
+ $this->ocsDiscoveryService = $ocsDiscoveryService;
+ $this->trustedServers = $trustedServers;
+ $this->timeFactory = $timeFactory;
}
/**
* run the job, then remove it from the joblist
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
$target = $this->argument['url'];
@@ -130,8 +129,10 @@ class GetSharedSecret extends Job{
$this->parentExecute($jobList, $logger);
}
- if (!$this->retainJob) {
- $jobList->remove($this, $this->argument);
+ $jobList->remove($this, $this->argument);
+
+ if ($this->retainJob) {
+ $this->reAddJob($this->argument);
}
}
@@ -147,14 +148,24 @@ class GetSharedSecret extends Job{
protected function run($argument) {
$target = $argument['url'];
+ $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime();
+ $currentTime = $this->timeFactory->getTime();
$source = $this->urlGenerator->getAbsoluteURL('/');
$source = rtrim($source, '/');
$token = $argument['token'];
+ // kill job after 30 days of trying
+ $deadline = $currentTime - $this->maxLifespan;
+ if ($created < $deadline) {
+ $this->retainJob = false;
+ $this->trustedServers->setServerStatus($target,TrustedServers::STATUS_FAILURE);
+ return;
+ }
+
$endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING');
$endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint;
- // make sure that we have a well formated url
+ // make sure that we have a well formatted url
$url = rtrim($target, '/') . '/' . trim($endPoint, '/') . $this->format;
$result = null;
@@ -215,4 +226,23 @@ class GetSharedSecret extends Job{
}
}
+
+ /**
+ * re-add background job
+ *
+ * @param array $argument
+ */
+ protected function reAddJob(array $argument) {
+ $url = $argument['url'];
+ $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime();
+ $token = $argument['token'];
+ $this->jobList->add(
+ GetSharedSecret::class,
+ [
+ 'url' => $url,
+ 'token' => $token,
+ 'created' => $created
+ ]
+ );
+ }
}
diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
index 9123e37300d..7effb838d8b 100644
--- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
+++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
@@ -33,8 +33,10 @@ use OC\BackgroundJob\Job;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClient;
+use OCP\Http\Client\IClientService;
use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\OCS\IDiscoveryService;
@@ -69,6 +71,9 @@ class RequestSharedSecret extends Job {
/** @var ILogger */
private $logger;
+ /** @var ITimeFactory */
+ private $timeFactory;
+
/** @var bool */
protected $retainJob = false;
@@ -76,43 +81,39 @@ class RequestSharedSecret extends Job {
private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/request-shared-secret';
+ /** @var int 30 day = 2592000sec */
+ private $maxLifespan = 2592000;
+
/**
* RequestSharedSecret constructor.
*
- * @param IClient $httpClient
+ * @param IClientService $httpClientService
* @param IURLGenerator $urlGenerator
* @param IJobList $jobList
* @param TrustedServers $trustedServers
* @param DbHandler $dbHandler
* @param IDiscoveryService $ocsDiscoveryService
+ * @param ILogger $logger
+ * @param ITimeFactory $timeFactory
*/
public function __construct(
- IClient $httpClient = null,
- IURLGenerator $urlGenerator = null,
- IJobList $jobList = null,
- TrustedServers $trustedServers = null,
- DbHandler $dbHandler = null,
- IDiscoveryService $ocsDiscoveryService = null
+ IClientService $httpClientService,
+ IURLGenerator $urlGenerator,
+ IJobList $jobList,
+ TrustedServers $trustedServers,
+ DbHandler $dbHandler,
+ IDiscoveryService $ocsDiscoveryService,
+ ILogger $logger,
+ ITimeFactory $timeFactory
) {
- $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient();
- $this->jobList = $jobList ? $jobList : \OC::$server->getJobList();
- $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator();
- $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation'));
- $this->logger = \OC::$server->getLogger();
- $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class);
- if ($trustedServers) {
- $this->trustedServers = $trustedServers;
- } else {
- $this->trustedServers = new TrustedServers(
- $this->dbHandler,
- \OC::$server->getHTTPClientService(),
- $this->logger,
- $this->jobList,
- \OC::$server->getSecureRandom(),
- \OC::$server->getConfig(),
- \OC::$server->getEventDispatcher()
- );
- }
+ $this->httpClient = $httpClientService->newClient();
+ $this->jobList = $jobList;
+ $this->urlGenerator = $urlGenerator;
+ $this->dbHandler = $dbHandler;
+ $this->logger = $logger;
+ $this->ocsDiscoveryService = $ocsDiscoveryService;
+ $this->trustedServers = $trustedServers;
+ $this->timeFactory = $timeFactory;
}
@@ -120,7 +121,7 @@ class RequestSharedSecret extends Job {
* run the job, then remove it from the joblist
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
$target = $this->argument['url'];
@@ -129,8 +130,10 @@ class RequestSharedSecret extends Job {
$this->parentExecute($jobList, $logger);
}
- if (!$this->retainJob) {
- $jobList->remove($this, $this->argument);
+ $jobList->remove($this, $this->argument);
+
+ if ($this->retainJob) {
+ $this->reAddJob($this->argument);
}
}
@@ -147,10 +150,20 @@ class RequestSharedSecret extends Job {
protected function run($argument) {
$target = $argument['url'];
+ $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime();
+ $currentTime = $this->timeFactory->getTime();
$source = $this->urlGenerator->getAbsoluteURL('/');
$source = rtrim($source, '/');
$token = $argument['token'];
+ // kill job after 30 days of trying
+ $deadline = $currentTime - $this->maxLifespan;
+ if ($created < $deadline) {
+ $this->retainJob = false;
+ $this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE);
+ return;
+ }
+
$endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING');
$endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint;
@@ -198,4 +211,24 @@ class RequestSharedSecret extends Job {
}
}
+
+ /**
+ * re-add background job
+ *
+ * @param array $argument
+ */
+ protected function reAddJob(array $argument) {
+ $url = $argument['url'];
+ $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime();
+ $token = $argument['token'];
+
+ $this->jobList->add(
+ RequestSharedSecret::class,
+ [
+ 'url' => $url,
+ 'token' => $token,
+ 'created' => $created
+ ]
+ );
+ }
}
diff --git a/apps/federation/lib/Command/SyncFederationAddressBooks.php b/apps/federation/lib/Command/SyncFederationAddressBooks.php
index fb3a2749ff8..db332d3d7ad 100644
--- a/apps/federation/lib/Command/SyncFederationAddressBooks.php
+++ b/apps/federation/lib/Command/SyncFederationAddressBooks.php
@@ -36,7 +36,7 @@ class SyncFederationAddressBooks extends Command {
/**
* @param \OCA\Federation\SyncFederationAddressBooks $syncService
*/
- function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) {
+ public function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) {
parent::__construct();
$this->syncService = $syncService;
diff --git a/apps/federation/lib/Controller/OCSAuthAPIController.php b/apps/federation/lib/Controller/OCSAuthAPIController.php
index 594299a2d02..b0594877b23 100644
--- a/apps/federation/lib/Controller/OCSAuthAPIController.php
+++ b/apps/federation/lib/Controller/OCSAuthAPIController.php
@@ -32,6 +32,7 @@ use OCA\Federation\TrustedServers;
use OCP\AppFramework\Http;
use OCP\AppFramework\OCS\OCSForbiddenException;
use OCP\AppFramework\OCSController;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\ILogger;
use OCP\IRequest;
@@ -61,6 +62,9 @@ class OCSAuthAPIController extends OCSController{
/** @var ILogger */
private $logger;
+ /** @var ITimeFactory */
+ private $timeFactory;
+
/**
* OCSAuthAPI constructor.
*
@@ -71,6 +75,7 @@ class OCSAuthAPIController extends OCSController{
* @param TrustedServers $trustedServers
* @param DbHandler $dbHandler
* @param ILogger $logger
+ * @param ITimeFactory $timeFactory
*/
public function __construct(
$appName,
@@ -79,7 +84,8 @@ class OCSAuthAPIController extends OCSController{
IJobList $jobList,
TrustedServers $trustedServers,
DbHandler $dbHandler,
- ILogger $logger
+ ILogger $logger,
+ ITimeFactory $timeFactory
) {
parent::__construct($appName, $request);
@@ -88,6 +94,7 @@ class OCSAuthAPIController extends OCSController{
$this->trustedServers = $trustedServers;
$this->dbHandler = $dbHandler;
$this->logger = $logger;
+ $this->timeFactory = $timeFactory;
}
/**
@@ -149,20 +156,12 @@ class OCSAuthAPIController extends OCSController{
throw new OCSForbiddenException();
}
- // we ask for the shared secret so we no longer have to ask the other server
- // to request the shared secret
- $this->jobList->remove('OCA\Federation\BackgroundJob\RequestSharedSecret',
- [
- 'url' => $url,
- 'token' => $localToken
- ]
- );
-
$this->jobList->add(
'OCA\Federation\BackgroundJob\GetSharedSecret',
[
'url' => $url,
'token' => $token,
+ 'created' => $this->timeFactory->getTime()
]
);
@@ -210,5 +209,4 @@ class OCSAuthAPIController extends OCSController{
$storedToken = $this->dbHandler->getToken($url);
return hash_equals($storedToken, $token);
}
-
}
diff --git a/apps/federation/lib/Controller/SettingsController.php b/apps/federation/lib/Controller/SettingsController.php
index afbaa4abeee..68267dcb73c 100644
--- a/apps/federation/lib/Controller/SettingsController.php
+++ b/apps/federation/lib/Controller/SettingsController.php
@@ -26,7 +26,6 @@ namespace OCA\Federation\Controller;
use OC\HintException;
use OCA\Federation\TrustedServers;
use OCP\AppFramework\Controller;
-use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\IL10N;
use OCP\IRequest;
diff --git a/apps/federation/lib/DAV/FedAuth.php b/apps/federation/lib/DAV/FedAuth.php
index ae78ffeded9..511888f7683 100644
--- a/apps/federation/lib/DAV/FedAuth.php
+++ b/apps/federation/lib/DAV/FedAuth.php
@@ -63,6 +63,6 @@ class FedAuth extends AbstractBasic {
/**
* @inheritdoc
*/
- function challenge(RequestInterface $request, ResponseInterface $response) {
+ public function challenge(RequestInterface $request, ResponseInterface $response) {
}
}
diff --git a/apps/federation/lib/DbHandler.php b/apps/federation/lib/DbHandler.php
index c938cfb1583..04968daf0fd 100644
--- a/apps/federation/lib/DbHandler.php
+++ b/apps/federation/lib/DbHandler.php
@@ -88,11 +88,11 @@ class DbHandler {
if ($result) {
return (int)$this->connection->lastInsertId('*PREFIX*'.$this->dbTable);
- } else {
- $message = 'Internal failure, Could not add trusted server: ' . $url;
- $message_t = $this->IL10N->t('Could not add server');
- throw new HintException($message, $message_t);
}
+
+ $message = 'Internal failure, Could not add trusted server: ' . $url;
+ $message_t = $this->IL10N->t('Could not add server');
+ throw new HintException($message, $message_t);
}
/**
@@ -137,8 +137,11 @@ class DbHandler {
*/
public function getAllServer() {
$query = $this->connection->getQueryBuilder();
- $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token'])->from($this->dbTable);
- $result = $query->execute()->fetchAll();
+ $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token'])
+ ->from($this->dbTable);
+ $statement = $query->execute();
+ $result = $statement->fetchAll();
+ $statement->closeCursor();
return $result;
}
@@ -151,10 +154,13 @@ class DbHandler {
public function serverExists($url) {
$hash = $this->hash($url);
$query = $this->connection->getQueryBuilder();
- $query->select('url')->from($this->dbTable)
+ $query->select('url')
+ ->from($this->dbTable)
->where($query->expr()->eq('url_hash', $query->createParameter('url_hash')))
->setParameter('url_hash', $hash);
- $result = $query->execute()->fetchAll();
+ $statement = $query->execute();
+ $result = $statement->fetchAll();
+ $statement->closeCursor();
return !empty($result);
}
@@ -190,7 +196,9 @@ class DbHandler {
->where($query->expr()->eq('url_hash', $query->createParameter('url_hash')))
->setParameter('url_hash', $hash);
- $result = $query->execute()->fetch();
+ $statement = $query->execute();
+ $result = $statement->fetch();
+ $statement->closeCursor();
if (!isset($result['token'])) {
throw new \Exception('No token found for: ' . $url);
@@ -229,7 +237,9 @@ class DbHandler {
->where($query->expr()->eq('url_hash', $query->createParameter('url_hash')))
->setParameter('url_hash', $hash);
- $result = $query->execute()->fetch();
+ $statement = $query->execute();
+ $result = $statement->fetch();
+ $statement->closeCursor();
return $result['shared_secret'];
}
@@ -265,7 +275,9 @@ class DbHandler {
->where($query->expr()->eq('url_hash', $query->createParameter('url_hash')))
->setParameter('url_hash', $hash);
- $result = $query->execute()->fetch();
+ $statement = $query->execute();
+ $result = $statement->fetch();
+ $statement->closeCursor();
return (int)$result['status'];
}
@@ -314,7 +326,9 @@ class DbHandler {
$query->select('url')->from($this->dbTable)
->where($query->expr()->eq('shared_secret', $query->createNamedParameter($password)));
- $result = $query->execute()->fetch();
+ $statement = $query->execute();
+ $result = $statement->fetch();
+ $statement->closeCursor();
return !empty($result);
}
diff --git a/apps/federation/lib/Middleware/AddServerMiddleware.php b/apps/federation/lib/Middleware/AddServerMiddleware.php
index 71e517f6b87..082596216c8 100644
--- a/apps/federation/lib/Middleware/AddServerMiddleware.php
+++ b/apps/federation/lib/Middleware/AddServerMiddleware.php
@@ -26,6 +26,7 @@ namespace OCA\Federation\Middleware;
use OC\HintException;
use OCA\Federation\Controller\SettingsController;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Middleware;
@@ -43,6 +44,11 @@ class AddServerMiddleware extends Middleware {
/** @var ILogger */
protected $logger;
+ /**
+ * @param string $appName
+ * @param IL10N $l
+ * @param ILogger $logger
+ */
public function __construct($appName, IL10N $l, ILogger $logger) {
$this->appName = $appName;
$this->l = $l;
@@ -52,10 +58,11 @@ class AddServerMiddleware extends Middleware {
/**
* Log error message and return a response which can be displayed to the user
*
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param \Exception $exception
* @return JSONResponse
+ * @throws \Exception
*/
public function afterException($controller, $methodName, \Exception $exception) {
if (($controller instanceof SettingsController) === false) {
diff --git a/apps/federation/lib/SyncJob.php b/apps/federation/lib/SyncJob.php
index 060504efb7b..2e5d1578ba2 100644
--- a/apps/federation/lib/SyncJob.php
+++ b/apps/federation/lib/SyncJob.php
@@ -24,20 +24,31 @@ namespace OCA\Federation;
use OC\BackgroundJob\TimedJob;
use OCA\Federation\AppInfo\Application;
+use OCP\ILogger;
class SyncJob extends TimedJob {
- public function __construct() {
+ /** @var SyncFederationAddressBooks */
+ protected $syncService;
+
+ /** @var ILogger */
+ protected $logger;
+
+ /**
+ * @param SyncFederationAddressBooks $syncService
+ * @param ILogger $logger
+ */
+ public function __construct(SyncFederationAddressBooks $syncService, ILogger $logger) {
// Run once a day
$this->setInterval(24 * 60 * 60);
+ $this->syncService = $syncService;
+ $this->logger = $logger;
}
protected function run($argument) {
- $app = new Application();
- $ss = $app->getSyncService();
- $ss->syncThemAll(function($url, $ex) {
+ $this->syncService->syncThemAll(function($url, $ex) {
if ($ex instanceof \Exception) {
- \OC::$server->getLogger()->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']);
+ $this->logger->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']);
}
});
}
diff --git a/apps/federation/lib/TrustedServers.php b/apps/federation/lib/TrustedServers.php
index 9bf1452eab3..067cf671a96 100644
--- a/apps/federation/lib/TrustedServers.php
+++ b/apps/federation/lib/TrustedServers.php
@@ -28,6 +28,7 @@ namespace OCA\Federation;
use OC\HintException;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
@@ -68,6 +69,9 @@ class TrustedServers {
/** @var EventDispatcherInterface */
private $dispatcher;
+ /** @var ITimeFactory */
+ private $timeFactory;
+
/**
* @param DbHandler $dbHandler
* @param IClientService $httpClientService
@@ -76,6 +80,7 @@ class TrustedServers {
* @param ISecureRandom $secureRandom
* @param IConfig $config
* @param EventDispatcherInterface $dispatcher
+ * @param ITimeFactory $timeFactory
*/
public function __construct(
DbHandler $dbHandler,
@@ -84,7 +89,8 @@ class TrustedServers {
IJobList $jobList,
ISecureRandom $secureRandom,
IConfig $config,
- EventDispatcherInterface $dispatcher
+ EventDispatcherInterface $dispatcher,
+ ITimeFactory $timeFactory
) {
$this->dbHandler = $dbHandler;
$this->httpClientService = $httpClientService;
@@ -93,6 +99,7 @@ class TrustedServers {
$this->secureRandom = $secureRandom;
$this->config = $config;
$this->dispatcher = $dispatcher;
+ $this->timeFactory = $timeFactory;
}
/**
@@ -111,7 +118,8 @@ class TrustedServers {
'OCA\Federation\BackgroundJob\RequestSharedSecret',
[
'url' => $url,
- 'token' => $token
+ 'token' => $token,
+ 'created' => $this->timeFactory->getTime()
]
);
}
diff --git a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
index 6364ddaedff..8759392caea 100644
--- a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
+++ b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
@@ -31,8 +31,10 @@ use OCA\Files_Sharing\Tests\TestCase;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClient;
+use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
use OCP\ILogger;
use OCP\IURLGenerator;
@@ -47,36 +49,43 @@ use OCP\OCS\IDiscoveryService;
*/
class GetSharedSecretTest extends TestCase {
- /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */
private $httpClient;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */
+ private $httpClientService;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */
private $jobList;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */
private $urlGenerator;
- /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */
private $trustedServers;
- /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */
private $dbHandler;
- /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */
private $logger;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */
private $response;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */
private $discoverService;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */
+ private $timeFactory;
+
/** @var GetSharedSecret */
private $getSharedSecret;
public function setUp() {
parent::setUp();
+ $this->httpClientService = $this->createMock(IClientService::class);
$this->httpClient = $this->getMockBuilder(IClient::class)->getMock();
$this->jobList = $this->getMockBuilder(IJobList::class)->getMock();
$this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock();
@@ -87,17 +96,20 @@ class GetSharedSecretTest extends TestCase {
$this->logger = $this->getMockBuilder(ILogger::class)->getMock();
$this->response = $this->getMockBuilder(IResponse::class)->getMock();
$this->discoverService = $this->getMockBuilder(IDiscoveryService::class)->getMock();
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
$this->discoverService->expects($this->any())->method('discover')->willReturn([]);
+ $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient);
$this->getSharedSecret = new GetSharedSecret(
- $this->httpClient,
+ $this->httpClientService,
$this->urlGenerator,
$this->jobList,
$this->trustedServers,
$this->logger,
$this->dbHandler,
- $this->discoverService
+ $this->discoverService,
+ $this->timeFactory
);
}
@@ -112,16 +124,17 @@ class GetSharedSecretTest extends TestCase {
$getSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\GetSharedSecret')
->setConstructorArgs(
[
- $this->httpClient,
+ $this->httpClientService,
$this->urlGenerator,
$this->jobList,
$this->trustedServers,
$this->logger,
$this->dbHandler,
- $this->discoverService
+ $this->discoverService,
+ $this->timeFactory
]
)->setMethods(['parentExecute'])->getMock();
- $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url']]);
+ $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]);
$this->trustedServers->expects($this->once())->method('isTrustedServer')
->with('url')->willReturn($isTrustedServer);
@@ -131,10 +144,23 @@ class GetSharedSecretTest extends TestCase {
$getSharedSecret->expects($this->never())->method('parentExecute');
}
$this->invokePrivate($getSharedSecret, 'retainJob', [$retainBackgroundJob]);
+ $this->jobList->expects($this->once())->method('remove');
+
+ $this->timeFactory->method('getTime')->willReturn(42);
+
if ($retainBackgroundJob) {
- $this->jobList->expects($this->never())->method('remove');
+ $this->jobList->expects($this->once())
+ ->method('add')
+ ->with(
+ GetSharedSecret::class,
+ [
+ 'url' => 'url',
+ 'token' => 'token',
+ 'created' => 42,
+ ]
+ );
} else {
- $this->jobList->expects($this->once())->method('remove');
+ $this->jobList->expects($this->never())->method('add');
}
$getSharedSecret->execute($this->jobList);
@@ -155,13 +181,15 @@ class GetSharedSecretTest extends TestCase {
* @param int $statusCode
*/
public function testRun($statusCode) {
-
$target = 'targetURL';
$source = 'sourceURL';
$token = 'token';
$argument = ['url' => $target, 'token' => $token];
+ $this->timeFactory->method('getTime')
+ ->willReturn(42);
+
$this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/')
->willReturn($source);
$this->httpClient->expects($this->once())->method('get')
@@ -208,7 +236,6 @@ class GetSharedSecretTest extends TestCase {
} else {
$this->assertFalse($this->invokePrivate($this->getSharedSecret, 'retainJob'));
}
-
}
public function dataTestRun() {
@@ -219,4 +246,33 @@ class GetSharedSecretTest extends TestCase {
];
}
+ public function testRunExpired() {
+ $target = 'targetURL';
+ $source = 'sourceURL';
+ $token = 'token';
+ $created = 42;
+
+ $argument = [
+ 'url' => $target,
+ 'token' => $token,
+ 'created' => $created,
+ ];
+
+ $this->urlGenerator->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('/')
+ ->willReturn($source);
+
+ $this->timeFactory->method('getTime')
+ ->willReturn($created + 2592000 + 1);
+
+ $this->trustedServers->expects($this->once())
+ ->method('setServerStatus')
+ ->with(
+ $target,
+ TrustedServers::STATUS_FAILURE
+ );
+
+ $this->invokePrivate($this->getSharedSecret, 'run', [$argument]);
+ }
}
diff --git a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
index 06da29d17fc..276180e5137 100644
--- a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
+++ b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
@@ -29,42 +29,55 @@ use OCA\Federation\BackgroundJob\RequestSharedSecret;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClient;
+use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
+use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\OCS\IDiscoveryService;
use Test\TestCase;
class RequestSharedSecretTest extends TestCase {
- /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */
+ private $httpClientService;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */
private $httpClient;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */
private $jobList;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */
private $urlGenerator;
- /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */
private $dbHandler;
- /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */
private $trustedServers;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */
private $response;
- /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */
private $discoveryService;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */
+ private $logger;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */
+ private $timeFactory;
+
/** @var RequestSharedSecret */
private $requestSharedSecret;
public function setUp() {
parent::setUp();
+ $this->httpClientService = $this->createMock(IClientService::class);
$this->httpClient = $this->getMockBuilder(IClient::class)->getMock();
$this->jobList = $this->getMockBuilder(IJobList::class)->getMock();
$this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock();
@@ -74,16 +87,21 @@ class RequestSharedSecretTest extends TestCase {
->disableOriginalConstructor()->getMock();
$this->response = $this->getMockBuilder(IResponse::class)->getMock();
$this->discoveryService = $this->getMockBuilder(IDiscoveryService::class)->getMock();
+ $this->logger = $this->createMock(ILogger::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
$this->discoveryService->expects($this->any())->method('discover')->willReturn([]);
+ $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient);
$this->requestSharedSecret = new RequestSharedSecret(
- $this->httpClient,
+ $this->httpClientService,
$this->urlGenerator,
$this->jobList,
$this->trustedServers,
$this->dbHandler,
- $this->discoveryService
+ $this->discoveryService,
+ $this->logger,
+ $this->timeFactory
);
}
@@ -98,15 +116,17 @@ class RequestSharedSecretTest extends TestCase {
$requestSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\RequestSharedSecret')
->setConstructorArgs(
[
- $this->httpClient,
+ $this->httpClientService,
$this->urlGenerator,
$this->jobList,
$this->trustedServers,
$this->dbHandler,
- $this->discoveryService
+ $this->discoveryService,
+ $this->logger,
+ $this->timeFactory
]
)->setMethods(['parentExecute'])->getMock();
- $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url']]);
+ $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]);
$this->trustedServers->expects($this->once())->method('isTrustedServer')
->with('url')->willReturn($isTrustedServer);
@@ -116,10 +136,23 @@ class RequestSharedSecretTest extends TestCase {
$requestSharedSecret->expects($this->never())->method('parentExecute');
}
$this->invokePrivate($requestSharedSecret, 'retainJob', [$retainBackgroundJob]);
+ $this->jobList->expects($this->once())->method('remove');
+
+ $this->timeFactory->method('getTime')->willReturn(42);
+
if ($retainBackgroundJob) {
- $this->jobList->expects($this->never())->method('remove');
+ $this->jobList->expects($this->once())
+ ->method('add')
+ ->with(
+ RequestSharedSecret::class,
+ [
+ 'url' => 'url',
+ 'token' => 'token',
+ 'created' => 42,
+ ]
+ );
} else {
- $this->jobList->expects($this->once())->method('remove');
+ $this->jobList->expects($this->never())->method('add');
}
$requestSharedSecret->execute($this->jobList);
@@ -147,6 +180,8 @@ class RequestSharedSecretTest extends TestCase {
$argument = ['url' => $target, 'token' => $token];
+ $this->timeFactory->method('getTime')->willReturn(42);
+
$this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/')
->willReturn($source);
$this->httpClient->expects($this->once())->method('post')
@@ -195,4 +230,34 @@ class RequestSharedSecretTest extends TestCase {
[Http::STATUS_CONFLICT],
];
}
+
+ public function testRunExpired() {
+ $target = 'targetURL';
+ $source = 'sourceURL';
+ $token = 'token';
+ $created = 42;
+
+ $argument = [
+ 'url' => $target,
+ 'token' => $token,
+ 'created' => $created,
+ ];
+
+ $this->urlGenerator->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('/')
+ ->willReturn($source);
+
+ $this->timeFactory->method('getTime')
+ ->willReturn($created + 2592000 + 1);
+
+ $this->trustedServers->expects($this->once())
+ ->method('setServerStatus')
+ ->with(
+ $target,
+ TrustedServers::STATUS_FAILURE
+ );
+
+ $this->invokePrivate($this->requestSharedSecret, 'run', [$argument]);
+ }
}
diff --git a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php
index 2b231b4fca0..ef6c7c80bfc 100644
--- a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php
+++ b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php
@@ -29,8 +29,8 @@ use OC\BackgroundJob\JobList;
use OCA\Federation\Controller\OCSAuthAPIController;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
-use OCP\AppFramework\Http;
use OCP\AppFramework\OCS\OCSForbiddenException;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\ILogger;
use OCP\IRequest;
use OCP\Security\ISecureRandom;
@@ -38,40 +38,45 @@ use Test\TestCase;
class OCSAuthAPIControllerTest extends TestCase {
- /** @var \PHPUnit_Framework_MockObject_MockObject | IRequest */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IRequest */
private $request;
- /** @var \PHPUnit_Framework_MockObject_MockObject | ISecureRandom */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ISecureRandom */
private $secureRandom;
- /** @var \PHPUnit_Framework_MockObject_MockObject | JobList */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|JobList */
private $jobList;
- /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */
private $trustedServers;
- /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */
private $dbHandler;
- /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */
private $logger;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */
+ private $timeFactory;
+
+
/** @var OCSAuthAPIController */
private $ocsAuthApi;
+ /** @var int simulated timestamp */
+ private $currentTime = 1234567;
+
public function setUp() {
parent::setUp();
- $this->request = $this->getMockBuilder('OCP\IRequest')->getMock();
- $this->secureRandom = $this->getMockBuilder('OCP\Security\ISecureRandom')->getMock();
- $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers')
- ->disableOriginalConstructor()->getMock();
- $this->dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler')
- ->disableOriginalConstructor()->getMock();
- $this->jobList = $this->getMockBuilder('OC\BackgroundJob\JobList')
- ->disableOriginalConstructor()->getMock();
- $this->logger = $this->getMockBuilder('OCP\ILogger')
- ->disableOriginalConstructor()->getMock();
+ $this->request = $this->createMock(IRequest::class);
+ $this->secureRandom = $this->createMock(ISecureRandom::class);
+ $this->trustedServers = $this->createMock(TrustedServers::class);
+ $this->dbHandler = $this->createMock(DbHandler::class);
+ $this->jobList = $this->createMock(JobList::class);
+ $this->logger = $this->createMock(ILogger::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
+
$this->ocsAuthApi = new OCSAuthAPIController(
'federation',
@@ -80,9 +85,13 @@ class OCSAuthAPIControllerTest extends TestCase {
$this->jobList,
$this->trustedServers,
$this->dbHandler,
- $this->logger
+ $this->logger,
+ $this->timeFactory
);
+ $this->timeFactory->method('getTime')
+ ->willReturn($this->currentTime);
+
}
/**
@@ -105,9 +114,7 @@ class OCSAuthAPIControllerTest extends TestCase {
if ($ok) {
$this->jobList->expects($this->once())->method('add')
- ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token]);
- $this->jobList->expects($this->once())->method('remove')
- ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', ['url' => $url, 'token' => $localToken]);
+ ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token, 'created' => $this->currentTime]);
} else {
$this->jobList->expects($this->never())->method('add');
$this->jobList->expects($this->never())->method('remove');
@@ -151,7 +158,8 @@ class OCSAuthAPIControllerTest extends TestCase {
$this->jobList,
$this->trustedServers,
$this->dbHandler,
- $this->logger
+ $this->logger,
+ $this->timeFactory
]
)->setMethods(['isValidToken'])->getMock();
diff --git a/apps/federation/tests/TrustedServersTest.php b/apps/federation/tests/TrustedServersTest.php
index 598c2f01c90..5995c5e4462 100644
--- a/apps/federation/tests/TrustedServersTest.php
+++ b/apps/federation/tests/TrustedServersTest.php
@@ -29,6 +29,7 @@ namespace OCA\Federation\Tests;
use OCA\Federation\DbHandler;
use OCA\Federation\TrustedServers;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService;
@@ -71,6 +72,9 @@ class TrustedServersTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject | EventDispatcherInterface */
private $dispatcher;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */
+ private $timeFactory;
+
public function setUp() {
parent::setUp();
@@ -85,6 +89,7 @@ class TrustedServersTest extends TestCase {
$this->jobList = $this->getMockBuilder(IJobList::class)->getMock();
$this->secureRandom = $this->getMockBuilder(ISecureRandom::class)->getMock();
$this->config = $this->getMockBuilder(IConfig::class)->getMock();
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
$this->trustedServers = new TrustedServers(
$this->dbHandler,
@@ -93,7 +98,8 @@ class TrustedServersTest extends TestCase {
$this->jobList,
$this->secureRandom,
$this->config,
- $this->dispatcher
+ $this->dispatcher,
+ $this->timeFactory
);
}
@@ -114,13 +120,16 @@ class TrustedServersTest extends TestCase {
$this->jobList,
$this->secureRandom,
$this->config,
- $this->dispatcher
+ $this->dispatcher,
+ $this->timeFactory
]
)
->setMethods(['normalizeUrl', 'updateProtocol'])
->getMock();
$trustedServers->expects($this->once())->method('updateProtocol')
->with('url')->willReturn('https://url');
+ $this->timeFactory->method('getTime')
+ ->willReturn(1234567);
$this->dbHandler->expects($this->once())->method('addServer')->with('https://url')
->willReturn($success);
@@ -130,7 +139,7 @@ class TrustedServersTest extends TestCase {
$this->dbHandler->expects($this->once())->method('addToken')->with('https://url', 'token');
$this->jobList->expects($this->once())->method('add')
->with('OCA\Federation\BackgroundJob\RequestSharedSecret',
- ['url' => 'https://url', 'token' => 'token']);
+ ['url' => 'https://url', 'token' => 'token', 'created' => 1234567]);
} else {
$this->jobList->expects($this->never())->method('add');
}
@@ -272,7 +281,8 @@ class TrustedServersTest extends TestCase {
$this->jobList,
$this->secureRandom,
$this->config,
- $this->dispatcher
+ $this->dispatcher,
+ $this->timeFactory
]
)
->setMethods(['checkOwnCloudVersion'])
diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php
index 17a7fd8b322..7c33cdec6dd 100644
--- a/apps/files/ajax/download.php
+++ b/apps/files/ajax/download.php
@@ -51,7 +51,7 @@ if(isset($_GET['downloadStartSecret'])
setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/');
}
-$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() == 'HEAD' );
+$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() === 'HEAD' );
/**
* Http range requests support
diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js
index dd98da272b8..c0bab248d0b 100644
--- a/apps/files/l10n/bg.js
+++ b/apps/files/l10n/bg.js
@@ -95,9 +95,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл беше добавен или премахнат от <strong>предпочитанията</strong> ви",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "<strong>Промяна</strong> или <strong>преименуване</strong> на файл / папка",
"A new file or folder has been <strong>created</strong>" : "<strong>Създаване</strong> на нов файл / папка",
- "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Изпращай известия само при създаване / промяна на <strong>любими файлове</strong> <em>(Само за потока)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"Upload (max. %s)" : "Качи (макс. %s)",
"File handling" : "Операция с файла",
"Maximum upload size" : "Максимален размер",
@@ -132,6 +130,8 @@ OC.L10N.register(
"Copy local link" : "Копиране на локална връзка",
"Folder" : "Папка",
"Upload" : "Качване",
+ "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"No favorites" : "Няма любими"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json
index ad974585339..f564a86682f 100644
--- a/apps/files/l10n/bg.json
+++ b/apps/files/l10n/bg.json
@@ -93,9 +93,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл беше добавен или премахнат от <strong>предпочитанията</strong> ви",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "<strong>Промяна</strong> или <strong>преименуване</strong> на файл / папка",
"A new file or folder has been <strong>created</strong>" : "<strong>Създаване</strong> на нов файл / папка",
- "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Изпращай известия само при създаване / промяна на <strong>любими файлове</strong> <em>(Само за потока)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"Upload (max. %s)" : "Качи (макс. %s)",
"File handling" : "Операция с файла",
"Maximum upload size" : "Максимален размер",
@@ -130,6 +128,8 @@
"Copy local link" : "Копиране на локална връзка",
"Folder" : "Папка",
"Upload" : "Качване",
+ "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"No favorites" : "Няма любими"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index e6bbe737e7c..a4aa82d0c29 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Soubor byl přidán, nebo odstraněn z vašich <strong>oblíbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Soubor nebo adresář byl <strong>změněn</strong> nebo <strong>přejmenován</strong>",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
- "A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Soubor nebo adresář byl <strong>smazán</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omezovat oznámení o tvorbě a změnách <strong>oblíbených souborů</strong> <em>(Pouze v proudu)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Soubor nebo adresář byl <strong>obnoven</strong>",
"Unlimited" : "Neomezeně",
"Upload (max. %s)" : "Nahrát (max. %s)",
"File handling" : "Zacházení se soubory",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Kopírovat místní odkaz",
"Folder" : "Adresář",
"Upload" : "Odeslat",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>",
"No favorites" : "Žádné oblíbené"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index 58b22f78aff..e49eeb474e3 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Soubor byl přidán, nebo odstraněn z vašich <strong>oblíbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Soubor nebo adresář byl <strong>změněn</strong> nebo <strong>přejmenován</strong>",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
- "A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Soubor nebo adresář byl <strong>smazán</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omezovat oznámení o tvorbě a změnách <strong>oblíbených souborů</strong> <em>(Pouze v proudu)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Soubor nebo adresář byl <strong>obnoven</strong>",
"Unlimited" : "Neomezeně",
"Upload (max. %s)" : "Nahrát (max. %s)",
"File handling" : "Zacházení se soubory",
@@ -144,6 +144,8 @@
"Copy local link" : "Kopírovat místní odkaz",
"Folder" : "Adresář",
"Upload" : "Odeslat",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>",
"No favorites" : "Žádné oblíbené"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 7ab696ede41..fecad3ff6e9 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -102,9 +102,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil er blevet tilføjet eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong> eller <strong>omdøbt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe er blevet <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begræns noter om oprettelse og ændringer af dine <strong>favorit filer</strong> <em>(Kun streaming)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe er blevet <strong>gendannet</strong>",
"Unlimited" : "Ubegrænset",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "Filhåndtering",
@@ -146,6 +144,8 @@ OC.L10N.register(
"Copy local link" : "Kopier lokalt link",
"Folder" : "Mappe",
"Upload" : "Upload",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe er blevet <strong>slettet</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe er blevet <strong>gendannet</strong>",
"No favorites" : "Ingen foretrukne"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 5c10d48e6de..254eb6feb78 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -100,9 +100,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil er blevet tilføjet eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong> eller <strong>omdøbt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe er blevet <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begræns noter om oprettelse og ændringer af dine <strong>favorit filer</strong> <em>(Kun streaming)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe er blevet <strong>gendannet</strong>",
"Unlimited" : "Ubegrænset",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "Filhåndtering",
@@ -144,6 +142,8 @@
"Copy local link" : "Kopier lokalt link",
"Folder" : "Mappe",
"Upload" : "Upload",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe er blevet <strong>slettet</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe er blevet <strong>gendannet</strong>",
"No favorites" : "Ingen foretrukne"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 5529ab11700..1dcf01fba70 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf Deine <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>",
"Unlimited" : "Unbegrenzt",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"Upload" : "Hochladen",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"No favorites" : "Keine Favoriten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index d1f1dc133e8..494353aea13 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf Deine <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>",
"Unlimited" : "Unbegrenzt",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
@@ -144,6 +144,8 @@
"Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"Upload" : "Hochladen",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"No favorites" : "Keine Favoriten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 794e005d07a..8185d6bc6d2 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Ihren <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>",
"Unlimited" : "Unbegrenzt",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"Upload" : "Hochladen",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"No favorites" : "Keine Favoriten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 4e80535816c..3e18b9d8886 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Ihren <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>",
"Unlimited" : "Unbegrenzt",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
@@ -144,6 +144,8 @@
"Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"Upload" : "Hochladen",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"No favorites" : "Keine Favoriten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 077141acebd..c405fefb9fd 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -65,12 +65,14 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)" : "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ταιριάζουν '{filter}' ","ταιριάζουν '{filter}'"],
"View in folder" : "Προβολή στον φάκελο",
+ "Copied!" : "Αντιγράφηκε!",
"Copy direct link (only works for users who have access to this file/folder)" : "Αντιγραφή άμεσου συνδέσμου (λειτουργεί μόνο για χρήστες που έχουν πρόσβαση στο αρχείο/φάκελο)",
"Path" : "Διαδρομή",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
"New folder" : "Νέος φάκελος",
+ "Upload file" : "Αποστολή αρχείου",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"Added to favorites" : "Προσθήκη στα αγαπημένα",
"Removed from favorites" : "Αφαίρεση από τα αγαπημένα",
@@ -83,6 +85,7 @@ OC.L10N.register(
"Restored by {user}" : "Επαναφέρθηκε από {user}",
"Renamed by {user}" : "Μετονομάστηκε από {user}",
"Moved by {user}" : "Μετακινήθηκε από {user}",
+ "\"remote user\"" : "\"απομακρυσμένος χρήστης\"",
"You created {file}" : "Δημιουργήσατε {file}",
"{user} created {file}" : "{user} δημηούργησε {file}",
"{file} was created in a public folder" : "{file} δημιουργήθηκε σε δημόσιο φάκελο",
@@ -99,9 +102,10 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Ένα αρχείο έχει προστεθεί ή αφαιρεθεί από τα <strong>αγαπημένα</strong> σας",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Ένα αρχείο ή φάκελος έχει <strong>αλλάξει</strong> ή <strong>μετονομάστηκε</strong>",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα <strong>αγαπημένα σας αρχεία</strong> <em>(Μόνο Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>επαναφερθεί</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Έγινε <strong>επαναφορά</strong> ενός αρχείου ή φακέλου",
+ "Unlimited" : "Απεριόριστο",
"Upload (max. %s)" : "Διαμοιρασμός (max. %s)",
"File handling" : "Διαχείριση αρχείων",
"Maximum upload size" : "Μέγιστο μέγεθος αποστολής",
@@ -109,6 +113,8 @@ OC.L10N.register(
"Save" : "Αποθήκευση",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Με PHP-FPM μπορεί να χρειαστούν μέχρι και 5 λεπτά για να ενεργοποιηθούν οι αλλαγές.",
"Missing permissions to edit from here." : "Δεν υπάρχουν τα απαραίτητα δικαιώματα για να γίνει τροποποιήση σε αυτό το σημείο.",
+ "%s of %s used" : "%s από %s σε χρήση",
+ "%s used" : "%sσε χρήση",
"Settings" : "Ρυθμίσεις",
"Show hidden files" : "Εμφάνιση κρυφών αρχείων",
"WebDAV" : "WebDAV",
@@ -140,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Αντιγραφή τοπικού συνδέσμου",
"Folder" : "Φάκελος",
"Upload" : "Μεταφόρτωση",
+ "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>επαναφερθεί</strong>",
"No favorites" : "Δεν υπάρχουν αγαπημένα"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index e6246af4127..40b3a86a7c7 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -63,12 +63,14 @@
"Your storage is almost full ({usedSpacePercent}%)" : "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ταιριάζουν '{filter}' ","ταιριάζουν '{filter}'"],
"View in folder" : "Προβολή στον φάκελο",
+ "Copied!" : "Αντιγράφηκε!",
"Copy direct link (only works for users who have access to this file/folder)" : "Αντιγραφή άμεσου συνδέσμου (λειτουργεί μόνο για χρήστες που έχουν πρόσβαση στο αρχείο/φάκελο)",
"Path" : "Διαδρομή",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
"New folder" : "Νέος φάκελος",
+ "Upload file" : "Αποστολή αρχείου",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"Added to favorites" : "Προσθήκη στα αγαπημένα",
"Removed from favorites" : "Αφαίρεση από τα αγαπημένα",
@@ -81,6 +83,7 @@
"Restored by {user}" : "Επαναφέρθηκε από {user}",
"Renamed by {user}" : "Μετονομάστηκε από {user}",
"Moved by {user}" : "Μετακινήθηκε από {user}",
+ "\"remote user\"" : "\"απομακρυσμένος χρήστης\"",
"You created {file}" : "Δημιουργήσατε {file}",
"{user} created {file}" : "{user} δημηούργησε {file}",
"{file} was created in a public folder" : "{file} δημιουργήθηκε σε δημόσιο φάκελο",
@@ -97,9 +100,10 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Ένα αρχείο έχει προστεθεί ή αφαιρεθεί από τα <strong>αγαπημένα</strong> σας",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Ένα αρχείο ή φάκελος έχει <strong>αλλάξει</strong> ή <strong>μετονομάστηκε</strong>",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα <strong>αγαπημένα σας αρχεία</strong> <em>(Μόνο Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>επαναφερθεί</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Έγινε <strong>επαναφορά</strong> ενός αρχείου ή φακέλου",
+ "Unlimited" : "Απεριόριστο",
"Upload (max. %s)" : "Διαμοιρασμός (max. %s)",
"File handling" : "Διαχείριση αρχείων",
"Maximum upload size" : "Μέγιστο μέγεθος αποστολής",
@@ -107,6 +111,8 @@
"Save" : "Αποθήκευση",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Με PHP-FPM μπορεί να χρειαστούν μέχρι και 5 λεπτά για να ενεργοποιηθούν οι αλλαγές.",
"Missing permissions to edit from here." : "Δεν υπάρχουν τα απαραίτητα δικαιώματα για να γίνει τροποποιήση σε αυτό το σημείο.",
+ "%s of %s used" : "%s από %s σε χρήση",
+ "%s used" : "%sσε χρήση",
"Settings" : "Ρυθμίσεις",
"Show hidden files" : "Εμφάνιση κρυφών αρχείων",
"WebDAV" : "WebDAV",
@@ -138,6 +144,8 @@
"Copy local link" : "Αντιγραφή τοπικού συνδέσμου",
"Folder" : "Φάκελος",
"Upload" : "Μεταφόρτωση",
+ "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>επαναφερθεί</strong>",
"No favorites" : "Δεν υπάρχουν αγαπημένα"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index 2360d9ba6b2..3434865138f 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "A file has been added to or removed from your <strong>favourites</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "A file or folder has been <strong>deleted</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favourite files</strong> <em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
+ "A file or folder has been <strong>restored</strong>" : "A file or folder has been <strong>restored</strong>",
"Unlimited" : "Unlimited",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "File handling",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copy local link",
"Folder" : "Folder",
"Upload" : "Upload",
+ "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
"No favorites" : "No favourites"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index f8cf6819fca..517a08135d3 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "A file has been added to or removed from your <strong>favourites</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "A file or folder has been <strong>deleted</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favourite files</strong> <em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
+ "A file or folder has been <strong>restored</strong>" : "A file or folder has been <strong>restored</strong>",
"Unlimited" : "Unlimited",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "File handling",
@@ -144,6 +144,8 @@
"Copy local link" : "Copy local link",
"Folder" : "Folder",
"Upload" : "Upload",
+ "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
"No favorites" : "No favourites"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 817f003d486..48362ef9e64 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -53,7 +53,7 @@ OC.L10N.register(
"_%n file_::_%n files_" : ["%n archivo","%n archivos"],
"{dirs} and {files}" : "{dirs} y {files}",
"_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos"],
- "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.",
+ "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
"New" : "Nuevo",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
@@ -69,7 +69,7 @@ OC.L10N.register(
"Copy direct link (only works for users who have access to this file/folder)" : "Copiae enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"Path" : "Ruta",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
- "Favorited" : "Agregado a Favoritos",
+ "Favorited" : "Agregado a favoritos",
"Favorite" : "Favorito",
"New folder" : "Nueva carpeta",
"Upload file" : "Subir archivo",
@@ -100,11 +100,11 @@ OC.L10N.register(
"You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>.",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>.",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar las notificaiones acerca de la creación y cambios de sus <strong>archivos favoritos</strong><em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo o carpeta ha sido <strong>restaurado</strong>.",
+ "A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar las notificaciones acerca de la creación y cambios de sus <strong>archivos favoritos</strong> <em>(solo flujos)</em>",
+ "A file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Subida (máx. %s)",
"File handling" : "Administración de archivos",
@@ -118,9 +118,9 @@ OC.L10N.register(
"Settings" : "Ajustes",
"Show hidden files" : "Mostrar archivos ocultos",
"WebDAV" : "WebDAV",
- "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Introduce esta dirección <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> en el cliente de ownCloud para acceder a tus archivos a través de él</a>",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Usa esta dirección para <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">acceder tus archivos mediante WebDAV</a>",
"No files in here" : "Aquí no hay archivos",
- "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.",
+ "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!",
"No entries found in this folder" : "No hay entradas en esta carpeta",
"Select all" : "Seleccionar todo",
"Upload too large" : "Subida demasido grande",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copiar enlace local",
"Folder" : "Carpeta",
"Upload" : "Subir",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo o carpeta ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index b6099d03286..7cc7cd81113 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -51,7 +51,7 @@
"_%n file_::_%n files_" : ["%n archivo","%n archivos"],
"{dirs} and {files}" : "{dirs} y {files}",
"_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos"],
- "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.",
+ "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
"New" : "Nuevo",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
@@ -67,7 +67,7 @@
"Copy direct link (only works for users who have access to this file/folder)" : "Copiae enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"Path" : "Ruta",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
- "Favorited" : "Agregado a Favoritos",
+ "Favorited" : "Agregado a favoritos",
"Favorite" : "Favorito",
"New folder" : "Nueva carpeta",
"Upload file" : "Subir archivo",
@@ -98,11 +98,11 @@
"You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>.",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>.",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar las notificaiones acerca de la creación y cambios de sus <strong>archivos favoritos</strong><em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo o carpeta ha sido <strong>restaurado</strong>.",
+ "A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar las notificaciones acerca de la creación y cambios de sus <strong>archivos favoritos</strong> <em>(solo flujos)</em>",
+ "A file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Subida (máx. %s)",
"File handling" : "Administración de archivos",
@@ -116,9 +116,9 @@
"Settings" : "Ajustes",
"Show hidden files" : "Mostrar archivos ocultos",
"WebDAV" : "WebDAV",
- "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Introduce esta dirección <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> en el cliente de ownCloud para acceder a tus archivos a través de él</a>",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Usa esta dirección para <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">acceder tus archivos mediante WebDAV</a>",
"No files in here" : "Aquí no hay archivos",
- "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.",
+ "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!",
"No entries found in this folder" : "No hay entradas en esta carpeta",
"Select all" : "Seleccionar todo",
"Upload too large" : "Subida demasido grande",
@@ -144,6 +144,8 @@
"Copy local link" : "Copiar enlace local",
"Folder" : "Carpeta",
"Upload" : "Subir",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo o carpeta ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js
index 4ddc48ad1cf..6f80543cee0 100644
--- a/apps/files/l10n/es_AR.js
+++ b/apps/files/l10n/es_AR.js
@@ -102,9 +102,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo ha sido agregado o eliminado de sus strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Cargar (max. %s)",
"File handling" : "Administración de archivos",
@@ -146,6 +144,8 @@ OC.L10N.register(
"Copy local link" : "Copiar link local",
"Folder" : "Carpeta",
"Upload" : "Cargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json
index bc688a28994..80cad92731c 100644
--- a/apps/files/l10n/es_AR.json
+++ b/apps/files/l10n/es_AR.json
@@ -100,9 +100,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo ha sido agregado o eliminado de sus strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Cargar (max. %s)",
"File handling" : "Administración de archivos",
@@ -144,6 +142,8 @@
"Copy local link" : "Copiar link local",
"Folder" : "Carpeta",
"Upload" : "Cargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index 249dbb79e44..9c03d86c15d 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -101,10 +101,10 @@ OC.L10N.register(
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo ha sido agregado o eliminado de tus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>",
- "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>created</strong>" : "Un archivo o carpeta ha sido <strong>creado</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>borrado</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limita las notificaciones de la creación y cambios a tus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Cargar (max. %s)",
"File handling" : "Manejo de archivos",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copiar liga local",
"Folder" : "Carpeta",
"Upload" : "Cargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index b74dc2f7946..3beb4cc10b3 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -99,10 +99,10 @@
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo ha sido agregado o eliminado de tus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>",
- "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>created</strong>" : "Un archivo o carpeta ha sido <strong>creado</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>borrado</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limita las notificaciones de la creación y cambios a tus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Cargar (max. %s)",
"File handling" : "Manejo de archivos",
@@ -144,6 +144,8 @@
"Copy local link" : "Copiar liga local",
"Folder" : "Carpeta",
"Upload" : "Cargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>borrado</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un archivo o carpeta ha sido <strong>restaurado</strong>",
"No favorites" : "No hay favoritos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 677fb30951d..3ee50228190 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -101,9 +101,8 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Fitxategi bat gehitu edo kendu da zure <strong>gogokoetatik</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>",
"A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
+ "Unlimited" : "Mugarik gabe",
"Upload (max. %s)" : "Igo (max. %s)",
"File handling" : "Fitxategien kudeaketa",
"Maximum upload size" : "Igo daitekeen gehienezko tamaina",
@@ -142,6 +141,8 @@ OC.L10N.register(
"Copy local link" : "Kopiatu tokiko esteka",
"Folder" : "Karpeta",
"Upload" : "Igo",
+ "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
"No favorites" : "Gogokorik ez"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 115b1126d9d..9bc05236e1e 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -99,9 +99,8 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Fitxategi bat gehitu edo kendu da zure <strong>gogokoetatik</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>",
"A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>",
- "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
+ "Unlimited" : "Mugarik gabe",
"Upload (max. %s)" : "Igo (max. %s)",
"File handling" : "Fitxategien kudeaketa",
"Maximum upload size" : "Igo daitekeen gehienezko tamaina",
@@ -140,6 +139,8 @@
"Copy local link" : "Kopiatu tokiko esteka",
"Folder" : "Karpeta",
"Upload" : "Igo",
+ "A new file or folder has been <strong>deleted</strong>" : "A new file or folder has been <strong>deleted</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "A new file or folder has been <strong>restored</strong>",
"No favorites" : "Gogokorik ez"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index 3a464330d1f..8071de0df98 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -102,9 +102,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Tiedosto on lisätty tai poistettu <strong>suosikeista</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Tiedostoa tai kansiota on <strong>muutettu</strong> tai se on <strong>uudelleennimetty</strong>",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Uusi tiedosto tai kansio on <strong>poistettu</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Rajoita luomis- ja muutosilmoitukset <strong>omiin suosikkitiedostoihin</strong> <em>(Vain listaus)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Uusi tiedosto tai kansio on <strong>palautettu</strong>",
"Unlimited" : "Rajoittamaton",
"Upload (max. %s)" : "Lähetys (enintään %s)",
"File handling" : "Tiedostonhallinta",
@@ -145,6 +143,8 @@ OC.L10N.register(
"Copy local link" : "Kopioi paikallinen linkki",
"Folder" : "Kansio",
"Upload" : "Lähetä",
+ "A new file or folder has been <strong>deleted</strong>" : "Uusi tiedosto tai kansio on <strong>poistettu</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Uusi tiedosto tai kansio on <strong>palautettu</strong>",
"No favorites" : "Ei suosikkeja"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index e899cfb26e9..e7cf0841846 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -100,9 +100,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Tiedosto on lisätty tai poistettu <strong>suosikeista</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Tiedostoa tai kansiota on <strong>muutettu</strong> tai se on <strong>uudelleennimetty</strong>",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Uusi tiedosto tai kansio on <strong>poistettu</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Rajoita luomis- ja muutosilmoitukset <strong>omiin suosikkitiedostoihin</strong> <em>(Vain listaus)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Uusi tiedosto tai kansio on <strong>palautettu</strong>",
"Unlimited" : "Rajoittamaton",
"Upload (max. %s)" : "Lähetys (enintään %s)",
"File handling" : "Tiedostonhallinta",
@@ -143,6 +141,8 @@
"Copy local link" : "Kopioi paikallinen linkki",
"Folder" : "Kansio",
"Upload" : "Lähetä",
+ "A new file or folder has been <strong>deleted</strong>" : "Uusi tiedosto tai kansio on <strong>poistettu</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Uusi tiedosto tai kansio on <strong>palautettu</strong>",
"No favorites" : "Ei suosikkeja"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index ec0b1083590..8237ec4e8ab 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Un fichier a été ajouté ou retiré de vos <strong>favoris</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un fichier ou dossier a été <strong>modifié</strong> ou <strong>renommé</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nouveau fichier ou répertoire a été <strong>supprimé</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limiter les notifications à ce qui concerne la création et la modification de vos <strong>fichiers favoris</strong> <em>(Flux uniquement)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nouveau fichier ou répertoire a été <strong>restauré</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un fichier ou un répertoire a été <strong>restauré</strong>",
"Unlimited" : "Illimité",
"Upload (max. %s)" : "Envoi (max. %s)",
"File handling" : "Gestion de fichiers",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copier le dossier local",
"Folder" : "Dossier",
"Upload" : "Téléverser",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nouveau fichier ou répertoire a été <strong>supprimé</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nouveau fichier ou répertoire a été <strong>restauré</strong>",
"No favorites" : "Aucun favori"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index d6914fd8bf2..996b742b61c 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Un fichier a été ajouté ou retiré de vos <strong>favoris</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un fichier ou dossier a été <strong>modifié</strong> ou <strong>renommé</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nouveau fichier ou répertoire a été <strong>supprimé</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limiter les notifications à ce qui concerne la création et la modification de vos <strong>fichiers favoris</strong> <em>(Flux uniquement)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nouveau fichier ou répertoire a été <strong>restauré</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un fichier ou un répertoire a été <strong>restauré</strong>",
"Unlimited" : "Illimité",
"Upload (max. %s)" : "Envoi (max. %s)",
"File handling" : "Gestion de fichiers",
@@ -144,6 +144,8 @@
"Copy local link" : "Copier le dossier local",
"Folder" : "Dossier",
"Upload" : "Téléverser",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nouveau fichier ou répertoire a été <strong>supprimé</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nouveau fichier ou répertoire a été <strong>restauré</strong>",
"No favorites" : "Aucun favori"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index 36f50e7f54e..72c37b9ce77 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -102,9 +102,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Egy fájl eltávolítva vagy hozzáadva a <strong>kedvenceidhez</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A fájl vagy mappa <strong>megváltozott</strong> vagy <strong>át lett nevezve</strong>",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy mappa <strong>létrehozva</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Szűkítse le az értesítéseket a létrehozásról és a változásokról a <strong>kedvenc fájlok</strong> <em>(Stream only)</em> -ra",
- "A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"Unlimited" : "Korlátlan",
"Upload (max. %s)" : "Feltöltés (max.: %s)",
"File handling" : "Fájlkezelés",
@@ -146,6 +144,8 @@ OC.L10N.register(
"Copy local link" : "Helyi hivatkozás másolása",
"Folder" : "Mappa",
"Upload" : "Feltöltés",
+ "A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"No favorites" : "Nincsenek kedvencek"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 2bef163a121..9a32555d39a 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -100,9 +100,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Egy fájl eltávolítva vagy hozzáadva a <strong>kedvenceidhez</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A fájl vagy mappa <strong>megváltozott</strong> vagy <strong>át lett nevezve</strong>",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy mappa <strong>létrehozva</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Szűkítse le az értesítéseket a létrehozásról és a változásokról a <strong>kedvenc fájlok</strong> <em>(Stream only)</em> -ra",
- "A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"Unlimited" : "Korlátlan",
"Upload (max. %s)" : "Feltöltés (max.: %s)",
"File handling" : "Fájlkezelés",
@@ -144,6 +142,8 @@
"Copy local link" : "Helyi hivatkozás másolása",
"Folder" : "Mappa",
"Upload" : "Feltöltés",
+ "A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"No favorites" : "Nincsenek kedvencek"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js
index b73afd543dc..482c47852b7 100644
--- a/apps/files/l10n/ia.js
+++ b/apps/files/l10n/ia.js
@@ -98,9 +98,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Un file esseva addite a o removite de tu <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un nove file o dossier ha essite <strong>delite</strong> o <strong>renominate</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nove file o dossier ha essite <strong>create</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar notificationes concernente le creation e le modification de tu <strong>files favorite</strong> <em>(Solmente fluxo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nove file o un dossier ha essite <strong>restabilite</strong>",
"Upload (max. %s)" : "Incarga (maxime %s)",
"File handling" : "Gestion de file",
"Maximum upload size" : "Maxime dimension de incarga",
@@ -138,6 +136,8 @@ OC.L10N.register(
"Copy local link" : "Copiar ligamine local",
"Folder" : "Dossier",
"Upload" : "Incargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nove file o un dossier ha essite <strong>restabilite</strong>",
"No favorites" : "Nulle favoritos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json
index 468996a079d..c6321a0b459 100644
--- a/apps/files/l10n/ia.json
+++ b/apps/files/l10n/ia.json
@@ -96,9 +96,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Un file esseva addite a o removite de tu <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un nove file o dossier ha essite <strong>delite</strong> o <strong>renominate</strong>",
"A new file or folder has been <strong>created</strong>" : "Un nove file o dossier ha essite <strong>create</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar notificationes concernente le creation e le modification de tu <strong>files favorite</strong> <em>(Solmente fluxo)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nove file o un dossier ha essite <strong>restabilite</strong>",
"Upload (max. %s)" : "Incarga (maxime %s)",
"File handling" : "Gestion de file",
"Maximum upload size" : "Maxime dimension de incarga",
@@ -136,6 +134,8 @@
"Copy local link" : "Copiar ligamine local",
"Folder" : "Dossier",
"Upload" : "Incargar",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nove file o un dossier ha essite <strong>restabilite</strong>",
"No favorites" : "Nulle favoritos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 85f15d3055c..fb31c3b7f2e 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Skrá var bætt við eða hún fjarlægð úr <strong>eftirlætum</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Skrá eða möppu hefur verið <strong>breytt</strong> eða verið <strong>endurnefnt</strong>",
"A new file or folder has been <strong>created</strong>" : "Skjal eða mappa hefur verið <strong>búin til</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nýrri skrá eða möppu hefur verið <strong>eytt</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Skjali eða möppu hefur verið <strong>eytt</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Takmarka tilkynningar um gerð og breytingar á <strong>eftirlætisskrám</strong> <em>(einungis streymi)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Ný skrá eða mappa hefur verið <strong>endurheimt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Skjal eða mappa hefur verið <strong>endurheimt</strong>",
"Unlimited" : "Ótakmarkað",
"Upload (max. %s)" : "Senda inn (hám. %s)",
"File handling" : "Meðhöndlun skráar",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Afrita staðværan tengil",
"Folder" : "Mappa",
"Upload" : "Senda inn",
+ "A new file or folder has been <strong>deleted</strong>" : "Nýrri skrá eða möppu hefur verið <strong>eytt</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Ný skrá eða mappa hefur verið <strong>endurheimt</strong>",
"No favorites" : "Engin eftirlæti"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 52368a9ce89..3bfa946a499 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Skrá var bætt við eða hún fjarlægð úr <strong>eftirlætum</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Skrá eða möppu hefur verið <strong>breytt</strong> eða verið <strong>endurnefnt</strong>",
"A new file or folder has been <strong>created</strong>" : "Skjal eða mappa hefur verið <strong>búin til</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nýrri skrá eða möppu hefur verið <strong>eytt</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Skjali eða möppu hefur verið <strong>eytt</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Takmarka tilkynningar um gerð og breytingar á <strong>eftirlætisskrám</strong> <em>(einungis streymi)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Ný skrá eða mappa hefur verið <strong>endurheimt</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Skjal eða mappa hefur verið <strong>endurheimt</strong>",
"Unlimited" : "Ótakmarkað",
"Upload (max. %s)" : "Senda inn (hám. %s)",
"File handling" : "Meðhöndlun skráar",
@@ -144,6 +144,8 @@
"Copy local link" : "Afrita staðværan tengil",
"Folder" : "Mappa",
"Upload" : "Senda inn",
+ "A new file or folder has been <strong>deleted</strong>" : "Nýrri skrá eða möppu hefur verið <strong>eytt</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Ný skrá eða mappa hefur verið <strong>endurheimt</strong>",
"No favorites" : "Engin eftirlæti"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index d5cb86d842b..cc8cb646d9e 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Un file stato aggiunto o rimosso dai tuoi <strong>preferiti</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un file o una cartella sono stati <strong>modificato</strong> o<strong>rinominati</strong> ",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuovo file o cartella è stato <strong>eliminato</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un file o una cartella è stato <strong>eliminato</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limita le notifiche relative alla creazione e alla modifica dei tuoi <strong>file preferiti</strong> <em>(Solo flusso)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuovo file o una cartella è stato <strong>ripristinato</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un file o una cartella è stato <strong>ripristinato</strong>",
"Unlimited" : "Illimitata",
"Upload (max. %s)" : "Carica (massimo %s)",
"File handling" : "Gestione file",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copia collegamento locale",
"Folder" : "Cartella",
"Upload" : "Carica",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuovo file o cartella è stato <strong>eliminato</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuovo file o una cartella è stato <strong>ripristinato</strong>",
"No favorites" : "Nessun preferito"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index 086096cbab4..1d672295a36 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Un file stato aggiunto o rimosso dai tuoi <strong>preferiti</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un file o una cartella sono stati <strong>modificato</strong> o<strong>rinominati</strong> ",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Un nuovo file o cartella è stato <strong>eliminato</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Un file o una cartella è stato <strong>eliminato</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limita le notifiche relative alla creazione e alla modifica dei tuoi <strong>file preferiti</strong> <em>(Solo flusso)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Un nuovo file o una cartella è stato <strong>ripristinato</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un file o una cartella è stato <strong>ripristinato</strong>",
"Unlimited" : "Illimitata",
"Upload (max. %s)" : "Carica (massimo %s)",
"File handling" : "Gestione file",
@@ -144,6 +144,8 @@
"Copy local link" : "Copia collegamento locale",
"Folder" : "Cartella",
"Upload" : "Carica",
+ "A new file or folder has been <strong>deleted</strong>" : "Un nuovo file o cartella è stato <strong>eliminato</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Un nuovo file o una cartella è stato <strong>ripristinato</strong>",
"No favorites" : "Nessun preferito"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 0d5bca2def1..1d13642f842 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されたとき",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更</strong>されたとき",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
- "A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除</strong>されたとき",
+ "A file or folder has been <strong>deleted</strong>" : "ファイルまたはフォルダーが <strong>削除されました</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>お気に入りファイル</strong>の作成と変更の通知を制限する<em>(ストリームのみ)</em>",
- "A new file or folder has been <strong>restored</strong>" : "新しいファイルまたはフォルダが<strong>復元されました</strong>",
+ "A file or folder has been <strong>restored</strong>" : "ファイルまたはフォルダーが <strong>復元されました</strong>",
"Unlimited" : "無制限",
"Upload (max. %s)" : "アップロード ( 最大 %s )",
"File handling" : "ファイル操作",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "ローカルリンクをコピー",
"Folder" : "フォルダー",
"Upload" : "アップロード",
+ "A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除</strong>されたとき",
+ "A new file or folder has been <strong>restored</strong>" : "新しいファイルまたはフォルダが<strong>復元されました</strong>",
"No favorites" : "お気に入りなし"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 15b5f134103..99c46c8d0a6 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されたとき",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更</strong>されたとき",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
- "A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除</strong>されたとき",
+ "A file or folder has been <strong>deleted</strong>" : "ファイルまたはフォルダーが <strong>削除されました</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>お気に入りファイル</strong>の作成と変更の通知を制限する<em>(ストリームのみ)</em>",
- "A new file or folder has been <strong>restored</strong>" : "新しいファイルまたはフォルダが<strong>復元されました</strong>",
+ "A file or folder has been <strong>restored</strong>" : "ファイルまたはフォルダーが <strong>復元されました</strong>",
"Unlimited" : "無制限",
"Upload (max. %s)" : "アップロード ( 最大 %s )",
"File handling" : "ファイル操作",
@@ -144,6 +144,8 @@
"Copy local link" : "ローカルリンクをコピー",
"Folder" : "フォルダー",
"Upload" : "アップロード",
+ "A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除</strong>されたとき",
+ "A new file or folder has been <strong>restored</strong>" : "新しいファイルまたはフォルダが<strong>復元されました</strong>",
"No favorites" : "お気に入りなし"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index e738b3988d8..270c13b39ab 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -99,9 +99,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
- "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -140,6 +138,8 @@ OC.L10N.register(
"Copy local link" : "로컬 링크 복사",
"Folder" : "폴더",
"Upload" : "업로드",
+ "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"No favorites" : "즐겨찾는 항목 없음"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 3c1b67c9466..b674fa9f3c0 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -97,9 +97,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
- "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -138,6 +136,8 @@
"Copy local link" : "로컬 링크 복사",
"Folder" : "폴더",
"Upload" : "업로드",
+ "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"No favorites" : "즐겨찾는 항목 없음"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js
index 64de0ceea63..f0c17c8f4f6 100644
--- a/apps/files/l10n/lb.js
+++ b/apps/files/l10n/lb.js
@@ -98,9 +98,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Eng Datei gouf zu dengen Favoriten <strong> dobäigesat </strong> oder aus dengen Favortien <strong> geläscht </strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eng Datei gouf <strong> verännert</strong> oder <strong> embenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eng nei Datei oder e neien Dossier gouf <strong> erstallt </strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen <strong> Favoriten</strong> (nëmmen Floss)",
- "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>",
"Upload (max. %s)" : "Upload (maximal ¦%s)",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
@@ -138,6 +136,8 @@ OC.L10N.register(
"Copy local link" : "Lokale Link kopéiert",
"Folder" : "Dossier",
"Upload" : "Eroplueden",
+ "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>",
"No favorites" : "Keng Favoriten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json
index 3fc39ab0b50..af8e77a2f7b 100644
--- a/apps/files/l10n/lb.json
+++ b/apps/files/l10n/lb.json
@@ -96,9 +96,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Eng Datei gouf zu dengen Favoriten <strong> dobäigesat </strong> oder aus dengen Favortien <strong> geläscht </strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eng Datei gouf <strong> verännert</strong> oder <strong> embenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eng nei Datei oder e neien Dossier gouf <strong> erstallt </strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen <strong> Favoriten</strong> (nëmmen Floss)",
- "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>",
"Upload (max. %s)" : "Upload (maximal ¦%s)",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
@@ -136,6 +134,8 @@
"Copy local link" : "Lokale Link kopéiert",
"Folder" : "Dossier",
"Upload" : "Eroplueden",
+ "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>",
"No favorites" : "Keng Favoriten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 02bfe798d10..9942a4249b6 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -2,18 +2,18 @@ OC.L10N.register(
"files",
{
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
- "Storage invalid" : "Saugykla neteisinga",
+ "Storage invalid" : "Saugykla netinkama naudoti",
"Unknown error" : "Nežinoma klaida",
"All files" : "Visi failai",
"Recent" : "Naujausi",
- "File could not be found" : "Nepavyko rasti failo",
- "Home" : "Namų",
+ "File could not be found" : "Nepavyko rasti rinkmenos",
+ "Home" : "Pagrindinis",
"Close" : "Užverti",
"Favorites" : "Mėgstamiausi",
"Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"",
"Upload cancelled." : "Įkėlimo atsisakyta.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų",
- "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likę",
+ "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos",
"Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra",
"Not enough free space" : "Trūksta laisvos vietos",
"Uploading..." : "Įkeliama...",
@@ -30,7 +30,7 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"",
"Files" : "Failai",
"Details" : "Informacija",
- "Select" : "Pasirinkiti",
+ "Select" : "Pasirinkti",
"Pending" : "Laukiantis",
"Unable to determine date" : "Nepavyksta nustatyti datos",
"This operation is forbidden" : "Ši operacija yra uždrausta",
@@ -38,7 +38,7 @@ OC.L10N.register(
"Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja",
"Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"",
"{newName} already exists" : "{newName} jau yra",
- "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti failo \"{fileName}\", nes jis jau nebeegzistuoja",
+ "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.",
"Could not rename \"{fileName}\"" : "Nepavyko pervadinti failo \"{fileName}\"",
"Could not create file \"{file}\"" : "Nepavyko sukurti failo \"{file}\"",
@@ -56,19 +56,23 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
"New" : "Naujas",
- "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
+ "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" nėra leidžiamas failo tipas",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"],
"View in folder" : "Peržiūrėti aplanką",
+ "Copied!" : "Nukopijuota!",
+ "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)",
"Path" : "Kelias",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"],
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
"New folder" : "Naujas aplankas",
+ "Upload file" : "Įkelti failą",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"Added to favorites" : "Pridėta prie mėgstamųjų",
"Removed from favorites" : "Pašalinta iš mėgstamųjų",
@@ -81,6 +85,7 @@ OC.L10N.register(
"Restored by {user}" : "Atkūrė {user}",
"Renamed by {user}" : "Pervadino {user}",
"Moved by {user}" : "Perkėlė {user}",
+ "\"remote user\"" : "\"nuotolinis naudotojas\"",
"You created {file}" : "Jūs sukūrėte {file}",
"{user} created {file}" : "{user} sukūrė {file}",
"{file} was created in a public folder" : "{file} buvo sukurtas viešajame aplanke",
@@ -94,12 +99,13 @@ OC.L10N.register(
"{user} renamed {oldfile} to {newfile}" : "{user} pervadino {oldfile} į {newfile}",
"You moved {oldfile} to {newfile}" : "Jūs perkėlėte {oldfile} į {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} perkėlė {oldfile} į {newfile}",
- "A file has been added to or removed from your <strong>favorites</strong>" : "failas buvo pridėtas arba pašalintas iš <strong>mėgstamųjų</strong>",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Failas buvo pridėtas arba pašalintas iš <strong>mėgstamųjų</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Buvo <strong>pakeistas</strong> ar <strong>pervadintas</strong> failas ar aplankas",
"A new file or folder has been <strong>created</strong>" : "Buvo <strong>sukurtas</strong> naujas failas ar aplankas",
- "A new file or folder has been <strong>deleted</strong>" : "Naujas failas arba aplankas buvo <strong>ištrintas</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Duomenys buvo <strong>ištrinti</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų <strong>mėgiamuose failuose</strong> <em>(Tik srautas)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Naujas failas arba aplankas buvo <strong>atkurtas</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Duomenys buvo <strong>atstatyti</strong>",
+ "Unlimited" : "Neribotai",
"Upload (max. %s)" : "Įkelti (maks. %s)",
"File handling" : "Failų tvarkymas",
"Maximum upload size" : "Maksimalus įkeliamo failo dydis",
@@ -107,6 +113,8 @@ OC.L10N.register(
"Save" : "Įrašyti",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Su PHP-FPM atnaujinimai gali užtrukti apie 5min.",
"Missing permissions to edit from here." : "Draudžiama iš čia redaguoti",
+ "%s of %s used" : "naudojama %s iš %s",
+ "%s used" : "%s panaudota",
"Settings" : "Nustatymai",
"Show hidden files" : "Rodyti paslėptus failus",
"WebDAV" : "WebDAV",
@@ -117,6 +125,7 @@ OC.L10N.register(
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.",
+ "No favorites yet" : "Nėra pridėta į \"mėgstamų\" sąrašą",
"Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia",
"Shared with you" : "Bendrinama su jumis",
"Shared with others" : "Bendrinama su kitais",
@@ -137,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Kopijuoti vietinę nuorodą",
"Folder" : "Aplankas",
"Upload" : "Įkelti",
+ "A new file or folder has been <strong>deleted</strong>" : "Naujas failas arba aplankas buvo <strong>ištrintas</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Naujas failas arba aplankas buvo <strong>atkurtas</strong>",
"No favorites" : "Nėra mėgstamiausių"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index a3b467c8a2c..c88cff6cc06 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -1,17 +1,17 @@
{ "translations": {
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
- "Storage invalid" : "Saugykla neteisinga",
+ "Storage invalid" : "Saugykla netinkama naudoti",
"Unknown error" : "Nežinoma klaida",
"All files" : "Visi failai",
"Recent" : "Naujausi",
- "File could not be found" : "Nepavyko rasti failo",
- "Home" : "Namų",
+ "File could not be found" : "Nepavyko rasti rinkmenos",
+ "Home" : "Pagrindinis",
"Close" : "Užverti",
"Favorites" : "Mėgstamiausi",
"Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"",
"Upload cancelled." : "Įkėlimo atsisakyta.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų",
- "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likę",
+ "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos",
"Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra",
"Not enough free space" : "Trūksta laisvos vietos",
"Uploading..." : "Įkeliama...",
@@ -28,7 +28,7 @@
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"",
"Files" : "Failai",
"Details" : "Informacija",
- "Select" : "Pasirinkiti",
+ "Select" : "Pasirinkti",
"Pending" : "Laukiantis",
"Unable to determine date" : "Nepavyksta nustatyti datos",
"This operation is forbidden" : "Ši operacija yra uždrausta",
@@ -36,7 +36,7 @@
"Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja",
"Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"",
"{newName} already exists" : "{newName} jau yra",
- "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti failo \"{fileName}\", nes jis jau nebeegzistuoja",
+ "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.",
"Could not rename \"{fileName}\"" : "Nepavyko pervadinti failo \"{fileName}\"",
"Could not create file \"{file}\"" : "Nepavyko sukurti failo \"{file}\"",
@@ -54,19 +54,23 @@
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
"New" : "Naujas",
- "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
+ "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" nėra leidžiamas failo tipas",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"],
"View in folder" : "Peržiūrėti aplanką",
+ "Copied!" : "Nukopijuota!",
+ "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)",
"Path" : "Kelias",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"],
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
"New folder" : "Naujas aplankas",
+ "Upload file" : "Įkelti failą",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"Added to favorites" : "Pridėta prie mėgstamųjų",
"Removed from favorites" : "Pašalinta iš mėgstamųjų",
@@ -79,6 +83,7 @@
"Restored by {user}" : "Atkūrė {user}",
"Renamed by {user}" : "Pervadino {user}",
"Moved by {user}" : "Perkėlė {user}",
+ "\"remote user\"" : "\"nuotolinis naudotojas\"",
"You created {file}" : "Jūs sukūrėte {file}",
"{user} created {file}" : "{user} sukūrė {file}",
"{file} was created in a public folder" : "{file} buvo sukurtas viešajame aplanke",
@@ -92,12 +97,13 @@
"{user} renamed {oldfile} to {newfile}" : "{user} pervadino {oldfile} į {newfile}",
"You moved {oldfile} to {newfile}" : "Jūs perkėlėte {oldfile} į {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} perkėlė {oldfile} į {newfile}",
- "A file has been added to or removed from your <strong>favorites</strong>" : "failas buvo pridėtas arba pašalintas iš <strong>mėgstamųjų</strong>",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Failas buvo pridėtas arba pašalintas iš <strong>mėgstamųjų</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Buvo <strong>pakeistas</strong> ar <strong>pervadintas</strong> failas ar aplankas",
"A new file or folder has been <strong>created</strong>" : "Buvo <strong>sukurtas</strong> naujas failas ar aplankas",
- "A new file or folder has been <strong>deleted</strong>" : "Naujas failas arba aplankas buvo <strong>ištrintas</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Duomenys buvo <strong>ištrinti</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų <strong>mėgiamuose failuose</strong> <em>(Tik srautas)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Naujas failas arba aplankas buvo <strong>atkurtas</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Duomenys buvo <strong>atstatyti</strong>",
+ "Unlimited" : "Neribotai",
"Upload (max. %s)" : "Įkelti (maks. %s)",
"File handling" : "Failų tvarkymas",
"Maximum upload size" : "Maksimalus įkeliamo failo dydis",
@@ -105,6 +111,8 @@
"Save" : "Įrašyti",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Su PHP-FPM atnaujinimai gali užtrukti apie 5min.",
"Missing permissions to edit from here." : "Draudžiama iš čia redaguoti",
+ "%s of %s used" : "naudojama %s iš %s",
+ "%s used" : "%s panaudota",
"Settings" : "Nustatymai",
"Show hidden files" : "Rodyti paslėptus failus",
"WebDAV" : "WebDAV",
@@ -115,6 +123,7 @@
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.",
+ "No favorites yet" : "Nėra pridėta į \"mėgstamų\" sąrašą",
"Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia",
"Shared with you" : "Bendrinama su jumis",
"Shared with others" : "Bendrinama su kitais",
@@ -135,6 +144,8 @@
"Copy local link" : "Kopijuoti vietinę nuorodą",
"Folder" : "Aplankas",
"Upload" : "Įkelti",
+ "A new file or folder has been <strong>deleted</strong>" : "Naujas failas arba aplankas buvo <strong>ištrintas</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Naujas failas arba aplankas buvo <strong>atkurtas</strong>",
"No favorites" : "Nėra mėgstamiausių"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index 6ced3c7fe60..062209db0c6 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -96,9 +96,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Fails ir pievienots vai noņemts no jūsu <strong>izlases</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Fails vai mape tika <strong>mainīts</strong> vai <strong>pārsaukts</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
- "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitēt ziņojumus par jūsu <strong>iecienīto datņu</strong> izveidošanu un izmaiņām <em>(tikai datu straumei)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"Upload (max. %s)" : "Augšupielādēt (maks. %s)",
"File handling" : "Datņu pārvaldība",
"Maximum upload size" : "Maksimālais datņu augšupielādes apjoms",
@@ -136,6 +134,8 @@ OC.L10N.register(
"Copy local link" : "Kopēt lokālo saiti",
"Folder" : "Mape",
"Upload" : "Augšupielādēt",
+ "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"No favorites" : "Nav favorītu"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 84217870a7e..0f713907d5c 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -94,9 +94,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Fails ir pievienots vai noņemts no jūsu <strong>izlases</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Fails vai mape tika <strong>mainīts</strong> vai <strong>pārsaukts</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
- "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitēt ziņojumus par jūsu <strong>iecienīto datņu</strong> izveidošanu un izmaiņām <em>(tikai datu straumei)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"Upload (max. %s)" : "Augšupielādēt (maks. %s)",
"File handling" : "Datņu pārvaldība",
"Maximum upload size" : "Maksimālais datņu augšupielādes apjoms",
@@ -134,6 +132,8 @@
"Copy local link" : "Kopēt lokālo saiti",
"Folder" : "Mape",
"Upload" : "Augšupielādēt",
+ "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"No favorites" : "Nav favorītu"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js
index 231bdb6d11a..8548362748e 100644
--- a/apps/files/l10n/nb.js
+++ b/apps/files/l10n/nb.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe ble <strong>endret</strong> eller <strong>omdøpt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "En fil eller mappe ble <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
+ "A file or folder has been <strong>restored</strong>" : "En fil eller mappe ble <strong>gjenopprettet</strong>",
"Unlimited" : "Ubegrenset",
"Upload (max. %s)" : "Opplasting (maks. %s)",
"File handling" : "Filhåndtering",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Kopier lokal lenke",
"Folder" : "Mappe",
"Upload" : "Last opp",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
"No favorites" : "Ingen favoritter"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json
index c361bda2d34..3079c785f1d 100644
--- a/apps/files/l10n/nb.json
+++ b/apps/files/l10n/nb.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe ble <strong>endret</strong> eller <strong>omdøpt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "En fil eller mappe ble <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
+ "A file or folder has been <strong>restored</strong>" : "En fil eller mappe ble <strong>gjenopprettet</strong>",
"Unlimited" : "Ubegrenset",
"Upload (max. %s)" : "Opplasting (maks. %s)",
"File handling" : "Filhåndtering",
@@ -144,6 +144,8 @@
"Copy local link" : "Kopier lokal lenke",
"Folder" : "Mappe",
"Upload" : "Last opp",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
"No favorites" : "Ingen favoritter"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index 67bef4512c2..c67c38b7545 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Een bestand werd toegevoegd of verwijderd van je <strong>favorieten</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Een bestand of map is <strong>gewijzigd</strong> of <strong>hernoemd</strong>",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Een nieuw bestand of nieuwe map is <strong>verwijderd</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Een bestand of map is <strong>verwijderd</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Beperk meldingen over aanmaken en wijzigen aan je <strong>favoriete bestanden</strong> <em>(Alleen stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Een nieuw bestand of een nieuwe map is <strong>hersteld</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Een bestand of een map is <strong>hersteld</strong>",
"Unlimited" : "Ongelimiteerd",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "Bestand afhandeling",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Kopiëren lokale link",
"Folder" : "Map",
"Upload" : "Uploaden",
+ "A new file or folder has been <strong>deleted</strong>" : "Een nieuw bestand of nieuwe map is <strong>verwijderd</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Een nieuw bestand of een nieuwe map is <strong>hersteld</strong>",
"No favorites" : "Geen favorieten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 3124f149541..8b5e6bc65e5 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Een bestand werd toegevoegd of verwijderd van je <strong>favorieten</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Een bestand of map is <strong>gewijzigd</strong> of <strong>hernoemd</strong>",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Een nieuw bestand of nieuwe map is <strong>verwijderd</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Een bestand of map is <strong>verwijderd</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Beperk meldingen over aanmaken en wijzigen aan je <strong>favoriete bestanden</strong> <em>(Alleen stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Een nieuw bestand of een nieuwe map is <strong>hersteld</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Een bestand of een map is <strong>hersteld</strong>",
"Unlimited" : "Ongelimiteerd",
"Upload (max. %s)" : "Upload (max. %s)",
"File handling" : "Bestand afhandeling",
@@ -144,6 +144,8 @@
"Copy local link" : "Kopiëren lokale link",
"Folder" : "Map",
"Upload" : "Uploaden",
+ "A new file or folder has been <strong>deleted</strong>" : "Een nieuw bestand of nieuwe map is <strong>verwijderd</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Een nieuw bestand of een nieuwe map is <strong>hersteld</strong>",
"No favorites" : "Geen favorieten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index d5c44052172..df4d655858e 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -102,9 +102,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Plik został dodany lub usunięty z Twoich <strong>ulubionych</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Plik lub folder został <strong>zmieniony</ strong> lub <strong>zastąpiony</ strong>",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder został <strong>usunięty </strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich <strong>ulubionych plików</strong> <em>(Tylko w strumieniu aktywności)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nowy plik lub folder został <strong>przywrócony</strong>",
"Unlimited" : "Bez limitu",
"Upload (max. %s)" : "Wysyłka (max. %s)",
"File handling" : "Zarządzanie plikami",
@@ -146,6 +144,8 @@ OC.L10N.register(
"Copy local link" : "Kopiowanie lokalnego linku",
"Folder" : "Folder",
"Upload" : "Wyślij",
+ "A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder został <strong>usunięty </strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nowy plik lub folder został <strong>przywrócony</strong>",
"No favorites" : "Brak ulubionych"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 851c66754b4..85e9f58675c 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -100,9 +100,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Plik został dodany lub usunięty z Twoich <strong>ulubionych</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Plik lub folder został <strong>zmieniony</ strong> lub <strong>zastąpiony</ strong>",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder został <strong>usunięty </strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich <strong>ulubionych plików</strong> <em>(Tylko w strumieniu aktywności)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nowy plik lub folder został <strong>przywrócony</strong>",
"Unlimited" : "Bez limitu",
"Upload (max. %s)" : "Wysyłka (max. %s)",
"File handling" : "Zarządzanie plikami",
@@ -144,6 +142,8 @@
"Copy local link" : "Kopiowanie lokalnego linku",
"Folder" : "Folder",
"Upload" : "Wyślij",
+ "A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder został <strong>usunięty </strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nowy plik lub folder został <strong>przywrócony</strong>",
"No favorites" : "Brak ulubionych"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 96f679a9723..2d56e4f1007 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Um arquivo foi adicionado ou excluído de seus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Um arquivo ou pasta foi <strong>alterado</strong> ou <strong>renomeado</strong>",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Um novo arquivo ou pasta foi <strong> excluído </strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Um arquivo ou pasta foi <strong>excluído</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Notificações de limite das criações e alterações em seus <strong>arquivos favoritos</strong> <em>(apenas Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Um novo arquivo ou pasta foi <strong> recuperado </strong>",
+ "A file or folder has been <strong>restored</strong>" : "Um arquivo ou pasta foi <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Envio (max. %s)",
"File handling" : "Tratamento de arquivo",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Copiar link local",
"Folder" : "Pasta",
"Upload" : "Enviar",
+ "A new file or folder has been <strong>deleted</strong>" : "Um novo arquivo ou pasta foi <strong> excluído </strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Um novo arquivo ou pasta foi <strong> recuperado </strong>",
"No favorites" : "Sem favoritos"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 3f297a99c9e..d4526463488 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Um arquivo foi adicionado ou excluído de seus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Um arquivo ou pasta foi <strong>alterado</strong> ou <strong>renomeado</strong>",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Um novo arquivo ou pasta foi <strong> excluído </strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Um arquivo ou pasta foi <strong>excluído</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Notificações de limite das criações e alterações em seus <strong>arquivos favoritos</strong> <em>(apenas Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Um novo arquivo ou pasta foi <strong> recuperado </strong>",
+ "A file or folder has been <strong>restored</strong>" : "Um arquivo ou pasta foi <strong>restaurado</strong>",
"Unlimited" : "Ilimitado",
"Upload (max. %s)" : "Envio (max. %s)",
"File handling" : "Tratamento de arquivo",
@@ -144,6 +144,8 @@
"Copy local link" : "Copiar link local",
"Folder" : "Pasta",
"Upload" : "Enviar",
+ "A new file or folder has been <strong>deleted</strong>" : "Um novo arquivo ou pasta foi <strong> excluído </strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Um novo arquivo ou pasta foi <strong> recuperado </strong>",
"No favorites" : "Sem favoritos"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 0a483c231b7..ce01db51d93 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл был добавлен или удален из вашего <strong>избранного</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фаил или каталог <strong>изменён</strong> или <strong>переименован</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
- "A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Файл или каталог был <strong>удалён</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничить уведомления о создании и изменении ваших <strong>избранных файлов</strong> <em>(отображать только в приложении события)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Файл или каталог был <strong>восстановлен</strong>",
"Unlimited" : "Неограничено",
"Upload (max. %s)" : "Загрузка (максимум %s)",
"File handling" : "Управление файлами",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Копировать локальную ссылку",
"Folder" : "Каталог",
"Upload" : "Загрузить",
+ "A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
"No favorites" : "Нет избранного"
},
"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/ru.json b/apps/files/l10n/ru.json
index 83b515cdcd0..b01d0cc1ec7 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл был добавлен или удален из вашего <strong>избранного</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фаил или каталог <strong>изменён</strong> или <strong>переименован</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
- "A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Файл или каталог был <strong>удалён</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничить уведомления о создании и изменении ваших <strong>избранных файлов</strong> <em>(отображать только в приложении события)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Файл или каталог был <strong>восстановлен</strong>",
"Unlimited" : "Неограничено",
"Upload (max. %s)" : "Загрузка (максимум %s)",
"File handling" : "Управление файлами",
@@ -144,6 +144,8 @@
"Copy local link" : "Копировать локальную ссылку",
"Folder" : "Каталог",
"Upload" : "Загрузить",
+ "A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
"No favorites" : "Нет избранного"
},"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);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index 8fc5fc24a88..b5995eaf446 100644
--- a/apps/files/l10n/sk.js
+++ b/apps/files/l10n/sk.js
@@ -98,9 +98,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Súbor bol pridaný alebo odstránený z vašich <strong>obľúbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong> alebo <strong>premenovaný</strong>",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše <strong>obľúbené súbory</strong> <em>(Len streamy)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"Upload (max. %s)" : "Nahrať (max. %s)",
"File handling" : "Nastavenie správania sa k súborom",
"Maximum upload size" : "Maximálna veľkosť odosielaného súboru",
@@ -138,6 +136,8 @@ OC.L10N.register(
"Copy local link" : "Kopíruj lokálny odkaz",
"Folder" : "Priečinok",
"Upload" : "Nahrať",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"No favorites" : "Žiadne obľúbené"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index 18408ac9f01..615718962f6 100644
--- a/apps/files/l10n/sk.json
+++ b/apps/files/l10n/sk.json
@@ -96,9 +96,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Súbor bol pridaný alebo odstránený z vašich <strong>obľúbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong> alebo <strong>premenovaný</strong>",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše <strong>obľúbené súbory</strong> <em>(Len streamy)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"Upload (max. %s)" : "Nahrať (max. %s)",
"File handling" : "Nastavenie správania sa k súborom",
"Maximum upload size" : "Maximálna veľkosť odosielaného súboru",
@@ -136,6 +134,8 @@
"Copy local link" : "Kopíruj lokálny odkaz",
"Folder" : "Priečinok",
"Upload" : "Nahrať",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"No favorites" : "Žiadne obľúbené"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index 257f2b6998b..56666e1d820 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë",
"Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë",
"Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Asnjë rezultat i kërkimit në dosjet e tjera për {tag} {filter} {endtag}",
"Name" : "Emër",
"Size" : "Madhësi",
"Modified" : "Ndryshuar më",
@@ -57,12 +58,15 @@ OC.L10N.register(
"New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.",
"File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.",
+ "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"],
"View in folder" : "Shikoje në dosje",
+ "Copied!" : "E kopjuar!",
+ "Copy direct link (only works for users who have access to this file/folder)" : "Kopjo lidhjen e drejtpërdrejtë (funksionon vetëm për përdoruesit që kanë qasje në këtë skedar/dosje)",
"Path" : "Rrugë",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"],
"Favorited" : "U kalua e parapëlqyer",
@@ -81,6 +85,7 @@ OC.L10N.register(
"Restored by {user}" : "U rikthye nga {user}",
"Renamed by {user}" : "U riemërua nga {user}",
"Moved by {user}" : "U ndryshua nga {user}",
+ "\"remote user\"" : "\"përdorues i largët\"",
"You created {file}" : "Ju krijuat {file}",
"{user} created {file}" : "{user} krijoj {file}",
"{file} was created in a public folder" : "{file} u krijua në një folder publik",
@@ -97,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
- "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje është <strong> fshirë </strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Një skedar ose dosje është <strong> rikthyer </strong>",
"Unlimited" : "E palimituar",
"Upload (max. %s)" : "Ngarkim (max. %s)",
"File handling" : "Trajtim kartele",
@@ -108,6 +113,8 @@ OC.L10N.register(
"Save" : "Ruaje",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.",
"Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.",
+ "%s of %s used" : "%s nga %s është përdorur",
+ "%s used" : "%s të përdorura",
"Settings" : "Rregullime",
"Show hidden files" : "Shfaq kartela të fshehura",
"WebDAV" : "WebDAV",
@@ -118,6 +125,7 @@ OC.L10N.register(
"Select all" : "Përzgjidhe krejt",
"Upload too large" : "Ngarkim shumë i madh",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
+ "No favorites yet" : "Asnjë preferencë akoma",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera",
"Shared with you" : "E ndarë me ju",
"Shared with others" : "E ndarë me të tjerët",
@@ -126,15 +134,20 @@ OC.L10N.register(
"Deleted files" : "Skedar të fshirë",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} orë të mbetura","{hours}:{minutes}:{seconds} orë të mbetura"],
"{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minuta të mbetura","{minutes}:{seconds} minuta të mbetura"],
"{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekonda të mbetura","{seconds} sekonda të mbetura"],
"{seconds}s" : "{seconds}s",
"Any moment now..." : "Në çdo çast tani…",
"Soon..." : "Së shpejti…",
"File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
- "Copy local link" : "Kopjo lidhjen lokale",
+ "Copy local link" : "Kopjo linkun lokale",
"Folder" : "Dosje",
"Upload" : "Ngarkoje",
+ "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
"No favorites" : "Pa të parapëlqyera"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index e1a5755fdc3..4ba2864e80e 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -43,6 +43,7 @@
"Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë",
"Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë",
"Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Asnjë rezultat i kërkimit në dosjet e tjera për {tag} {filter} {endtag}",
"Name" : "Emër",
"Size" : "Madhësi",
"Modified" : "Ndryshuar më",
@@ -55,12 +56,15 @@
"New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.",
"File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.",
+ "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"],
"View in folder" : "Shikoje në dosje",
+ "Copied!" : "E kopjuar!",
+ "Copy direct link (only works for users who have access to this file/folder)" : "Kopjo lidhjen e drejtpërdrejtë (funksionon vetëm për përdoruesit që kanë qasje në këtë skedar/dosje)",
"Path" : "Rrugë",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"],
"Favorited" : "U kalua e parapëlqyer",
@@ -79,6 +83,7 @@
"Restored by {user}" : "U rikthye nga {user}",
"Renamed by {user}" : "U riemërua nga {user}",
"Moved by {user}" : "U ndryshua nga {user}",
+ "\"remote user\"" : "\"përdorues i largët\"",
"You created {file}" : "Ju krijuat {file}",
"{user} created {file}" : "{user} krijoj {file}",
"{file} was created in a public folder" : "{file} u krijua në një folder publik",
@@ -95,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
- "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje është <strong> fshirë </strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Një skedar ose dosje është <strong> rikthyer </strong>",
"Unlimited" : "E palimituar",
"Upload (max. %s)" : "Ngarkim (max. %s)",
"File handling" : "Trajtim kartele",
@@ -106,6 +111,8 @@
"Save" : "Ruaje",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.",
"Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.",
+ "%s of %s used" : "%s nga %s është përdorur",
+ "%s used" : "%s të përdorura",
"Settings" : "Rregullime",
"Show hidden files" : "Shfaq kartela të fshehura",
"WebDAV" : "WebDAV",
@@ -116,6 +123,7 @@
"Select all" : "Përzgjidhe krejt",
"Upload too large" : "Ngarkim shumë i madh",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
+ "No favorites yet" : "Asnjë preferencë akoma",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera",
"Shared with you" : "E ndarë me ju",
"Shared with others" : "E ndarë me të tjerët",
@@ -124,15 +132,20 @@
"Deleted files" : "Skedar të fshirë",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} orë të mbetura","{hours}:{minutes}:{seconds} orë të mbetura"],
"{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minuta të mbetura","{minutes}:{seconds} minuta të mbetura"],
"{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekonda të mbetura","{seconds} sekonda të mbetura"],
"{seconds}s" : "{seconds}s",
"Any moment now..." : "Në çdo çast tani…",
"Soon..." : "Së shpejti…",
"File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
- "Copy local link" : "Kopjo lidhjen lokale",
+ "Copy local link" : "Kopjo linkun lokale",
"Folder" : "Dosje",
"Upload" : "Ngarkoje",
+ "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
"No favorites" : "Pa të parapëlqyera"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 25e86770527..8c48386e5e3 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -100,9 +100,7 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil har lagts till eller tagits bort från dina <strong>favoriter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast i flödet)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"Upload (max. %s)" : "Ladda upp (max. %s)",
"File handling" : "Filhantering",
"Maximum upload size" : "Maximal storlek att ladda upp",
@@ -141,6 +139,8 @@ OC.L10N.register(
"Copy local link" : "Kopiera den lokala länken",
"Folder" : "Mapp",
"Upload" : "Ladda upp",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"No favorites" : "Inga favoriter"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 81854b77fa9..0b970e021fb 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -98,9 +98,7 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "En fil har lagts till eller tagits bort från dina <strong>favoriter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast i flödet)</em>",
- "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"Upload (max. %s)" : "Ladda upp (max. %s)",
"File handling" : "Filhantering",
"Maximum upload size" : "Maximal storlek att ladda upp",
@@ -139,6 +137,8 @@
"Copy local link" : "Kopiera den lokala länken",
"Folder" : "Mapp",
"Upload" : "Ladda upp",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"No favorites" : "Inga favoriter"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index c796ec750c7..bc1dbb8dba8 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "<strong>Sık kullandıklarınıza</strong> bir dosya eklendi ya da silindi",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Bir dosya ya da klasör <strong>değiştirildi</strong> ya da <strong>yeniden adlandırıldı</strong>",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya ya da klasör <strong>eklendi</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Yeni bir dosya ya da klasör <strong>silindi</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Bir dosya ya da klasör <strong>silindi</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınız</strong> ile ilgili ekleme ve değişiklik bildirimleri sınırlansın <em>(Yalnız akış)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Yeni bir dosya ya da klasör <strong>geri yüklendi</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Bir dosya ya da klasör <strong>geri yüklendi</strong>",
"Unlimited" : "Sınırsız",
"Upload (max. %s)" : "Yükle (en büyük: %s)",
"File handling" : "Dosya işlemleri",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "Bağlantıyı kopyala",
"Folder" : "Klasör",
"Upload" : "Yükle",
+ "A new file or folder has been <strong>deleted</strong>" : "Yeni bir dosya ya da klasör <strong>silindi</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Yeni bir dosya ya da klasör <strong>geri yüklendi</strong>",
"No favorites" : "Sık kullanılan bir öge yok"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 11d2c0a3bdb..41161cb0c6e 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "<strong>Sık kullandıklarınıza</strong> bir dosya eklendi ya da silindi",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Bir dosya ya da klasör <strong>değiştirildi</strong> ya da <strong>yeniden adlandırıldı</strong>",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya ya da klasör <strong>eklendi</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Yeni bir dosya ya da klasör <strong>silindi</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Bir dosya ya da klasör <strong>silindi</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınız</strong> ile ilgili ekleme ve değişiklik bildirimleri sınırlansın <em>(Yalnız akış)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Yeni bir dosya ya da klasör <strong>geri yüklendi</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Bir dosya ya da klasör <strong>geri yüklendi</strong>",
"Unlimited" : "Sınırsız",
"Upload (max. %s)" : "Yükle (en büyük: %s)",
"File handling" : "Dosya işlemleri",
@@ -144,6 +144,8 @@
"Copy local link" : "Bağlantıyı kopyala",
"Folder" : "Klasör",
"Upload" : "Yükle",
+ "A new file or folder has been <strong>deleted</strong>" : "Yeni bir dosya ya da klasör <strong>silindi</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Yeni bir dosya ya da klasör <strong>geri yüklendi</strong>",
"No favorites" : "Sık kullanılan bir öge yok"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js
index b84a03068b4..83c9ad56909 100644
--- a/apps/files/l10n/vi.js
+++ b/apps/files/l10n/vi.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"You moved {oldfile} to {newfile}" : "Bạn đã chuyển {oldfile} tới {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} đã chuyển {oldfile} tới {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Một tệp đã được thêm hoặc bị xóa khỏi <strong>mục yêu thích của bạn</strong>",
- "A new file or folder has been <strong>restored</strong>" : "Một tập tin hoặc thư mục mới đã được <strong>khôi phục</strong>",
"Upload (max. %s)" : "Tải lên (tối đa. %s)",
"File handling" : "Xử lý tập tin",
"Maximum upload size" : "Kích thước tối đa ",
@@ -128,6 +127,7 @@ OC.L10N.register(
"Copy local link" : "Sao chép liên kết cục bộ",
"Folder" : "Thư mục",
"Upload" : "Tải lên",
+ "A new file or folder has been <strong>restored</strong>" : "Một tập tin hoặc thư mục mới đã được <strong>khôi phục</strong>",
"No favorites" : "Không có mục ưa thích nào"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json
index 35512dc6a23..3b4d0a4a3a0 100644
--- a/apps/files/l10n/vi.json
+++ b/apps/files/l10n/vi.json
@@ -92,7 +92,6 @@
"You moved {oldfile} to {newfile}" : "Bạn đã chuyển {oldfile} tới {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} đã chuyển {oldfile} tới {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Một tệp đã được thêm hoặc bị xóa khỏi <strong>mục yêu thích của bạn</strong>",
- "A new file or folder has been <strong>restored</strong>" : "Một tập tin hoặc thư mục mới đã được <strong>khôi phục</strong>",
"Upload (max. %s)" : "Tải lên (tối đa. %s)",
"File handling" : "Xử lý tập tin",
"Maximum upload size" : "Kích thước tối đa ",
@@ -126,6 +125,7 @@
"Copy local link" : "Sao chép liên kết cục bộ",
"Folder" : "Thư mục",
"Upload" : "Tải lên",
+ "A new file or folder has been <strong>restored</strong>" : "Một tập tin hoặc thư mục mới đã được <strong>khôi phục</strong>",
"No favorites" : "Không có mục ưa thích nào"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 1eefc175ab6..906193e5bf8 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -102,9 +102,9 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的文件/文件夹已经 <strong>创建</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "文件/文件夹已删除",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "仅限 <strong>收藏文件</strong>的创建和更改通知 <em>(仅限流)</em>",
- "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
+ "A file or folder has been <strong>restored</strong>" : "文件/文件夹已恢复",
"Unlimited" : "无限制",
"Upload (max. %s)" : "上传 (最大 %s)",
"File handling" : "文件处理",
@@ -146,6 +146,8 @@ OC.L10N.register(
"Copy local link" : "复制本地链接",
"Folder" : "文件夹",
"Upload" : "上传",
+ "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
"No favorites" : "无收藏"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 974b388f1a7..1dbe219147d 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -100,9 +100,9 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的文件/文件夹已经 <strong>创建</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "文件/文件夹已删除",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "仅限 <strong>收藏文件</strong>的创建和更改通知 <em>(仅限流)</em>",
- "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
+ "A file or folder has been <strong>restored</strong>" : "文件/文件夹已恢复",
"Unlimited" : "无限制",
"Upload (max. %s)" : "上传 (最大 %s)",
"File handling" : "文件处理",
@@ -144,6 +144,8 @@
"Copy local link" : "复制本地链接",
"Folder" : "文件夹",
"Upload" : "上传",
+ "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
"No favorites" : "无收藏"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index ce73c32e00c..2b68e6ae0da 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "空間暫時無法使用",
"Storage invalid" : "無效的儲存空間",
"Unknown error" : "未知的錯誤",
"All files" : "所有檔案",
@@ -13,15 +14,20 @@ OC.L10N.register(
"Upload cancelled." : "上傳已取消",
"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" : "空間不足",
"Uploading..." : "上傳中…",
"..." : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
+ "Move" : "移動",
+ "Target folder" : "目標資料夾",
"Delete" : "刪除",
"Disconnect storage" : "斷開儲存空間連接",
"Unshare" : "取消分享",
+ "Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
"Select" : "選擇",
@@ -39,6 +45,7 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "無法建立檔案 \"{file}\",因為此檔案已存在",
"Could not create folder \"{dir}\" because it already exists" : "無法建立資料夾 \"{dir}\",因為此資料夾已存在",
"Error deleting file \"{fileName}\"." : "刪除 \"{fileName}\" 出錯",
+ "No search results in other folders for {tag}{filter}{endtag}" : "在其它資料夾中沒有找到 {tag}{filter}{endtag}",
"Name" : "名稱",
"Size" : "大小",
"Modified" : "修改時間",
@@ -51,22 +58,54 @@ OC.L10N.register(
"New" : "新增",
"\"{name}\" is an invalid file name." : "{name} 是無效的檔名",
"File name cannot be empty." : "檔名不能為空",
+ "\"{name}\" is not an allowed filetype" : "\"{name}\" 並不是經允許的檔案類型",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的儲存空間快要滿了 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的儲存空間快要滿了 ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["符合「{filter}」"],
"View in folder" : "在資料夾中檢視",
+ "Copied!" : "已複製",
+ "Copy direct link (only works for users who have access to this file/folder)" : "複製直接連結(只對能存取的用戶有用)",
"Path" : "路徑",
"_%n byte_::_%n bytes_" : ["%n 位元組"],
"Favorited" : "已加入最愛",
"Favorite" : "我的最愛",
- "Folder" : "資料夾",
"New folder" : "新資料夾",
- "Upload" : "上傳",
+ "Upload file" : "上傳檔案",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
+ "Added to favorites" : "添加到最愛",
+ "Removed from favorites" : "從最愛移除",
+ "You added {file} to your favorites" : "你已添加 {file} 至最愛",
+ "You removed {file} from your favorites" : "你已移除 {file} 從最愛",
+ "File changes" : "檔案更動",
+ "Created by {user}" : "由 {user} 建立",
+ "Changed by {user}" : "由 {user} 改動",
+ "Deleted by {user}" : "由 {user} 刪除",
+ "Restored by {user}" : "由 {user} 還原",
+ "Renamed by {user}" : "由 {user} 重新命名",
+ "Moved by {user}" : "由 {user} 移動",
+ "\"remote user\"" : "「遠端用戶」",
+ "You created {file}" : "您建立了 {file}",
+ "{user} created {file}" : "{user} 建立了 {file}",
+ "{file} was created in a public folder" : "{file} 已建立於共享資料夾",
+ "You changed {file}" : "您變更了 {file}",
+ "{user} changed {file}" : "{user} 變更了 {file}",
+ "You deleted {file}" : "您刪除了 {file}",
+ "{user} deleted {file}" : "{user} 刪除了 {file}",
+ "You restored {file}" : "您還原了 {file}",
+ "{user} restored {file}" : "{user} 還原了 {file}",
+ "You renamed {oldfile} to {newfile}" : "您變更 {oldfile} 為 {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 變更 {oldfile} 為 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您移動 {oldfile} 到 {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} 移動 {oldfile} 到 {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "檔案已被新增或移除從 <strong>最愛</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "檔案或目錄已被 <strong>更動</strong> 或 <strong>改名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
"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)",
"File handling" : "檔案處理",
"Maximum upload size" : "上傳限制",
@@ -74,6 +113,8 @@ OC.L10N.register(
"Save" : "儲存",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "如果使用 PHP-FPM ,此設定值需要5分鐘左右才會生效。",
"Missing permissions to edit from here." : "您沒有在此編輯的權限",
+ "%s of %s used" : "在 %s 中使用了 %s",
+ "%s used" : "%s已使用",
"Settings" : "設定",
"Show hidden files" : "顯示隱藏檔",
"WebDAV" : "WebDAV",
@@ -84,55 +125,29 @@ OC.L10N.register(
"Select all" : "全選",
"Upload too large" : "上傳過大",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "您試圖上傳的檔案大小超過伺服器的限制",
- "No favorites" : "沒有最愛",
+ "No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
+ "Shared with you" : "與您分享",
+ "Shared with others" : "與其他人分享",
+ "Shared by link" : "由連結分享",
+ "Tags" : "標籤",
+ "Deleted files" : "回收桶",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
- "Storage not available" : "無法存取儲存空間",
- "Unable to set upload directory." : "無法設定上傳目錄",
- "Invalid Token" : "無效的 token",
- "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知",
- "There is no error, the file uploaded with success" : "一切都順利,檔案上傳成功",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上傳的檔案大小超過 HTML 表單中 MAX_FILE_SIZE 的限制",
- "The uploaded file was only partially uploaded" : "只有檔案的一部分被上傳",
- "No file was uploaded" : "沒有檔案被上傳",
- "Missing a temporary folder" : "找不到暫存資料夾",
- "Failed to write to disk" : "寫入硬碟失敗",
- "Not enough storage available" : "儲存空間不足",
- "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除",
- "Upload failed. Could not find uploaded file" : "上傳失敗,找不到上傳的檔案",
- "Upload failed. Could not get file info." : "上傳失敗,無法取得檔案資訊",
- "Invalid directory." : "無效的資料夾",
- "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}",
- "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}",
- "Could not get result from server." : "無法從伺服器取回結果",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["剩下 {hours}:{minutes}:{seconds} 小時"],
"{hours}:{minutes}h" : "{hours}:{minutes} 小時",
- "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["剩下 {minutes}:{seconds} 分鐘"],
"{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
+ "_{seconds} second left_::_{seconds} seconds left_" : ["剩下 {seconds} 秒"],
"{seconds}s" : "{seconds} 秒",
"Any moment now..." : "即將完成…",
"Soon..." : "即將完成…",
"File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
- "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
- "Local link" : "本地連結",
- "{newname} already exists" : "{newname} 已經存在",
- "A file or folder has been <strong>changed</strong>" : "檔案或目錄已被 <strong>變更</strong>",
- "A file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
- "A file or folder has been <strong>restored</strong>" : "檔案或目錄已被 <strong>恢復</strong>",
- "You created %1$s" : "您建立了 %1$s",
- "%2$s created %1$s" : "%2$s 已建立 %1$s",
- "%1$s was created in a public folder" : "%1$s 已建立於公開的目錄",
- "You changed %1$s" : "您變更了 %1$s",
- "%2$s changed %1$s" : "%2$s 已變更了 %1$s",
- "You deleted %1$s" : "您刪除了 %1$s",
- "%2$s deleted %1$s" : "%2$s 已刪除 %1$s",
- "You restored %1$s" : "您還原了 %1$s",
- "%2$s restored %1$s" : "%2$s 還原了 %1$s",
- "Changed by %2$s" : "由 %2$s 改動",
- "Deleted by %2$s" : "由 %2$s 刪除",
- "Restored by %2$s" : "由 %2$s 還原"
+ "Copy local link" : "複製本地連結",
+ "Folder" : "資料夾",
+ "Upload" : "上傳",
+ "A new file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "檔案或目錄已被 <strong>恢復</strong>",
+ "No favorites" : "沒有最愛"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 697b35eb111..0efb86940c2 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Storage is temporarily not available" : "空間暫時無法使用",
"Storage invalid" : "無效的儲存空間",
"Unknown error" : "未知的錯誤",
"All files" : "所有檔案",
@@ -11,15 +12,20 @@
"Upload cancelled." : "上傳已取消",
"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" : "空間不足",
"Uploading..." : "上傳中…",
"..." : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
+ "Move" : "移動",
+ "Target folder" : "目標資料夾",
"Delete" : "刪除",
"Disconnect storage" : "斷開儲存空間連接",
"Unshare" : "取消分享",
+ "Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
"Select" : "選擇",
@@ -37,6 +43,7 @@
"Could not create file \"{file}\" because it already exists" : "無法建立檔案 \"{file}\",因為此檔案已存在",
"Could not create folder \"{dir}\" because it already exists" : "無法建立資料夾 \"{dir}\",因為此資料夾已存在",
"Error deleting file \"{fileName}\"." : "刪除 \"{fileName}\" 出錯",
+ "No search results in other folders for {tag}{filter}{endtag}" : "在其它資料夾中沒有找到 {tag}{filter}{endtag}",
"Name" : "名稱",
"Size" : "大小",
"Modified" : "修改時間",
@@ -49,22 +56,54 @@
"New" : "新增",
"\"{name}\" is an invalid file name." : "{name} 是無效的檔名",
"File name cannot be empty." : "檔名不能為空",
+ "\"{name}\" is not an allowed filetype" : "\"{name}\" 並不是經允許的檔案類型",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的儲存空間快要滿了 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的儲存空間快要滿了 ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["符合「{filter}」"],
"View in folder" : "在資料夾中檢視",
+ "Copied!" : "已複製",
+ "Copy direct link (only works for users who have access to this file/folder)" : "複製直接連結(只對能存取的用戶有用)",
"Path" : "路徑",
"_%n byte_::_%n bytes_" : ["%n 位元組"],
"Favorited" : "已加入最愛",
"Favorite" : "我的最愛",
- "Folder" : "資料夾",
"New folder" : "新資料夾",
- "Upload" : "上傳",
+ "Upload file" : "上傳檔案",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
+ "Added to favorites" : "添加到最愛",
+ "Removed from favorites" : "從最愛移除",
+ "You added {file} to your favorites" : "你已添加 {file} 至最愛",
+ "You removed {file} from your favorites" : "你已移除 {file} 從最愛",
+ "File changes" : "檔案更動",
+ "Created by {user}" : "由 {user} 建立",
+ "Changed by {user}" : "由 {user} 改動",
+ "Deleted by {user}" : "由 {user} 刪除",
+ "Restored by {user}" : "由 {user} 還原",
+ "Renamed by {user}" : "由 {user} 重新命名",
+ "Moved by {user}" : "由 {user} 移動",
+ "\"remote user\"" : "「遠端用戶」",
+ "You created {file}" : "您建立了 {file}",
+ "{user} created {file}" : "{user} 建立了 {file}",
+ "{file} was created in a public folder" : "{file} 已建立於共享資料夾",
+ "You changed {file}" : "您變更了 {file}",
+ "{user} changed {file}" : "{user} 變更了 {file}",
+ "You deleted {file}" : "您刪除了 {file}",
+ "{user} deleted {file}" : "{user} 刪除了 {file}",
+ "You restored {file}" : "您還原了 {file}",
+ "{user} restored {file}" : "{user} 還原了 {file}",
+ "You renamed {oldfile} to {newfile}" : "您變更 {oldfile} 為 {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 變更 {oldfile} 為 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您移動 {oldfile} 到 {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} 移動 {oldfile} 到 {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "檔案已被新增或移除從 <strong>最愛</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "檔案或目錄已被 <strong>更動</strong> 或 <strong>改名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
"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)",
"File handling" : "檔案處理",
"Maximum upload size" : "上傳限制",
@@ -72,6 +111,8 @@
"Save" : "儲存",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "如果使用 PHP-FPM ,此設定值需要5分鐘左右才會生效。",
"Missing permissions to edit from here." : "您沒有在此編輯的權限",
+ "%s of %s used" : "在 %s 中使用了 %s",
+ "%s used" : "%s已使用",
"Settings" : "設定",
"Show hidden files" : "顯示隱藏檔",
"WebDAV" : "WebDAV",
@@ -82,55 +123,29 @@
"Select all" : "全選",
"Upload too large" : "上傳過大",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "您試圖上傳的檔案大小超過伺服器的限制",
- "No favorites" : "沒有最愛",
+ "No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
+ "Shared with you" : "與您分享",
+ "Shared with others" : "與其他人分享",
+ "Shared by link" : "由連結分享",
+ "Tags" : "標籤",
+ "Deleted files" : "回收桶",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
- "Storage not available" : "無法存取儲存空間",
- "Unable to set upload directory." : "無法設定上傳目錄",
- "Invalid Token" : "無效的 token",
- "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知",
- "There is no error, the file uploaded with success" : "一切都順利,檔案上傳成功",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上傳的檔案大小超過 HTML 表單中 MAX_FILE_SIZE 的限制",
- "The uploaded file was only partially uploaded" : "只有檔案的一部分被上傳",
- "No file was uploaded" : "沒有檔案被上傳",
- "Missing a temporary folder" : "找不到暫存資料夾",
- "Failed to write to disk" : "寫入硬碟失敗",
- "Not enough storage available" : "儲存空間不足",
- "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除",
- "Upload failed. Could not find uploaded file" : "上傳失敗,找不到上傳的檔案",
- "Upload failed. Could not get file info." : "上傳失敗,無法取得檔案資訊",
- "Invalid directory." : "無效的資料夾",
- "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}",
- "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}",
- "Could not get result from server." : "無法從伺服器取回結果",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["剩下 {hours}:{minutes}:{seconds} 小時"],
"{hours}:{minutes}h" : "{hours}:{minutes} 小時",
- "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["剩下 {minutes}:{seconds} 分鐘"],
"{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
+ "_{seconds} second left_::_{seconds} seconds left_" : ["剩下 {seconds} 秒"],
"{seconds}s" : "{seconds} 秒",
"Any moment now..." : "即將完成…",
"Soon..." : "即將完成…",
"File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
- "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
- "Local link" : "本地連結",
- "{newname} already exists" : "{newname} 已經存在",
- "A file or folder has been <strong>changed</strong>" : "檔案或目錄已被 <strong>變更</strong>",
- "A file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
- "A file or folder has been <strong>restored</strong>" : "檔案或目錄已被 <strong>恢復</strong>",
- "You created %1$s" : "您建立了 %1$s",
- "%2$s created %1$s" : "%2$s 已建立 %1$s",
- "%1$s was created in a public folder" : "%1$s 已建立於公開的目錄",
- "You changed %1$s" : "您變更了 %1$s",
- "%2$s changed %1$s" : "%2$s 已變更了 %1$s",
- "You deleted %1$s" : "您刪除了 %1$s",
- "%2$s deleted %1$s" : "%2$s 已刪除 %1$s",
- "You restored %1$s" : "您還原了 %1$s",
- "%2$s restored %1$s" : "%2$s 還原了 %1$s",
- "Changed by %2$s" : "由 %2$s 改動",
- "Deleted by %2$s" : "由 %2$s 刪除",
- "Restored by %2$s" : "由 %2$s 還原"
+ "Copy local link" : "複製本地連結",
+ "Folder" : "資料夾",
+ "Upload" : "上傳",
+ "A new file or folder has been <strong>deleted</strong>" : "檔案或目錄已被 <strong>刪除</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "檔案或目錄已被 <strong>恢復</strong>",
+ "No favorites" : "沒有最愛"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/lib/Activity/Settings/FileDeleted.php b/apps/files/lib/Activity/Settings/FileDeleted.php
index c4948ded2fa..256e412b3f4 100644
--- a/apps/files/lib/Activity/Settings/FileDeleted.php
+++ b/apps/files/lib/Activity/Settings/FileDeleted.php
@@ -50,7 +50,7 @@ class FileDeleted implements ISetting {
* @since 11.0.0
*/
public function getName() {
- return $this->l->t('A new file or folder has been <strong>deleted</strong>');
+ return $this->l->t('A file or folder has been <strong>deleted</strong>');
}
/**
diff --git a/apps/files/lib/Activity/Settings/FileRestored.php b/apps/files/lib/Activity/Settings/FileRestored.php
index cedfef441ed..bac5485f5e4 100644
--- a/apps/files/lib/Activity/Settings/FileRestored.php
+++ b/apps/files/lib/Activity/Settings/FileRestored.php
@@ -50,7 +50,7 @@ class FileRestored implements ISetting {
* @since 11.0.0
*/
public function getName() {
- return $this->l->t('A new file or folder has been <strong>restored</strong>');
+ return $this->l->t('A file or folder has been <strong>restored</strong>');
}
/**
diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php
index d2cebce5ddc..4a5595999d2 100644
--- a/apps/files/lib/Helper.php
+++ b/apps/files/lib/Helper.php
@@ -227,7 +227,7 @@ class Helper {
foreach ($filesById as $key => $fileWithTags) {
foreach($fileList as $key2 => $file){
- if( $file[$fileIdentifier] == $key){
+ if( $file[$fileIdentifier] === $key){
$fileList[$key2] = $fileWithTags;
}
}
diff --git a/apps/files/lib/Settings/Admin.php b/apps/files/lib/Settings/Admin.php
index da1d5deaf35..faaeb5b89c1 100644
--- a/apps/files/lib/Settings/Admin.php
+++ b/apps/files/lib/Settings/Admin.php
@@ -46,7 +46,7 @@ class Admin implements ISettings {
* @return TemplateResponse
*/
public function getForm() {
- $htaccessWorking = (getenv('htaccessWorking') == 'true');
+ $htaccessWorking = (getenv('htaccessWorking') === 'true');
$htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess');
$userIniWritable = is_writable(\OC::$SERVERROOT.'/.user.ini');
diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php
index db2570800af..8b257b77ef6 100644
--- a/apps/files_external/ajax/oauth2.php
+++ b/apps/files_external/ajax/oauth2.php
@@ -46,8 +46,8 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST
$client->setApprovalPrompt('force');
$client->setAccessType('offline');
if (isset($_POST['step'])) {
- $step = $_POST['step'];
- if ($step == 1) {
+ $step = (int) $_POST['step'];
+ if ($step === 1) {
try {
$authUrl = $client->createAuthUrl();
OCP\JSON::success(array('data' => array(
@@ -58,7 +58,7 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST
'message' => $l->t('Step 1 failed. Exception: %s', array($exception->getMessage()))
)));
}
- } else if ($step == 2 && isset($_POST['code'])) {
+ } else if ($step === 2 && isset($_POST['code'])) {
try {
$token = $client->authenticate((string)$_POST['code']);
OCP\JSON::success(array('data' => array(
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js
index ae4ce989130..6c1a965c33d 100644
--- a/apps/files_external/js/statusmanager.js
+++ b/apps/files_external/js/statusmanager.js
@@ -102,7 +102,7 @@ OCA.External.StatusManager = {
var message;
if (mountData.location === 3) {
// In this case the error is because mount point use Login credentials and don't exist in the session
- message = t('files_external', 'Couldn\'t access. Please logout and login to activate this mount point');
+ message = t('files_external', 'Couldn\'t access. Please log out and in again to activate this mount point');
} else {
message = t('files_external', 'Couldn\'t get the information from the remote server: {code} {type}', {
code: jqxhr.status,
@@ -267,7 +267,7 @@ OCA.External.StatusManager = {
// check if we have a list first
if (list === undefined && !self.emptyWarningShown) {
self.emptyWarningShown = true;
- OC.Notification.show(t('files_external', 'Couldn\'t get the list of Windows network drive mount points: empty response from the server'),
+ OC.Notification.show(t('files_external', 'Couldn\'t fetch list of Windows network drive mount points: Empty response from server'),
{type: 'error'}
);
return;
diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js
index 856b23415c6..616ef40d3f2 100644
--- a/apps/files_external/l10n/cs.js
+++ b/apps/files_external/l10n/cs.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Ukládá se...",
"Save" : "Uložit",
"Empty response from the server" : "Prázdná odpověď serveru",
- "Couldn't access. Please logout and login to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte",
"Couldn't get the information from the remote server: {code} {type}" : "Nelze obdržet informaci ze vzdáleného serveru: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nelze obdržet seznam vzdálených přípojných bodů: {type}",
"There was an error with message: " : "Došlo k chybě s tímto hlášením:",
"External mount error" : "Chyba vzdáleného úložiště",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Některá z nastavených vzdálených úložišť nejsou připojena. Pro více informací prosím klikněte na červenou šipku(y)",
"Please enter the credentials for the {mount} mount" : "Zadejte prosím přihlašovací údaje k přípojnému bodu {mount}",
"Username" : "Uživatelské jméno",
diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json
index 574ea9233c0..1ef87817d52 100644
--- a/apps/files_external/l10n/cs.json
+++ b/apps/files_external/l10n/cs.json
@@ -22,13 +22,13 @@
"Saving..." : "Ukládá se...",
"Save" : "Uložit",
"Empty response from the server" : "Prázdná odpověď serveru",
- "Couldn't access. Please logout and login to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte",
"Couldn't get the information from the remote server: {code} {type}" : "Nelze obdržet informaci ze vzdáleného serveru: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nelze obdržet seznam vzdálených přípojných bodů: {type}",
"There was an error with message: " : "Došlo k chybě s tímto hlášením:",
"External mount error" : "Chyba vzdáleného úložiště",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Některá z nastavených vzdálených úložišť nejsou připojena. Pro více informací prosím klikněte na červenou šipku(y)",
"Please enter the credentials for the {mount} mount" : "Zadejte prosím přihlašovací údaje k přípojnému bodu {mount}",
"Username" : "Uživatelské jméno",
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index d59d8895b4e..1af99a29bc5 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Speichere…",
"Save" : "Speichern",
"Empty response from the server" : "Leere Antwort vom Server",
- "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.",
"Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}",
"There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:",
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"external-storage" : "Externer Speicher",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen",
"Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein",
"Username" : "Benutzername",
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index 2f3388eac22..f3df4371abd 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -22,13 +22,13 @@
"Saving..." : "Speichere…",
"Save" : "Speichern",
"Empty response from the server" : "Leere Antwort vom Server",
- "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.",
"Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}",
"There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:",
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"external-storage" : "Externer Speicher",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen",
"Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein",
"Username" : "Benutzername",
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index be858c5b5d1..3972cbfa581 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Speichere …",
"Save" : "Speichern",
"Empty response from the server" : "Leere Antwort vom Server erhalten",
- "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte melden Sie sich ab und wieder an, damit Sie von diesem aus Endpunkt zugreifen können.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.",
"Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}",
"There was an error with message: " : "Ein Fehler ist aufgetreten:",
"External mount error" : "Externer Einhängefehler",
"external-storage" : "externer Speicher",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen",
"Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an",
"Username" : "Benutzername",
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index c2dc5d2ffcb..92ccc4cb945 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -22,13 +22,13 @@
"Saving..." : "Speichere …",
"Save" : "Speichern",
"Empty response from the server" : "Leere Antwort vom Server erhalten",
- "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte melden Sie sich ab und wieder an, damit Sie von diesem aus Endpunkt zugreifen können.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.",
"Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}",
"There was an error with message: " : "Ein Fehler ist aufgetreten:",
"External mount error" : "Externer Einhängefehler",
"external-storage" : "externer Speicher",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen",
"Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an",
"Username" : "Benutzername",
diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js
index b78e01863d5..e6c3055146c 100644
--- a/apps/files_external/l10n/el.js
+++ b/apps/files_external/l10n/el.js
@@ -24,13 +24,14 @@ OC.L10N.register(
"Saving..." : "Γίνεται αποθήκευση...",
"Save" : "Αποθήκευση",
"Empty response from the server" : "Κενή απάντηση από τον διακομιστή",
- "Couldn't access. Please logout and login to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλώ εξέλθετε και εισέλθετε ξανά ώστε να ενεργοποιήσετε το σημείο προσάρτησης",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης",
"Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}",
"There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:",
"External mount error" : "Σφάλμα εξωτερικής προσάρτησης",
"external-storage" : "εξωτερική-αποθήκευση",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Δεν μπορέσαμε να πάρουμε την λίστα των Windows δυκτιακών σημείων προσάρτησης: κενή απάντηση από τον εξυπηρετητή ",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Μερικά από τα διαμορφωμένα εξωτερικά σημεία προσάρτησης δεν είναι συνδεδεμένα. Παρακαλούμε κάντε κλικ στο κόκκινο βέλος(οι) για περισσότερες πληροφορίες",
"Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση",
"Username" : "Όνομα χρήστη",
"Password" : "Κωδικός πρόσβασης",
@@ -104,6 +105,7 @@ OC.L10N.register(
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ",
+ "External storage support" : "Υποστήριξη εξωτερικής αποθήκευσης",
"No external storage configured" : "Δεν έχει ρυθμιστεί κανένα εξωτερικό μέσο αποθήκευσης",
"You can add external storages in the personal settings" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις",
"Name" : "Όνομα",
diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json
index 67182e0b653..27b854551ac 100644
--- a/apps/files_external/l10n/el.json
+++ b/apps/files_external/l10n/el.json
@@ -22,13 +22,14 @@
"Saving..." : "Γίνεται αποθήκευση...",
"Save" : "Αποθήκευση",
"Empty response from the server" : "Κενή απάντηση από τον διακομιστή",
- "Couldn't access. Please logout and login to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλώ εξέλθετε και εισέλθετε ξανά ώστε να ενεργοποιήσετε το σημείο προσάρτησης",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης",
"Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}",
"There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:",
"External mount error" : "Σφάλμα εξωτερικής προσάρτησης",
"external-storage" : "εξωτερική-αποθήκευση",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Δεν μπορέσαμε να πάρουμε την λίστα των Windows δυκτιακών σημείων προσάρτησης: κενή απάντηση από τον εξυπηρετητή ",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Μερικά από τα διαμορφωμένα εξωτερικά σημεία προσάρτησης δεν είναι συνδεδεμένα. Παρακαλούμε κάντε κλικ στο κόκκινο βέλος(οι) για περισσότερες πληροφορίες",
"Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση",
"Username" : "Όνομα χρήστη",
"Password" : "Κωδικός πρόσβασης",
@@ -102,6 +103,7 @@
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ",
+ "External storage support" : "Υποστήριξη εξωτερικής αποθήκευσης",
"No external storage configured" : "Δεν έχει ρυθμιστεί κανένα εξωτερικό μέσο αποθήκευσης",
"You can add external storages in the personal settings" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις",
"Name" : "Όνομα",
diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js
index 7d6a81f731e..c644b405ed4 100644
--- a/apps/files_external/l10n/en_GB.js
+++ b/apps/files_external/l10n/en_GB.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Saving...",
"Save" : "Save",
"Empty response from the server" : "Empty response from the server",
- "Couldn't access. Please logout and login to activate this mount point" : "Couldn't access. Please logout and login to activate this mount point",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point",
"Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}",
"There was an error with message: " : "There was an error with message: ",
"External mount error" : "External mount error",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Couldn't get the list of Windows network drive mount points: empty response from the server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Some of the configured external mount points are not connected. Please click on the red row(s) for more information",
"Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount",
"Username" : "Username",
diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json
index c8dba8e5a6e..1669099c8f5 100644
--- a/apps/files_external/l10n/en_GB.json
+++ b/apps/files_external/l10n/en_GB.json
@@ -22,13 +22,13 @@
"Saving..." : "Saving...",
"Save" : "Save",
"Empty response from the server" : "Empty response from the server",
- "Couldn't access. Please logout and login to activate this mount point" : "Couldn't access. Please logout and login to activate this mount point",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point",
"Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}",
"There was an error with message: " : "There was an error with message: ",
"External mount error" : "External mount error",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Couldn't get the list of Windows network drive mount points: empty response from the server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Some of the configured external mount points are not connected. Please click on the red row(s) for more information",
"Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount",
"Username" : "Username",
diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js
index d29f1026079..8d17e2b578a 100644
--- a/apps/files_external/l10n/es.js
+++ b/apps/files_external/l10n/es.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía desde el servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje",
+ "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, sal de la cuenta y vuelve a entrar para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}",
"There was an error with message: " : "Hubo un error con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento-externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No se puede obtener la lista de unidades de red y sus puntos de montaje de Windows: respuesta vacía desde el servidor",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no están conectados. Por favor, haga clic en la fila roja (s) para obtener más información",
"Please enter the credentials for the {mount} mount" : "Por favor introduzca los credenciales para el punto de montaje {mount}",
"Username" : "Nombre de usuario",
diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json
index 52a654b6ae6..98515c2e764 100644
--- a/apps/files_external/l10n/es.json
+++ b/apps/files_external/l10n/es.json
@@ -22,13 +22,13 @@
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía desde el servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje",
+ "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, sal de la cuenta y vuelve a entrar para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}",
"There was an error with message: " : "Hubo un error con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento-externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No se puede obtener la lista de unidades de red y sus puntos de montaje de Windows: respuesta vacía desde el servidor",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no están conectados. Por favor, haga clic en la fila roja (s) para obtener más información",
"Please enter the credentials for the {mount} mount" : "Por favor introduzca los credenciales para el punto de montaje {mount}",
"Username" : "Nombre de usuario",
diff --git a/apps/files_external/l10n/es_AR.js b/apps/files_external/l10n/es_AR.js
index ff7d7d488e6..9adf0f79679 100644
--- a/apps/files_external/l10n/es_AR.js
+++ b/apps/files_external/l10n/es_AR.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía del servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}",
"There was an error with message: " : "Se presentó un problema con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información",
"Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}",
"Username" : "Nombre de usuario",
diff --git a/apps/files_external/l10n/es_AR.json b/apps/files_external/l10n/es_AR.json
index 2b778b6e595..0c6434a3c5c 100644
--- a/apps/files_external/l10n/es_AR.json
+++ b/apps/files_external/l10n/es_AR.json
@@ -22,13 +22,11 @@
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía del servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}",
"There was an error with message: " : "Se presentó un problema con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información",
"Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}",
"Username" : "Nombre de usuario",
diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js
index 5c8427caf60..6c4b911e500 100644
--- a/apps/files_external/l10n/es_MX.js
+++ b/apps/files_external/l10n/es_MX.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta del servidor vacía",
- "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Por favor cierra e inicia sesión para activar este punto de montaje",
+ "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}",
"There was an error with message: " : "Se presentó un problema con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Por favor has click en los renglon(es) en rojo para más información",
"Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}",
"Username" : "Usuario",
diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json
index f1c44ca8395..f616e52ada9 100644
--- a/apps/files_external/l10n/es_MX.json
+++ b/apps/files_external/l10n/es_MX.json
@@ -22,13 +22,13 @@
"Saving..." : "Guardando...",
"Save" : "Guardar",
"Empty response from the server" : "Respuesta del servidor vacía",
- "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Por favor cierra e inicia sesión para activar este punto de montaje",
+ "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje",
"Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}",
"There was an error with message: " : "Se presentó un problema con el mensaje:",
"External mount error" : "Error de montaje externo",
"external-storage" : "almacenamiento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Por favor has click en los renglon(es) en rojo para más información",
"Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}",
"Username" : "Usuario",
diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js
index 04f1d917614..ea12484f910 100644
--- a/apps/files_external/l10n/fi.js
+++ b/apps/files_external/l10n/fi.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Tallennetaan...",
"Save" : "Tallenna",
"Empty response from the server" : "Tyhjä vastaus palvelimelta",
- "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen",
"Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}",
"There was an error with message: " : "Tapahtui virhe viestillä:",
"External mount error" : "Ulkoinen liitosvirhe",
"external-storage" : "ulkoinen taltio",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja",
"Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}",
"Username" : "Käyttäjätunnus",
diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json
index 3638d59cfbb..79219593ed6 100644
--- a/apps/files_external/l10n/fi.json
+++ b/apps/files_external/l10n/fi.json
@@ -22,13 +22,11 @@
"Saving..." : "Tallennetaan...",
"Save" : "Tallenna",
"Empty response from the server" : "Tyhjä vastaus palvelimelta",
- "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen",
"Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}",
"There was an error with message: " : "Tapahtui virhe viestillä:",
"External mount error" : "Ulkoinen liitosvirhe",
"external-storage" : "ulkoinen taltio",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja",
"Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}",
"Username" : "Käyttäjätunnus",
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index 2fcea0a7324..bf52096489c 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Enregistrement...",
"Save" : "Enregistrer",
"Empty response from the server" : "Réponse vide du serveur",
- "Couldn't access. Please logout and login to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage",
"Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}",
"There was an error with message: " : "Il y a eu une erreur avec le message :",
"External mount error" : "Erreur de point de montage externe",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations",
"Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}",
"Username" : "Nom d'utilisateur",
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index dda1877e9e0..9d7d3e26742 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -22,13 +22,13 @@
"Saving..." : "Enregistrement...",
"Save" : "Enregistrer",
"Empty response from the server" : "Réponse vide du serveur",
- "Couldn't access. Please logout and login to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage",
"Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}",
"There was an error with message: " : "Il y a eu une erreur avec le message :",
"External mount error" : "Erreur de point de montage externe",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations",
"Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}",
"Username" : "Nom d'utilisateur",
diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js
index 1945d866141..6c544085ec3 100644
--- a/apps/files_external/l10n/he.js
+++ b/apps/files_external/l10n/he.js
@@ -22,12 +22,10 @@ OC.L10N.register(
"Saved" : "נשמר",
"Save" : "שמירה",
"Empty response from the server" : "תגובה ריקה מהשרת",
- "Couldn't access. Please logout and login to activate this mount point" : "לא ניתן להכנס. יש להתנתק ולהתחבר כדי להפעיל את נקודת העיגון הזו",
"Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}",
"There was an error with message: " : "התרחשה שגיאה עם הודעה: ",
"External mount error" : "שגיאת עגינה חיצונית",
"external-storage" : "אחסון חיצוני",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "לא ניתן היה לקבל את רשימת נקודות העיגון של כונן הרשת של Window: תגובה ריקה מהשרת",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "חלק מנקודות העיגון החיצוניות שהוגדרו אינן מחוברות. יש ללחוץ על השורה/ות האדומה/ות למידע נוסף",
"Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}",
"Username" : "שם משתמש",
diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json
index 6fd1bae007f..56e4631b7e4 100644
--- a/apps/files_external/l10n/he.json
+++ b/apps/files_external/l10n/he.json
@@ -20,12 +20,10 @@
"Saved" : "נשמר",
"Save" : "שמירה",
"Empty response from the server" : "תגובה ריקה מהשרת",
- "Couldn't access. Please logout and login to activate this mount point" : "לא ניתן להכנס. יש להתנתק ולהתחבר כדי להפעיל את נקודת העיגון הזו",
"Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}",
"There was an error with message: " : "התרחשה שגיאה עם הודעה: ",
"External mount error" : "שגיאת עגינה חיצונית",
"external-storage" : "אחסון חיצוני",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "לא ניתן היה לקבל את רשימת נקודות העיגון של כונן הרשת של Window: תגובה ריקה מהשרת",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "חלק מנקודות העיגון החיצוניות שהוגדרו אינן מחוברות. יש ללחוץ על השורה/ות האדומה/ות למידע נוסף",
"Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}",
"Username" : "שם משתמש",
diff --git a/apps/files_external/l10n/hu.js b/apps/files_external/l10n/hu.js
index ceec7cbd0e8..af069ba1e52 100644
--- a/apps/files_external/l10n/hu.js
+++ b/apps/files_external/l10n/hu.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Mentés...",
"Save" : "Mentés",
"Empty response from the server" : "Üres válasz a szervertől",
- "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérlek próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.",
"Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli szerverről: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}",
"There was an error with message: " : "Hiba történt ezzel az üzenettel:",
"External mount error" : "Külső csatolási hiba",
"external-storage" : "külső tároló",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.",
"Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}",
"Username" : "Felhasználónév",
diff --git a/apps/files_external/l10n/hu.json b/apps/files_external/l10n/hu.json
index 7413b33c954..780e76c9286 100644
--- a/apps/files_external/l10n/hu.json
+++ b/apps/files_external/l10n/hu.json
@@ -22,13 +22,11 @@
"Saving..." : "Mentés...",
"Save" : "Mentés",
"Empty response from the server" : "Üres válasz a szervertől",
- "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérlek próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.",
"Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli szerverről: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}",
"There was an error with message: " : "Hiba történt ezzel az üzenettel:",
"External mount error" : "Külső csatolási hiba",
"external-storage" : "külső tároló",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.",
"Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}",
"Username" : "Felhasználónév",
diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js
index ea4aa63c00d..20d950f3eba 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Menyimpan...",
"Save" : "Simpan",
"Empty response from the server" : "Tidak ada respon dari server",
- "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini",
"Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}",
"There was an error with message: " : "Terjadi kesalahan dengan pesan:",
"External mount error" : "Kesalahan mount eksternal",
"external-storage" : "penyimpanan-eksternal",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya",
"Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}",
"Username" : "Nama Pengguna",
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index 0126765f1c7..029abb172cf 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -22,13 +22,11 @@
"Saving..." : "Menyimpan...",
"Save" : "Simpan",
"Empty response from the server" : "Tidak ada respon dari server",
- "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini",
"Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}",
"There was an error with message: " : "Terjadi kesalahan dengan pesan:",
"External mount error" : "Kesalahan mount eksternal",
"external-storage" : "penyimpanan-eksternal",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya",
"Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}",
"Username" : "Nama Pengguna",
diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js
index 984c3553c26..ce6dbdac8db 100644
--- a/apps/files_external/l10n/is.js
+++ b/apps/files_external/l10n/is.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Er að vista ...",
"Save" : "Vista",
"Empty response from the server" : "Tómt svar frá þjóni móttekið",
- "Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
"Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}",
"There was an error with message: " : "Það kom upp villa með skilaboðunum: ",
"External mount error" : "Villa við tengingu í fjartengdu skráakerfi",
"external-storage" : "ytri-gagnageymsla",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa: autt svar frá þjóni",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sumir uppsettir tengipunktar eru ekki tengdir í skráakerfið. Smelltu á rauðu örina/örvarnar til að fá frekari upplýsingar",
"Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn",
"Username" : "Notandanafn",
diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json
index 848e28145ed..33e424468c8 100644
--- a/apps/files_external/l10n/is.json
+++ b/apps/files_external/l10n/is.json
@@ -22,13 +22,13 @@
"Saving..." : "Er að vista ...",
"Save" : "Vista",
"Empty response from the server" : "Tómt svar frá þjóni móttekið",
- "Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
"Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}",
"There was an error with message: " : "Það kom upp villa með skilaboðunum: ",
"External mount error" : "Villa við tengingu í fjartengdu skráakerfi",
"external-storage" : "ytri-gagnageymsla",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa: autt svar frá þjóni",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sumir uppsettir tengipunktar eru ekki tengdir í skráakerfið. Smelltu á rauðu örina/örvarnar til að fá frekari upplýsingar",
"Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn",
"Username" : "Notandanafn",
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index ea8e6bfc63a..109e3925f0a 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Salvataggio in corso...",
"Save" : "Salva",
"Empty response from the server" : "Risposta vuota dal server",
- "Couldn't access. Please logout and login to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount",
"Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}",
"Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}",
"There was an error with message: " : "Si è verificato un errore con il messaggio:",
"External mount error" : "Errore di mount esterno",
"external-storage" : "archiviazione-esterna",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alcuni dei punti di mount esterni configurati non sono connessi. Fai clic sulle righe rosse per ulteriori informazioni",
"Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}",
"Username" : "Nome utente",
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 39fb46e600c..0a6b3483892 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -22,13 +22,11 @@
"Saving..." : "Salvataggio in corso...",
"Save" : "Salva",
"Empty response from the server" : "Risposta vuota dal server",
- "Couldn't access. Please logout and login to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount",
"Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}",
"Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}",
"There was an error with message: " : "Si è verificato un errore con il messaggio:",
"External mount error" : "Errore di mount esterno",
"external-storage" : "archiviazione-esterna",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alcuni dei punti di mount esterni configurati non sono connessi. Fai clic sulle righe rosse per ulteriori informazioni",
"Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}",
"Username" : "Nome utente",
diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js
index 22517ab2433..e76aece67ae 100644
--- a/apps/files_external/l10n/ja.js
+++ b/apps/files_external/l10n/ja.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "保存中...",
"Save" : "保存",
"Empty response from the server" : "サーバーから空の応答がありました",
- "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。",
+ "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。",
"Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}",
"Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}",
"There was an error with message: " : "メッセージ付きのエラーが発生しました:",
"External mount error" : "外部マウントエラー",
"external-storage" : "外部ストレージ",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください",
"Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください",
"Username" : "ユーザー名",
@@ -97,7 +97,7 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "共有",
"Domain" : "ドメイン",
- "SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS",
+ "SMB / CIFS using OC login" : "Nextcloud ログインを利用したSMB / CIFS",
"Username as share" : "共有名",
"OpenStack Object Storage" : "OpenStack ObjectStorage",
"Service name" : "サービス名",
diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json
index f696667858b..09243f9b1c7 100644
--- a/apps/files_external/l10n/ja.json
+++ b/apps/files_external/l10n/ja.json
@@ -22,13 +22,13 @@
"Saving..." : "保存中...",
"Save" : "保存",
"Empty response from the server" : "サーバーから空の応答がありました",
- "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。",
+ "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。",
"Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}",
"Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}",
"There was an error with message: " : "メッセージ付きのエラーが発生しました:",
"External mount error" : "外部マウントエラー",
"external-storage" : "外部ストレージ",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください",
"Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください",
"Username" : "ユーザー名",
@@ -95,7 +95,7 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "共有",
"Domain" : "ドメイン",
- "SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS",
+ "SMB / CIFS using OC login" : "Nextcloud ログインを利用したSMB / CIFS",
"Username as share" : "共有名",
"OpenStack Object Storage" : "OpenStack ObjectStorage",
"Service name" : "サービス名",
diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js
index cb081062c06..55e4cf85b11 100644
--- a/apps/files_external/l10n/ko.js
+++ b/apps/files_external/l10n/ko.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "저장 중...",
"Save" : "저장",
"Empty response from the server" : "서버에서 빈 응답이 돌아옴",
- "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오",
"Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}",
"There was an error with message: " : "오류 메시지: ",
"External mount error" : "외부 마운트 오류",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "일부 외부 마운트 지점을 연결할 수 없습니다. 빨간색으로 표시된 줄을 눌러서 더 많은 정보를 확인하십시오",
"Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오",
"Username" : "사용자 이름",
diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json
index 1e13f696dda..12b78dfca79 100644
--- a/apps/files_external/l10n/ko.json
+++ b/apps/files_external/l10n/ko.json
@@ -22,13 +22,11 @@
"Saving..." : "저장 중...",
"Save" : "저장",
"Empty response from the server" : "서버에서 빈 응답이 돌아옴",
- "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오",
"Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}",
"There was an error with message: " : "오류 메시지: ",
"External mount error" : "외부 마운트 오류",
"external-storage" : "external-storage",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "일부 외부 마운트 지점을 연결할 수 없습니다. 빨간색으로 표시된 줄을 눌러서 더 많은 정보를 확인하십시오",
"Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오",
"Username" : "사용자 이름",
diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js
index 80399022794..78a852b6f4a 100644
--- a/apps/files_external/l10n/lt_LT.js
+++ b/apps/files_external/l10n/lt_LT.js
@@ -1,31 +1,133 @@
OC.L10N.register(
"files_external",
{
- "Fetching request tokens failed. Verify that your app key and secret are correct." : "Nepavyko atsiųsti užklausos žymės. Patikrinkite savo programos raktą ir paslaptį.",
- "Step 1 failed. Exception: %s" : "1 žingsnio klaida: %s",
- "Step 2 failed. Exception: %s" : "2 žingsnio klaida: %s",
- "External storage" : "Išorinė saugykla",
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Užklausos prieigos raktų gavimas nepavyko. Įsitikinkite, kad jūsų programėlės raktas ir paslaptis yra teisingi.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Prieigos raktas negautas. Patikrinkite ar trečiųjų šalių programinės įrangos identifikacijos numeris ir slaptažodis yra teisingi.",
+ "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.",
+ "Step 1 failed. Exception: %s" : "Žingsnis 1 nepavyko. Išimtis: %s",
+ "Step 2 failed. Exception: %s" : "Žingsnis 2 nepavyko. Išimtis: %s",
+ "External storages" : "Išorinės saugyklos",
+ "Dropbox App Configuration" : "Dropbox programinės įrangos konfigūravimas",
+ "Google Drive App Configuration" : "Google disko programėlės konfigūracija",
"Personal" : "Asmeniniai",
- "Grant access" : "Suteikti priėjimą",
- "Saved" : "Išsaugoti",
- "Username" : "Prisijungimo vardas",
+ "System" : "Sistema",
+ "Grant access" : "Suteikti prieigą",
+ "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1",
+ "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2",
+ "Generate keys" : "Sukurti raktus",
+ "Error generating key pair" : "Klaida kuriant raktus",
+ "All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.",
+ "(group)" : "(grupė)",
+ "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)",
+ "Admin defined" : "Administratorius apibrėžtas",
+ "Saved" : "Įrašyta",
+ "Saving..." : "Įrašoma...",
+ "Save" : "Įrašyti",
+ "Empty response from the server" : "Negautas atsakymas iš serverio",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}",
+ "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}",
+ "There was an error with message: " : "Klaidos žinutė:",
+ "External mount error" : "Išorinio prijungimo klaida",
+ "external-storage" : "išorinė saugykla",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Kai kurios sukonfigūruotos išorinės saugyklos nebuvo prijungtos. Paspauskite ant raudonai nuspalvotų eilučių norėdami gauti išsamesnę informaciją",
+ "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui",
+ "Username" : "Naudotojo vardas",
"Password" : "Slaptažodis",
- "Save" : "Išsaugoti",
- "None" : "Nieko",
+ "Credentials saved" : "Prisijungimo duomenys yra išsaugoti",
+ "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų",
+ "Credentials required" : "Reikalingi prisijungimo duomenys",
+ "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"",
+ "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą",
+ "Invalid mount point" : "Neteisingas prijungimo taškas",
+ "Objectstore forbidden" : "Objektų saugykla yra neprieinama",
+ "Invalid storage backend \"%s\"" : "Netinkama saugyklos posistemė \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Neleidžiama naudoti posistemės \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Neleidžiama naudoti prisijungimo mechanizmo \"%s\"",
+ "Unsatisfied backend parameters" : " Netinkami posistemės parametrai",
+ "Unsatisfied authentication mechanism parameters" : "Netinkami parametrai perduoti į prisijungimo mechanizmą",
+ "Insufficient data: %s" : "Trūksta duomenų: %s",
+ "%s" : "%s",
+ "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"",
+ "Access key" : "Prieigos raktas",
+ "Secret key" : "Slaptažodis",
+ "Builtin" : "Įmontuotas",
+ "None" : "Nėra",
+ "OAuth1" : "OAuth1",
+ "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas",
+ "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis",
+ "OAuth2" : "OAuth2",
+ "Client ID" : "Kliento ID",
+ "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas",
+ "OpenStack" : "OpenStack",
+ "Tenant name" : "Laikino valdytojo vardas",
+ "Identity endpoint URL" : "Identiteto URL",
+ "Rackspace" : "Rackspace",
"API key" : "API raktas",
+ "Global credentials" : "Globalūs prisijungimo duomenys",
+ "Log-in credentials, save in database" : "Prisijungimo duomenys, saugoti duomenų bazėje",
+ "Username and password" : "Naudotojo vardas ir slaptažodis",
+ "Log-in credentials, save in session" : "Prisijungimo duomenys, saugoti sesijoje",
+ "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje",
+ "RSA public key" : "RSA viešasis raktas",
+ "Public key" : "Viešasis raktas",
+ "Amazon S3" : "Amazon S3",
+ "Bucket" : "Amazon S3 saugykla",
+ "Hostname" : "Domeno vardas",
"Port" : "Prievadas",
"Region" : "Regionas",
+ "Enable SSL" : "Įjungti SSL",
+ "Enable Path Style" : "Amazon S3 kelias",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Host" : "Mazgas",
+ "Remote subfolder" : "Nuotolinis poaplankis",
+ "Secure https://" : "Saugus https://",
+ "Dropbox" : "Dropbox",
+ "FTP" : "FTP",
+ "Host" : "Domenas",
+ "Secure ftps://" : "Saugus ftps://",
+ "Google Drive" : "Google diskas",
+ "Local" : "Vietinis",
"Location" : "Vieta",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
+ "SFTP" : "SFTP",
+ "Root" : "Šaknis",
+ "SFTP with secret key login" : "SFTP protokolas su prisijungimu",
+ "SMB / CIFS" : "SMB / CIFS",
"Share" : "Dalintis",
+ "Domain" : "Domenas",
+ "SMB / CIFS using OC login" : "SMB / CIFS, naudojant OC prisijungimą",
+ "Username as share" : "Samba dalinimosi vardas",
+ "OpenStack Object Storage" : "Objektų saugykla \"OpenStack\"",
+ "Service name" : "Paslaugos vardas",
+ "Request timeout (seconds)" : "Prisijungimo laikas (sekundėmis)",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.",
+ "External storage support" : "Išorinės saugyklos priežiūra",
+ "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla",
+ "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje",
"Name" : "Pavadinimas",
- "External Storage" : "Išorinės saugyklos",
- "Folder name" : "Katalogo pavadinimas",
+ "Storage type" : "Saugyklos tipas",
+ "Scope" : "Leidimas",
+ "Enable encryption" : "Įjungti šifravimą",
+ "Enable previews" : "Leisti peržiūras",
+ "Enable sharing" : "Leisti bendrinti",
+ "Check for changes" : "Patikrinti ar nėra pakeitimų",
+ "Never" : "Niekada",
+ "Once every direct access" : "Kartą per tiesioginę peržiūrą",
+ "Folder name" : "Aplanko pavadinimas",
+ "External storage" : "Išorinė saugykla",
+ "Authentication" : "Prisijungimas",
"Configuration" : "Konfigūracija",
+ "Available for" : "Prieinamas",
"Add storage" : "Pridėti saugyklą",
- "Delete" : "Ištrinti"
+ "Advanced settings" : "Išplėstiniai nustatymai",
+ "Delete" : "Ištrinti",
+ "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas",
+ "Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas",
+ "Storage with id \"%i\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%i\"",
+ "Storage with id \"%i\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%i\""
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json
index d7c4d7966ac..fd197a34803 100644
--- a/apps/files_external/l10n/lt_LT.json
+++ b/apps/files_external/l10n/lt_LT.json
@@ -1,29 +1,131 @@
{ "translations": {
- "Fetching request tokens failed. Verify that your app key and secret are correct." : "Nepavyko atsiųsti užklausos žymės. Patikrinkite savo programos raktą ir paslaptį.",
- "Step 1 failed. Exception: %s" : "1 žingsnio klaida: %s",
- "Step 2 failed. Exception: %s" : "2 žingsnio klaida: %s",
- "External storage" : "Išorinė saugykla",
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Užklausos prieigos raktų gavimas nepavyko. Įsitikinkite, kad jūsų programėlės raktas ir paslaptis yra teisingi.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Prieigos raktas negautas. Patikrinkite ar trečiųjų šalių programinės įrangos identifikacijos numeris ir slaptažodis yra teisingi.",
+ "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.",
+ "Step 1 failed. Exception: %s" : "Žingsnis 1 nepavyko. Išimtis: %s",
+ "Step 2 failed. Exception: %s" : "Žingsnis 2 nepavyko. Išimtis: %s",
+ "External storages" : "Išorinės saugyklos",
+ "Dropbox App Configuration" : "Dropbox programinės įrangos konfigūravimas",
+ "Google Drive App Configuration" : "Google disko programėlės konfigūracija",
"Personal" : "Asmeniniai",
- "Grant access" : "Suteikti priėjimą",
- "Saved" : "Išsaugoti",
- "Username" : "Prisijungimo vardas",
+ "System" : "Sistema",
+ "Grant access" : "Suteikti prieigą",
+ "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1",
+ "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2",
+ "Generate keys" : "Sukurti raktus",
+ "Error generating key pair" : "Klaida kuriant raktus",
+ "All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.",
+ "(group)" : "(grupė)",
+ "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)",
+ "Admin defined" : "Administratorius apibrėžtas",
+ "Saved" : "Įrašyta",
+ "Saving..." : "Įrašoma...",
+ "Save" : "Įrašyti",
+ "Empty response from the server" : "Negautas atsakymas iš serverio",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}",
+ "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}",
+ "There was an error with message: " : "Klaidos žinutė:",
+ "External mount error" : "Išorinio prijungimo klaida",
+ "external-storage" : "išorinė saugykla",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Kai kurios sukonfigūruotos išorinės saugyklos nebuvo prijungtos. Paspauskite ant raudonai nuspalvotų eilučių norėdami gauti išsamesnę informaciją",
+ "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui",
+ "Username" : "Naudotojo vardas",
"Password" : "Slaptažodis",
- "Save" : "Išsaugoti",
- "None" : "Nieko",
+ "Credentials saved" : "Prisijungimo duomenys yra išsaugoti",
+ "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų",
+ "Credentials required" : "Reikalingi prisijungimo duomenys",
+ "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"",
+ "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą",
+ "Invalid mount point" : "Neteisingas prijungimo taškas",
+ "Objectstore forbidden" : "Objektų saugykla yra neprieinama",
+ "Invalid storage backend \"%s\"" : "Netinkama saugyklos posistemė \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Neleidžiama naudoti posistemės \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Neleidžiama naudoti prisijungimo mechanizmo \"%s\"",
+ "Unsatisfied backend parameters" : " Netinkami posistemės parametrai",
+ "Unsatisfied authentication mechanism parameters" : "Netinkami parametrai perduoti į prisijungimo mechanizmą",
+ "Insufficient data: %s" : "Trūksta duomenų: %s",
+ "%s" : "%s",
+ "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"",
+ "Access key" : "Prieigos raktas",
+ "Secret key" : "Slaptažodis",
+ "Builtin" : "Įmontuotas",
+ "None" : "Nėra",
+ "OAuth1" : "OAuth1",
+ "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas",
+ "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis",
+ "OAuth2" : "OAuth2",
+ "Client ID" : "Kliento ID",
+ "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas",
+ "OpenStack" : "OpenStack",
+ "Tenant name" : "Laikino valdytojo vardas",
+ "Identity endpoint URL" : "Identiteto URL",
+ "Rackspace" : "Rackspace",
"API key" : "API raktas",
+ "Global credentials" : "Globalūs prisijungimo duomenys",
+ "Log-in credentials, save in database" : "Prisijungimo duomenys, saugoti duomenų bazėje",
+ "Username and password" : "Naudotojo vardas ir slaptažodis",
+ "Log-in credentials, save in session" : "Prisijungimo duomenys, saugoti sesijoje",
+ "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje",
+ "RSA public key" : "RSA viešasis raktas",
+ "Public key" : "Viešasis raktas",
+ "Amazon S3" : "Amazon S3",
+ "Bucket" : "Amazon S3 saugykla",
+ "Hostname" : "Domeno vardas",
"Port" : "Prievadas",
"Region" : "Regionas",
+ "Enable SSL" : "Įjungti SSL",
+ "Enable Path Style" : "Amazon S3 kelias",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Host" : "Mazgas",
+ "Remote subfolder" : "Nuotolinis poaplankis",
+ "Secure https://" : "Saugus https://",
+ "Dropbox" : "Dropbox",
+ "FTP" : "FTP",
+ "Host" : "Domenas",
+ "Secure ftps://" : "Saugus ftps://",
+ "Google Drive" : "Google diskas",
+ "Local" : "Vietinis",
"Location" : "Vieta",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
+ "SFTP" : "SFTP",
+ "Root" : "Šaknis",
+ "SFTP with secret key login" : "SFTP protokolas su prisijungimu",
+ "SMB / CIFS" : "SMB / CIFS",
"Share" : "Dalintis",
+ "Domain" : "Domenas",
+ "SMB / CIFS using OC login" : "SMB / CIFS, naudojant OC prisijungimą",
+ "Username as share" : "Samba dalinimosi vardas",
+ "OpenStack Object Storage" : "Objektų saugykla \"OpenStack\"",
+ "Service name" : "Paslaugos vardas",
+ "Request timeout (seconds)" : "Prisijungimo laikas (sekundėmis)",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.",
+ "External storage support" : "Išorinės saugyklos priežiūra",
+ "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla",
+ "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje",
"Name" : "Pavadinimas",
- "External Storage" : "Išorinės saugyklos",
- "Folder name" : "Katalogo pavadinimas",
+ "Storage type" : "Saugyklos tipas",
+ "Scope" : "Leidimas",
+ "Enable encryption" : "Įjungti šifravimą",
+ "Enable previews" : "Leisti peržiūras",
+ "Enable sharing" : "Leisti bendrinti",
+ "Check for changes" : "Patikrinti ar nėra pakeitimų",
+ "Never" : "Niekada",
+ "Once every direct access" : "Kartą per tiesioginę peržiūrą",
+ "Folder name" : "Aplanko pavadinimas",
+ "External storage" : "Išorinė saugykla",
+ "Authentication" : "Prisijungimas",
"Configuration" : "Konfigūracija",
+ "Available for" : "Prieinamas",
"Add storage" : "Pridėti saugyklą",
- "Delete" : "Ištrinti"
+ "Advanced settings" : "Išplėstiniai nustatymai",
+ "Delete" : "Ištrinti",
+ "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas",
+ "Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas",
+ "Storage with id \"%i\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%i\"",
+ "Storage with id \"%i\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%i\""
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js
index 9a751ca44bc..f37f892b08f 100644
--- a/apps/files_external/l10n/nb.js
+++ b/apps/files_external/l10n/nb.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Lagrer...",
"Save" : "Lagre",
"Empty response from the server" : "Tomt svar fra tjeneren",
- "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
"Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}",
"There was an error with message: " : "Det oppstod en feil med melding: ",
"External mount error" : "Ekstern oppkoblingsfeil",
"external-storage" : "eksternlagring",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.",
"Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}",
"Username" : "Brukernavn",
diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json
index 66a1a58fe45..eb934468197 100644
--- a/apps/files_external/l10n/nb.json
+++ b/apps/files_external/l10n/nb.json
@@ -22,13 +22,13 @@
"Saving..." : "Lagrer...",
"Save" : "Lagre",
"Empty response from the server" : "Tomt svar fra tjeneren",
- "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
"Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}",
"There was an error with message: " : "Det oppstod en feil med melding: ",
"External mount error" : "Ekstern oppkoblingsfeil",
"external-storage" : "eksternlagring",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.",
"Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}",
"Username" : "Brukernavn",
diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js
index 66b37e57bfc..cc00e2d44ea 100644
--- a/apps/files_external/l10n/nl.js
+++ b/apps/files_external/l10n/nl.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Bewaren...",
"Save" : "Bewaren",
"Empty response from the server" : "Lege reactie van de server",
- "Couldn't access. Please logout and login to activate this mount point" : "Geen toegang. Log uit en opnieuw in om dit koppelpunt te activeren",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren",
"Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}",
"There was an error with message: " : "Er was een fout met de volgende melding:",
"External mount error" : "Extern koppelpunt fout",
"external-storage" : "externe opslag",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: lege reactie van de server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sommige van de geconfigureerde koppelpunten zijn niet verbonden. Klik op de rode rij(en) voor meer informatie",
"Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount",
"Username" : "Gebruikersnaam",
diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json
index 7067fda56bf..fa9d2c7e75e 100644
--- a/apps/files_external/l10n/nl.json
+++ b/apps/files_external/l10n/nl.json
@@ -22,13 +22,13 @@
"Saving..." : "Bewaren...",
"Save" : "Bewaren",
"Empty response from the server" : "Lege reactie van de server",
- "Couldn't access. Please logout and login to activate this mount point" : "Geen toegang. Log uit en opnieuw in om dit koppelpunt te activeren",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren",
"Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}",
"There was an error with message: " : "Er was een fout met de volgende melding:",
"External mount error" : "Extern koppelpunt fout",
"external-storage" : "externe opslag",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: lege reactie van de server",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sommige van de geconfigureerde koppelpunten zijn niet verbonden. Klik op de rode rij(en) voor meer informatie",
"Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount",
"Username" : "Gebruikersnaam",
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index e6bc51457c9..5c9e34bda89 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Zapisywanie...",
"Save" : "Zapisz",
"Empty response from the server" : "Puste odpowiedzi z serwera",
- "Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania",
"Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}",
"There was an error with message: " : "Wystąpił błąd o treści:",
"External mount error" : "Błąd przy montowaniu zewnętrznym",
"external-storage" : "magazyn zewnętrzny",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nie udało się uzyskać listy punktów montowania dysku sieciowego z systemu Windows: puste odpowiedzi z serwera",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Niektóre skonfigurowane zewnętrzne punkty montowania są nie podłączone. Proszę kliknąć na czerwony rząd (y), aby uzyskać więcej informacji",
"Please enter the credentials for the {mount} mount" : "Proszę wprowadzić poświadczenia dla {mount} montażu",
"Username" : "Nazwa użytkownika",
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index fdc81eccf7b..3b60a3a760f 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -22,13 +22,11 @@
"Saving..." : "Zapisywanie...",
"Save" : "Zapisz",
"Empty response from the server" : "Puste odpowiedzi z serwera",
- "Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania",
"Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}",
"There was an error with message: " : "Wystąpił błąd o treści:",
"External mount error" : "Błąd przy montowaniu zewnętrznym",
"external-storage" : "magazyn zewnętrzny",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nie udało się uzyskać listy punktów montowania dysku sieciowego z systemu Windows: puste odpowiedzi z serwera",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Niektóre skonfigurowane zewnętrzne punkty montowania są nie podłączone. Proszę kliknąć na czerwony rząd (y), aby uzyskać więcej informacji",
"Please enter the credentials for the {mount} mount" : "Proszę wprowadzić poświadczenia dla {mount} montażu",
"Username" : "Nazwa użytkownika",
diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js
index 837e48543e5..29f5435d0b9 100644
--- a/apps/files_external/l10n/pt_BR.js
+++ b/apps/files_external/l10n/pt_BR.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Salvando...",
"Save" : "Salvar",
"Empty response from the server" : "Resposta vazia do servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, saia e entre novamente para ativar este ponto de montagem",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem",
"Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}",
"There was an error with message: " : "Houve um erro com a mensagem:",
"External mount error" : "Erro de montagem externa",
"external-storage" : "armazenamento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações",
"Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}",
"Username" : "Nome de Usuário",
diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json
index 6a21ec8565a..178b5582b7d 100644
--- a/apps/files_external/l10n/pt_BR.json
+++ b/apps/files_external/l10n/pt_BR.json
@@ -22,13 +22,13 @@
"Saving..." : "Salvando...",
"Save" : "Salvar",
"Empty response from the server" : "Resposta vazia do servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, saia e entre novamente para ativar este ponto de montagem",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem",
"Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}",
"There was an error with message: " : "Houve um erro com a mensagem:",
"External mount error" : "Erro de montagem externa",
"external-storage" : "armazenamento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações",
"Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}",
"Username" : "Nome de Usuário",
diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js
index c351c9f1ad0..2758ce3ecb8 100644
--- a/apps/files_external/l10n/pt_PT.js
+++ b/apps/files_external/l10n/pt_PT.js
@@ -22,12 +22,10 @@ OC.L10N.register(
"Saved" : "Guardado",
"Save" : "Guardar",
"Empty response from the server" : "Resposta vazia a partir do servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível aceder. Por favor, faça logout e login para ativar este ponto de montagem",
"Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}",
"There was an error with message: " : "Houve um erro com a mensagem:",
"External mount error" : "Erro de montagem externa",
"external-storage" : "armazenamento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível conseguir a lista de pontos de montagem Windows na rede: resposta vazia do servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor, clique na fila vermelha para mais informação",
"Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}",
"Username" : "Nome de utilizador",
diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json
index 80eb41bb30c..a94387533c8 100644
--- a/apps/files_external/l10n/pt_PT.json
+++ b/apps/files_external/l10n/pt_PT.json
@@ -20,12 +20,10 @@
"Saved" : "Guardado",
"Save" : "Guardar",
"Empty response from the server" : "Resposta vazia a partir do servidor",
- "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível aceder. Por favor, faça logout e login para ativar este ponto de montagem",
"Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}",
"There was an error with message: " : "Houve um erro com a mensagem:",
"External mount error" : "Erro de montagem externa",
"external-storage" : "armazenamento externo",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível conseguir a lista de pontos de montagem Windows na rede: resposta vazia do servidor",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor, clique na fila vermelha para mais informação",
"Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}",
"Username" : "Nome de utilizador",
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index 14659b77470..f0d8b4ca9d5 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Сохранение...",
"Save" : "Сохранить",
"Empty response from the server" : "Пустой ответ от сервера",
- "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Выйдите и снова войдите чтобы активировать эту точку монтирования",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему",
"Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию с удалённого сервера: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}",
"There was an error with message: " : "Обнаружена ошибка с сообщением:",
"External mount error" : "Ошибка внешнего монтирования",
"external-storage" : "внешнее-хранилище",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список точек монтирования сетевых дисков Windows: пустой ответ от сервера",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации нажмите на красную строку(и)",
"Please enter the credentials for the {mount} mount" : "Укажите учётные данные для {mount}",
"Username" : "Имя пользователя",
diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index 443e577e44e..f6aa8cfb774 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -22,13 +22,13 @@
"Saving..." : "Сохранение...",
"Save" : "Сохранить",
"Empty response from the server" : "Пустой ответ от сервера",
- "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Выйдите и снова войдите чтобы активировать эту точку монтирования",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему",
"Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию с удалённого сервера: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}",
"There was an error with message: " : "Обнаружена ошибка с сообщением:",
"External mount error" : "Ошибка внешнего монтирования",
"external-storage" : "внешнее-хранилище",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список точек монтирования сетевых дисков Windows: пустой ответ от сервера",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации нажмите на красную строку(и)",
"Please enter the credentials for the {mount} mount" : "Укажите учётные данные для {mount}",
"Username" : "Имя пользователя",
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index 5ac0f649bad..75dac91502c 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -23,12 +23,10 @@ OC.L10N.register(
"Saving..." : "Shranjujem...",
"Save" : "Shrani",
"Empty response from the server" : "S strežnika je prejet odziv brez vsebine.",
- "Couldn't access. Please logout and login to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.",
"Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}",
"There was an error with message: " : "Prišlo je do napake s sporočilom:",
"External mount error" : "Notranja napaka priklopa",
"external-storage" : "zunanja-shramba",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Ni mogoče pridobiti seznama priklopnih točk omrežnega pogona: ni odziva s strežnika",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Nekatere izmed nastavljenih zunanjih priklopnih točk niso povezane. Več podrobnosti je na voljo s klikom na rdeče vrstice.",
"Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}",
"Username" : "Uporabniško ime",
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index d624689d955..1944a9d4f6c 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -21,12 +21,10 @@
"Saving..." : "Shranjujem...",
"Save" : "Shrani",
"Empty response from the server" : "S strežnika je prejet odziv brez vsebine.",
- "Couldn't access. Please logout and login to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.",
"Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}",
"There was an error with message: " : "Prišlo je do napake s sporočilom:",
"External mount error" : "Notranja napaka priklopa",
"external-storage" : "zunanja-shramba",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Ni mogoče pridobiti seznama priklopnih točk omrežnega pogona: ni odziva s strežnika",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Nekatere izmed nastavljenih zunanjih priklopnih točk niso povezane. Več podrobnosti je na voljo s klikom na rdeče vrstice.",
"Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}",
"Username" : "Uporabniško ime",
diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js
index e45e1cf261b..8999e01abc1 100644
--- a/apps/files_external/l10n/sq.js
+++ b/apps/files_external/l10n/sq.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Po ruhet …",
"Save" : "Ruaje",
"Empty response from the server" : "Përgjigje e zbrazët prej serverit",
- "Couldn't access. Please logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
"Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}",
"There was an error with message: " : "Pati një gabim me këtë mesazh:",
"External mount error" : "Gabim i jashtëm montimi",
"external-storage" : "ruajtje-jashtme",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Disa nga pikat e jashtme të formësuara të montimit s’janë të lidhura. Ju lutemi, klikoni në shigjetën(at) e kuqe për më tepër të dhëna",
"Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}",
"Username" : "Emër përdoruesi",
@@ -38,6 +38,7 @@ OC.L10N.register(
"Credentials saved" : "Kredencialet u ruajtën",
"Credentials saving failed" : "Ruajtja e kredencialeve dështoi",
"Credentials required" : "Lypsen kredenciale",
+ "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet",
"Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme",
"Invalid mount point" : "Pikë montimi e pavlefshme",
"Objectstore forbidden" : "Objectstore e ndaluar",
@@ -48,6 +49,7 @@ OC.L10N.register(
"Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur",
"Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s",
"%s" : "%s",
+ "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues",
"Access key" : "Kyç hyrjesh",
"Secret key" : "Kyç i fshehtë",
"Builtin" : "I brendshëm",
@@ -103,6 +105,7 @@ OC.L10N.register(
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.",
+ "External storage support" : "Suport i kujtesë së jashtme",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
"You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json
index 4fa3b01ce8d..2b2e224c5ba 100644
--- a/apps/files_external/l10n/sq.json
+++ b/apps/files_external/l10n/sq.json
@@ -22,13 +22,13 @@
"Saving..." : "Po ruhet …",
"Save" : "Ruaje",
"Empty response from the server" : "Përgjigje e zbrazët prej serverit",
- "Couldn't access. Please logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
"Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}",
"There was an error with message: " : "Pati një gabim me këtë mesazh:",
"External mount error" : "Gabim i jashtëm montimi",
"external-storage" : "ruajtje-jashtme",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Disa nga pikat e jashtme të formësuara të montimit s’janë të lidhura. Ju lutemi, klikoni në shigjetën(at) e kuqe për më tepër të dhëna",
"Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}",
"Username" : "Emër përdoruesi",
@@ -36,6 +36,7 @@
"Credentials saved" : "Kredencialet u ruajtën",
"Credentials saving failed" : "Ruajtja e kredencialeve dështoi",
"Credentials required" : "Lypsen kredenciale",
+ "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet",
"Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme",
"Invalid mount point" : "Pikë montimi e pavlefshme",
"Objectstore forbidden" : "Objectstore e ndaluar",
@@ -46,6 +47,7 @@
"Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur",
"Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s",
"%s" : "%s",
+ "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues",
"Access key" : "Kyç hyrjesh",
"Secret key" : "Kyç i fshehtë",
"Builtin" : "I brendshëm",
@@ -101,6 +103,7 @@
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.",
+ "External storage support" : "Suport i kujtesë së jashtme",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
"You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js
index c47779943a8..c331124bc69 100644
--- a/apps/files_external/l10n/sv.js
+++ b/apps/files_external/l10n/sv.js
@@ -24,13 +24,11 @@ OC.L10N.register(
"Saving..." : "Sparar...",
"Save" : "Spara",
"Empty response from the server" : "Tomt svar från servern",
- "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.",
"Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ",
"Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}",
"There was an error with message: " : "Det fanns ett fel med meddelande:",
"External mount error" : "Fel vid extern montering",
"external-storage" : "extern-lagring",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.",
"Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering",
"Username" : "Användarnamn",
diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json
index e15b1322064..399ab88e3ac 100644
--- a/apps/files_external/l10n/sv.json
+++ b/apps/files_external/l10n/sv.json
@@ -22,13 +22,11 @@
"Saving..." : "Sparar...",
"Save" : "Spara",
"Empty response from the server" : "Tomt svar från servern",
- "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.",
"Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ",
"Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}",
"There was an error with message: " : "Det fanns ett fel med meddelande:",
"External mount error" : "Fel vid extern montering",
"external-storage" : "extern-lagring",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.",
"Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering",
"Username" : "Användarnamn",
diff --git a/apps/files_external/l10n/th.js b/apps/files_external/l10n/th.js
index faaad69c684..8994d2a23a2 100644
--- a/apps/files_external/l10n/th.js
+++ b/apps/files_external/l10n/th.js
@@ -19,12 +19,10 @@ OC.L10N.register(
"Saved" : "บันทึกแล้ว",
"Save" : "บันทึก",
"Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์",
- "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้",
"Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}",
"There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด",
"External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด",
"external-storage" : "ที่จัดเก็บข้อมูลภายนอก",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "ไม่สามารถรับรายชื่อไดรฟ์เครือข่ายของวินโดว์ส จุดที่ติดตั้ง: ไม่มีการตอบสนองจากเซิร์ฟเวอร์",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "การกำหนดค่าบางส่วนของจุดเชื่อมต่อภายนอกไม่ถูกเชื่อมต่อ กรุณาคลิกที่ตรงสีแดงสำหรับข้อมูลเพิ่มเติม",
"Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับ {mount} ",
"Username" : "ชื่อผู้ใช้งาน",
diff --git a/apps/files_external/l10n/th.json b/apps/files_external/l10n/th.json
index 9349bc382ea..fb24edfe67e 100644
--- a/apps/files_external/l10n/th.json
+++ b/apps/files_external/l10n/th.json
@@ -17,12 +17,10 @@
"Saved" : "บันทึกแล้ว",
"Save" : "บันทึก",
"Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์",
- "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้",
"Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}",
"There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด",
"External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด",
"external-storage" : "ที่จัดเก็บข้อมูลภายนอก",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "ไม่สามารถรับรายชื่อไดรฟ์เครือข่ายของวินโดว์ส จุดที่ติดตั้ง: ไม่มีการตอบสนองจากเซิร์ฟเวอร์",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "การกำหนดค่าบางส่วนของจุดเชื่อมต่อภายนอกไม่ถูกเชื่อมต่อ กรุณาคลิกที่ตรงสีแดงสำหรับข้อมูลเพิ่มเติม",
"Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับ {mount} ",
"Username" : "ชื่อผู้ใช้งาน",
diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js
index 9aa54a5ea29..930a2376d55 100644
--- a/apps/files_external/l10n/tr.js
+++ b/apps/files_external/l10n/tr.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "Kaydediliyor...",
"Save" : "Kaydet",
"Empty response from the server" : "Sunucudan boş yanıt alındı",
- "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın",
"Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}",
"There was an error with message: " : "Şu ileti ile bir sorun çıktı:",
"External mount error" : "Dış bağlama sorunu",
"external-storage" : "dış depolama",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış dış bağlama noktalarından bazıları bağlı değil. Lütfen ayrıntılı bilgi almak için kırmızı satırlara tıklayın",
"Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın",
"Username" : "Kullanıcı Adı",
diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json
index 448c708a318..3ceef8ad4bb 100644
--- a/apps/files_external/l10n/tr.json
+++ b/apps/files_external/l10n/tr.json
@@ -22,13 +22,13 @@
"Saving..." : "Kaydediliyor...",
"Save" : "Kaydet",
"Empty response from the server" : "Sunucudan boş yanıt alındı",
- "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın",
+ "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın",
"Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}",
"There was an error with message: " : "Şu ileti ile bir sorun çıktı:",
"External mount error" : "Dış bağlama sorunu",
"external-storage" : "dış depolama",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış dış bağlama noktalarından bazıları bağlı değil. Lütfen ayrıntılı bilgi almak için kırmızı satırlara tıklayın",
"Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın",
"Username" : "Kullanıcı Adı",
diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js
index f2a6772925f..065c06bbde3 100644
--- a/apps/files_external/l10n/zh_CN.js
+++ b/apps/files_external/l10n/zh_CN.js
@@ -24,13 +24,13 @@ OC.L10N.register(
"Saving..." : "正在保存...",
"Save" : "保存",
"Empty response from the server" : "服务器响应为空",
- "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "无法访问!请注销并重新登录以激活挂载点。",
"Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}",
"There was an error with message: " : "错误信息: ",
"External mount error" : "外部挂载错误",
"external-storage" : "外部存储",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取Windows网络磁盘挂载点列表:服务器未响应",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.",
"Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据",
"Username" : "用户名",
diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json
index 5b3e95dfdbe..12fdeee87f4 100644
--- a/apps/files_external/l10n/zh_CN.json
+++ b/apps/files_external/l10n/zh_CN.json
@@ -22,13 +22,13 @@
"Saving..." : "正在保存...",
"Save" : "保存",
"Empty response from the server" : "服务器响应为空",
- "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.",
+ "Couldn't access. Please log out and in again to activate this mount point" : "无法访问!请注销并重新登录以激活挂载点。",
"Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}",
"There was an error with message: " : "错误信息: ",
"External mount error" : "外部挂载错误",
"external-storage" : "外部存储",
- "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空",
+ "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取Windows网络磁盘挂载点列表:服务器未响应",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.",
"Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据",
"Username" : "用户名",
diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js
index f33986f0fcb..94d180ad716 100644
--- a/apps/files_external/l10n/zh_TW.js
+++ b/apps/files_external/l10n/zh_TW.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Saving..." : "儲存中...",
"Save" : "儲存",
"Empty response from the server" : "服務器没有回應",
- "Couldn't access. Please logout and login to activate this mount point" : "無法存取。請重新登出再登入啟動此掛載點。",
"Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料 : {code} {type}",
"Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}",
"There was an error with message: " : "錯誤信息:",
diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json
index db55e88b287..78c784c65d4 100644
--- a/apps/files_external/l10n/zh_TW.json
+++ b/apps/files_external/l10n/zh_TW.json
@@ -20,7 +20,6 @@
"Saving..." : "儲存中...",
"Save" : "儲存",
"Empty response from the server" : "服務器没有回應",
- "Couldn't access. Please logout and login to activate this mount point" : "無法存取。請重新登出再登入啟動此掛載點。",
"Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料 : {code} {type}",
"Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}",
"There was an error with message: " : "錯誤信息:",
diff --git a/apps/files_external/lib/Command/Applicable.php b/apps/files_external/lib/Command/Applicable.php
index c7c2f6aa216..2e8311db9ec 100644
--- a/apps/files_external/lib/Command/Applicable.php
+++ b/apps/files_external/lib/Command/Applicable.php
@@ -71,27 +71,27 @@ class Applicable extends Base {
'The id of the mount to edit'
)->addOption(
'add-user',
- null,
+ '',
InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
'user to add as applicable'
)->addOption(
'remove-user',
- null,
+ '',
InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
'user to remove as applicable'
)->addOption(
'add-group',
- null,
+ '',
InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
'group to add as applicable'
)->addOption(
'remove-group',
- null,
+ '',
InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
'group to remove as applicable'
)->addOption(
'remove-all',
- null,
+ '',
InputOption::VALUE_NONE,
'Set the mount to be globally applicable'
);
diff --git a/apps/files_external/lib/Command/Create.php b/apps/files_external/lib/Command/Create.php
index d5b320dcfc2..ff9fa3ae878 100644
--- a/apps/files_external/lib/Command/Create.php
+++ b/apps/files_external/lib/Command/Create.php
@@ -83,7 +83,7 @@ class Create extends Base {
->setDescription('Create a new mount configuration')
->addOption(
'user',
- null,
+ '',
InputOption::VALUE_OPTIONAL,
'user to add the mount configuration for, if not set the mount will be added as system mount'
)
@@ -110,7 +110,7 @@ class Create extends Base {
)
->addOption(
'dry',
- null,
+ '',
InputOption::VALUE_NONE,
'Don\'t save the created mount, only list the new mount'
);
@@ -180,7 +180,7 @@ class Create extends Base {
if ($input->getOption('output') === self::OUTPUT_FORMAT_PLAIN) {
$output->writeln('<info>Storage created with id ' . $mount->getId() . '</info>');
} else {
- $output->writeln($mount->getId());
+ $output->writeln((string)$mount->getId());
}
}
return 0;
diff --git a/apps/files_external/lib/Command/Delete.php b/apps/files_external/lib/Command/Delete.php
index d63aa35050c..015995ec14f 100644
--- a/apps/files_external/lib/Command/Delete.php
+++ b/apps/files_external/lib/Command/Delete.php
@@ -103,7 +103,7 @@ class Delete extends Base {
$question = new ConfirmationQuestion('Delete this mount? [y/N] ', false);
if (!$questionHelper->ask($input, $output, $question)) {
- return;
+ return null;
}
}
diff --git a/apps/files_external/lib/Command/Import.php b/apps/files_external/lib/Command/Import.php
index 2159c0a001e..712a8851c8a 100644
--- a/apps/files_external/lib/Command/Import.php
+++ b/apps/files_external/lib/Command/Import.php
@@ -87,7 +87,7 @@ class Import extends Base {
->setDescription('Import mount configurations')
->addOption(
'user',
- null,
+ '',
InputOption::VALUE_OPTIONAL,
'user to add the mount configurations for, if not set the mount will be added as system mount'
)
@@ -98,7 +98,7 @@ class Import extends Base {
)
->addOption(
'dry',
- null,
+ '',
InputOption::VALUE_NONE,
'Don\'t save the imported mounts, only list the new mounts'
);
@@ -161,8 +161,8 @@ class Import extends Base {
if (
$existingMount->getMountPoint() === $mount->getMountPoint() &&
$existingMount->getApplicableGroups() === $mount->getApplicableGroups() &&
- $existingMount->getApplicableUsers() == $mount->getApplicableUsers() &&
- $existingMount->getBackendOptions() == $mount->getBackendOptions()
+ $existingMount->getApplicableUsers() === $mount->getApplicableUsers() &&
+ $existingMount->getBackendOptions() === $mount->getBackendOptions()
) {
$output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>");
return 1;
diff --git a/apps/files_external/lib/Command/ListCommand.php b/apps/files_external/lib/Command/ListCommand.php
index fc1f2bf6c5a..a9618854b34 100644
--- a/apps/files_external/lib/Command/ListCommand.php
+++ b/apps/files_external/lib/Command/ListCommand.php
@@ -77,7 +77,7 @@ class ListCommand extends Base {
'user id to list the personal mounts for, if no user is provided admin mounts will be listed'
)->addOption(
'show-password',
- null,
+ '',
InputOption::VALUE_NONE,
'show passwords and secrets'
)->addOption(
diff --git a/apps/files_external/lib/Command/Notify.php b/apps/files_external/lib/Command/Notify.php
index 6bb56373d33..3c5c3af9ac2 100644
--- a/apps/files_external/lib/Command/Notify.php
+++ b/apps/files_external/lib/Command/Notify.php
@@ -79,7 +79,7 @@ class Notify extends Base {
'The password for the remote mount (required only for some mount configuration that don\'t store credentials)'
)->addOption(
'path',
- null,
+ '',
InputOption::VALUE_REQUIRED,
'The directory in the storage to listen for updates in',
'/'
diff --git a/apps/files_external/lib/Lib/Auth/AuthMechanism.php b/apps/files_external/lib/Lib/Auth/AuthMechanism.php
index 1229fd7f07e..b18579163a3 100644
--- a/apps/files_external/lib/Lib/Auth/AuthMechanism.php
+++ b/apps/files_external/lib/Lib/Auth/AuthMechanism.php
@@ -80,7 +80,7 @@ class AuthMechanism implements \JsonSerializable {
/**
* @param string $scheme
- * @return self
+ * @return $this
*/
public function setScheme($scheme) {
$this->scheme = $scheme;
diff --git a/apps/files_external/lib/Lib/Backend/Backend.php b/apps/files_external/lib/Lib/Backend/Backend.php
index 3ce524d3c55..3b6f7c3eeed 100644
--- a/apps/files_external/lib/Lib/Backend/Backend.php
+++ b/apps/files_external/lib/Lib/Backend/Backend.php
@@ -82,7 +82,7 @@ class Backend implements \JsonSerializable {
/**
* @param string $class
- * @return self
+ * @return $this
*/
public function setStorageClass($class) {
$this->storageClass = $class;
diff --git a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php
index ae4b8ec4c37..03b39927d97 100644
--- a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php
+++ b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php
@@ -49,7 +49,7 @@ trait FrontendDefinitionTrait {
/**
* @param string $text
- * @return self
+ * @return $this
*/
public function setText($text) {
$this->text = $text;
diff --git a/apps/files_external/lib/Lib/IdentifierTrait.php b/apps/files_external/lib/Lib/IdentifierTrait.php
index dd583728545..38f2d4cd33f 100644
--- a/apps/files_external/lib/Lib/IdentifierTrait.php
+++ b/apps/files_external/lib/Lib/IdentifierTrait.php
@@ -46,7 +46,7 @@ trait IdentifierTrait {
/**
* @param string $identifier
- * @return self
+ * @return $this
*/
public function setIdentifier($identifier) {
$this->identifier = $identifier;
@@ -63,7 +63,7 @@ trait IdentifierTrait {
/**
* @param string $alias
- * @return self
+ * @return $this
*/
public function addIdentifierAlias($alias) {
$this->identifierAliases[] = $alias;
diff --git a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php
index 925dae7030d..6b335f82b56 100644
--- a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php
+++ b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php
@@ -34,7 +34,7 @@ class InsufficientDataForMeaningfulAnswerException extends StorageNotAvailableEx
*
* @param string $message
* @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 6.0.0
*/
public function __construct($message = '', $code = self::STATUS_INDETERMINATE, \Exception $previous = null) {
diff --git a/apps/files_external/lib/Lib/Storage/Dropbox.php b/apps/files_external/lib/Lib/Storage/Dropbox.php
index d2ba1cca751..fad85650e9b 100644
--- a/apps/files_external/lib/Lib/Storage/Dropbox.php
+++ b/apps/files_external/lib/Lib/Storage/Dropbox.php
@@ -47,7 +47,7 @@ class Dropbox extends \OC\Files\Storage\Common {
private $oauth;
public function __construct($params) {
- if (isset($params['configured']) && $params['configured'] == 'true'
+ if (isset($params['configured']) && $params['configured'] === 'true'
&& isset($params['app_key'])
&& isset($params['app_secret'])
&& isset($params['token'])
@@ -187,12 +187,12 @@ class Dropbox extends \OC\Files\Storage\Common {
}
public function filetype($path) {
- if ($path == '' || $path == '/') {
+ if ($path === '' || $path === '/') {
return 'dir';
} else {
$metaData = $this->getDropBoxMetaData($path);
if ($metaData) {
- if ($metaData['is_dir'] == 'true') {
+ if ($metaData['is_dir'] === 'true') {
return 'dir';
} else {
return 'file';
@@ -203,7 +203,7 @@ class Dropbox extends \OC\Files\Storage\Common {
}
public function file_exists($path) {
- if ($path == '' || $path == '/') {
+ if ($path === '' || $path === '/') {
return true;
}
if ($this->getDropBoxMetaData($path)) {
diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php
index 22fe2090f30..1bbdfaba468 100644
--- a/apps/files_external/lib/Lib/Storage/FTP.php
+++ b/apps/files_external/lib/Lib/Storage/FTP.php
@@ -56,7 +56,7 @@ class FTP extends StreamWrapper{
$this->secure = false;
}
$this->root=isset($params['root'])?$params['root']:'/';
- if ( ! $this->root || $this->root[0]!='/') {
+ if ( ! $this->root || $this->root[0]!=='/') {
$this->root='/'.$this->root;
}
if (substr($this->root, -1) !== '/') {
diff --git a/apps/files_external/lib/Lib/Storage/OwnCloud.php b/apps/files_external/lib/Lib/Storage/OwnCloud.php
index 9669b5f3dad..34838b9891e 100644
--- a/apps/files_external/lib/Lib/Storage/OwnCloud.php
+++ b/apps/files_external/lib/Lib/Storage/OwnCloud.php
@@ -40,10 +40,10 @@ class OwnCloud extends \OC\Files\Storage\DAV{
// (owncloud install path on host)
$host = $params['host'];
// strip protocol
- if (substr($host, 0, 8) == "https://") {
+ if (substr($host, 0, 8) === "https://") {
$host = substr($host, 8);
$params['secure'] = true;
- } else if (substr($host, 0, 7) == "http://") {
+ } else if (substr($host, 0, 7) === "http://") {
$host = substr($host, 7);
$params['secure'] = false;
}
diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php
index a4dfea94bf7..8d489551264 100644
--- a/apps/files_external/lib/Lib/Storage/SFTP.php
+++ b/apps/files_external/lib/Lib/Storage/SFTP.php
@@ -102,11 +102,11 @@ class SFTP extends \OC\Files\Storage\Common {
$this->root
= isset($params['root']) ? $this->cleanPath($params['root']) : '/';
- if ($this->root[0] != '/') {
+ if ($this->root[0] !== '/') {
$this->root = '/' . $this->root;
}
- if (substr($this->root, -1, 1) != '/') {
+ if (substr($this->root, -1, 1) !== '/') {
$this->root .= '/';
}
}
@@ -128,7 +128,7 @@ class SFTP extends \OC\Files\Storage\Common {
// The SSH Host Key MUST be verified before login().
$currentHostKey = $this->client->getServerPublicHostKey();
if (array_key_exists($this->host, $hostKeys)) {
- if ($hostKeys[$this->host] != $currentHostKey) {
+ if ($hostKeys[$this->host] !== $currentHostKey) {
throw new \Exception('Host public key does not match known key');
}
} else {
@@ -248,7 +248,7 @@ class SFTP extends \OC\Files\Storage\Common {
if ($lines) {
foreach ($lines as $line) {
$hostKeyArray = explode("::", $line, 2);
- if (count($hostKeyArray) == 2) {
+ if (count($hostKeyArray) === 2) {
$hosts[] = $hostKeyArray[0];
$keys[] = $hostKeyArray[1];
}
@@ -300,7 +300,7 @@ class SFTP extends \OC\Files\Storage\Common {
$id = md5('sftp:' . $path);
$dirStream = array();
foreach($list as $file) {
- if ($file != '.' && $file != '..') {
+ if ($file !== '.' && $file !== '..') {
$dirStream[] = $file;
}
}
@@ -316,11 +316,11 @@ class SFTP extends \OC\Files\Storage\Common {
public function filetype($path) {
try {
$stat = $this->getConnection()->stat($this->absPath($path));
- if ($stat['type'] == NET_SFTP_TYPE_REGULAR) {
+ if ((int) $stat['type'] === NET_SFTP_TYPE_REGULAR) {
return 'file';
}
- if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) {
+ if ((int) $stat['type'] === NET_SFTP_TYPE_DIRECTORY) {
return 'dir';
}
} catch (\Exception $e) {
diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php
index 7afdb746a98..4af6df5d84a 100644
--- a/apps/files_external/lib/Lib/Storage/SMB.php
+++ b/apps/files_external/lib/Lib/Storage/SMB.php
@@ -81,10 +81,10 @@ class SMB extends Common implements INotifyStorage {
$this->share = $this->server->getShare(trim($params['share'], '/'));
$this->root = isset($params['root']) ? $params['root'] : '/';
- if (!$this->root || $this->root[0] != '/') {
+ if (!$this->root || $this->root[0] !== '/') {
$this->root = '/' . $this->root;
}
- if (substr($this->root, -1, 1) != '/') {
+ if (substr($this->root, -1, 1) !== '/') {
$this->root .= '/';
}
} else {
diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php
index 105d1073ae6..57df4aa01a5 100644
--- a/apps/files_external/lib/Lib/Storage/Swift.php
+++ b/apps/files_external/lib/Lib/Storage/Swift.php
@@ -118,7 +118,7 @@ class Swift extends \OC\Files\Storage\Common {
* that one will be returned.
*
* @param string $path
- * @return \OpenCloud\OpenStack\ObjectStorage\Resource\DataObject|bool object
+ * @return \OpenCloud\ObjectStore\Resource\DataObject|bool object
* or false if the object did not exist
*/
private function fetchObject($path) {
@@ -382,9 +382,9 @@ class Swift extends \OC\Files\Storage\Common {
try {
$c = $this->getContainer();
$streamFactory = new \Guzzle\Stream\PhpStreamRequestFactory();
- $streamInterface = $streamFactory->fromRequest(
- $c->getClient()
- ->get($c->getUrl($path)));
+ /** @var \OpenCloud\Common\Http\Client $client */
+ $client = $c->getClient();
+ $streamInterface = $streamFactory->fromRequest($client->get($c->getUrl($path)));
$streamInterface->rewind();
$stream = $streamInterface->getStream();
stream_context_set_option($stream, 'swift','content', $streamInterface);
@@ -435,7 +435,7 @@ class Swift extends \OC\Files\Storage\Common {
}
$metadata = array('timestamp' => $mtime);
if ($this->file_exists($path)) {
- if ($this->is_dir($path) && $path != '.') {
+ if ($this->is_dir($path) && $path !== '.') {
$path .= '/';
}
@@ -640,7 +640,7 @@ class Swift extends \OC\Files\Storage\Common {
}, $cachedContent);
sort($cachedNames);
sort($content);
- return $cachedNames != $content;
+ return $cachedNames !== $content;
}
/**
diff --git a/apps/files_external/lib/Service/DBConfigService.php b/apps/files_external/lib/Service/DBConfigService.php
index 21818eec601..71a77cd4347 100644
--- a/apps/files_external/lib/Service/DBConfigService.php
+++ b/apps/files_external/lib/Service/DBConfigService.php
@@ -116,6 +116,7 @@ class DBConfigService {
* Get admin defined mounts
*
* @return array
+ * @suppress SqlInjectionChecker
*/
public function getAdminMounts() {
$builder = $this->connection->getQueryBuilder();
@@ -160,6 +161,7 @@ class DBConfigService {
* @param int $type any of the self::APPLICABLE_TYPE_ constants
* @param string|null $value user_id, group_id or null for global mounts
* @return array
+ * @suppress SqlInjectionChecker
*/
public function getAdminMountsFor($type, $value) {
$builder = $this->connection->getQueryBuilder();
@@ -175,6 +177,7 @@ class DBConfigService {
* @param int $type any of the self::APPLICABLE_TYPE_ constants
* @param string[] $values user_ids or group_ids
* @return array
+ * @suppress SqlInjectionChecker
*/
public function getAdminMountsForMultiple($type, array $values) {
$builder = $this->connection->getQueryBuilder();
@@ -198,6 +201,7 @@ class DBConfigService {
* @param int $type any of the self::APPLICABLE_TYPE_ constants
* @param string|null $value user_id, group_id or null for global mounts
* @return array
+ * @suppress SqlInjectionChecker
*/
public function getUserMountsFor($type, $value) {
$builder = $this->connection->getQueryBuilder();
diff --git a/apps/files_external/lib/Settings/PersonalSection.php b/apps/files_external/lib/Settings/PersonalSection.php
index 32a841c420a..669cd941da9 100644
--- a/apps/files_external/lib/Settings/PersonalSection.php
+++ b/apps/files_external/lib/Settings/PersonalSection.php
@@ -50,18 +50,4 @@ class PersonalSection extends Section {
$this->userGlobalStoragesService = $userGlobalStoragesService;
$this->backendService = $backendService;
}
-
- public function getID() {
- if (!$this->userSession->isLoggedIn()) {
- // we need to return the proper id while installing/upgrading the app
- return parent::getID();
- }
-
- if (count($this->userGlobalStoragesService->getStorages()) > 0 || $this->backendService->isUserMountingAllowed()) {
- return parent::getID();
- } else {
- // by returning a different id, no matching settings will be found and the item will be hidden
- return null;
- }
- }
-} \ No newline at end of file
+}
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 7a10d4bbc24..4900de57b64 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -313,11 +313,11 @@ class OC_Mount_Config {
private static function getSingleDependencyMessage(\OCP\IL10N $l, $module, $backend) {
switch (strtolower($module)) {
case 'curl':
- return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+ return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]);
case 'ftp':
- return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+ return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]);
default:
- return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', array($module, $backend));
+ return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$module, $backend]);
}
}
diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php
index e463a0d3c37..1d703e0c1b3 100644
--- a/apps/files_external/templates/settings.php
+++ b/apps/files_external/templates/settings.php
@@ -89,7 +89,7 @@
<form data-can-create="<?php echo $canCreateMounts?'true':'false' ?>" id="files_external" class="section" data-encryption-enabled="<?php echo $_['encryptionEnabled']?'true': 'false'; ?>">
<h2 data-anchor-name="external-storage"><?php p($l->t('External storages')); ?></h2>
- <?php if (isset($_['dependencies']) and ($_['dependencies']<>'') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?>
+ <?php if (isset($_['dependencies']) and ($_['dependencies'] !== '') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?>
<table id="externalStorage" class="grid" data-admin='<?php print_unescaped(json_encode($_['visibilityType'] === BackendService::VISIBILITY_ADMIN)); ?>'>
<thead>
<tr>
@@ -169,10 +169,10 @@
<?php if ($_['visibilityType'] === BackendService::VISIBILITY_ADMIN): ?>
<input type="checkbox" name="allowUserMounting" id="allowUserMounting" class="checkbox"
- value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> />
+ value="1" <?php if ($_['allowUserMounting'] === 'yes') print_unescaped(' checked="checked"'); ?> />
<label for="allowUserMounting"><?php p($l->t('Allow users to mount external storage')); ?></label> <span id="userMountingMsg" class="msg"></span>
- <p id="userMountingBackends"<?php if ($_['allowUserMounting'] != 'yes'): ?> class="hidden"<?php endif; ?>>
+ <p id="userMountingBackends"<?php if ($_['allowUserMounting'] !== 'yes'): ?> class="hidden"<?php endif; ?>>
<?php p($l->t('Allow users to mount the following external storage')); ?><br />
<?php
$userBackends = array_filter($_['backends'], function($backend) {
diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php
index 56eece341a9..7a5f5650fc5 100644
--- a/apps/files_sharing/appinfo/routes.php
+++ b/apps/files_sharing/appinfo/routes.php
@@ -26,8 +26,6 @@
*
*/
-use OCP\API;
-
$application = new \OCA\Files_Sharing\AppInfo\Application();
$application->registerRoutes($this, [
'resources' => [
@@ -127,7 +125,3 @@ $application->registerRoutes($this, [
/** @var $this \OCP\Route\IRouter */
$this->create('sharing_external_shareinfo', '/shareinfo')
->actionInclude('files_sharing/ajax/shareinfo.php');
-
-// OCS API
-
-//TODO: SET: mail notification, waiting for PR #4689 to be accepted
diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss
index 9c8c4a66630..6d9fcf14efc 100644
--- a/apps/files_sharing/css/public.scss
+++ b/apps/files_sharing/css/public.scss
@@ -215,3 +215,13 @@ thead {
max-width: 400px;
text-align: left;
}
+
+#header .header-shared-by {
+ display: inline-block;
+ color: $color-primary-text;
+ position: relative;
+ top: -10px;
+ font-weight: 300;
+ font-size: 12px;
+ margin-top: 10px;
+}
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index fa065a2f367..cde421e029f 100644
--- a/apps/files_sharing/l10n/cs.js
+++ b/apps/files_sharing/l10n/cs.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "platnost odkazu vypršela",
"sharing is disabled" : "sdílení je zakázané",
"For more info, please ask the person who sent this link." : "Pro více informací kontaktujte osobu, která vám zaslala tento odkaz.",
+ "shared by %s" : "Sdílel %s",
"Add to your Nextcloud" : "Přidat do Nextcloud",
"Download" : "Stáhnout",
"Download %s" : "Stáhnout %s",
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index e56596365e3..3abe58b72e6 100644
--- a/apps/files_sharing/l10n/cs.json
+++ b/apps/files_sharing/l10n/cs.json
@@ -101,6 +101,7 @@
"the link expired" : "platnost odkazu vypršela",
"sharing is disabled" : "sdílení je zakázané",
"For more info, please ask the person who sent this link." : "Pro více informací kontaktujte osobu, která vám zaslala tento odkaz.",
+ "shared by %s" : "Sdílel %s",
"Add to your Nextcloud" : "Přidat do Nextcloud",
"Download" : "Stáhnout",
"Download %s" : "Stáhnout %s",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index c6e22669ec9..e399c0f46e1 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "Der Link ist abgelaufen",
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.",
+ "shared by %s" : "von %s geteilt",
"Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen",
"Download" : "Herunterladen",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index c4e01994e17..ab230c70481 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -101,6 +101,7 @@
"the link expired" : "Der Link ist abgelaufen",
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.",
+ "shared by %s" : "von %s geteilt",
"Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen",
"Download" : "Herunterladen",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 151d26722ef..84badeb991e 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "Der Link ist abgelaufen",
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.",
+ "shared by %s" : "von %s geteilt",
"Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen",
"Download" : "Herunterladen",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 59d5c6f4f99..5b300a77d6b 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -101,6 +101,7 @@
"the link expired" : "Der Link ist abgelaufen",
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.",
+ "shared by %s" : "von %s geteilt",
"Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen",
"Download" : "Herunterladen",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index 4b4f9e9ecfc..4a501be56bc 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "ο σύνδεσμος έληξε",
"sharing is disabled" : "ο διαμοιρασμός απενεργοποιήθηκε",
"For more info, please ask the person who sent this link." : "Για περισσότερες πληροφορίες, παρακαλώ ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.",
+ "shared by %s" : "Διαμοιράστηκε από 1 %s",
"Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου",
"Download" : "Λήψη",
"Download %s" : "Λήψη %s",
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 8cd4acd2d0b..d8f7115e134 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -101,6 +101,7 @@
"the link expired" : "ο σύνδεσμος έληξε",
"sharing is disabled" : "ο διαμοιρασμός απενεργοποιήθηκε",
"For more info, please ask the person who sent this link." : "Για περισσότερες πληροφορίες, παρακαλώ ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.",
+ "shared by %s" : "Διαμοιράστηκε από 1 %s",
"Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου",
"Download" : "Λήψη",
"Download %s" : "Λήψη %s",
diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js
index 3bc3572ceff..cb5b0061c26 100644
--- a/apps/files_sharing/l10n/en_GB.js
+++ b/apps/files_sharing/l10n/en_GB.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "the link expired",
"sharing is disabled" : "sharing is disabled",
"For more info, please ask the person who sent this link." : "For more info, please ask the person who sent this link.",
+ "shared by %s" : "shared by %s",
"Add to your Nextcloud" : "Add to your Nextcloud",
"Download" : "Download",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json
index 0d09d445bc9..8bfb073837d 100644
--- a/apps/files_sharing/l10n/en_GB.json
+++ b/apps/files_sharing/l10n/en_GB.json
@@ -101,6 +101,7 @@
"the link expired" : "the link expired",
"sharing is disabled" : "sharing is disabled",
"For more info, please ask the person who sent this link." : "For more info, please ask the person who sent this link.",
+ "shared by %s" : "shared by %s",
"Add to your Nextcloud" : "Add to your Nextcloud",
"Download" : "Download",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 2026a08fe32..951109d6937 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "el enlace expiró",
"sharing is disabled" : "compartir está desactivado",
"For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.",
+ "shared by %s" : "compartido por %s",
"Add to your Nextcloud" : "Añadir a tu Nextcloud",
"Download" : "Descargar",
"Download %s" : "Descargar %s",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 50cf0dda66f..fd9a4cbd8fa 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -101,6 +101,7 @@
"the link expired" : "el enlace expiró",
"sharing is disabled" : "compartir está desactivado",
"For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.",
+ "shared by %s" : "compartido por %s",
"Add to your Nextcloud" : "Añadir a tu Nextcloud",
"Download" : "Descargar",
"Download %s" : "Descargar %s",
diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js
index ecc09b852f1..d4b27e24204 100644
--- a/apps/files_sharing/l10n/es_MX.js
+++ b/apps/files_sharing/l10n/es_MX.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"You shared {file} as public link" : "Compartiste {file} como una liga pública",
"You removed public link for {file}" : "Eliminaste la liga pública de {file}",
"Public link expired for {file}" : "La liga pública para {file} ha expirado",
- "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública",
+ "{actor} shared {file} as public link" : "{actor} ha compartido {file} como una liga pública",
"{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}",
"Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado",
"{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto",
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "la liga expiró",
"sharing is disabled" : "compartir está deshabilitado",
"For more info, please ask the person who sent this link." : "Para mayores informes, contacta a la persona que le envió esta liga.",
+ "shared by %s" : "compartido por %s",
"Add to your Nextcloud" : "Agregar a tu Nextcloud",
"Download" : "Descargar",
"Download %s" : "Descargar %s",
diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json
index d740af70840..ecd94ae66b4 100644
--- a/apps/files_sharing/l10n/es_MX.json
+++ b/apps/files_sharing/l10n/es_MX.json
@@ -38,7 +38,7 @@
"You shared {file} as public link" : "Compartiste {file} como una liga pública",
"You removed public link for {file}" : "Eliminaste la liga pública de {file}",
"Public link expired for {file}" : "La liga pública para {file} ha expirado",
- "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública",
+ "{actor} shared {file} as public link" : "{actor} ha compartido {file} como una liga pública",
"{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}",
"Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado",
"{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto",
@@ -101,6 +101,7 @@
"the link expired" : "la liga expiró",
"sharing is disabled" : "compartir está deshabilitado",
"For more info, please ask the person who sent this link." : "Para mayores informes, contacta a la persona que le envió esta liga.",
+ "shared by %s" : "compartido por %s",
"Add to your Nextcloud" : "Agregar a tu Nextcloud",
"Download" : "Descargar",
"Download %s" : "Descargar %s",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 43a90ab04fa..4d0bb4c3eb4 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "le lien a expiré",
"sharing is disabled" : "le partage est désactivé",
"For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien.",
+ "shared by %s" : "partagé par %s",
"Add to your Nextcloud" : "Ajouter à votre Nextcloud",
"Download" : "Télécharger",
"Download %s" : "Télécharger %s",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index 3c6370873b7..21ca21757c3 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -101,6 +101,7 @@
"the link expired" : "le lien a expiré",
"sharing is disabled" : "le partage est désactivé",
"For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien.",
+ "shared by %s" : "partagé par %s",
"Add to your Nextcloud" : "Ajouter à votre Nextcloud",
"Download" : "Télécharger",
"Download %s" : "Télécharger %s",
diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js
index 0bfe415807e..66f76a7395f 100644
--- a/apps/files_sharing/l10n/is.js
+++ b/apps/files_sharing/l10n/is.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "tengillinn er útrunninn",
"sharing is disabled" : "slökkt er á skráadeilingu",
"For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.",
+ "shared by %s" : "Deilt af %s",
"Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud",
"Download" : "Niðurhal",
"Download %s" : "Sækja %s",
diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json
index 02d206257df..0535169b94d 100644
--- a/apps/files_sharing/l10n/is.json
+++ b/apps/files_sharing/l10n/is.json
@@ -101,6 +101,7 @@
"the link expired" : "tengillinn er útrunninn",
"sharing is disabled" : "slökkt er á skráadeilingu",
"For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.",
+ "shared by %s" : "Deilt af %s",
"Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud",
"Download" : "Niðurhal",
"Download %s" : "Sækja %s",
diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js
index 2a45838f65b..42dc320c2f4 100644
--- a/apps/files_sharing/l10n/lt_LT.js
+++ b/apps/files_sharing/l10n/lt_LT.js
@@ -1,73 +1,116 @@
OC.L10N.register(
"files_sharing",
{
- "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje",
- "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.",
- "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.",
- "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas",
- "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis",
- "Storage not valid" : "Talpykla negalioja",
- "Couldn't add remote share" : "Nepavyko pridėti nutolusio dalijimosi",
- "Shared with you" : "Pasidalinta su tavimi",
- "Shared with others" : "Pasidalinta su kitais",
- "Shared by link" : "Pasidalinta su nuoroda",
- "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama",
- "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi čia",
- "Nothing shared yet" : "Niekas nepasidalinta",
- "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi čia",
- "No shared links" : "Nėra pasidalinimų nuoroda",
- "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi čia",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridėti nutolusį dalijimąsi {name} nuo {owner}@{remote}?",
- "Remote share" : "Nutolęs dalinimasis",
- "Remote share password" : "Nutolusio dalijimosi slaptažodis",
- "Cancel" : "Atšaukti",
- "Add remote share" : "Pridėti nutolusi dalijimąsi",
- "You can upload into this folder" : "Gali įkelti į šį aplanką",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukštesnė versiją) {remote} serveryje.",
- "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda",
- "Shared by" : "Dalinasi",
- "Sharing" : "Dalijimasis",
- "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iš <strong>kito serverio</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Viešai pasidalintas failas ar aplankas <strong>parsiųstas</strong>",
- "You received a new remote share %2$s from %1$s" : "Gavote naują nutolusį dalijimąsi %2$s nuo %1$s",
- "You received a new remote share from %s" : "Gavote naują nutolusį dalijimąsi nuo %s",
- "%1$s accepted remote share %2$s" : "%1$s priėmė nutolusį dalijimąsi %2$s",
- "%1$s declined remote share %2$s" : "%1$s atmetė nutolusį dalijimąsi %2$s",
- "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi",
- "Public shared folder %1$s was downloaded" : "Viešas dalijimosi aplankas %1$s parsiųstas",
- "Public shared file %1$s was downloaded" : "Viešai dalinamas failas %1$s parsiųstas",
- "You shared %1$s with %2$s" : "Jūs pasidalinote %1$s su %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s",
- "You shared %1$s with group %2$s" : "Jūs pasidalinote %1$s su grupe %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s",
- "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda",
- "You shared %1$s via link" : "Pasidalinote %1$s per nuorodą",
- "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis",
+ "Shared with you" : "Bendrinama su jumis",
+ "Shared with others" : "Bendrinama su kitais",
+ "Shared by link" : "Bendrinama per nuorodą",
+ "Nothing shared with you yet" : "Niekas nebendrinama",
+ "Files and folders others share with you will show up here" : "Čia rodomi failai ir aplankai, kuriuos kiti bendrina su jumis",
+ "Nothing shared yet" : "Kol kas nieko nebendrinama",
+ "Files and folders you share will show up here" : "Čia rodomi failai ir aplankai, kuriuos bendrinate",
+ "No shared links" : "Nėra bendrinamų nuorodų",
+ "Files and folders you share by link will show up here" : "Jūsų bendrinami failai ir aplankai rodomi čia",
+ "You can upload into this folder" : "Galite įkelti į šį aplanką",
+ "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}",
+ "Invalid server URL" : "Neteisingas serverio adresas",
+ "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud",
+ "Share" : "Dalintis",
+ "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta",
+ "Shared by" : "Bendrina",
+ "Sharing" : "Dalinamasi",
+ "File shares" : "Bendrinami duomenys",
"Downloaded via public link" : "Atsiųsti per viešą nuorodą",
- "Shared with %2$s" : "Pasidalinta su %2$s",
- "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s",
- "Shared with group %2$s" : "Pasidalinta su grupe %2$s",
- "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s",
- "Shared via link by %2$s" : "%2$s pasidalino nuoroda",
- "Shared via public link" : "Pasidalinta vieša nuoroda",
- "Shared by %2$s" : "Pasidalino %2$s",
- "Shares" : "Dalijimaisi",
+ "Downloaded by {email}" : "Parsisiųsta į {email}",
+ "{file} downloaded via public link" : "{file} parsisiųsta per nuorodą",
+ "{email} downloaded {file}" : "{email} atsisiuntė {file}",
+ "Shared with group {group}" : "Bendrinama su grupe {group}",
+ "Removed share for group {group}" : "Nebesidalinama su grupe: {group}",
+ "{actor} shared with group {group}" : "{actor} pradėjo bendrinti su grupe {group}",
+ "{actor} removed share for group {group}" : "{actor} nustojo dalintis su {group} grupe",
+ "You shared {file} with group {group}" : "Jūs pradėjote bendrinti {file} su grupe {group}",
+ "You removed group {group} from {file}" : "Pašalinote grupę {group} iš {file}",
+ "{actor} shared {file} with group {group}" : "{actor} pradėjo bendrinti {file} su grupe {group}",
+ "{actor} removed group {group} from {file}" : "{actor} pašalino grupę {group} iš {file}",
+ "Shared as public link" : "Bendrinama kaip viešoji nuoroda",
+ "Removed public link" : "Pašalinti viešą nuorodą",
+ "Public link expired" : "Pasibaigė nuorodos galiojimo laikas",
+ "{actor} shared as public link" : "{actor} pradėjo bendrinti kaip viešąją nuorodą",
+ "{actor} removed public link" : "{actor} pašalino nuorodą",
+ "Public link of {actor} expired" : "Pasibaigė nuorodos, priklausančios {actor}, galiojimo laikas",
+ "You shared {file} as public link" : "Jūs pradėjote bendrinti {file} kaip viešąją nuorodą",
+ "You removed public link for {file}" : "Jūs pašalinote viešą {file} nuorodą",
+ "Public link expired for {file}" : "Pasibaigė nuorodos galiojimo laikas skirtas {file}",
+ "{actor} shared {file} as public link" : "{actor} pradėjo bendrinti {file} kaip viešąją nuorodą",
+ "{actor} removed public link for {file}" : "{actor} nebesidalina \"{file}\"",
+ "Public link of {actor} for {file} expired" : "Pasibaigė nuorodos galiojimo laikas duomenims {file}, bendrintiems {actor}",
+ "{user} accepted the remote share" : "{user} priėmė bendrinamus duomenis",
+ "{user} declined the remote share" : "{user} atmetė duomenų dalinimąsi",
+ "You received a new remote share {file} from {user}" : "Jūs gavote naują duomenis \"{file}\" iš kito serverio nuo {user}",
+ "{user} accepted the remote share of {file}" : "{user} priėmė bendrinamus duomenis \"{file}\"",
+ "{user} declined the remote share of {file}" : "{user} atmetė duomenų \"{file}\" dalinimąsį",
+ "{user} unshared {file} from you" : "{user} nustojo bendrinti su jumis {file}",
+ "Shared with {user}" : "Pradėta bendrinti su {user}",
+ "Removed share for {user}" : "Nustota dalintis su {user}",
+ "{actor} shared with {user}" : "{actor} pradėjo bendrinti su {user}",
+ "{actor} removed share for {user}" : "{actor} nustojo dalintis su {user}",
+ "Shared by {actor}" : "Pasidalinta {actor}",
+ "{actor} removed share" : "{actor} nustojo dalintis",
+ "You shared {file} with {user}" : "Pasidalinote {file} su {user}",
+ "You removed {user} from {file}" : "Nebesidalinate {file} su {user}",
+ "{actor} shared {file} with {user}" : "{actor} pasidalino {file} su {user}",
+ "{actor} removed {user} from {file}" : "{actor} nebesidalina {file} su {user}",
+ "{actor} shared {file} with you" : "{actor} pasidalino {file} su jumis",
+ "{actor} removed you from {file}" : "{actor} nebesidalina su jumis {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Duomenys, bendrinti per elektroninį paštą, buvo <strong>parsiųsti</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iš <strong>kito serverio</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>",
+ "Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID",
+ "could not delete share" : "nepavyko nustoti dalintis duomenimis",
+ "Could not delete share" : "Nepavyko nustoti dalintis duomenimis",
+ "Please specify a file or folder path" : "Nurodykite kelią iki duomenų",
+ "Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra",
+ "Could not create share" : "Negalima dalintis",
+ "invalid permissions" : "neteisingi leidimai",
+ "Please specify a valid user" : "Nurodykite naudotoją",
+ "Group sharing is disabled by the administrator" : "Bendrinimas su grupėmis yra išjungtas",
+ "Please specify a valid group" : "Nurodykite grupę",
+ "Public link sharing is disabled by the administrator" : "Dalinimasis per nuorodą yra išjungtas",
+ "Public upload disabled by the administrator" : "Įkėlimas viešam naudojimui yra išjungtas",
+ "Public upload is only possible for publicly shared folders" : "Duomenų įkėlimas viešam naudojimui galimas tik į viešai dalinamus aplankus",
+ "Invalid date, date format must be YYYY-MM-DD" : "Netinkamas datos formavimas. Privaloma: YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo: %s",
+ "You cannot share to a Circle if the app is not enabled" : "Negalite dalintis su naudotojų ratu, kai įskiepis \"Circle\" neveikia",
+ "Please specify a valid circle" : "Pasirinkite naudotojų ratą",
+ "Unknown share type" : "Nežinomas bendrinamų duomenų tipas",
+ "Not a directory" : "Nėra katalogas",
+ "Could not lock path" : "Nepavyko užrakinti kelio",
+ "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai",
+ "Can't change permissions for public share links" : "Negalima keisti leidimų viešai bendrinamoms nuorodoms",
+ "Cannot increase permissions" : "Negalima pridėti papildomų leidimų",
+ "%s is publicly shared" : "%s yra bendrinamas viešai",
+ "Share API is disabled" : "Bendrinimo API yra išjungtas",
+ "File sharing" : "Duomenų dalinimasis",
"This share is password-protected" : "Turinys apsaugotas slaptažodžiu",
- "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.",
+ "The password is wrong. Try again." : "Slaptažodis neteisingas. Bandykite dar kartą.",
"Password" : "Slaptažodis",
- "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
+ "No entries found in this folder" : "Šiame aplanke įrašų nerasta",
"Name" : "Pavadinimas",
"Share time" : "Dalijimosi laikas",
- "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.",
+ "Expiration date" : "Galiojimo data",
+ "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.",
"Reasons might be:" : "Galimos priežastys:",
"the item was removed" : "elementas buvo pašalintas",
"the link expired" : "baigėsi nuorodos galiojimo laikas",
"sharing is disabled" : "dalinimasis yra išjungtas",
"For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.",
- "Add to your ownCloud" : "Pridėti prie tavo ownCloud",
+ "shared by %s" : "pasidalino %s",
+ "Add to your Nextcloud" : "Pridėti į jūsų NextCloud",
"Download" : "Atsisiųsti",
- "Download %s" : "Atsiųsti %s",
- "Direct link" : "Tiesioginė nuoroda"
+ "Download %s" : "Atsisiųsti %s",
+ "Direct link" : "Tiesioginė nuoroda",
+ "Upload files to %s" : "Įkelti duomenis į %s",
+ "Select or drop files" : "Pasirinkite arba vilkite failus",
+ "Uploading files…" : "Įkeliami failai…",
+ "Uploaded files:" : "Įkelti failai:"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json
index 95cc0cf965b..7ce7df158c5 100644
--- a/apps/files_sharing/l10n/lt_LT.json
+++ b/apps/files_sharing/l10n/lt_LT.json
@@ -1,71 +1,114 @@
{ "translations": {
- "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje",
- "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.",
- "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.",
- "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas",
- "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis",
- "Storage not valid" : "Talpykla negalioja",
- "Couldn't add remote share" : "Nepavyko pridėti nutolusio dalijimosi",
- "Shared with you" : "Pasidalinta su tavimi",
- "Shared with others" : "Pasidalinta su kitais",
- "Shared by link" : "Pasidalinta su nuoroda",
- "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama",
- "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi čia",
- "Nothing shared yet" : "Niekas nepasidalinta",
- "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi čia",
- "No shared links" : "Nėra pasidalinimų nuoroda",
- "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi čia",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridėti nutolusį dalijimąsi {name} nuo {owner}@{remote}?",
- "Remote share" : "Nutolęs dalinimasis",
- "Remote share password" : "Nutolusio dalijimosi slaptažodis",
- "Cancel" : "Atšaukti",
- "Add remote share" : "Pridėti nutolusi dalijimąsi",
- "You can upload into this folder" : "Gali įkelti į šį aplanką",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukštesnė versiją) {remote} serveryje.",
- "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda",
- "Shared by" : "Dalinasi",
- "Sharing" : "Dalijimasis",
- "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iš <strong>kito serverio</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Viešai pasidalintas failas ar aplankas <strong>parsiųstas</strong>",
- "You received a new remote share %2$s from %1$s" : "Gavote naują nutolusį dalijimąsi %2$s nuo %1$s",
- "You received a new remote share from %s" : "Gavote naują nutolusį dalijimąsi nuo %s",
- "%1$s accepted remote share %2$s" : "%1$s priėmė nutolusį dalijimąsi %2$s",
- "%1$s declined remote share %2$s" : "%1$s atmetė nutolusį dalijimąsi %2$s",
- "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi",
- "Public shared folder %1$s was downloaded" : "Viešas dalijimosi aplankas %1$s parsiųstas",
- "Public shared file %1$s was downloaded" : "Viešai dalinamas failas %1$s parsiųstas",
- "You shared %1$s with %2$s" : "Jūs pasidalinote %1$s su %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s",
- "You shared %1$s with group %2$s" : "Jūs pasidalinote %1$s su grupe %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s",
- "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda",
- "You shared %1$s via link" : "Pasidalinote %1$s per nuorodą",
- "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis",
+ "Shared with you" : "Bendrinama su jumis",
+ "Shared with others" : "Bendrinama su kitais",
+ "Shared by link" : "Bendrinama per nuorodą",
+ "Nothing shared with you yet" : "Niekas nebendrinama",
+ "Files and folders others share with you will show up here" : "Čia rodomi failai ir aplankai, kuriuos kiti bendrina su jumis",
+ "Nothing shared yet" : "Kol kas nieko nebendrinama",
+ "Files and folders you share will show up here" : "Čia rodomi failai ir aplankai, kuriuos bendrinate",
+ "No shared links" : "Nėra bendrinamų nuorodų",
+ "Files and folders you share by link will show up here" : "Jūsų bendrinami failai ir aplankai rodomi čia",
+ "You can upload into this folder" : "Galite įkelti į šį aplanką",
+ "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}",
+ "Invalid server URL" : "Neteisingas serverio adresas",
+ "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud",
+ "Share" : "Dalintis",
+ "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta",
+ "Shared by" : "Bendrina",
+ "Sharing" : "Dalinamasi",
+ "File shares" : "Bendrinami duomenys",
"Downloaded via public link" : "Atsiųsti per viešą nuorodą",
- "Shared with %2$s" : "Pasidalinta su %2$s",
- "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s",
- "Shared with group %2$s" : "Pasidalinta su grupe %2$s",
- "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s",
- "Shared via link by %2$s" : "%2$s pasidalino nuoroda",
- "Shared via public link" : "Pasidalinta vieša nuoroda",
- "Shared by %2$s" : "Pasidalino %2$s",
- "Shares" : "Dalijimaisi",
+ "Downloaded by {email}" : "Parsisiųsta į {email}",
+ "{file} downloaded via public link" : "{file} parsisiųsta per nuorodą",
+ "{email} downloaded {file}" : "{email} atsisiuntė {file}",
+ "Shared with group {group}" : "Bendrinama su grupe {group}",
+ "Removed share for group {group}" : "Nebesidalinama su grupe: {group}",
+ "{actor} shared with group {group}" : "{actor} pradėjo bendrinti su grupe {group}",
+ "{actor} removed share for group {group}" : "{actor} nustojo dalintis su {group} grupe",
+ "You shared {file} with group {group}" : "Jūs pradėjote bendrinti {file} su grupe {group}",
+ "You removed group {group} from {file}" : "Pašalinote grupę {group} iš {file}",
+ "{actor} shared {file} with group {group}" : "{actor} pradėjo bendrinti {file} su grupe {group}",
+ "{actor} removed group {group} from {file}" : "{actor} pašalino grupę {group} iš {file}",
+ "Shared as public link" : "Bendrinama kaip viešoji nuoroda",
+ "Removed public link" : "Pašalinti viešą nuorodą",
+ "Public link expired" : "Pasibaigė nuorodos galiojimo laikas",
+ "{actor} shared as public link" : "{actor} pradėjo bendrinti kaip viešąją nuorodą",
+ "{actor} removed public link" : "{actor} pašalino nuorodą",
+ "Public link of {actor} expired" : "Pasibaigė nuorodos, priklausančios {actor}, galiojimo laikas",
+ "You shared {file} as public link" : "Jūs pradėjote bendrinti {file} kaip viešąją nuorodą",
+ "You removed public link for {file}" : "Jūs pašalinote viešą {file} nuorodą",
+ "Public link expired for {file}" : "Pasibaigė nuorodos galiojimo laikas skirtas {file}",
+ "{actor} shared {file} as public link" : "{actor} pradėjo bendrinti {file} kaip viešąją nuorodą",
+ "{actor} removed public link for {file}" : "{actor} nebesidalina \"{file}\"",
+ "Public link of {actor} for {file} expired" : "Pasibaigė nuorodos galiojimo laikas duomenims {file}, bendrintiems {actor}",
+ "{user} accepted the remote share" : "{user} priėmė bendrinamus duomenis",
+ "{user} declined the remote share" : "{user} atmetė duomenų dalinimąsi",
+ "You received a new remote share {file} from {user}" : "Jūs gavote naują duomenis \"{file}\" iš kito serverio nuo {user}",
+ "{user} accepted the remote share of {file}" : "{user} priėmė bendrinamus duomenis \"{file}\"",
+ "{user} declined the remote share of {file}" : "{user} atmetė duomenų \"{file}\" dalinimąsį",
+ "{user} unshared {file} from you" : "{user} nustojo bendrinti su jumis {file}",
+ "Shared with {user}" : "Pradėta bendrinti su {user}",
+ "Removed share for {user}" : "Nustota dalintis su {user}",
+ "{actor} shared with {user}" : "{actor} pradėjo bendrinti su {user}",
+ "{actor} removed share for {user}" : "{actor} nustojo dalintis su {user}",
+ "Shared by {actor}" : "Pasidalinta {actor}",
+ "{actor} removed share" : "{actor} nustojo dalintis",
+ "You shared {file} with {user}" : "Pasidalinote {file} su {user}",
+ "You removed {user} from {file}" : "Nebesidalinate {file} su {user}",
+ "{actor} shared {file} with {user}" : "{actor} pasidalino {file} su {user}",
+ "{actor} removed {user} from {file}" : "{actor} nebesidalina {file} su {user}",
+ "{actor} shared {file} with you" : "{actor} pasidalino {file} su jumis",
+ "{actor} removed you from {file}" : "{actor} nebesidalina su jumis {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Duomenys, bendrinti per elektroninį paštą, buvo <strong>parsiųsti</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iš <strong>kito serverio</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>",
+ "Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID",
+ "could not delete share" : "nepavyko nustoti dalintis duomenimis",
+ "Could not delete share" : "Nepavyko nustoti dalintis duomenimis",
+ "Please specify a file or folder path" : "Nurodykite kelią iki duomenų",
+ "Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra",
+ "Could not create share" : "Negalima dalintis",
+ "invalid permissions" : "neteisingi leidimai",
+ "Please specify a valid user" : "Nurodykite naudotoją",
+ "Group sharing is disabled by the administrator" : "Bendrinimas su grupėmis yra išjungtas",
+ "Please specify a valid group" : "Nurodykite grupę",
+ "Public link sharing is disabled by the administrator" : "Dalinimasis per nuorodą yra išjungtas",
+ "Public upload disabled by the administrator" : "Įkėlimas viešam naudojimui yra išjungtas",
+ "Public upload is only possible for publicly shared folders" : "Duomenų įkėlimas viešam naudojimui galimas tik į viešai dalinamus aplankus",
+ "Invalid date, date format must be YYYY-MM-DD" : "Netinkamas datos formavimas. Privaloma: YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo: %s",
+ "You cannot share to a Circle if the app is not enabled" : "Negalite dalintis su naudotojų ratu, kai įskiepis \"Circle\" neveikia",
+ "Please specify a valid circle" : "Pasirinkite naudotojų ratą",
+ "Unknown share type" : "Nežinomas bendrinamų duomenų tipas",
+ "Not a directory" : "Nėra katalogas",
+ "Could not lock path" : "Nepavyko užrakinti kelio",
+ "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai",
+ "Can't change permissions for public share links" : "Negalima keisti leidimų viešai bendrinamoms nuorodoms",
+ "Cannot increase permissions" : "Negalima pridėti papildomų leidimų",
+ "%s is publicly shared" : "%s yra bendrinamas viešai",
+ "Share API is disabled" : "Bendrinimo API yra išjungtas",
+ "File sharing" : "Duomenų dalinimasis",
"This share is password-protected" : "Turinys apsaugotas slaptažodžiu",
- "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.",
+ "The password is wrong. Try again." : "Slaptažodis neteisingas. Bandykite dar kartą.",
"Password" : "Slaptažodis",
- "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
+ "No entries found in this folder" : "Šiame aplanke įrašų nerasta",
"Name" : "Pavadinimas",
"Share time" : "Dalijimosi laikas",
- "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.",
+ "Expiration date" : "Galiojimo data",
+ "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.",
"Reasons might be:" : "Galimos priežastys:",
"the item was removed" : "elementas buvo pašalintas",
"the link expired" : "baigėsi nuorodos galiojimo laikas",
"sharing is disabled" : "dalinimasis yra išjungtas",
"For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.",
- "Add to your ownCloud" : "Pridėti prie tavo ownCloud",
+ "shared by %s" : "pasidalino %s",
+ "Add to your Nextcloud" : "Pridėti į jūsų NextCloud",
"Download" : "Atsisiųsti",
- "Download %s" : "Atsiųsti %s",
- "Direct link" : "Tiesioginė nuoroda"
+ "Download %s" : "Atsisiųsti %s",
+ "Direct link" : "Tiesioginė nuoroda",
+ "Upload files to %s" : "Įkelti duomenis į %s",
+ "Select or drop files" : "Pasirinkite arba vilkite failus",
+ "Uploading files…" : "Įkeliami failai…",
+ "Uploaded files:" : "Įkelti failai:"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js
index 4f92d06d883..88e11921211 100644
--- a/apps/files_sharing/l10n/nb.js
+++ b/apps/files_sharing/l10n/nb.js
@@ -61,7 +61,7 @@ OC.L10N.register(
"{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}",
"{actor} shared {file} with you" : "{actor} delte {file} med deg",
"{actor} removed you from {file}" : "{actor} fjernet deg fra {file}",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
@@ -74,7 +74,7 @@ OC.L10N.register(
"Please specify a valid user" : "Oppgi en gyldig bruker",
"Group sharing is disabled by the administrator" : "Gruppedeling er deaktivert av administratoren",
"Please specify a valid group" : "Oppgi en gyldig gruppe",
- "Public link sharing is disabled by the administrator" : "Offentlig deling er deaktivert av administratoren",
+ "Public link sharing is disabled by the administrator" : "Administratoren har skrudd av offentlig lenkedeling",
"Public upload disabled by the administrator" : "Offentlig opplasting er deaktivert av administratoren",
"Public upload is only possible for publicly shared folders" : "Offentlig opplasting er kun mulig i offentlig delte mapper",
"Invalid date, date format must be YYYY-MM-DD" : "Feil dato, dato må være i formatet YYYY-MM-DD",
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "lenken er utløpt",
"sharing is disabled" : "deling er avskrudd",
"For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.",
+ "shared by %s" : "delt av %s",
"Add to your Nextcloud" : "Legg til i din Nextcloud",
"Download" : "Last ned",
"Download %s" : "Last ned %s",
diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json
index b51cb60f88a..b3fdf4258bd 100644
--- a/apps/files_sharing/l10n/nb.json
+++ b/apps/files_sharing/l10n/nb.json
@@ -59,7 +59,7 @@
"{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}",
"{actor} shared {file} with you" : "{actor} delte {file} med deg",
"{actor} removed you from {file}" : "{actor} fjernet deg fra {file}",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
@@ -72,7 +72,7 @@
"Please specify a valid user" : "Oppgi en gyldig bruker",
"Group sharing is disabled by the administrator" : "Gruppedeling er deaktivert av administratoren",
"Please specify a valid group" : "Oppgi en gyldig gruppe",
- "Public link sharing is disabled by the administrator" : "Offentlig deling er deaktivert av administratoren",
+ "Public link sharing is disabled by the administrator" : "Administratoren har skrudd av offentlig lenkedeling",
"Public upload disabled by the administrator" : "Offentlig opplasting er deaktivert av administratoren",
"Public upload is only possible for publicly shared folders" : "Offentlig opplasting er kun mulig i offentlig delte mapper",
"Invalid date, date format must be YYYY-MM-DD" : "Feil dato, dato må være i formatet YYYY-MM-DD",
@@ -101,6 +101,7 @@
"the link expired" : "lenken er utløpt",
"sharing is disabled" : "deling er avskrudd",
"For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.",
+ "shared by %s" : "delt av %s",
"Add to your Nextcloud" : "Legg til i din Nextcloud",
"Download" : "Last ned",
"Download %s" : "Last ned %s",
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index 3aff2387241..f0a6c030612 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "de link is verlopen",
"sharing is disabled" : "delen is uitgeschakeld",
"For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.",
+ "shared by %s" : "Gedeeld door %s",
"Add to your Nextcloud" : "Toevoegen aan je Nextcloud",
"Download" : "Downloaden",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index 192399be440..871372f7c77 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -101,6 +101,7 @@
"the link expired" : "de link is verlopen",
"sharing is disabled" : "delen is uitgeschakeld",
"For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.",
+ "shared by %s" : "Gedeeld door %s",
"Add to your Nextcloud" : "Toevoegen aan je Nextcloud",
"Download" : "Downloaden",
"Download %s" : "Download %s",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 2a2b424e25a..7906ea6f01e 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "o link expirou",
"sharing is disabled" : "o compartilhamento está desativado",
"For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.",
+ "shared by %s" : "compartilhado por %s",
"Add to your Nextcloud" : "Adicionar ao seu Nextcloud",
"Download" : "Baixar",
"Download %s" : "Baixar %s",
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 4040000cb43..f7a37ac8e15 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -101,6 +101,7 @@
"the link expired" : "o link expirou",
"sharing is disabled" : "o compartilhamento está desativado",
"For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.",
+ "shared by %s" : "compartilhado por %s",
"Add to your Nextcloud" : "Adicionar ao seu Nextcloud",
"Download" : "Baixar",
"Download %s" : "Baixar %s",
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 06122cef13b..c227aea0a78 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -21,71 +21,71 @@ OC.L10N.register(
"File shares" : "Обмен файлами",
"Downloaded via public link" : "Скачано по общедоступной ссылке",
"Downloaded by {email}" : "Скачано {email}",
- "{file} downloaded via public link" : "«{file}» скачан по общедоступной ссылке",
+ "{file} downloaded via public link" : "«{file}» был скачан по общедоступной ссылке",
"{email} downloaded {file}" : "{email} скачал «{file}»",
- "Shared with group {group}" : "Открыт доступ для группы «{group}»",
+ "Shared with group {group}" : "Открыт общий доступ для группы «{group}»",
"Removed share for group {group}" : "Закрыт общий доступ для группы «{group}»",
- "{actor} shared with group {group}" : "{actor} поделился с группой «{group}»",
- "{actor} removed share for group {group}" : "{actor} закрыл общий доступ для группы «{group}»",
+ "{actor} shared with group {group}" : "{actor} поделился(ась) с группой «{group}»",
+ "{actor} removed share for group {group}" : "{actor} закрыл(а) общий доступ для группы «{group}»",
"You shared {file} with group {group}" : "Вы поделились «{file}» с группой «{group}»",
"You removed group {group} from {file}" : "Вы закрыли группе «{group}» доступ к «{file}»",
- "{actor} shared {file} with group {group}" : "{actor} поделился «{file}» с группой «{group}»",
- "{actor} removed group {group} from {file}" : "{actor} закрыл группе «{group}» общий доступ к «{file}»",
- "Shared as public link" : "Поделился общедоступной ссылкой",
+ "{actor} shared {file} with group {group}" : "{actor} поделился(ась) «{file}» с группой «{group}»",
+ "{actor} removed group {group} from {file}" : "{actor} закрыл(а) группе «{group}» общий доступ к «{file}»",
+ "Shared as public link" : "Доступ предоставлен в виде общедоступной ссылки ",
"Removed public link" : "Удалена общедоступная ссылка",
"Public link expired" : "Срок действия общедоступнной ссылки закончился",
- "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой",
- "{actor} removed public link" : "{actor} удалил общедоступной ссылку",
- "Public link of {actor} expired" : "Истёе срок действия общедоступной ссылки пользователя {actor}",
+ "{actor} shared as public link" : "{actor} поделился(ась) общедоступной ссылкой",
+ "{actor} removed public link" : "{actor} удалил(а) общедоступную ссылку",
+ "Public link of {actor} expired" : "Истёк срок действия общедоступной ссылки пользователя {actor}",
"You shared {file} as public link" : "Вы поделись «{file}» в виде общедоступной ссылки",
- "You removed public link for {file}" : "Вы удалили общедоступную ссылку к «{file}»",
- "Public link expired for {file}" : "Истёк срок действия общедоступной ссылки для «{file}»",
- "{actor} shared {file} as public link" : "{actor} открыл общий доступ к «{file}» в виде общедоступной ссылки",
- "{actor} removed public link for {file}" : "{actor} удалил общедоступную ссылку к «{file}»",
- "Public link of {actor} for {file} expired" : "Истёк срок действия общедоступной ссылки к «{file}», созданной {actor}",
- "{user} accepted the remote share" : "{user} принял удаленный общий ресурс",
- "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс",
- "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс с другого сервера «{file}» ",
- "{user} accepted the remote share of {file}" : "{user} принял общий ресурс другого сервера «{file}»",
- "{user} declined the remote share of {file}" : "{user} отклонил общий ресурс другого сервера «{file}»",
- "{user} unshared {file} from you" : "{user} закрыл ваш доступ к «{file}»",
- "Shared with {user}" : "Открыт общий доступ для {user}",
- "Removed share for {user}" : "Закрыт общий доступ для {user}",
- "{actor} shared with {user}" : "{actor} поделился с {user}",
- "{actor} removed share for {user}" : "{actor} закрыл общий доступ для {user}",
- "Shared by {actor}" : "Поделился через {actor}",
- "{actor} removed share" : "{actor} закрыл общий доступ",
- "You shared {file} with {user}" : "Вы открыли доступ к «{file}» для {user}",
- "You removed {user} from {file}" : "Вы закрыли общий доступ к «{file}» для {user}",
- "{actor} shared {file} with {user}" : "{actor} открыл общий доступ к «{file}» для {user}",
- "{actor} removed {user} from {file}" : "{actor} закрыл общий доступ к «{file}» для {user}",
- "{actor} shared {file} with you" : "{actor} открыл вам общий доступ к «{file}»",
- "{actor} removed you from {file}" : "{actor} закрыл вам общий доступ к «{file}»",
+ "You removed public link for {file}" : "Вы удалили общедоступную ссылку на «{file}»",
+ "Public link expired for {file}" : "Истёк срок действия общедоступной ссылки на «{file}»",
+ "{actor} shared {file} as public link" : "{actor} открыл(а) общий доступ к «{file}» в виде общедоступной ссылки",
+ "{actor} removed public link for {file}" : "{actor} удалил(а) общедоступную ссылку на «{file}»",
+ "Public link of {actor} for {file} expired" : "Истёк срок действия общедоступной ссылки на «{file}», созданной {actor}.",
+ "{user} accepted the remote share" : "{user} принял(а) общий ресурс другого сервера",
+ "{user} declined the remote share" : "{user} отклонил(а) общий ресурс другого сервера",
+ "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс «{file}», расположенный на другом сервере",
+ "{user} accepted the remote share of {file}" : "{user} принял(а) общий ресурс «{file}», расположенный на другом сервере",
+ "{user} declined the remote share of {file}" : "{user} отклонил(а) общий ресурс «{file}», расположенный на другом сервере",
+ "{user} unshared {file} from you" : "{user} закрыл(а) ваш доступ к «{file}»",
+ "Shared with {user}" : "Открыт общий доступ пользователю {user}",
+ "Removed share for {user}" : "Закрыт общий доступ пользователю {user}",
+ "{actor} shared with {user}" : "{actor} поделился(ась) с пользователем {user}",
+ "{actor} removed share for {user}" : "{actor} закрыл(а) общий доступ пользователю {user}",
+ "Shared by {actor}" : "Общий доступ был открыт пользователем {actor}",
+ "{actor} removed share" : "{actor} закрыл(а) общий доступ",
+ "You shared {file} with {user}" : "Вы поделились «{file}» с пользователем {user}",
+ "You removed {user} from {file}" : "Вы закрыли пользователю {user} общий доступ к «{file}»",
+ "{actor} shared {file} with {user}" : "{actor} поделился(ась) «{file}» с пользователем {user}",
+ "{actor} removed {user} from {file}" : "{actor} закрыл(а) пользователю общий доступ к «{file}»",
+ "{actor} shared {file} with you" : "{actor} открыл(а) вам общий доступ к «{file}»",
+ "{actor} removed you from {file}" : "{actor} закрыл(а) вам общий доступ к «{file}»",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были <strong>скачаны</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Общий доступ к файлу или каталогу был открыт <strong>с другого сервера</strong>",
"A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует",
"could not delete share" : "Не удалось удалить общий ресурс",
"Could not delete share" : "Не удалось удалить общий ресурс",
- "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу",
- "Wrong path, file/folder doesn't exist" : "Неверный путь, файл/каталог не существует",
+ "Please specify a file or folder path" : "Укажите путь к файлу или каталогу",
+ "Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует",
"Could not create share" : "Не удалось создать общий ресурс",
- "invalid permissions" : "неверные права",
+ "invalid permissions" : "неверные права доступа",
"Please specify a valid user" : "Укажите верного пользователя",
- "Group sharing is disabled by the administrator" : "Общий доступ для групп отключён администратором",
+ "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором",
"Please specify a valid group" : "Укажите верную группу",
- "Public link sharing is disabled by the administrator" : "Публикация через общедоступные ссылки отключена администратором",
+ "Public link sharing is disabled by the administrator" : "Возможность делиться созданием общедоступных ссылок отключена администратором",
"Public upload disabled by the administrator" : "Загрузка в общедоступную публикацию запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в папки с общим доступом",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
"Sharing %s failed because the back end does not allow shares from type %s" : "Не удалось поделиться %s, поскольку механизм удалённого обмена не разрешает публикации типа %s",
- "You cannot share to a Circle if the app is not enabled" : "Вы не можите поделиться через приложение Круг, если это приложение не включено",
+ "You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите правильный круг",
"Unknown share type" : "Общий доступ неизвестного типа",
"Not a directory" : "Это не каталог",
"Could not lock path" : "Не удалось заблокировать путь",
"Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан",
- "Can't change permissions for public share links" : "Невозможно изменить права для публикации через общедоступной ссылку",
+ "Can't change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно",
"Cannot increase permissions" : "Нельзя увеличить права",
"%s is publicly shared" : "%s опубликован ",
"Share API is disabled" : "API общего доступа отключён",
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "срок действия ссылки истёк",
"sharing is disabled" : "общий доступ отключён",
"For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.",
+ "shared by %s" : "начато %s",
"Add to your Nextcloud" : "Добавить к вашему Nextcloud",
"Download" : "Скачать",
"Download %s" : "Скачать %s",
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index 00a0cbf7da9..dbb0c02cdb8 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -19,71 +19,71 @@
"File shares" : "Обмен файлами",
"Downloaded via public link" : "Скачано по общедоступной ссылке",
"Downloaded by {email}" : "Скачано {email}",
- "{file} downloaded via public link" : "«{file}» скачан по общедоступной ссылке",
+ "{file} downloaded via public link" : "«{file}» был скачан по общедоступной ссылке",
"{email} downloaded {file}" : "{email} скачал «{file}»",
- "Shared with group {group}" : "Открыт доступ для группы «{group}»",
+ "Shared with group {group}" : "Открыт общий доступ для группы «{group}»",
"Removed share for group {group}" : "Закрыт общий доступ для группы «{group}»",
- "{actor} shared with group {group}" : "{actor} поделился с группой «{group}»",
- "{actor} removed share for group {group}" : "{actor} закрыл общий доступ для группы «{group}»",
+ "{actor} shared with group {group}" : "{actor} поделился(ась) с группой «{group}»",
+ "{actor} removed share for group {group}" : "{actor} закрыл(а) общий доступ для группы «{group}»",
"You shared {file} with group {group}" : "Вы поделились «{file}» с группой «{group}»",
"You removed group {group} from {file}" : "Вы закрыли группе «{group}» доступ к «{file}»",
- "{actor} shared {file} with group {group}" : "{actor} поделился «{file}» с группой «{group}»",
- "{actor} removed group {group} from {file}" : "{actor} закрыл группе «{group}» общий доступ к «{file}»",
- "Shared as public link" : "Поделился общедоступной ссылкой",
+ "{actor} shared {file} with group {group}" : "{actor} поделился(ась) «{file}» с группой «{group}»",
+ "{actor} removed group {group} from {file}" : "{actor} закрыл(а) группе «{group}» общий доступ к «{file}»",
+ "Shared as public link" : "Доступ предоставлен в виде общедоступной ссылки ",
"Removed public link" : "Удалена общедоступная ссылка",
"Public link expired" : "Срок действия общедоступнной ссылки закончился",
- "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой",
- "{actor} removed public link" : "{actor} удалил общедоступной ссылку",
- "Public link of {actor} expired" : "Истёе срок действия общедоступной ссылки пользователя {actor}",
+ "{actor} shared as public link" : "{actor} поделился(ась) общедоступной ссылкой",
+ "{actor} removed public link" : "{actor} удалил(а) общедоступную ссылку",
+ "Public link of {actor} expired" : "Истёк срок действия общедоступной ссылки пользователя {actor}",
"You shared {file} as public link" : "Вы поделись «{file}» в виде общедоступной ссылки",
- "You removed public link for {file}" : "Вы удалили общедоступную ссылку к «{file}»",
- "Public link expired for {file}" : "Истёк срок действия общедоступной ссылки для «{file}»",
- "{actor} shared {file} as public link" : "{actor} открыл общий доступ к «{file}» в виде общедоступной ссылки",
- "{actor} removed public link for {file}" : "{actor} удалил общедоступную ссылку к «{file}»",
- "Public link of {actor} for {file} expired" : "Истёк срок действия общедоступной ссылки к «{file}», созданной {actor}",
- "{user} accepted the remote share" : "{user} принял удаленный общий ресурс",
- "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс",
- "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс с другого сервера «{file}» ",
- "{user} accepted the remote share of {file}" : "{user} принял общий ресурс другого сервера «{file}»",
- "{user} declined the remote share of {file}" : "{user} отклонил общий ресурс другого сервера «{file}»",
- "{user} unshared {file} from you" : "{user} закрыл ваш доступ к «{file}»",
- "Shared with {user}" : "Открыт общий доступ для {user}",
- "Removed share for {user}" : "Закрыт общий доступ для {user}",
- "{actor} shared with {user}" : "{actor} поделился с {user}",
- "{actor} removed share for {user}" : "{actor} закрыл общий доступ для {user}",
- "Shared by {actor}" : "Поделился через {actor}",
- "{actor} removed share" : "{actor} закрыл общий доступ",
- "You shared {file} with {user}" : "Вы открыли доступ к «{file}» для {user}",
- "You removed {user} from {file}" : "Вы закрыли общий доступ к «{file}» для {user}",
- "{actor} shared {file} with {user}" : "{actor} открыл общий доступ к «{file}» для {user}",
- "{actor} removed {user} from {file}" : "{actor} закрыл общий доступ к «{file}» для {user}",
- "{actor} shared {file} with you" : "{actor} открыл вам общий доступ к «{file}»",
- "{actor} removed you from {file}" : "{actor} закрыл вам общий доступ к «{file}»",
+ "You removed public link for {file}" : "Вы удалили общедоступную ссылку на «{file}»",
+ "Public link expired for {file}" : "Истёк срок действия общедоступной ссылки на «{file}»",
+ "{actor} shared {file} as public link" : "{actor} открыл(а) общий доступ к «{file}» в виде общедоступной ссылки",
+ "{actor} removed public link for {file}" : "{actor} удалил(а) общедоступную ссылку на «{file}»",
+ "Public link of {actor} for {file} expired" : "Истёк срок действия общедоступной ссылки на «{file}», созданной {actor}.",
+ "{user} accepted the remote share" : "{user} принял(а) общий ресурс другого сервера",
+ "{user} declined the remote share" : "{user} отклонил(а) общий ресурс другого сервера",
+ "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс «{file}», расположенный на другом сервере",
+ "{user} accepted the remote share of {file}" : "{user} принял(а) общий ресурс «{file}», расположенный на другом сервере",
+ "{user} declined the remote share of {file}" : "{user} отклонил(а) общий ресурс «{file}», расположенный на другом сервере",
+ "{user} unshared {file} from you" : "{user} закрыл(а) ваш доступ к «{file}»",
+ "Shared with {user}" : "Открыт общий доступ пользователю {user}",
+ "Removed share for {user}" : "Закрыт общий доступ пользователю {user}",
+ "{actor} shared with {user}" : "{actor} поделился(ась) с пользователем {user}",
+ "{actor} removed share for {user}" : "{actor} закрыл(а) общий доступ пользователю {user}",
+ "Shared by {actor}" : "Общий доступ был открыт пользователем {actor}",
+ "{actor} removed share" : "{actor} закрыл(а) общий доступ",
+ "You shared {file} with {user}" : "Вы поделились «{file}» с пользователем {user}",
+ "You removed {user} from {file}" : "Вы закрыли пользователю {user} общий доступ к «{file}»",
+ "{actor} shared {file} with {user}" : "{actor} поделился(ась) «{file}» с пользователем {user}",
+ "{actor} removed {user} from {file}" : "{actor} закрыл(а) пользователю общий доступ к «{file}»",
+ "{actor} shared {file} with you" : "{actor} открыл(а) вам общий доступ к «{file}»",
+ "{actor} removed you from {file}" : "{actor} закрыл(а) вам общий доступ к «{file}»",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были <strong>скачаны</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Общий доступ к файлу или каталогу был открыт <strong>с другого сервера</strong>",
"A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует",
"could not delete share" : "Не удалось удалить общий ресурс",
"Could not delete share" : "Не удалось удалить общий ресурс",
- "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу",
- "Wrong path, file/folder doesn't exist" : "Неверный путь, файл/каталог не существует",
+ "Please specify a file or folder path" : "Укажите путь к файлу или каталогу",
+ "Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует",
"Could not create share" : "Не удалось создать общий ресурс",
- "invalid permissions" : "неверные права",
+ "invalid permissions" : "неверные права доступа",
"Please specify a valid user" : "Укажите верного пользователя",
- "Group sharing is disabled by the administrator" : "Общий доступ для групп отключён администратором",
+ "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором",
"Please specify a valid group" : "Укажите верную группу",
- "Public link sharing is disabled by the administrator" : "Публикация через общедоступные ссылки отключена администратором",
+ "Public link sharing is disabled by the administrator" : "Возможность делиться созданием общедоступных ссылок отключена администратором",
"Public upload disabled by the administrator" : "Загрузка в общедоступную публикацию запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в папки с общим доступом",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
"Sharing %s failed because the back end does not allow shares from type %s" : "Не удалось поделиться %s, поскольку механизм удалённого обмена не разрешает публикации типа %s",
- "You cannot share to a Circle if the app is not enabled" : "Вы не можите поделиться через приложение Круг, если это приложение не включено",
+ "You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите правильный круг",
"Unknown share type" : "Общий доступ неизвестного типа",
"Not a directory" : "Это не каталог",
"Could not lock path" : "Не удалось заблокировать путь",
"Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан",
- "Can't change permissions for public share links" : "Невозможно изменить права для публикации через общедоступной ссылку",
+ "Can't change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно",
"Cannot increase permissions" : "Нельзя увеличить права",
"%s is publicly shared" : "%s опубликован ",
"Share API is disabled" : "API общего доступа отключён",
@@ -101,6 +101,7 @@
"the link expired" : "срок действия ссылки истёк",
"sharing is disabled" : "общий доступ отключён",
"For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.",
+ "shared by %s" : "начато %s",
"Add to your Nextcloud" : "Добавить к вашему Nextcloud",
"Download" : "Скачать",
"Download %s" : "Скачать %s",
diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js
index cbe82067813..ad8b6ca84c5 100644
--- a/apps/files_sharing/l10n/sq.js
+++ b/apps/files_sharing/l10n/sq.js
@@ -19,10 +19,10 @@ OC.L10N.register(
"Shared by" : "Ndarë nga",
"Sharing" : "Ndarje",
"File shares" : "Ndarja e skedarëve",
- "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
+ "Downloaded via public link" : "Shkarkuar nga një link publik",
"Downloaded by {email}" : "Shkarkuar nga {email}",
"{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike",
- "{email} downloaded {file}" : "{email} shkarkuar {file}",
+ "{email} downloaded {file}" : "{email} shkarkoi {file}",
"Shared with group {group}" : "U nda me grupin {group}",
"Removed share for group {group}" : "Hoqi ndarjen për grupin {group}",
"{actor} shared with group {group}" : "{actor} u nda me grupin {group}",
@@ -36,10 +36,13 @@ OC.L10N.register(
"Public link expired" : "Lidhja publike skadoi",
"{actor} shared as public link" : "{actor} u nda si një lidhje publike",
"{actor} removed public link" : "{actor} hoqi lidhje publike",
+ "Public link of {actor} expired" : "Lidhja publike e {actor} skadoi",
"You shared {file} as public link" : "Ndatë {file} si një lidhje publike",
"You removed public link for {file}" : "Hoqët lidhje publike për {file}",
+ "Public link expired for {file}" : "Lidhja publike skadoi për {file}",
"{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike",
"{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}",
+ "Public link of {actor} for {file} expired" : "Lidhja publike e {actor} për {file} ka skaduar",
"{user} accepted the remote share" : "{user} pranoi ndarjen e largët",
"{user} declined the remote share" : "{user} hodhi tej ndarjen e largët",
"You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}",
@@ -48,20 +51,21 @@ OC.L10N.register(
"{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju",
"Shared with {user}" : "Ndarë me {user}",
"Removed share for {user}" : "Hoqi ndarjen për {user}",
- "{actor} shared with {user}" : "{actor} ndau me {user}",
+ "{actor} shared with {user}" : "{aktori} ndau me {përdoruesin}",
"{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}",
"Shared by {actor}" : "U nda nga {actor}",
"{actor} removed share" : "{actor} hoqi ndarjen",
"You shared {file} with {user}" : "Ndatë {file} me {user}",
"You removed {user} from {file}" : "Hoqët {user} nga {file}",
+ "{actor} shared {file} with {user}" : "{aktori} ndau {skedarë} me {përdoruesin}",
"{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}",
- "{actor} shared {file} with you" : "{actor} ndau {file} me ju",
+ "{actor} shared {file} with you" : "{actor} ndau {skedarë} me ju",
"{actor} removed you from {file}" : "{actor} iu hoqi nga {file}",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte <strong> shkarkuar</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
"A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
"Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston",
- "could not delete share" : "Ndarja s’u fshi dot",
+ "could not delete share" : "ndarja s’u fshi dot",
"Could not delete share" : "Ndarja s’u fshi dot",
"Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje",
"Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston",
@@ -75,6 +79,8 @@ OC.L10N.register(
"Public upload is only possible for publicly shared folders" : "Ngarkimi publik është i mundshëm vetëm për dosje të ndara publikisht",
"Invalid date, date format must be YYYY-MM-DD" : "Datë e pavlefshme, formati i datës duhet të jetë VVVV-MM-DD",
"Sharing %s failed because the back end does not allow shares from type %s" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %s",
+ "You cannot share to a Circle if the app is not enabled" : "Nuk mund të shpërndani në një rreth nëse aplikacioni nuk është i aktivizuar",
+ "Please specify a valid circle" : "Ju lutem specifikoni një rreth i vlefshëm",
"Unknown share type" : "Lloj i panjohur ndarjesh",
"Not a directory" : "S’është drejtori",
"Could not lock path" : "S’u kyç dot shtegu",
@@ -83,6 +89,7 @@ OC.L10N.register(
"Cannot increase permissions" : "S’mund të fuqizohen lejet",
"%s is publicly shared" : "%s është ndarë publikisht",
"Share API is disabled" : "API i ndarjeve është çaktivizuar",
+ "File sharing" : "Shpërndarja e skedarëve",
"This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
"The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
"Password" : "Fjalëkalim",
@@ -96,6 +103,7 @@ OC.L10N.register(
"the link expired" : "lidhja ka skaduar",
"sharing is disabled" : "ndarjet janë çaktivizuar",
"For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
+ "shared by %s" : "ndarë nga %s",
"Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj",
"Download" : "Shkarko",
"Download %s" : "Shkarko %s",
diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json
index 2c2489830b5..d70569e8d49 100644
--- a/apps/files_sharing/l10n/sq.json
+++ b/apps/files_sharing/l10n/sq.json
@@ -17,10 +17,10 @@
"Shared by" : "Ndarë nga",
"Sharing" : "Ndarje",
"File shares" : "Ndarja e skedarëve",
- "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
+ "Downloaded via public link" : "Shkarkuar nga një link publik",
"Downloaded by {email}" : "Shkarkuar nga {email}",
"{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike",
- "{email} downloaded {file}" : "{email} shkarkuar {file}",
+ "{email} downloaded {file}" : "{email} shkarkoi {file}",
"Shared with group {group}" : "U nda me grupin {group}",
"Removed share for group {group}" : "Hoqi ndarjen për grupin {group}",
"{actor} shared with group {group}" : "{actor} u nda me grupin {group}",
@@ -34,10 +34,13 @@
"Public link expired" : "Lidhja publike skadoi",
"{actor} shared as public link" : "{actor} u nda si një lidhje publike",
"{actor} removed public link" : "{actor} hoqi lidhje publike",
+ "Public link of {actor} expired" : "Lidhja publike e {actor} skadoi",
"You shared {file} as public link" : "Ndatë {file} si një lidhje publike",
"You removed public link for {file}" : "Hoqët lidhje publike për {file}",
+ "Public link expired for {file}" : "Lidhja publike skadoi për {file}",
"{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike",
"{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}",
+ "Public link of {actor} for {file} expired" : "Lidhja publike e {actor} për {file} ka skaduar",
"{user} accepted the remote share" : "{user} pranoi ndarjen e largët",
"{user} declined the remote share" : "{user} hodhi tej ndarjen e largët",
"You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}",
@@ -46,20 +49,21 @@
"{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju",
"Shared with {user}" : "Ndarë me {user}",
"Removed share for {user}" : "Hoqi ndarjen për {user}",
- "{actor} shared with {user}" : "{actor} ndau me {user}",
+ "{actor} shared with {user}" : "{aktori} ndau me {përdoruesin}",
"{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}",
"Shared by {actor}" : "U nda nga {actor}",
"{actor} removed share" : "{actor} hoqi ndarjen",
"You shared {file} with {user}" : "Ndatë {file} me {user}",
"You removed {user} from {file}" : "Hoqët {user} nga {file}",
+ "{actor} shared {file} with {user}" : "{aktori} ndau {skedarë} me {përdoruesin}",
"{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}",
- "{actor} shared {file} with you" : "{actor} ndau {file} me ju",
+ "{actor} shared {file} with you" : "{actor} ndau {skedarë} me ju",
"{actor} removed you from {file}" : "{actor} iu hoqi nga {file}",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte <strong> shkarkuar</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
"A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
"Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston",
- "could not delete share" : "Ndarja s’u fshi dot",
+ "could not delete share" : "ndarja s’u fshi dot",
"Could not delete share" : "Ndarja s’u fshi dot",
"Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje",
"Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston",
@@ -73,6 +77,8 @@
"Public upload is only possible for publicly shared folders" : "Ngarkimi publik është i mundshëm vetëm për dosje të ndara publikisht",
"Invalid date, date format must be YYYY-MM-DD" : "Datë e pavlefshme, formati i datës duhet të jetë VVVV-MM-DD",
"Sharing %s failed because the back end does not allow shares from type %s" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %s",
+ "You cannot share to a Circle if the app is not enabled" : "Nuk mund të shpërndani në një rreth nëse aplikacioni nuk është i aktivizuar",
+ "Please specify a valid circle" : "Ju lutem specifikoni një rreth i vlefshëm",
"Unknown share type" : "Lloj i panjohur ndarjesh",
"Not a directory" : "S’është drejtori",
"Could not lock path" : "S’u kyç dot shtegu",
@@ -81,6 +87,7 @@
"Cannot increase permissions" : "S’mund të fuqizohen lejet",
"%s is publicly shared" : "%s është ndarë publikisht",
"Share API is disabled" : "API i ndarjeve është çaktivizuar",
+ "File sharing" : "Shpërndarja e skedarëve",
"This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
"The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
"Password" : "Fjalëkalim",
@@ -94,6 +101,7 @@
"the link expired" : "lidhja ka skaduar",
"sharing is disabled" : "ndarjet janë çaktivizuar",
"For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
+ "shared by %s" : "ndarë nga %s",
"Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj",
"Download" : "Shkarko",
"Download %s" : "Shkarko %s",
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 351f051565f..90dd8d9cbb0 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "bağlantı süresi dolmuş",
"sharing is disabled" : "paylaşım devre dışı bırakılmış",
"For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.",
+ "shared by %s" : "%s tarafından paylaşıldı",
"Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin",
"Download" : "İndir",
"Download %s" : "%s İndir",
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index cd2efe96746..56201c87b7b 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -101,6 +101,7 @@
"the link expired" : "bağlantı süresi dolmuş",
"sharing is disabled" : "paylaşım devre dışı bırakılmış",
"For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.",
+ "shared by %s" : "%s tarafından paylaşıldı",
"Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin",
"Download" : "İndir",
"Download %s" : "%s İndir",
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index b459355c7c5..759d5eb9301 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"the link expired" : "链接过期",
"sharing is disabled" : "分享已禁用",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
+ "shared by %s" : "共享者 %s",
"Add to your Nextcloud" : "添加到你的 Nextcloud",
"Download" : "下载",
"Download %s" : "下载 %s",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index 5c1f8b31499..68f5c68c138 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -101,6 +101,7 @@
"the link expired" : "链接过期",
"sharing is disabled" : "分享已禁用",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
+ "shared by %s" : "共享者 %s",
"Add to your Nextcloud" : "添加到你的 Nextcloud",
"Download" : "下载",
"Download %s" : "下载 %s",
diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js
index eacf48d6ee8..84db038f355 100644
--- a/apps/files_sharing/l10n/zh_TW.js
+++ b/apps/files_sharing/l10n/zh_TW.js
@@ -18,38 +18,52 @@ OC.L10N.register(
"No expiration date set" : "未指定到期日",
"Shared by" : "分享自",
"Sharing" : "分享",
- "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享",
- "You received a new remote share %2$s from %1$s" : "您收到了一個遠端分享 %2$s 來自於 %1$s",
- "You received a new remote share from %s" : "您收到了一個遠端分享來自於 %s",
- "%1$s accepted remote share %2$s" : "%1$s 接受了遠端分享 %2$s",
- "%1$s declined remote share %2$s" : "%1$s 拒絕了遠端分享 %2$s",
- "%1$s unshared %2$s from you" : "%1$s 取消與你分享 %2$s",
- "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載",
- "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載",
- "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s",
- "%2$s shared %1$s with %3$s" : "%2$s 與 %3$s 分享了 %1$s",
- "You shared %1$s with group %2$s" : "您與 %2$s 群組分享了 %1$s",
- "%2$s shared %1$s with group %3$s" : "%2$s 與群組 %3$s 分享了 %1$s",
- "%2$s shared %1$s via link" : "%2$s 透過連結分享了 %1$s ",
- "You shared %1$s via link" : "您以連結分享了 %1$s",
- "You removed the public link for %1$s" : "您刪除了 %1$s 的公開分享連結",
- "%2$s removed the public link for %1$s" : "%2$s 刪除了 %1$s 的公開分享連結",
- "Your public link for %1$s expired" : "您在 %1$s 的公開連結失效了",
- "The public link of %2$s for %1$s expired" : "%2$s 的公開連結(給 %1$s )失效了",
- "%2$s shared %1$s with you" : "%2$s 與您分享了 %1$s",
+ "File shares" : "檔案分享",
"Downloaded via public link" : "透過公用連結下載",
- "Shared with %2$s" : "與 %2$s 分享",
- "Shared with %3$s by %2$s" : "透過 %2$s 與 %3$s 分享",
- "Shared with group %2$s" : "與群組 %2$s 分享",
- "Shared with group %3$s by %2$s" : "透過 %2$s 與群組 %3$s 分享",
- "Shared via link by %2$s" : "%2$s 透過連結分享",
- "Shared via public link" : "透過公用連結分享",
+ "Downloaded by {email}" : "{email} 已下載",
+ "{file} downloaded via public link" : "{file} 已透過公用連結下載",
+ "{email} downloaded {file}" : "{email} 已下載 {file}",
+ "Shared with group {group}" : "與群組 {group} 分享",
+ "Removed share for group {group}" : "移除與群組 {group} 分享",
+ "{actor} shared with group {group}" : "{actor} 分享給群組 {group}",
+ "{actor} removed share for group {group}" : "{actor} 移除了與群組 {group} 的分享",
+ "You shared {file} with group {group}" : "你分享了 {file} 給群組 {group}",
+ "You removed group {group} from {file}" : "你將群組 {group} 從 {file} 移除",
+ "{actor} shared {file} with group {group}" : "{actor} 分享 {file} 給群組 {group}",
+ "{actor} removed group {group} from {file}" : "{actor} 將群組 {group} 從 {file} 移除",
+ "Shared as public link" : "藉由公用連結分享",
"Removed public link" : "刪除公開連結",
- "%2$s removed public link" : "%2$s 刪除了公開連結",
"Public link expired" : "公開連結已過期",
- "Public link of %2$s expired" : "%2$s 的公開連結過期了",
- "Shared by %2$s" : "由 %2$s 分享",
+ "{actor} shared as public link" : "{actor} 透過公開連結分享",
+ "{actor} removed public link" : "{actor} 移除公開連結分享",
+ "Public link of {actor} expired" : "{actor} 的公開連結過期了",
+ "You shared {file} as public link" : "你藉由公用連結分享了 {file}",
+ "You removed public link for {file}" : "您刪除了 {file} 的公開分享連結",
+ "Public link expired for {file}" : "{file} 的公開連結已過期",
+ "{actor} shared {file} as public link" : "{actor} 透過公開連結分享 {file}",
+ "{actor} removed public link for {file}" : "{actor} 移除 {file} 的公開連結分享",
+ "Public link of {actor} for {file} expired" : "{actor} 公開分享 {file} 的連結過期了",
+ "{user} accepted the remote share" : "{user} 接受了遠端分享",
+ "{user} declined the remote share" : "{user} 拒絕了遠端分享",
+ "You received a new remote share {file} from {user}" : "您收到了一個遠端分享 {file} 來自於 {user}",
+ "{user} accepted the remote share of {file}" : "{user} 接受了檔案 {file} 的遠端分享",
+ "{user} declined the remote share of {file}" : "{user} 拒絕了檔案 {file} 的遠端分享",
+ "{user} unshared {file} from you" : "{user} 取消與你分享檔案 {file}",
+ "Shared with {user}" : "與 {user} 分享",
+ "Removed share for {user}" : "移除對 {user} 的分享",
+ "{actor} shared with {user}" : "{actor} 分享給 {user}",
+ "{actor} removed share for {user}" : "{actor} 移除了對 {user} 的分享",
+ "Shared by {actor}" : "由 {actor} 分享",
+ "{actor} removed share" : "{actor} 移除了分享",
+ "You shared {file} with {user}" : "你與 {user} 分享了 {file}",
+ "You removed {user} from {file}" : "你將 {user} 從 {file} 移除",
+ "{actor} shared {file} with {user}" : "{actor} 分享了 {file} 給 {user}",
+ "{actor} removed {user} from {file}" : "{actor} 移除 {user} 從 {file}",
+ "{actor} shared {file} with you" : "{actor} 與你分享了 {file}",
+ "{actor} removed you from {file}" : "{actor} 將你從 {file} 移除",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "email或公開連結分享的檔案與資料夾已被 <strong>下載</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享",
+ "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>",
"Wrong share ID, share doesn't exist" : "錯誤的分享 ID ,分享不存在",
"could not delete share" : "無法刪除分享",
"Could not delete share" : "無法刪除分享",
@@ -65,13 +79,17 @@ OC.L10N.register(
"Public upload is only possible for publicly shared folders" : "只有公開分享的資料夾可以接受公開上傳",
"Invalid date, date format must be YYYY-MM-DD" : "無效的日期,需為 YYYY-MM-DD 格式",
"Sharing %s failed because the back end does not allow shares from type %s" : "分享 %s 失敗,因為後端不允許來自 %s 類型的分享",
+ "You cannot share to a Circle if the app is not enabled" : "當應用未被啟用,你無法分享到circle。",
+ "Please specify a valid circle" : "請指定一個有效的circle",
"Unknown share type" : "未知的分享類型",
"Not a directory" : "這不是一個資料夾",
"Could not lock path" : "無法鎖定路徑",
"Wrong or no update parameter given" : "更新參數不正確或未提供",
"Can't change permissions for public share links" : "無法由公開分享的連結變更權限",
"Cannot increase permissions" : "無法增加權限",
+ "%s is publicly shared" : "%s 是被公然分享的",
"Share API is disabled" : "分享 API 已停用",
+ "File sharing" : "檔案分享",
"This share is password-protected" : "這個分享有密碼保護",
"The password is wrong. Try again." : "請檢查您的密碼並再試一次",
"Password" : "密碼",
@@ -85,6 +103,7 @@ OC.L10N.register(
"the link expired" : "連結過期",
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
+ "shared by %s" : "分享自 %s",
"Add to your Nextcloud" : "加入到您的 Nextcloud",
"Download" : "下載",
"Download %s" : "下載 %s",
@@ -92,35 +111,6 @@ OC.L10N.register(
"Upload files to %s" : "上傳檔案到 %s",
"Select or drop files" : "選擇或拖曳檔案至此",
"Uploading files…" : "上傳檔案中…",
- "Uploaded files:" : "已上傳的檔案:",
- "A public shared file or folder was <strong>downloaded</strong>" : "共享檔案或目錄已被 <strong>下載</strong>",
- "Shares" : "分享",
- "Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
- "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元",
- "Not allowed to create a federated share with the same user server" : "不允許在同一個使用者伺服器建立分享聯盟",
- "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證",
- "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤",
- "Storage not valid" : "儲存空間無效",
- "Couldn't add remote share" : "無法加入遠端分享",
- "Federated sharing" : "分享聯盟",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?",
- "Remote share" : "遠端分享",
- "Remote share password" : "遠端分享密碼",
- "Cancel" : "取消",
- "Add remote share" : "加入遠端分享",
- "No ownCloud installation (7 or higher) found at {remote}" : "沒有在 {remote} 找到 ownCloud (版本 7 以上)",
- "Invalid ownCloud url" : "無效的 ownCloud URL",
- "Accept" : "接受",
- "Decline" : "拒絕",
- "Federated Cloud Sharing" : "雲端分享聯盟",
- "Open documentation" : "開啟說明文件",
- "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器",
- "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
- "Federated Cloud" : "雲端聯盟",
- "Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
- "Share it:" : "分享它:",
- "Add to your website" : "新增至您的網站",
- "Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
- "HTML Code:" : "HTML Code:"
+ "Uploaded files:" : "已上傳的檔案:"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json
index c5cdaa58628..7d35951bcb9 100644
--- a/apps/files_sharing/l10n/zh_TW.json
+++ b/apps/files_sharing/l10n/zh_TW.json
@@ -16,38 +16,52 @@
"No expiration date set" : "未指定到期日",
"Shared by" : "分享自",
"Sharing" : "分享",
- "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享",
- "You received a new remote share %2$s from %1$s" : "您收到了一個遠端分享 %2$s 來自於 %1$s",
- "You received a new remote share from %s" : "您收到了一個遠端分享來自於 %s",
- "%1$s accepted remote share %2$s" : "%1$s 接受了遠端分享 %2$s",
- "%1$s declined remote share %2$s" : "%1$s 拒絕了遠端分享 %2$s",
- "%1$s unshared %2$s from you" : "%1$s 取消與你分享 %2$s",
- "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載",
- "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載",
- "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s",
- "%2$s shared %1$s with %3$s" : "%2$s 與 %3$s 分享了 %1$s",
- "You shared %1$s with group %2$s" : "您與 %2$s 群組分享了 %1$s",
- "%2$s shared %1$s with group %3$s" : "%2$s 與群組 %3$s 分享了 %1$s",
- "%2$s shared %1$s via link" : "%2$s 透過連結分享了 %1$s ",
- "You shared %1$s via link" : "您以連結分享了 %1$s",
- "You removed the public link for %1$s" : "您刪除了 %1$s 的公開分享連結",
- "%2$s removed the public link for %1$s" : "%2$s 刪除了 %1$s 的公開分享連結",
- "Your public link for %1$s expired" : "您在 %1$s 的公開連結失效了",
- "The public link of %2$s for %1$s expired" : "%2$s 的公開連結(給 %1$s )失效了",
- "%2$s shared %1$s with you" : "%2$s 與您分享了 %1$s",
+ "File shares" : "檔案分享",
"Downloaded via public link" : "透過公用連結下載",
- "Shared with %2$s" : "與 %2$s 分享",
- "Shared with %3$s by %2$s" : "透過 %2$s 與 %3$s 分享",
- "Shared with group %2$s" : "與群組 %2$s 分享",
- "Shared with group %3$s by %2$s" : "透過 %2$s 與群組 %3$s 分享",
- "Shared via link by %2$s" : "%2$s 透過連結分享",
- "Shared via public link" : "透過公用連結分享",
+ "Downloaded by {email}" : "{email} 已下載",
+ "{file} downloaded via public link" : "{file} 已透過公用連結下載",
+ "{email} downloaded {file}" : "{email} 已下載 {file}",
+ "Shared with group {group}" : "與群組 {group} 分享",
+ "Removed share for group {group}" : "移除與群組 {group} 分享",
+ "{actor} shared with group {group}" : "{actor} 分享給群組 {group}",
+ "{actor} removed share for group {group}" : "{actor} 移除了與群組 {group} 的分享",
+ "You shared {file} with group {group}" : "你分享了 {file} 給群組 {group}",
+ "You removed group {group} from {file}" : "你將群組 {group} 從 {file} 移除",
+ "{actor} shared {file} with group {group}" : "{actor} 分享 {file} 給群組 {group}",
+ "{actor} removed group {group} from {file}" : "{actor} 將群組 {group} 從 {file} 移除",
+ "Shared as public link" : "藉由公用連結分享",
"Removed public link" : "刪除公開連結",
- "%2$s removed public link" : "%2$s 刪除了公開連結",
"Public link expired" : "公開連結已過期",
- "Public link of %2$s expired" : "%2$s 的公開連結過期了",
- "Shared by %2$s" : "由 %2$s 分享",
+ "{actor} shared as public link" : "{actor} 透過公開連結分享",
+ "{actor} removed public link" : "{actor} 移除公開連結分享",
+ "Public link of {actor} expired" : "{actor} 的公開連結過期了",
+ "You shared {file} as public link" : "你藉由公用連結分享了 {file}",
+ "You removed public link for {file}" : "您刪除了 {file} 的公開分享連結",
+ "Public link expired for {file}" : "{file} 的公開連結已過期",
+ "{actor} shared {file} as public link" : "{actor} 透過公開連結分享 {file}",
+ "{actor} removed public link for {file}" : "{actor} 移除 {file} 的公開連結分享",
+ "Public link of {actor} for {file} expired" : "{actor} 公開分享 {file} 的連結過期了",
+ "{user} accepted the remote share" : "{user} 接受了遠端分享",
+ "{user} declined the remote share" : "{user} 拒絕了遠端分享",
+ "You received a new remote share {file} from {user}" : "您收到了一個遠端分享 {file} 來自於 {user}",
+ "{user} accepted the remote share of {file}" : "{user} 接受了檔案 {file} 的遠端分享",
+ "{user} declined the remote share of {file}" : "{user} 拒絕了檔案 {file} 的遠端分享",
+ "{user} unshared {file} from you" : "{user} 取消與你分享檔案 {file}",
+ "Shared with {user}" : "與 {user} 分享",
+ "Removed share for {user}" : "移除對 {user} 的分享",
+ "{actor} shared with {user}" : "{actor} 分享給 {user}",
+ "{actor} removed share for {user}" : "{actor} 移除了對 {user} 的分享",
+ "Shared by {actor}" : "由 {actor} 分享",
+ "{actor} removed share" : "{actor} 移除了分享",
+ "You shared {file} with {user}" : "你與 {user} 分享了 {file}",
+ "You removed {user} from {file}" : "你將 {user} 從 {file} 移除",
+ "{actor} shared {file} with {user}" : "{actor} 分享了 {file} 給 {user}",
+ "{actor} removed {user} from {file}" : "{actor} 移除 {user} 從 {file}",
+ "{actor} shared {file} with you" : "{actor} 與你分享了 {file}",
+ "{actor} removed you from {file}" : "{actor} 將你從 {file} 移除",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "email或公開連結分享的檔案與資料夾已被 <strong>下載</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享",
+ "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>",
"Wrong share ID, share doesn't exist" : "錯誤的分享 ID ,分享不存在",
"could not delete share" : "無法刪除分享",
"Could not delete share" : "無法刪除分享",
@@ -63,13 +77,17 @@
"Public upload is only possible for publicly shared folders" : "只有公開分享的資料夾可以接受公開上傳",
"Invalid date, date format must be YYYY-MM-DD" : "無效的日期,需為 YYYY-MM-DD 格式",
"Sharing %s failed because the back end does not allow shares from type %s" : "分享 %s 失敗,因為後端不允許來自 %s 類型的分享",
+ "You cannot share to a Circle if the app is not enabled" : "當應用未被啟用,你無法分享到circle。",
+ "Please specify a valid circle" : "請指定一個有效的circle",
"Unknown share type" : "未知的分享類型",
"Not a directory" : "這不是一個資料夾",
"Could not lock path" : "無法鎖定路徑",
"Wrong or no update parameter given" : "更新參數不正確或未提供",
"Can't change permissions for public share links" : "無法由公開分享的連結變更權限",
"Cannot increase permissions" : "無法增加權限",
+ "%s is publicly shared" : "%s 是被公然分享的",
"Share API is disabled" : "分享 API 已停用",
+ "File sharing" : "檔案分享",
"This share is password-protected" : "這個分享有密碼保護",
"The password is wrong. Try again." : "請檢查您的密碼並再試一次",
"Password" : "密碼",
@@ -83,6 +101,7 @@
"the link expired" : "連結過期",
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
+ "shared by %s" : "分享自 %s",
"Add to your Nextcloud" : "加入到您的 Nextcloud",
"Download" : "下載",
"Download %s" : "下載 %s",
@@ -90,35 +109,6 @@
"Upload files to %s" : "上傳檔案到 %s",
"Select or drop files" : "選擇或拖曳檔案至此",
"Uploading files…" : "上傳檔案中…",
- "Uploaded files:" : "已上傳的檔案:",
- "A public shared file or folder was <strong>downloaded</strong>" : "共享檔案或目錄已被 <strong>下載</strong>",
- "Shares" : "分享",
- "Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
- "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元",
- "Not allowed to create a federated share with the same user server" : "不允許在同一個使用者伺服器建立分享聯盟",
- "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證",
- "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤",
- "Storage not valid" : "儲存空間無效",
- "Couldn't add remote share" : "無法加入遠端分享",
- "Federated sharing" : "分享聯盟",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?",
- "Remote share" : "遠端分享",
- "Remote share password" : "遠端分享密碼",
- "Cancel" : "取消",
- "Add remote share" : "加入遠端分享",
- "No ownCloud installation (7 or higher) found at {remote}" : "沒有在 {remote} 找到 ownCloud (版本 7 以上)",
- "Invalid ownCloud url" : "無效的 ownCloud URL",
- "Accept" : "接受",
- "Decline" : "拒絕",
- "Federated Cloud Sharing" : "雲端分享聯盟",
- "Open documentation" : "開啟說明文件",
- "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器",
- "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
- "Federated Cloud" : "雲端聯盟",
- "Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
- "Share it:" : "分享它:",
- "Add to your website" : "新增至您的網站",
- "Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
- "HTML Code:" : "HTML Code:"
+ "Uploaded files:" : "已上傳的檔案:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
index cf4954800e8..f89fb0b0052 100644
--- a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
+++ b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
@@ -23,9 +23,7 @@ namespace OCA\Files_Sharing\Activity\Providers;
use OCP\Activity\IEvent;
use OCP\Activity\IManager;
-use OCP\Activity\IProvider;
use OCP\Federation\ICloudIdManager;
-use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory;
diff --git a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php
index ef506999fc4..2a5cdcd995f 100644
--- a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php
+++ b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php
@@ -92,7 +92,7 @@ class RemoteShare implements ISetting {
* @since 11.0.0
*/
public function isDefaultEnabledMail() {
- return true;
+ return false;
}
}
diff --git a/apps/files_sharing/lib/Activity/Settings/Shared.php b/apps/files_sharing/lib/Activity/Settings/Shared.php
index 847469d25fd..97318dc79b3 100644
--- a/apps/files_sharing/lib/Activity/Settings/Shared.php
+++ b/apps/files_sharing/lib/Activity/Settings/Shared.php
@@ -92,7 +92,7 @@ class Shared implements ISetting {
* @since 11.0.0
*/
public function isDefaultEnabledMail() {
- return true;
+ return false;
}
}
diff --git a/apps/files_sharing/lib/Capabilities.php b/apps/files_sharing/lib/Capabilities.php
index 22a8a8a0a3d..e8e6a4c26f3 100644
--- a/apps/files_sharing/lib/Capabilities.php
+++ b/apps/files_sharing/lib/Capabilities.php
@@ -71,7 +71,7 @@ class Capabilities implements ICapability {
$public['upload'] = $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes';
$public['upload_files_drop'] = $public['upload'];
}
- $res["public"] = $public;
+ $res['public'] = $public;
$res['resharing'] = $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes') === 'yes';
diff --git a/apps/files_sharing/lib/Command/CleanupRemoteStorages.php b/apps/files_sharing/lib/Command/CleanupRemoteStorages.php
index 504caba1417..389b0dc4985 100644
--- a/apps/files_sharing/lib/Command/CleanupRemoteStorages.php
+++ b/apps/files_sharing/lib/Command/CleanupRemoteStorages.php
@@ -60,11 +60,11 @@ class CleanupRemoteStorages extends Command {
$remoteStorages = $this->getRemoteStorages();
- $output->writeln(count($remoteStorages) . " remote storage(s) need(s) to be checked");
+ $output->writeln(count($remoteStorages) . ' remote storage(s) need(s) to be checked');
$remoteShareIds = $this->getRemoteShareIds();
- $output->writeln(count($remoteShareIds) . " remote share(s) exist");
+ $output->writeln(count($remoteShareIds) . ' remote share(s) exist');
foreach ($remoteShareIds as $id => $remoteShareId) {
if (isset($remoteStorages[$remoteShareId])) {
@@ -79,7 +79,7 @@ class CleanupRemoteStorages extends Command {
}
if (empty($remoteStorages)) {
- $output->writeln("<info>no storages deleted</info>");
+ $output->writeln('<info>no storages deleted</info>');
} else {
$dryRun = $input->getOption('dry-run');
foreach ($remoteStorages as $id => $numericId) {
diff --git a/apps/files_sharing/lib/Controller/RemoteController.php b/apps/files_sharing/lib/Controller/RemoteController.php
index 7c7a608ff2d..299b6fe4df7 100644
--- a/apps/files_sharing/lib/Controller/RemoteController.php
+++ b/apps/files_sharing/lib/Controller/RemoteController.php
@@ -29,6 +29,7 @@ use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSForbiddenException;
use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\AppFramework\OCSController;
+use OCP\ILogger;
use OCP\IRequest;
class RemoteController extends OCSController {
@@ -36,6 +37,9 @@ class RemoteController extends OCSController {
/** @var Manager */
private $externalManager;
+ /** @var ILogger */
+ private $logger;
+
/**
* @NoAdminRequired
*
@@ -47,10 +51,12 @@ class RemoteController extends OCSController {
*/
public function __construct($appName,
IRequest $request,
- Manager $externalManager) {
+ Manager $externalManager,
+ ILogger $logger) {
parent::__construct($appName, $request);
$this->externalManager = $externalManager;
+ $this->logger = $logger;
}
/**
@@ -78,8 +84,8 @@ class RemoteController extends OCSController {
return new DataResponse();
}
- // Make sure the user has no notification for something that does not exist anymore.
- $this->externalManager->processNotification($id);
+ $this->logger->error('Could not accept federated share with id: ' . $id,
+ ['app' => 'files_sharing']);
throw new OCSNotFoundException('wrong share ID, share doesn\'t exist.');
}
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 458102036be..c57a738457e 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -308,6 +308,8 @@ class ShareAPIController extends OCSController {
* @throws OCSForbiddenException
* @throws OCSBadRequestException
* @throws OCSException
+ *
+ * @suppress PhanUndeclaredClassMethod
*/
public function createShare(
$path = null,
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 759d5ee4163..14fc8d63381 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -401,7 +401,7 @@ class ShareController extends Controller {
}
// OpenGraph Support: http://ogp.me/
- \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $this->defaults->getName() . ' - ' . $this->defaults->getSlogan()]);
+ \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $this->defaults->getName() . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : '')]);
\OCP\Util::addHeader('meta', ['property' => "og:description", 'content' => $this->l10n->t('%s is publicly shared', [$shareTmpl['filename']])]);
\OCP\Util::addHeader('meta', ['property' => "og:site_name", 'content' => $this->defaults->getName()]);
\OCP\Util::addHeader('meta', ['property' => "og:url", 'content' => $shareTmpl['shareUrl']]);
@@ -514,7 +514,7 @@ class ShareController extends Controller {
$this->emitAccessShareHook($share);
- $server_params = array( 'head' => $this->request->getMethod() == 'HEAD' );
+ $server_params = array( 'head' => $this->request->getMethod() === 'HEAD' );
/**
* Http range requests support
diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php
index 3e0c01b342e..0e94cfb9d7c 100644
--- a/apps/files_sharing/lib/Controller/ShareesAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php
@@ -299,6 +299,7 @@ class ShareesAPIController extends OCSController {
/**
* @param string $search
+ * @suppress PhanUndeclaredClassMethod
*/
protected function getCircles($search) {
$this->result['circles'] = $this->result['exact']['circles'] = [];
diff --git a/apps/files_sharing/lib/ExpireSharesJob.php b/apps/files_sharing/lib/ExpireSharesJob.php
index 19c0606dc46..212b7fa008e 100644
--- a/apps/files_sharing/lib/ExpireSharesJob.php
+++ b/apps/files_sharing/lib/ExpireSharesJob.php
@@ -44,7 +44,6 @@ class ExpireSharesJob extends TimedJob {
*/
public function run($argument) {
$connection = \OC::$server->getDatabaseConnection();
- $logger = \OC::$server->getLogger();
//Current time
$now = new \DateTime();
diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php
index 54d0f9bd0c3..ab20e37a79b 100644
--- a/apps/files_sharing/lib/External/Manager.php
+++ b/apps/files_sharing/lib/External/Manager.php
@@ -197,6 +197,7 @@ class Manager {
public function acceptShare($id) {
$share = $this->getShare($id);
+ $result = false;
if ($share) {
\OC_Util::setupFS($this->uid);
@@ -211,16 +212,18 @@ class Manager {
`mountpoint` = ?,
`mountpoint_hash` = ?
WHERE `id` = ? AND `user` = ?');
- $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
- $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
-
- \OC_Hook::emit('OCP\Share', 'federated_share_added', ['server' => $share['remote']]);
-
- $this->processNotification($id);
- return true;
+ $updated = $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
+ if ($updated === true) {
+ $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
+ \OC_Hook::emit('OCP\Share', 'federated_share_added', ['server' => $share['remote']]);
+ $result = true;
+ }
}
- return false;
+ // Make sure the user has no notification for something that does not exist anymore.
+ $this->processNotification($id);
+
+ return $result;
}
/**
@@ -366,8 +369,13 @@ class Manager {
$result = $getShare->execute(array($hash, $this->uid));
if ($result) {
- $share = $getShare->fetch();
- $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
+ try {
+ $share = $getShare->fetch();
+ $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
+ } catch (\Exception $e) {
+ // if we fail to notify the remote (probably cause the remote is down)
+ // we still want the share to be gone to prevent undeletable remotes
+ }
}
$getShare->closeCursor();
diff --git a/apps/files_sharing/lib/Helper.php b/apps/files_sharing/lib/Helper.php
index a659da9292f..c8f46fa8132 100644
--- a/apps/files_sharing/lib/Helper.php
+++ b/apps/files_sharing/lib/Helper.php
@@ -132,7 +132,7 @@ class Helper {
Filesystem::initMountPoints($owner);
$info = Filesystem::getFileInfo($target);
$ownerView = new View('/'.$owner.'/files');
- if ( $owner != User::getUser() ) {
+ if ( $owner !== User::getUser() ) {
$path = $ownerView->getPath($info['fileid']);
} else {
$path = $target;
@@ -183,7 +183,7 @@ class Helper {
$uid = User::getUser();
}
Filesystem::initMountPoints($uid);
- if ( $uid != User::getUser() ) {
+ if ( $uid !== User::getUser() ) {
$info = Filesystem::getFileInfo($filename);
$ownerView = new View('/'.$uid.'/files');
try {
diff --git a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php
index 5d2c168e876..9df0229ab8c 100644
--- a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php
+++ b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php
@@ -3,6 +3,7 @@
namespace OCA\Files_Sharing\Middleware;
use OCA\Files_Sharing\Controller\ShareAPIController;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\OCS\OCSNotFoundException;
@@ -22,7 +23,7 @@ class OCSShareAPIMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
*
* @throws OCSNotFoundException
@@ -36,7 +37,7 @@ class OCSShareAPIMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param Response $response
* @return Response
diff --git a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
index 5712b96b97d..e1a77fdec30 100644
--- a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
+++ b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
@@ -28,6 +28,7 @@ namespace OCA\Files_Sharing\Middleware;
use OCA\Files_Sharing\Controller\ExternalSharesController;
use OCA\Files_Sharing\Controller\ShareController;
use OCP\App\IAppManager;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\AppFramework\Middleware;
use OCP\Files\NotFoundException;
@@ -37,6 +38,7 @@ use OCA\Files_Sharing\Exceptions\S2SException;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
use OCP\Share\IManager;
+use OCP\Share\Exceptions\ShareNotFound;
/**
* Checks whether the "sharing check" is enabled
@@ -84,10 +86,11 @@ class SharingCheckMiddleware extends Middleware {
/**
* Check if sharing is enabled before the controllers is executed
*
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @throws NotFoundException
* @throws S2SException
+ * @throws ShareNotFound
*/
public function beforeController($controller, $methodName) {
if(!$this->isSharingEnabled()) {
@@ -110,7 +113,7 @@ class SharingCheckMiddleware extends Middleware {
/**
* Return 404 page in case of a not found exception
*
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param \Exception $exception
* @return NotFoundResponse
diff --git a/apps/files_sharing/lib/ShareBackend/File.php b/apps/files_sharing/lib/ShareBackend/File.php
index aecb63c60e4..83474546581 100644
--- a/apps/files_sharing/lib/ShareBackend/File.php
+++ b/apps/files_sharing/lib/ShareBackend/File.php
@@ -123,7 +123,7 @@ class File implements \OCP\Share_Backend_File_Dependent {
}
public function formatItems($items, $format, $parameters = null) {
- if ($format == self::FORMAT_SHARED_STORAGE) {
+ if ($format === self::FORMAT_SHARED_STORAGE) {
// Only 1 item should come through for this format call
$item = array_shift($items);
return array(
@@ -133,7 +133,7 @@ class File implements \OCP\Share_Backend_File_Dependent {
'permissions' => $item['permissions'],
'uid_owner' => $item['uid_owner'],
);
- } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) {
+ } else if ($format === self::FORMAT_GET_FOLDER_CONTENTS) {
$files = array();
foreach ($items as $item) {
$file = array();
@@ -156,13 +156,13 @@ class File implements \OCP\Share_Backend_File_Dependent {
$files[] = $file;
}
return $files;
- } else if ($format == self::FORMAT_OPENDIR) {
+ } else if ($format === self::FORMAT_OPENDIR) {
$files = array();
foreach ($items as $item) {
$files[] = basename($item['file_target']);
}
return $files;
- } else if ($format == self::FORMAT_GET_ALL) {
+ } else if ($format === self::FORMAT_GET_ALL) {
$ids = array();
foreach ($items as $item) {
$ids[] = $item['file_source'];
diff --git a/apps/files_sharing/lib/ShareBackend/Folder.php b/apps/files_sharing/lib/ShareBackend/Folder.php
index 4929bebf40b..55c2eff6fe0 100644
--- a/apps/files_sharing/lib/ShareBackend/Folder.php
+++ b/apps/files_sharing/lib/ShareBackend/Folder.php
@@ -50,8 +50,8 @@ class Folder extends File implements \OCP\Share_Backend_Collection {
$share['file_path'] = $name;
$displayNameOwner = \OCP\User::getDisplayName($share['uid_owner']);
$displayNameShareWith = \OCP\User::getDisplayName($share['share_with']);
- $share['displayname_owner'] = ($displayNameOwner) ? $displayNameOwner : $share['uid_owner'];
- $share['share_with_displayname'] = ($displayNameShareWith) ? $displayNameShareWith : $share['uid_owner'];
+ $share['displayname_owner'] = $displayNameOwner ? $displayNameOwner : $share['uid_owner'];
+ $share['share_with_displayname'] = $displayNameShareWith ? $displayNameShareWith : $share['uid_owner'];
$result[] = $share;
}
@@ -72,7 +72,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection {
$query = \OCP\DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
$result = $query->execute(array($child));
$row = $result->fetchRow();
- $parent = ($row) ? $row['parent'] : null;
+ $parent = $row ? $row['parent'] : null;
return $parent;
}
@@ -83,7 +83,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection {
$query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
$result = $query->execute(array('httpd/unix-directory'));
if ($row = $result->fetchRow()) {
- $mimetype = $row['id'];
+ $mimetype = (int) $row['id'];
} else {
$mimetype = -1;
}
@@ -96,7 +96,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection {
while ($file = $result->fetchRow()) {
$children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
// If a child folder is found look inside it
- if ($file['mimetype'] == $mimetype) {
+ if ((int) $file['mimetype'] === $mimetype) {
$parents[] = $file['fileid'];
}
}
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index f8067a03d02..a593e596dfb 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -35,18 +35,19 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<header><div id="header" class="<?php p((isset($_['folder']) ? 'share-folder' : 'share-file')) ?>">
- <div id="header-left">
- <a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
- title="" id="nextcloud">
+ <div class="header-left">
+ <span id="nextcloud">
<div class="logo logo-icon svg"></div>
<h1 class="header-appname">
- <?php p($theme->getName()); ?>
+ <?php p($_['filename']); ?>
</h1>
- </a>
+ <div class="header-shared-by">
+ <?php echo p($l->t('shared by %s', [$_['displayName']])); ?>
+ </div>
+ </span>
</div>
- <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div>
- <div id="header-right">
+ <div class="header-right">
<?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)) {
if ($_['server2serversharing']) {
?>
@@ -73,7 +74,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<?php if (isset($_['folder'])): ?>
<?php print_unescaped($_['folder']); ?>
<?php else: ?>
- <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'video'): ?>
+ <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) === 'video'): ?>
<div id="imgframe">
<video tabindex="0" controls="" preload="none" style="max-width: <?php p($_['previewMaxX']); ?>px; max-height: <?php p($_['previewMaxY']); ?>px">
<source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" />
diff --git a/apps/files_sharing/tests/BackendTest.php b/apps/files_sharing/tests/BackendTest.php
index cea8762a5b4..b9c7f0e813d 100644
--- a/apps/files_sharing/tests/BackendTest.php
+++ b/apps/files_sharing/tests/BackendTest.php
@@ -68,7 +68,7 @@ class BackendTest extends TestCase {
parent::tearDown();
}
- function testGetParents() {
+ public function testGetParents() {
$fileinfo1 = $this->view->getFileInfo($this->folder);
$fileinfo2 = $this->view->getFileInfo($this->folder . $this->subfolder . $this->subsubfolder);
diff --git a/apps/files_sharing/tests/CapabilitiesTest.php b/apps/files_sharing/tests/CapabilitiesTest.php
index 663adc1f271..1747bbc4ed2 100644
--- a/apps/files_sharing/tests/CapabilitiesTest.php
+++ b/apps/files_sharing/tests/CapabilitiesTest.php
@@ -24,8 +24,7 @@
namespace OCA\Files_Sharing\Tests;
use OCA\Files_Sharing\Capabilities;
-use OCA\Files_Sharing\Tests\TestCase;
-use OCP\App\IAppManager;
+
/**
* Class CapabilitiesTest
diff --git a/apps/files_sharing/tests/Command/CleanupRemoteStoragesTest.php b/apps/files_sharing/tests/Command/CleanupRemoteStoragesTest.php
index 5dcf7f83105..827fcc15797 100644
--- a/apps/files_sharing/tests/Command/CleanupRemoteStoragesTest.php
+++ b/apps/files_sharing/tests/Command/CleanupRemoteStoragesTest.php
@@ -22,7 +22,6 @@
namespace OCA\Files_Sharing\Tests\Command;
use OCA\Files_Sharing\Command\CleanupRemoteStorages;
-use OCP\DB\QueryBuilder\IQueryBuilder;
use Test\TestCase;
/**
diff --git a/apps/files_sharing/tests/HelperTest.php b/apps/files_sharing/tests/HelperTest.php
index d5fe83f44e2..e1e73ee82c2 100644
--- a/apps/files_sharing/tests/HelperTest.php
+++ b/apps/files_sharing/tests/HelperTest.php
@@ -35,7 +35,7 @@ class HelperTest extends TestCase {
/**
* test set and get share folder
*/
- function testSetGetShareFolder() {
+ public function testSetGetShareFolder() {
$this->assertSame('/', \OCA\Files_Sharing\Helper::getShareFolder());
\OCA\Files_Sharing\Helper::setShareFolder('/Shared/Folder');
diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php
index b700d417ad4..04476987a32 100644
--- a/apps/files_sharing/tests/MountProviderTest.php
+++ b/apps/files_sharing/tests/MountProviderTest.php
@@ -33,7 +33,6 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\Share\IShare;
use OCP\Share\IManager;
-use OCP\Files\Mount\IMountPoint;
/**
* @group DB
diff --git a/apps/files_sharing/tests/SharedMountTest.php b/apps/files_sharing/tests/SharedMountTest.php
index 72cc891e368..6f21bd3b92d 100644
--- a/apps/files_sharing/tests/SharedMountTest.php
+++ b/apps/files_sharing/tests/SharedMountTest.php
@@ -54,8 +54,8 @@ class SharedMountTest extends TestCase {
$this->view->mkdir($this->folder);
// save file with content
- $this->view->file_put_contents($this->filename, "root file");
- $this->view->file_put_contents($this->folder . $this->filename, "file in subfolder");
+ $this->view->file_put_contents($this->filename, 'root file');
+ $this->view->file_put_contents($this->folder . $this->filename, 'file in subfolder');
$this->groupManager = \OC::$server->getGroupManager();
$this->userManager = \OC::$server->getUserManager();
@@ -204,18 +204,18 @@ class SharedMountTest extends TestCase {
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- \OC\Files\Filesystem::rename($this->filename, "newFileName");
+ \OC\Files\Filesystem::rename($this->filename, 'newFileName');
$this->assertTrue(\OC\Files\Filesystem::file_exists('newFileName'));
$this->assertFalse(\OC\Files\Filesystem::file_exists($this->filename));
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists("newFileName"));
+ $this->assertFalse(\OC\Files\Filesystem::file_exists('newFileName'));
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists("newFileName"));
+ $this->assertFalse(\OC\Files\Filesystem::file_exists('newFileName'));
//cleanup
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
@@ -240,7 +240,7 @@ class SharedMountTest extends TestCase {
if ($exception) {
$this->assertSame(10, $e->getCode());
} else {
- $this->assertTrue(false, "Exception catched, but expected: " . $expectedResult);
+ $this->assertTrue(false, 'Exception catched, but expected: ' . $expectedResult);
}
}
}
@@ -323,7 +323,7 @@ class SharedMountTest extends TestCase {
*
* @dataProvider dataPermissionMovedGroupShare
*/
- function testPermissionMovedGroupShare($type, $beforePerm, $afterPerm) {
+ public function testPermissionMovedGroupShare($type, $beforePerm, $afterPerm) {
if ($type === 'file') {
$path = $this->filename;
@@ -355,7 +355,7 @@ class SharedMountTest extends TestCase {
$this->assertEquals($beforePerm, $result->getPermissions());
// Now move the item forcing a new entry in the share table
- \OC\Files\Filesystem::rename($path, "newPath");
+ \OC\Files\Filesystem::rename($path, 'newPath');
$this->assertTrue(\OC\Files\Filesystem::file_exists('newPath'));
$this->assertFalse(\OC\Files\Filesystem::file_exists($path));
@@ -388,7 +388,7 @@ class SharedMountTest extends TestCase {
* If the permissions on a group share are upgraded be sure to still respect
* removed shares by a member of that group
*/
- function testPermissionUpgradeOnUserDeletedGroupShare() {
+ public function testPermissionUpgradeOnUserDeletedGroupShare() {
$testGroup = $this->groupManager->createGroup('testGroup');
$user1 = $this->userManager->get(self::TEST_FILES_SHARING_API_USER1);
$user2 = $this->userManager->get(self::TEST_FILES_SHARING_API_USER2);
diff --git a/apps/files_sharing/tests/SizePropagationTest.php b/apps/files_sharing/tests/SizePropagationTest.php
index 9d80633b46a..f7ad9057959 100644
--- a/apps/files_sharing/tests/SizePropagationTest.php
+++ b/apps/files_sharing/tests/SizePropagationTest.php
@@ -26,7 +26,6 @@
namespace OCA\Files_Sharing\Tests;
use OC\Files\View;
-use Test\Traits\MountProviderTrait;
use Test\Traits\UserTrait;
/**
diff --git a/apps/files_sharing/tests/UnshareChildrenTest.php b/apps/files_sharing/tests/UnshareChildrenTest.php
index 2bde37af20e..ce7767d1920 100644
--- a/apps/files_sharing/tests/UnshareChildrenTest.php
+++ b/apps/files_sharing/tests/UnshareChildrenTest.php
@@ -74,7 +74,7 @@ class UnshareChildrenTest extends TestCase {
/**
* @medium
*/
- function testUnshareChildren() {
+ public function testUnshareChildren() {
$fileInfo2 = \OC\Files\Filesystem::getFileInfo($this->folder);
diff --git a/apps/files_sharing/tests/UpdaterTest.php b/apps/files_sharing/tests/UpdaterTest.php
index bb320336d48..c35bcf1a08c 100644
--- a/apps/files_sharing/tests/UpdaterTest.php
+++ b/apps/files_sharing/tests/UpdaterTest.php
@@ -69,7 +69,7 @@ class UpdaterTest extends TestCase {
* points should be unshared before the folder gets deleted so
* that the mount point doesn't end up at the trash bin
*/
- function testDeleteParentFolder() {
+ public function testDeleteParentFolder() {
$status = \OC_App::isEnabled('files_trashbin');
(new \OC_App())->enable('files_trashbin');
@@ -96,8 +96,8 @@ class UpdaterTest extends TestCase {
$foldersShared = \OCP\Share::getItemsSharedWith('folder');
$this->assertSame(1, count($foldersShared));
- $view->mkdir("localFolder");
- $view->file_put_contents("localFolder/localFile.txt", "local file");
+ $view->mkdir('localFolder');
+ $view->file_put_contents('localFolder/localFile.txt', 'local file');
$view->rename($this->folder, 'localFolder/' . $this->folder);
@@ -196,7 +196,7 @@ class UpdaterTest extends TestCase {
/**
* if a folder gets renamed all children mount points should be renamed too
*/
- function testRename() {
+ public function testRename() {
$fileinfo = \OC\Files\Filesystem::getFileInfo($this->folder);
diff --git a/apps/files_trashbin/l10n/sq.js b/apps/files_trashbin/l10n/sq.js
index 45348ca24b3..e32063e9a25 100644
--- a/apps/files_trashbin/l10n/sq.js
+++ b/apps/files_trashbin/l10n/sq.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"files_trashbin",
{
- "Couldn't delete %s permanently" : "S’u fshi dot përgjithmonë %s",
+ "Couldn't delete %s permanently" : "%s s'u fshi dot përgjithmonë",
"Couldn't restore %s" : "S’u rikthye dot %s",
"Deleted files" : "Kartela të fshira",
"Restore" : "Riktheje",
diff --git a/apps/files_trashbin/l10n/sq.json b/apps/files_trashbin/l10n/sq.json
index a28078058c9..f9854dc904d 100644
--- a/apps/files_trashbin/l10n/sq.json
+++ b/apps/files_trashbin/l10n/sq.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Couldn't delete %s permanently" : "S’u fshi dot përgjithmonë %s",
+ "Couldn't delete %s permanently" : "%s s'u fshi dot përgjithmonë",
"Couldn't restore %s" : "S’u rikthye dot %s",
"Deleted files" : "Kartela të fshira",
"Restore" : "Riktheje",
diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php
index e3fe648281c..fdc7081b137 100644
--- a/apps/files_trashbin/lib/Storage.php
+++ b/apps/files_trashbin/lib/Storage.php
@@ -206,7 +206,7 @@ class Storage extends Wrapper {
return false;
}
- if ($this->userManager->userExists($parts[1]) && $parts[2] == 'files') {
+ if ($this->userManager->userExists($parts[1]) && $parts[2] === 'files') {
return true;
}
diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php
index 75035b8bab6..0d336664e38 100644
--- a/apps/files_trashbin/lib/Trashbin.php
+++ b/apps/files_trashbin/lib/Trashbin.php
@@ -42,6 +42,8 @@ use OC\Files\Filesystem;
use OC\Files\View;
use OCA\Files_Trashbin\AppInfo\Application;
use OCA\Files_Trashbin\Command\Expire;
+use OCP\Files\File;
+use OCP\Files\Folder;
use OCP\Files\NotFoundException;
use OCP\User;
@@ -93,7 +95,7 @@ class Trashbin {
return [null, null];
}
Filesystem::initMountPoints($uid);
- if ($uid != User::getUser()) {
+ if ($uid !== User::getUser()) {
$info = Filesystem::getFileInfo($filename);
$ownerView = new View('/' . $uid . '/files');
try {
@@ -485,9 +487,16 @@ class Trashbin {
*/
public static function deleteAll() {
$user = User::getUser();
+ $userRoot = \OC::$server->getUserFolder($user)->getParent();
$view = new View('/' . $user);
$fileInfos = $view->getDirectoryContent('files_trashbin/files');
+ try {
+ $trash = $userRoot->get('files_trashbin');
+ } catch (NotFoundException $e) {
+ return false;
+ }
+
// Array to store the relative path in (after the file is deleted, the view won't be able to relativise the path anymore)
$filePaths = array();
foreach($fileInfos as $fileInfo){
@@ -504,7 +513,7 @@ class Trashbin {
}
// actual file deletion
- $view->deleteAll('files_trashbin');
+ $trash->delete();
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?');
$query->execute(array($user));
@@ -516,8 +525,8 @@ class Trashbin {
self::emitTrashbinPostDelete($path);
}
- $view->mkdir('files_trashbin');
- $view->mkdir('files_trashbin/files');
+ $trash = $userRoot->newFolder('files_trashbin');
+ $trash->newFolder('files');
return true;
}
@@ -548,6 +557,7 @@ class Trashbin {
* @return int size of deleted files
*/
public static function delete($filename, $user, $timestamp = null) {
+ $userRoot = \OC::$server->getUserFolder($user)->getParent();
$view = new View('/' . $user);
$size = 0;
@@ -561,13 +571,20 @@ class Trashbin {
$size += self::deleteVersions($view, $file, $filename, $timestamp, $user);
- if ($view->is_dir('/files_trashbin/files/' . $file)) {
+ try {
+ $node = $userRoot->get('/files_trashbin/files/' . $file);
+ } catch (NotFoundException $e) {
+ return $size;
+ }
+
+ if ($node instanceof Folder) {
$size += self::calculateSize(new View('/' . $user . '/files_trashbin/files/' . $file));
- } else {
+ } else if ($node instanceof File) {
$size += $view->filesize('/files_trashbin/files/' . $file);
}
+
self::emitTrashbinPreDelete('/files_trashbin/files/' . $file);
- $view->unlink('/files_trashbin/files/' . $file);
+ $node->delete();
self::emitTrashbinPostDelete('/files_trashbin/files/' . $file);
return $size;
diff --git a/apps/files_trashbin/tests/Command/CleanUpTest.php b/apps/files_trashbin/tests/Command/CleanUpTest.php
index 6cf2c60948b..d20ce761bf6 100644
--- a/apps/files_trashbin/tests/Command/CleanUpTest.php
+++ b/apps/files_trashbin/tests/Command/CleanUpTest.php
@@ -182,7 +182,7 @@ class CleanUpTest extends TestCase {
->setMethods(['removeDeletedFiles'])
->setConstructorArgs([$this->rootFolder, $this->userManager, $this->dbConnection])
->getMock();
- $backend = $this->getMockBuilder('OC_User_Interface')
+ $backend = $this->getMockBuilder(\OCP\UserInterface::class)
->disableOriginalConstructor()->getMock();
$backend->expects($this->once())->method('getUsers')
->with('', 500, 0)
diff --git a/apps/files_versions/l10n/lt_LT.js b/apps/files_versions/l10n/lt_LT.js
index 5245826ea19..735b43b1db7 100644
--- a/apps/files_versions/l10n/lt_LT.js
+++ b/apps/files_versions/l10n/lt_LT.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"Failed to revert {file} to revision {timestamp}." : "Nepavyko sugrąžinti {file} į {timestamp} būseną.",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"],
"Restore" : "Atkurti",
+ "No earlier versions available" : "Nėra ankstesnių versijų",
"More versions …" : "Daugiau versijų …",
"No versions available" : "Nėra prieinama jokių versijų",
"More versions..." : "Daugiau versijų..."
diff --git a/apps/files_versions/l10n/lt_LT.json b/apps/files_versions/l10n/lt_LT.json
index 3b1dd6cecb9..357d1204701 100644
--- a/apps/files_versions/l10n/lt_LT.json
+++ b/apps/files_versions/l10n/lt_LT.json
@@ -4,6 +4,7 @@
"Failed to revert {file} to revision {timestamp}." : "Nepavyko sugrąžinti {file} į {timestamp} būseną.",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"],
"Restore" : "Atkurti",
+ "No earlier versions available" : "Nėra ankstesnių versijų",
"More versions …" : "Daugiau versijų …",
"No versions available" : "Nėra prieinama jokių versijų",
"More versions..." : "Daugiau versijų..."
diff --git a/apps/files_versions/l10n/zh_TW.js b/apps/files_versions/l10n/zh_TW.js
index b4659c9bf1b..a72984b0892 100644
--- a/apps/files_versions/l10n/zh_TW.js
+++ b/apps/files_versions/l10n/zh_TW.js
@@ -4,8 +4,11 @@ OC.L10N.register(
"Could not revert: %s" : "無法還原:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "無法還原檔案 {file} 至版本 {timestamp}",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "復原",
- "More versions..." : "更多版本…",
- "No other versions available" : "沒有其他版本了"
+ "No earlier versions available" : "沒有更早的版本了",
+ "More versions …" : "更多版本…",
+ "No versions available" : "沒有其他版本了",
+ "More versions..." : "更多版本…"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_versions/l10n/zh_TW.json b/apps/files_versions/l10n/zh_TW.json
index 54a6789cb98..975db0ad279 100644
--- a/apps/files_versions/l10n/zh_TW.json
+++ b/apps/files_versions/l10n/zh_TW.json
@@ -2,8 +2,11 @@
"Could not revert: %s" : "無法還原:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "無法還原檔案 {file} 至版本 {timestamp}",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "復原",
- "More versions..." : "更多版本…",
- "No other versions available" : "沒有其他版本了"
+ "No earlier versions available" : "沒有更早的版本了",
+ "More versions …" : "更多版本…",
+ "No versions available" : "沒有其他版本了",
+ "More versions..." : "更多版本…"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_versions/lib/Hooks.php b/apps/files_versions/lib/Hooks.php
index 3753d8b5016..a9ebb153eff 100644
--- a/apps/files_versions/lib/Hooks.php
+++ b/apps/files_versions/lib/Hooks.php
@@ -57,7 +57,7 @@ class Hooks {
if (\OCP\App::isEnabled('files_versions')) {
$path = $params[\OC\Files\Filesystem::signal_param_path];
- if($path<>'') {
+ if($path !== '') {
Storage::store($path);
}
}
@@ -75,7 +75,7 @@ class Hooks {
if (\OCP\App::isEnabled('files_versions')) {
$path = $params[\OC\Files\Filesystem::signal_param_path];
- if($path<>'') {
+ if($path !== '') {
Storage::delete($path);
}
}
@@ -87,7 +87,7 @@ class Hooks {
*/
public static function pre_remove_hook($params) {
$path = $params[\OC\Files\Filesystem::signal_param_path];
- if($path<>'') {
+ if($path !== '') {
Storage::markDeletedFile($path);
}
}
@@ -104,7 +104,7 @@ class Hooks {
if (\OCP\App::isEnabled('files_versions')) {
$oldpath = $params['oldpath'];
$newpath = $params['newpath'];
- if($oldpath<>'' && $newpath<>'') {
+ if($oldpath !== '' && $newpath !== '') {
Storage::renameOrCopy($oldpath, $newpath, 'rename');
}
}
@@ -122,7 +122,7 @@ class Hooks {
if (\OCP\App::isEnabled('files_versions')) {
$oldpath = $params['oldpath'];
$newpath = $params['newpath'];
- if($oldpath<>'' && $newpath<>'') {
+ if($oldpath !== '' && $newpath !== '') {
Storage::renameOrCopy($oldpath, $newpath, 'copy');
}
}
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php
index 9aa9e6d5260..5e3f87b3646 100644
--- a/apps/files_versions/lib/Storage.php
+++ b/apps/files_versions/lib/Storage.php
@@ -102,7 +102,7 @@ class Storage {
$uid = User::getUser();
}
Filesystem::initMountPoints($uid);
- if ( $uid != User::getUser() ) {
+ if ( $uid !== User::getUser() ) {
$info = Filesystem::getFileInfo($filename);
$ownerView = new View('/'.$uid.'/files');
try {
@@ -161,41 +161,39 @@ class Storage {
* store a new version of a file.
*/
public static function store($filename) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
- // if the file gets streamed we need to remove the .part extension
- // to get the right target
- $ext = pathinfo($filename, PATHINFO_EXTENSION);
- if ($ext === 'part') {
- $filename = substr($filename, 0, strlen($filename) - 5);
- }
+ // if the file gets streamed we need to remove the .part extension
+ // to get the right target
+ $ext = pathinfo($filename, PATHINFO_EXTENSION);
+ if ($ext === 'part') {
+ $filename = substr($filename, 0, strlen($filename) - 5);
+ }
- // we only handle existing files
- if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) {
- return false;
- }
+ // we only handle existing files
+ if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) {
+ return false;
+ }
- list($uid, $filename) = self::getUidAndFilename($filename);
+ list($uid, $filename) = self::getUidAndFilename($filename);
- $files_view = new View('/'.$uid .'/files');
- $users_view = new View('/'.$uid);
+ $files_view = new View('/'.$uid .'/files');
+ $users_view = new View('/'.$uid);
- // no use making versions for empty files
- if ($files_view->filesize($filename) === 0) {
- return false;
- }
+ // no use making versions for empty files
+ if ($files_view->filesize($filename) === 0) {
+ return false;
+ }
- // create all parent folders
- self::createMissingDirectories($filename, $users_view);
+ // create all parent folders
+ self::createMissingDirectories($filename, $users_view);
- self::scheduleExpire($uid, $filename);
+ self::scheduleExpire($uid, $filename);
- // store a new version of a file
- $mtime = $users_view->filemtime('files/' . $filename);
- $users_view->copy('files/' . $filename, 'files_versions/' . $filename . '.v' . $mtime);
- // call getFileInfo to enforce a file cache entry for the new version
- $users_view->getFileInfo('files_versions/' . $filename . '.v' . $mtime);
- }
+ // store a new version of a file
+ $mtime = $users_view->filemtime('files/' . $filename);
+ $users_view->copy('files/' . $filename, 'files_versions/' . $filename . '.v' . $mtime);
+ // call getFileInfo to enforce a file cache entry for the new version
+ $users_view->getFileInfo('files_versions/' . $filename . '.v' . $mtime);
}
@@ -320,61 +318,60 @@ class Storage {
*/
public static function rollback($file, $revision) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
- // add expected leading slash
- $file = '/' . ltrim($file, '/');
- list($uid, $filename) = self::getUidAndFilename($file);
- if ($uid === null || trim($filename, '/') === '') {
- return false;
- }
+ // add expected leading slash
+ $file = '/' . ltrim($file, '/');
+ list($uid, $filename) = self::getUidAndFilename($file);
+ if ($uid === null || trim($filename, '/') === '') {
+ return false;
+ }
- $users_view = new View('/'.$uid);
- $files_view = new View('/'. User::getUser().'/files');
+ $users_view = new View('/'.$uid);
+ $files_view = new View('/'. User::getUser().'/files');
- $versionCreated = false;
+ $versionCreated = false;
- $fileInfo = $files_view->getFileInfo($file);
+ $fileInfo = $files_view->getFileInfo($file);
- // check if user has the permissions to revert a version
- if (!$fileInfo->isUpdateable()) {
- return false;
- }
+ // check if user has the permissions to revert a version
+ if (!$fileInfo->isUpdateable()) {
+ return false;
+ }
- //first create a new version
- $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename);
- if (!$users_view->file_exists($version)) {
- $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
- $versionCreated = true;
- }
+ //first create a new version
+ $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename);
+ if (!$users_view->file_exists($version)) {
+ $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
+ $versionCreated = true;
+ }
- $fileToRestore = 'files_versions' . $filename . '.v' . $revision;
-
- // Restore encrypted version of the old file for the newly restored file
- // This has to happen manually here since the file is manually copied below
- $oldVersion = $users_view->getFileInfo($fileToRestore)->getEncryptedVersion();
- $oldFileInfo = $users_view->getFileInfo($fileToRestore);
- $cache = $fileInfo->getStorage()->getCache();
- $cache->update(
- $fileInfo->getId(), [
- 'encrypted' => $oldVersion,
- 'encryptedVersion' => $oldVersion,
- 'size' => $oldFileInfo->getSize()
- ]
- );
-
- // rollback
- if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) {
- $files_view->touch($file, $revision);
- Storage::scheduleExpire($uid, $file);
- \OC_Hook::emit('\OCP\Versions', 'rollback', array(
- 'path' => $filename,
- 'revision' => $revision,
- ));
- return true;
- } else if ($versionCreated) {
- self::deleteVersion($users_view, $version);
- }
+ $fileToRestore = 'files_versions' . $filename . '.v' . $revision;
+
+ // Restore encrypted version of the old file for the newly restored file
+ // This has to happen manually here since the file is manually copied below
+ $oldVersion = $users_view->getFileInfo($fileToRestore)->getEncryptedVersion();
+ $oldFileInfo = $users_view->getFileInfo($fileToRestore);
+ $cache = $fileInfo->getStorage()->getCache();
+ $cache->update(
+ $fileInfo->getId(), [
+ 'encrypted' => $oldVersion,
+ 'encryptedVersion' => $oldVersion,
+ 'size' => $oldFileInfo->getSize()
+ ]
+ );
+
+ // rollback
+ if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) {
+ $files_view->touch($file, $revision);
+ Storage::scheduleExpire($uid, $file);
+ \OC_Hook::emit('\OCP\Versions', 'rollback', array(
+ 'path' => $filename,
+ 'revision' => $revision,
+ ));
+ return true;
+ } else if ($versionCreated) {
+ self::deleteVersion($users_view, $version);
}
+
return false;
}
@@ -629,7 +626,7 @@ class Storage {
$interval = 1;
$step = Storage::$max_versions_per_interval[$interval]['step'];
- if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) {
+ if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] === -1) {
$nextInterval = -1;
} else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
@@ -644,7 +641,7 @@ class Storage {
foreach ($versions as $key => $version) {
$newInterval = true;
while ($newInterval) {
- if ($nextInterval == -1 || $prevTimestamp > $nextInterval) {
+ if ($nextInterval === -1 || $prevTimestamp > $nextInterval) {
if ($version['version'] > $nextVersion) {
//distance between two version too small, mark to delete
$toDelete[$key] = $version['path'] . '.v' . $version['version'];
@@ -659,7 +656,7 @@ class Storage {
$interval++;
$step = Storage::$max_versions_per_interval[$interval]['step'];
$nextVersion = $prevTimestamp - $step;
- if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) {
+ if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] === -1) {
$nextInterval = -1;
} else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
@@ -698,10 +695,9 @@ class Storage {
* @return bool|int|null
*/
public static function expire($filename, $uid) {
- $config = \OC::$server->getConfig();
$expiration = self::getExpiration();
- if($config->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' && $expiration->isEnabled()) {
+ if ($expiration->isEnabled()) {
// get available disk space for user
$user = \OC::$server->getUserManager()->get($uid);
if (is_null($user)) {
diff --git a/apps/files_versions/tests/Command/CleanupTest.php b/apps/files_versions/tests/Command/CleanupTest.php
index d716bc1ddbb..fe6c9caf25b 100644
--- a/apps/files_versions/tests/Command/CleanupTest.php
+++ b/apps/files_versions/tests/Command/CleanupTest.php
@@ -140,7 +140,7 @@ class CleanupTest extends TestCase {
->setConstructorArgs([$this->rootFolder, $this->userManager])
->getMock();
- $backend = $this->getMockBuilder('OC_User_Interface')
+ $backend = $this->getMockBuilder(\OCP\UserInterface::class)
->disableOriginalConstructor()->getMock();
$backend->expects($this->once())->method('getUsers')
->with('', 500, 0)
diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
index 3bc955f2fc1..c0fba230a26 100644
--- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
+++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
@@ -59,7 +59,7 @@ class RetryJob extends Job {
* run the job, then remove it from the jobList
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
if ($this->shouldRun($this->argument)) {
diff --git a/apps/oauth2/l10n/af.js b/apps/oauth2/l10n/af.js
index b2017757e74..406787e94cd 100644
--- a/apps/oauth2/l10n/af.js
+++ b/apps/oauth2/l10n/af.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0-kliënte",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 laat eksterne dienste toegang tot u %s aanvra.",
"Name" : "Naam",
"Redirection URI" : "Herverwysings-URI",
"Client Identifier" : "Kliëntidentifiseerder",
diff --git a/apps/oauth2/l10n/af.json b/apps/oauth2/l10n/af.json
index 4148f9000ae..e22f3232dc7 100644
--- a/apps/oauth2/l10n/af.json
+++ b/apps/oauth2/l10n/af.json
@@ -1,7 +1,6 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0-kliënte",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 laat eksterne dienste toegang tot u %s aanvra.",
"Name" : "Naam",
"Redirection URI" : "Herverwysings-URI",
"Client Identifier" : "Kliëntidentifiseerder",
diff --git a/apps/oauth2/l10n/ca.js b/apps/oauth2/l10n/ca.js
new file mode 100644
index 00000000000..dc7bad39f35
--- /dev/null
+++ b/apps/oauth2/l10n/ca.js
@@ -0,0 +1,14 @@
+OC.L10N.register(
+ "oauth2",
+ {
+ "OAuth 2.0" : "OAuth 2.0",
+ "OAuth 2.0 clients" : "clients OAuth 2.0",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet que els serveis externs sol·licitin accés a %s.",
+ "Name" : "Nom",
+ "Redirection URI" : "URl redirecció",
+ "Client Identifier" : "Identificador de client",
+ "Secret" : "Secret",
+ "Add client" : "Afegir client",
+ "Add" : "Afegir"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/oauth2/l10n/ca.json b/apps/oauth2/l10n/ca.json
new file mode 100644
index 00000000000..983ff83872e
--- /dev/null
+++ b/apps/oauth2/l10n/ca.json
@@ -0,0 +1,12 @@
+{ "translations": {
+ "OAuth 2.0" : "OAuth 2.0",
+ "OAuth 2.0 clients" : "clients OAuth 2.0",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet que els serveis externs sol·licitin accés a %s.",
+ "Name" : "Nom",
+ "Redirection URI" : "URl redirecció",
+ "Client Identifier" : "Identificador de client",
+ "Secret" : "Secret",
+ "Add client" : "Afegir client",
+ "Add" : "Afegir"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/oauth2/l10n/cs.js b/apps/oauth2/l10n/cs.js
index 8b9937b2436..21b2c0dc3d7 100644
--- a/apps/oauth2/l10n/cs.js
+++ b/apps/oauth2/l10n/cs.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klienti",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 umožňuje cizím službám žádat přístup k vašemu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 umožňuje cizím službám žádat přístup k %s.",
"Name" : "Název",
"Redirection URI" : "URL pro přesměrování",
"Client Identifier" : "Identifikátor klienta",
diff --git a/apps/oauth2/l10n/cs.json b/apps/oauth2/l10n/cs.json
index 24b771bcfb4..0b742297983 100644
--- a/apps/oauth2/l10n/cs.json
+++ b/apps/oauth2/l10n/cs.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klienti",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 umožňuje cizím službám žádat přístup k vašemu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 umožňuje cizím službám žádat přístup k %s.",
"Name" : "Název",
"Redirection URI" : "URL pro přesměrování",
"Client Identifier" : "Identifikátor klienta",
diff --git a/apps/oauth2/l10n/de.js b/apps/oauth2/l10n/de.js
index 5b1cc19626e..54421937c07 100644
--- a/apps/oauth2/l10n/de.js
+++ b/apps/oauth2/l10n/de.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth-2.0-Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf Deine %s zu fragen.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf %s zu fragen.",
"Name" : "Name",
"Redirection URI" : "Weiterleitungs-URI",
"Client Identifier" : "Client-Identifikationsmerkmal",
diff --git a/apps/oauth2/l10n/de.json b/apps/oauth2/l10n/de.json
index 145a064f4a9..37bd158c04a 100644
--- a/apps/oauth2/l10n/de.json
+++ b/apps/oauth2/l10n/de.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth-2.0-Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf Deine %s zu fragen.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf %s zu fragen.",
"Name" : "Name",
"Redirection URI" : "Weiterleitungs-URI",
"Client Identifier" : "Client-Identifikationsmerkmal",
diff --git a/apps/oauth2/l10n/de_DE.js b/apps/oauth2/l10n/de_DE.js
index b06be1e69e2..54421937c07 100644
--- a/apps/oauth2/l10n/de_DE.js
+++ b/apps/oauth2/l10n/de_DE.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth-2.0-Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf Ihre %s zu fragen.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf %s zu fragen.",
"Name" : "Name",
"Redirection URI" : "Weiterleitungs-URI",
"Client Identifier" : "Client-Identifikationsmerkmal",
diff --git a/apps/oauth2/l10n/de_DE.json b/apps/oauth2/l10n/de_DE.json
index 77e5dcdece3..37bd158c04a 100644
--- a/apps/oauth2/l10n/de_DE.json
+++ b/apps/oauth2/l10n/de_DE.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth-2.0-Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf Ihre %s zu fragen.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 erlaubt es externen Services nach Zugriff auf %s zu fragen.",
"Name" : "Name",
"Redirection URI" : "Weiterleitungs-URI",
"Client Identifier" : "Client-Identifikationsmerkmal",
diff --git a/apps/oauth2/l10n/el.js b/apps/oauth2/l10n/el.js
index a377c649fff..98031ed423e 100644
--- a/apps/oauth2/l10n/el.js
+++ b/apps/oauth2/l10n/el.js
@@ -3,9 +3,10 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Πελάτες OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "Το OAuth 2.0 επιτρέπει σε εξωτερικές υπηρεσίες να ζητούν πρόσβαση στο %s σας.",
+ "OAuth 2.0 allows external services to request access to %s." : "Το OAuth 2.0 επιτρέπει σε εξωτερικές υπηρεσίες να ζητούν πρόσβαση στο %s σας.",
"Name" : "Όνομα",
- "Redirection URI" : "Ανακατεύθυνση URI",
+ "Redirection URI" : "URI ανακατεύθυνσης",
+ "Client Identifier" : "Αναγνωριστικό πελάτη",
"Secret" : "Μυστικό",
"Add client" : "Προσθήκη πελάτη",
"Add" : "Προσθήκη"
diff --git a/apps/oauth2/l10n/el.json b/apps/oauth2/l10n/el.json
index 8638961d1e3..e10f10bdac9 100644
--- a/apps/oauth2/l10n/el.json
+++ b/apps/oauth2/l10n/el.json
@@ -1,9 +1,10 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Πελάτες OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "Το OAuth 2.0 επιτρέπει σε εξωτερικές υπηρεσίες να ζητούν πρόσβαση στο %s σας.",
+ "OAuth 2.0 allows external services to request access to %s." : "Το OAuth 2.0 επιτρέπει σε εξωτερικές υπηρεσίες να ζητούν πρόσβαση στο %s σας.",
"Name" : "Όνομα",
- "Redirection URI" : "Ανακατεύθυνση URI",
+ "Redirection URI" : "URI ανακατεύθυνσης",
+ "Client Identifier" : "Αναγνωριστικό πελάτη",
"Secret" : "Μυστικό",
"Add client" : "Προσθήκη πελάτη",
"Add" : "Προσθήκη"
diff --git a/apps/oauth2/l10n/en_GB.js b/apps/oauth2/l10n/en_GB.js
index bb685a2578d..6d89985d8a8 100644
--- a/apps/oauth2/l10n/en_GB.js
+++ b/apps/oauth2/l10n/en_GB.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 allows external services to request access to your %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 allows external services to request access to %s.",
"Name" : "Name",
"Redirection URI" : "Redirection URI",
"Client Identifier" : "Client Identifier",
diff --git a/apps/oauth2/l10n/en_GB.json b/apps/oauth2/l10n/en_GB.json
index b313edb241a..3f19d168e85 100644
--- a/apps/oauth2/l10n/en_GB.json
+++ b/apps/oauth2/l10n/en_GB.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 allows external services to request access to your %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 allows external services to request access to %s.",
"Name" : "Name",
"Redirection URI" : "Redirection URI",
"Client Identifier" : "Client Identifier",
diff --git a/apps/oauth2/l10n/es.js b/apps/oauth2/l10n/es.js
index 4d2d3feac21..d9e8052265d 100644
--- a/apps/oauth2/l10n/es.js
+++ b/apps/oauth2/l10n/es.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permite a servicios externos pedir acceso a tu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAut 2.0 permite a servicios externos solicitar acceso a %s.",
"Name" : "Nombre",
"Redirection URI" : "URI de redirección",
"Client Identifier" : "Identificador de cliente",
diff --git a/apps/oauth2/l10n/es.json b/apps/oauth2/l10n/es.json
index 03a08a143ec..adddffe23ce 100644
--- a/apps/oauth2/l10n/es.json
+++ b/apps/oauth2/l10n/es.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permite a servicios externos pedir acceso a tu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAut 2.0 permite a servicios externos solicitar acceso a %s.",
"Name" : "Nombre",
"Redirection URI" : "URI de redirección",
"Client Identifier" : "Identificador de cliente",
diff --git a/apps/oauth2/l10n/es_AR.js b/apps/oauth2/l10n/es_AR.js
index c96e2c46770..e7af2695cb8 100644
--- a/apps/oauth2/l10n/es_AR.js
+++ b/apps/oauth2/l10n/es_AR.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 le permite a servicios externos solicituar acceso a su %s.",
"Name" : "Nombre",
"Redirection URI" : "URI de redirección",
"Client Identifier" : "Identificador del cliente",
diff --git a/apps/oauth2/l10n/es_AR.json b/apps/oauth2/l10n/es_AR.json
index 809d645680c..c318e9e7c16 100644
--- a/apps/oauth2/l10n/es_AR.json
+++ b/apps/oauth2/l10n/es_AR.json
@@ -1,7 +1,6 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 le permite a servicios externos solicituar acceso a su %s.",
"Name" : "Nombre",
"Redirection URI" : "URI de redirección",
"Client Identifier" : "Identificador del cliente",
diff --git a/apps/oauth2/l10n/es_MX.js b/apps/oauth2/l10n/es_MX.js
index 5aa4242f548..c5e0d2f46b0 100644
--- a/apps/oauth2/l10n/es_MX.js
+++ b/apps/oauth2/l10n/es_MX.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 le permite a servicios externos solicituar acceso a tu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 le permite a los servicios externos solicitar acceso a %s.",
"Name" : "Nombre",
"Redirection URI" : "URI para redirección",
"Client Identifier" : "Identificador del cliente",
diff --git a/apps/oauth2/l10n/es_MX.json b/apps/oauth2/l10n/es_MX.json
index 6834bcdd298..ac9eef5ebf8 100644
--- a/apps/oauth2/l10n/es_MX.json
+++ b/apps/oauth2/l10n/es_MX.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 le permite a servicios externos solicituar acceso a tu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 le permite a los servicios externos solicitar acceso a %s.",
"Name" : "Nombre",
"Redirection URI" : "URI para redirección",
"Client Identifier" : "Identificador del cliente",
diff --git a/apps/oauth2/l10n/fi.js b/apps/oauth2/l10n/fi.js
index d983de21539..072ec9fffb5 100644
--- a/apps/oauth2/l10n/fi.js
+++ b/apps/oauth2/l10n/fi.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 -asiakkaat",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 mahdollistaa ulkoisten palvelujen pyytää pääsyä %siisi.",
"Name" : "Nimi",
"Redirection URI" : "Uudelleenohjaus URI",
"Client Identifier" : "Asiakkaan tunniste",
diff --git a/apps/oauth2/l10n/fi.json b/apps/oauth2/l10n/fi.json
index 392e2f4555e..9f4d8511d61 100644
--- a/apps/oauth2/l10n/fi.json
+++ b/apps/oauth2/l10n/fi.json
@@ -1,7 +1,6 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 -asiakkaat",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 mahdollistaa ulkoisten palvelujen pyytää pääsyä %siisi.",
"Name" : "Nimi",
"Redirection URI" : "Uudelleenohjaus URI",
"Client Identifier" : "Asiakkaan tunniste",
diff --git a/apps/oauth2/l10n/fr.js b/apps/oauth2/l10n/fr.js
index 1a5bd44d303..b62b0dec182 100644
--- a/apps/oauth2/l10n/fr.js
+++ b/apps/oauth2/l10n/fr.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clients OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permet à des services externes de demander l'accès à votre %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet à des services externes de demander l'accès à %s.",
"Name" : "Nom",
"Redirection URI" : "URI de redirection",
"Client Identifier" : "Identifiant du client",
diff --git a/apps/oauth2/l10n/fr.json b/apps/oauth2/l10n/fr.json
index bcc904e00b1..e93e5f26883 100644
--- a/apps/oauth2/l10n/fr.json
+++ b/apps/oauth2/l10n/fr.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clients OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permet à des services externes de demander l'accès à votre %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet à des services externes de demander l'accès à %s.",
"Name" : "Nom",
"Redirection URI" : "URI de redirection",
"Client Identifier" : "Identifiant du client",
diff --git a/apps/oauth2/l10n/is.js b/apps/oauth2/l10n/is.js
index 538c9a91f49..cc060b16adc 100644
--- a/apps/oauth2/l10n/is.js
+++ b/apps/oauth2/l10n/is.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 biðlarar",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 gerir utanaðkomandi þjónustum kleift að biðja um aðgang að þínu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 gerir utanaðkomandi þjónustum kleift að biðja um aðgang að %s.",
"Name" : "Nafn",
"Redirection URI" : "Endurbeiningarslóð",
"Client Identifier" : "Biðlaraauðkenni",
diff --git a/apps/oauth2/l10n/is.json b/apps/oauth2/l10n/is.json
index 529c8db1d2a..0729159583e 100644
--- a/apps/oauth2/l10n/is.json
+++ b/apps/oauth2/l10n/is.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 biðlarar",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 gerir utanaðkomandi þjónustum kleift að biðja um aðgang að þínu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 gerir utanaðkomandi þjónustum kleift að biðja um aðgang að %s.",
"Name" : "Nafn",
"Redirection URI" : "Endurbeiningarslóð",
"Client Identifier" : "Biðlaraauðkenni",
diff --git a/apps/oauth2/l10n/it.js b/apps/oauth2/l10n/it.js
index e862653fc00..94c33e0eaaa 100644
--- a/apps/oauth2/l10n/it.js
+++ b/apps/oauth2/l10n/it.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Client OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 consente a servizi esterni di richiedere accesso al tuo %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 consente a servizi esterni di richiedere accesso al tuo %s.",
"Name" : "Nome",
"Redirection URI" : "URI di redirezione",
"Client Identifier" : "Identificatore client",
diff --git a/apps/oauth2/l10n/it.json b/apps/oauth2/l10n/it.json
index 2bc9af71599..0fa30df53f4 100644
--- a/apps/oauth2/l10n/it.json
+++ b/apps/oauth2/l10n/it.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Client OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 consente a servizi esterni di richiedere accesso al tuo %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 consente a servizi esterni di richiedere accesso al tuo %s.",
"Name" : "Nome",
"Redirection URI" : "URI di redirezione",
"Client Identifier" : "Identificatore client",
diff --git a/apps/oauth2/l10n/lt_LT.js b/apps/oauth2/l10n/lt_LT.js
index e2613a9fc58..5ffcc271e94 100644
--- a/apps/oauth2/l10n/lt_LT.js
+++ b/apps/oauth2/l10n/lt_LT.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klientai",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 protokolas leidžia trečiųjų šalių programinei įrangai pasiekti šiuos jūsų duomenis: %s.",
"Name" : "Pavadinimas",
"Redirection URI" : "Nukreipimo adresas",
"Client Identifier" : "Kliento identifikatorius",
diff --git a/apps/oauth2/l10n/lt_LT.json b/apps/oauth2/l10n/lt_LT.json
index 024cfc567af..fd23bcb21fd 100644
--- a/apps/oauth2/l10n/lt_LT.json
+++ b/apps/oauth2/l10n/lt_LT.json
@@ -1,6 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klientai",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 protokolas leidžia trečiųjų šalių programinei įrangai pasiekti šiuos jūsų duomenis: %s.",
"Name" : "Pavadinimas",
"Redirection URI" : "Nukreipimo adresas",
"Client Identifier" : "Kliento identifikatorius",
diff --git a/apps/oauth2/l10n/lv.js b/apps/oauth2/l10n/lv.js
index ce1f4eac05d..37c8d0dc265 100644
--- a/apps/oauth2/l10n/lv.js
+++ b/apps/oauth2/l10n/lv.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klients",
- "OAuth 2.0 allows external services to request access to your %s." : " OAuth 2.0 atļauj ārējiem servisiem pieprasīt piekļuvi pie Jūsu %s.",
"Name" : "Nosaukums",
"Redirection URI" : "Pārvirzāmais URI",
"Client Identifier" : "Klienta identifikators",
diff --git a/apps/oauth2/l10n/lv.json b/apps/oauth2/l10n/lv.json
index d7f425b83ae..a55d5f08ed8 100644
--- a/apps/oauth2/l10n/lv.json
+++ b/apps/oauth2/l10n/lv.json
@@ -1,7 +1,6 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 klients",
- "OAuth 2.0 allows external services to request access to your %s." : " OAuth 2.0 atļauj ārējiem servisiem pieprasīt piekļuvi pie Jūsu %s.",
"Name" : "Nosaukums",
"Redirection URI" : "Pārvirzāmais URI",
"Client Identifier" : "Klienta identifikators",
diff --git a/apps/oauth2/l10n/nb.js b/apps/oauth2/l10n/nb.js
index 46d0ef8de59..00f4914626e 100644
--- a/apps/oauth2/l10n/nb.js
+++ b/apps/oauth2/l10n/nb.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0-klienter",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 lar eksterne tjenester forespørre tilgang til %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lar eksterne tjenester forespørre tilgang til %s.",
"Name" : "Navn",
"Redirection URI" : "Videresendings-URI",
"Client Identifier" : "Klient-identifikator",
diff --git a/apps/oauth2/l10n/nb.json b/apps/oauth2/l10n/nb.json
index 8b7c4114c54..6ea4e9c859a 100644
--- a/apps/oauth2/l10n/nb.json
+++ b/apps/oauth2/l10n/nb.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0-klienter",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 lar eksterne tjenester forespørre tilgang til %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lar eksterne tjenester forespørre tilgang til %s.",
"Name" : "Navn",
"Redirection URI" : "Videresendings-URI",
"Client Identifier" : "Klient-identifikator",
diff --git a/apps/oauth2/l10n/nl.js b/apps/oauth2/l10n/nl.js
index 9feaaf1efc5..047280bd1cd 100644
--- a/apps/oauth2/l10n/nl.js
+++ b/apps/oauth2/l10n/nl.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 staat externe services toe om toegang te vragen aan %s",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 staat externe services toe om toegang te vragen aan %s",
"Name" : "Naam",
"Redirection URI" : "Omeiding URI",
"Client Identifier" : "Client identificatie",
diff --git a/apps/oauth2/l10n/nl.json b/apps/oauth2/l10n/nl.json
index aa92fc82463..d0564c48be6 100644
--- a/apps/oauth2/l10n/nl.json
+++ b/apps/oauth2/l10n/nl.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 Clients",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 staat externe services toe om toegang te vragen aan %s",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 staat externe services toe om toegang te vragen aan %s",
"Name" : "Naam",
"Redirection URI" : "Omeiding URI",
"Client Identifier" : "Client identificatie",
diff --git a/apps/oauth2/l10n/pl.js b/apps/oauth2/l10n/pl.js
index ddd4a476af9..e718be292bb 100644
--- a/apps/oauth2/l10n/pl.js
+++ b/apps/oauth2/l10n/pl.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Klienci OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 pozwala zewnętrznym usługom na żądanie dostępu do %s.",
"Name" : "Nazwa",
"Redirection URI" : "URI przekierowania",
"Client Identifier" : "Identyfikator Klienta",
diff --git a/apps/oauth2/l10n/pl.json b/apps/oauth2/l10n/pl.json
index 367c4e9c78e..b36783cc707 100644
--- a/apps/oauth2/l10n/pl.json
+++ b/apps/oauth2/l10n/pl.json
@@ -1,7 +1,6 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Klienci OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 pozwala zewnętrznym usługom na żądanie dostępu do %s.",
"Name" : "Nazwa",
"Redirection URI" : "URI przekierowania",
"Client Identifier" : "Identyfikator Klienta",
diff --git a/apps/oauth2/l10n/pt_BR.js b/apps/oauth2/l10n/pt_BR.js
index 93d4082f24e..4cdf0a5f903 100644
--- a/apps/oauth2/l10n/pt_BR.js
+++ b/apps/oauth2/l10n/pt_BR.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permite aos serviços externos solicitar acesso ao seu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permite que serviços externos requisitem acesso a %s.",
"Name" : "Nome",
"Redirection URI" : "Redirecionamento URI",
"Client Identifier" : "Identificador do Cliente",
diff --git a/apps/oauth2/l10n/pt_BR.json b/apps/oauth2/l10n/pt_BR.json
index f8b09c33f37..74f23369db4 100644
--- a/apps/oauth2/l10n/pt_BR.json
+++ b/apps/oauth2/l10n/pt_BR.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Clientes OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 permite aos serviços externos solicitar acesso ao seu %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permite que serviços externos requisitem acesso a %s.",
"Name" : "Nome",
"Redirection URI" : "Redirecionamento URI",
"Client Identifier" : "Identificador do Cliente",
diff --git a/apps/oauth2/l10n/ru.js b/apps/oauth2/l10n/ru.js
index ecb59c37269..4adf2f65ceb 100644
--- a/apps/oauth2/l10n/ru.js
+++ b/apps/oauth2/l10n/ru.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Клиенты OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 позволяет внешним службам запрашивать доступ к вашему %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 позволяет внешним службам запрашивать доступ к %s.",
"Name" : "Имя",
"Redirection URI" : "URI перенаправления",
"Client Identifier" : "Идентификатор клиента",
diff --git a/apps/oauth2/l10n/ru.json b/apps/oauth2/l10n/ru.json
index c010fc75f81..793dd149678 100644
--- a/apps/oauth2/l10n/ru.json
+++ b/apps/oauth2/l10n/ru.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "Клиенты OAuth 2.0",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 позволяет внешним службам запрашивать доступ к вашему %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 позволяет внешним службам запрашивать доступ к %s.",
"Name" : "Имя",
"Redirection URI" : "URI перенаправления",
"Client Identifier" : "Идентификатор клиента",
diff --git a/apps/oauth2/l10n/sq.js b/apps/oauth2/l10n/sq.js
new file mode 100644
index 00000000000..04e485efb81
--- /dev/null
+++ b/apps/oauth2/l10n/sq.js
@@ -0,0 +1,14 @@
+OC.L10N.register(
+ "oauth2",
+ {
+ "OAuth 2.0" : "O.Auth 2.0",
+ "OAuth 2.0 clients" : "Klientë OAuth 2.0",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lejon shërbime të jashtme të kërkojnë akses në %s",
+ "Name" : "Emri",
+ "Redirection URI" : "URI Ridrejtimi",
+ "Client Identifier" : "Identifikues Klienti",
+ "Secret" : "Sekret",
+ "Add client" : "Shto klient",
+ "Add" : "Shto "
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/oauth2/l10n/sq.json b/apps/oauth2/l10n/sq.json
new file mode 100644
index 00000000000..5d54396f02a
--- /dev/null
+++ b/apps/oauth2/l10n/sq.json
@@ -0,0 +1,12 @@
+{ "translations": {
+ "OAuth 2.0" : "O.Auth 2.0",
+ "OAuth 2.0 clients" : "Klientë OAuth 2.0",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lejon shërbime të jashtme të kërkojnë akses në %s",
+ "Name" : "Emri",
+ "Redirection URI" : "URI Ridrejtimi",
+ "Client Identifier" : "Identifikues Klienti",
+ "Secret" : "Sekret",
+ "Add client" : "Shto klient",
+ "Add" : "Shto "
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/oauth2/l10n/tr.js b/apps/oauth2/l10n/tr.js
index 101ef4ce849..92b680c60dc 100644
--- a/apps/oauth2/l10n/tr.js
+++ b/apps/oauth2/l10n/tr.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 istemcileri",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 dış hizmetlerin %s hesabınıza erişmesini sağlar.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 dış hizmetlerin %s için erişim isteğinde bulunmasını sağlar.",
"Name" : "Ad",
"Redirection URI" : "Yönlendirme Adresi",
"Client Identifier" : "İstemci Belirteci",
diff --git a/apps/oauth2/l10n/tr.json b/apps/oauth2/l10n/tr.json
index f650330169a..b244dc88c08 100644
--- a/apps/oauth2/l10n/tr.json
+++ b/apps/oauth2/l10n/tr.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 istemcileri",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 dış hizmetlerin %s hesabınıza erişmesini sağlar.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 dış hizmetlerin %s için erişim isteğinde bulunmasını sağlar.",
"Name" : "Ad",
"Redirection URI" : "Yönlendirme Adresi",
"Client Identifier" : "İstemci Belirteci",
diff --git a/apps/oauth2/l10n/zh_CN.js b/apps/oauth2/l10n/zh_CN.js
index 32bfe73e5aa..529a9f1f854 100644
--- a/apps/oauth2/l10n/zh_CN.js
+++ b/apps/oauth2/l10n/zh_CN.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 客户端",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 允许外部服务请求访问您的 %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 认证协议允许外部服务请求访问您的%s",
"Name" : "名称",
"Redirection URI" : "回调地址",
"Client Identifier" : "客户端 ID",
diff --git a/apps/oauth2/l10n/zh_CN.json b/apps/oauth2/l10n/zh_CN.json
index 2a370be13fd..b9334e7f9ad 100644
--- a/apps/oauth2/l10n/zh_CN.json
+++ b/apps/oauth2/l10n/zh_CN.json
@@ -1,7 +1,7 @@
{ "translations": {
"OAuth 2.0" : "OAuth 2.0",
"OAuth 2.0 clients" : "OAuth 2.0 客户端",
- "OAuth 2.0 allows external services to request access to your %s." : "OAuth 2.0 允许外部服务请求访问您的 %s.",
+ "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 认证协议允许外部服务请求访问您的%s",
"Name" : "名称",
"Redirection URI" : "回调地址",
"Client Identifier" : "客户端 ID",
diff --git a/apps/oauth2/templates/admin.php b/apps/oauth2/templates/admin.php
index d2e34e08db8..d764e17ceec 100644
--- a/apps/oauth2/templates/admin.php
+++ b/apps/oauth2/templates/admin.php
@@ -32,7 +32,7 @@ $clients = $_['clients'];
<div id="oauth2" class="section">
<h2><?php p($l->t('OAuth 2.0 clients')); ?></h2>
- <p class="settings-hint"><?php p($l->t('OAuth 2.0 allows external services to request access to your %s.', [$themingDefaults->getName()])); ?></p>
+ <p class="settings-hint"><?php p($l->t('OAuth 2.0 allows external services to request access to %s.', [$themingDefaults->getName()])); ?></p>
<table class="grid">
<thead>
diff --git a/apps/provisioning_api/lib/Controller/AppsController.php b/apps/provisioning_api/lib/Controller/AppsController.php
index 70316875762..d65b925cf7b 100644
--- a/apps/provisioning_api/lib/Controller/AppsController.php
+++ b/apps/provisioning_api/lib/Controller/AppsController.php
@@ -91,9 +91,9 @@ class AppsController extends OCSController {
$info = \OCP\App::getAppInfo($app);
if(!is_null($info)) {
return new DataResponse(OC_App::getAppInfo($app));
- } else {
- throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND);
}
+
+ throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND);
}
/**
diff --git a/apps/provisioning_api/lib/Controller/GroupsController.php b/apps/provisioning_api/lib/Controller/GroupsController.php
index 2d329bf974b..e167c07582f 100644
--- a/apps/provisioning_api/lib/Controller/GroupsController.php
+++ b/apps/provisioning_api/lib/Controller/GroupsController.php
@@ -30,6 +30,7 @@ use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCSController;
use OCP\IGroup;
use OCP\IGroupManager;
+use OCP\ILogger;
use OCP\IRequest;
use OCP\IUserSession;
use OCP\IUser;
@@ -43,21 +44,27 @@ class GroupsController extends OCSController {
/** @var IUserSession */
private $userSession;
+ /** @var ILogger */
+ private $logger;
+
/**
* @param string $appName
* @param IRequest $request
* @param IGroupManager $groupManager
* @param IUserSession $userSession
+ * @param ILogger $logger
*/
public function __construct(
$appName,
IRequest $request,
IGroupManager $groupManager,
- IUserSession $userSession) {
+ IUserSession $userSession,
+ ILogger $logger) {
parent::__construct($appName, $request);
$this->groupManager = $groupManager;
$this->userSession = $userSession;
+ $this->logger = $logger;
}
/**
@@ -120,9 +127,9 @@ class GroupsController extends OCSController {
}, $users);
$users = array_values($users);
return new DataResponse(['users' => $users]);
- } else {
- throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED);
}
+
+ throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED);
}
/**
@@ -136,8 +143,8 @@ class GroupsController extends OCSController {
*/
public function addGroup($groupid) {
// Validate name
- if(empty($groupid)){
- \OCP\Util::writeLog('provisioning_api', 'Group name not supplied', \OCP\Util::ERROR);
+ if(empty($groupid)) {
+ $this->logger->error('Group name not supplied', ['app' => 'provisioning_api']);
throw new OCSException('Invalid group name', 101);
}
// Check if it exists
@@ -179,6 +186,7 @@ class GroupsController extends OCSController {
throw new OCSException('Group does not exist', 101);
}
+ /** @var IUser[] $subadmins */
$subadmins = $this->groupManager->getSubAdmin()->getGroupsSubAdmins($targetGroup);
// New class returns IUser[] so convert back
$uids = [];
diff --git a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php
index d9afe596027..e21f9b22878 100644
--- a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php
+++ b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php
@@ -3,6 +3,7 @@
namespace OCA\Provisioning_API\Middleware;
use OCA\Provisioning_API\Middleware\Exceptions\NotSubAdminException;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\OCS\OCSException;
@@ -36,7 +37,7 @@ class ProvisioningApiMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
*
* @throws NotSubAdminException
@@ -48,7 +49,7 @@ class ProvisioningApiMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param \Exception $exception
* @throws \Exception
@@ -61,4 +62,4 @@ class ProvisioningApiMiddleware extends Middleware {
throw $exception;
}
-} \ No newline at end of file
+}
diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
index 25059e85425..344f1fe6352 100644
--- a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
@@ -28,6 +28,7 @@ namespace OCA\Provisioning_API\Tests\Controller;
use OCA\Provisioning_API\Controller\GroupsController;
use OCP\IGroupManager;
+use OCP\ILogger;
use OCP\IUserSession;
class GroupsControllerTest extends \Test\TestCase {
@@ -37,6 +38,7 @@ class GroupsControllerTest extends \Test\TestCase {
protected $userSession;
/** @var \OC\SubAdmin|\PHPUnit_Framework_MockObject_MockObject */
protected $subAdminManager;
+
/** @var GroupsController */
protected $api;
@@ -60,11 +62,15 @@ class GroupsControllerTest extends \Test\TestCase {
$request = $this->getMockBuilder('OCP\IRequest')
->disableOriginalConstructor()
->getMock();
+
+ $logger = $this->createMock(ILogger::class);
+
$this->api = new GroupsController(
'provisioning_api',
$request,
$this->groupManager,
- $this->userSession
+ $this->userSession,
+ $logger
);
}
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index c712cd7485d..19b5fa65e9a 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -1128,7 +1128,7 @@ class UsersControllerTest extends TestCase {
}
public function testEditUserAdminUserSelfEditChangeValidQuota() {
- $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock();;
+ $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock();
$loggedInUser
->expects($this->any())
->method('getUID')
diff --git a/apps/sharebymail/l10n/es_MX.js b/apps/sharebymail/l10n/es_MX.js
index ec45bc108b9..9dc5ee4b55d 100644
--- a/apps/sharebymail/l10n/es_MX.js
+++ b/apps/sharebymail/l10n/es_MX.js
@@ -21,7 +21,7 @@ OC.L10N.register(
"Failed to send share by email" : "Se presentó una falla al enviar el elemento compartido por correo electrónico",
"%s shared »%s« with you" : "%s ha compartido »%s« contigo",
"%s shared »%s« with you." : "%s ha compartido »%s« contigo",
- "Click the button below to open it." : "Has click en el botón de abajo para abrirlo.",
+ "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.",
"Open »%s«" : "Abrir »%s«",
"%s via %s" : "%s vía %s",
"Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ",
diff --git a/apps/sharebymail/l10n/es_MX.json b/apps/sharebymail/l10n/es_MX.json
index 49be6e871e7..3cc7b9a4899 100644
--- a/apps/sharebymail/l10n/es_MX.json
+++ b/apps/sharebymail/l10n/es_MX.json
@@ -19,7 +19,7 @@
"Failed to send share by email" : "Se presentó una falla al enviar el elemento compartido por correo electrónico",
"%s shared »%s« with you" : "%s ha compartido »%s« contigo",
"%s shared »%s« with you." : "%s ha compartido »%s« contigo",
- "Click the button below to open it." : "Has click en el botón de abajo para abrirlo.",
+ "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.",
"Open »%s«" : "Abrir »%s«",
"%s via %s" : "%s vía %s",
"Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ",
diff --git a/apps/sharebymail/l10n/sq.js b/apps/sharebymail/l10n/sq.js
new file mode 100644
index 00000000000..2d30b819d74
--- /dev/null
+++ b/apps/sharebymail/l10n/sq.js
@@ -0,0 +1,50 @@
+OC.L10N.register(
+ "sharebymail",
+ {
+ "Shared with %1$s" : "E ndarë me %1$s ",
+ "Shared with {email}" : "Të shpërndara me {email}",
+ "Shared with %1$s by %2$s" : "E ndarë me %1$s nga %2$s",
+ "Shared with {email} by {actor}" : "Ndarë me {email} nga {actor}",
+ "Password for mail share sent to %1$s" : "Fjalëkalimi per ndarjen e mail-it dërguar tek %1$s",
+ "Password for mail share sent to {email}" : "Fjalëkali për ndarje mail-i u dërgua tek {email}",
+ "Password for mail share sent to you" : "Fjalëkalimi për ndarjen e mail ju është dërguar ",
+ "You shared %1$s with %2$s by mail" : "Ju ndatë %1$s me %2$s me anë të mail",
+ "You shared {file} with {email} by mail" : "Ju ndatë {skedarin} me {email} me anë të mailit ",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s ndau %1$s me%2$s me anë të mail",
+ "{actor} shared {file} with {email} by mail" : "{aktori} shpërndau {skedarin} me{email} nga email",
+ "Password to access %1$s was sent to %2s" : "Fjalëkalimi për akses %1$s ju dërgua %2s",
+ "Password to access {file} was sent to {email}" : "Fjalëkalimi për akses {file} dërguar tek {email}",
+ "Password to access %1$s was sent to you" : "Fjalëkalimi për të aksesuar %1$s ju është dërguar",
+ "Password to access {file} was sent to you" : "Fjalëkalimi për akses {file} tu dërgua ",
+ "Sharing %s failed, this item is already shared with %s" : "Shpërndarja %s dështoi, ky artikull është aktualisht i shpërndarë me %s",
+ "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "S'mund t'jua dergojmë fjalëkalimin e gjeneruar automatikisht. Ju lutem vendosni një adresë emaili të vlefshme ne mjedisin tuaj personal dhe provoni përseri. ",
+ "Failed to send share by email" : "Ndarja e dërguar me anë të email dështoi ",
+ "%s shared »%s« with you" : "%s ndarë »%s« me ju",
+ "%s shared »%s« with you." : "%s ndarë »%s« me ju.",
+ "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.",
+ "Open »%s«" : "Hap »%s«",
+ "%s via %s" : "%s përmes %s",
+ "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s",
+ "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n",
+ "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.",
+ "Password to access »%s«" : "Fjalëkalimi për akses »%s«",
+ "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s",
+ "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s",
+ "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.",
+ "This is the password: %s" : "Ky është fjalëkalimi: %s",
+ "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.",
+ "Could not find share" : "Nuk mund të gjej shpërndarje",
+ "Share by mail" : "Shpërnda me mail",
+ "Allows users to share a personalized link to a file or folder by putting in an email address." : "Lejo përdoruesit të ndajnë një lidhje të personalizuar me një skedar ose dosje duke e vendosur në një adresë e-mail.",
+ "Send password by mail" : "Dërgo fjalëkalimin me mail",
+ "Enforce password protection" : "Forco mbrojtjen e fjalëkalimit",
+ "Failed to send share by E-mail" : "Dështoi në dërgimin e shpërndarjeve me anë të E-mail",
+ "%s shared »%s« with you on behalf of %s" : "%s ndarë »%s« me ju në emër të %s",
+ "Failed to create the E-mail" : "Dështuat për të krijuar E-mail",
+ "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Çkemi\n\n ndau »%s%s« me ju në emër të %s.\n\n%s\n\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Çkemi\n\n%s ndau »%s» me ju.\n\n%s\n\n",
+ "Cheers!" : "Gëzuar!",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju në emër të %s. <br> <br>",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju. <br> <br>"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/sharebymail/l10n/sq.json b/apps/sharebymail/l10n/sq.json
new file mode 100644
index 00000000000..1027fe6a677
--- /dev/null
+++ b/apps/sharebymail/l10n/sq.json
@@ -0,0 +1,48 @@
+{ "translations": {
+ "Shared with %1$s" : "E ndarë me %1$s ",
+ "Shared with {email}" : "Të shpërndara me {email}",
+ "Shared with %1$s by %2$s" : "E ndarë me %1$s nga %2$s",
+ "Shared with {email} by {actor}" : "Ndarë me {email} nga {actor}",
+ "Password for mail share sent to %1$s" : "Fjalëkalimi per ndarjen e mail-it dërguar tek %1$s",
+ "Password for mail share sent to {email}" : "Fjalëkali për ndarje mail-i u dërgua tek {email}",
+ "Password for mail share sent to you" : "Fjalëkalimi për ndarjen e mail ju është dërguar ",
+ "You shared %1$s with %2$s by mail" : "Ju ndatë %1$s me %2$s me anë të mail",
+ "You shared {file} with {email} by mail" : "Ju ndatë {skedarin} me {email} me anë të mailit ",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s ndau %1$s me%2$s me anë të mail",
+ "{actor} shared {file} with {email} by mail" : "{aktori} shpërndau {skedarin} me{email} nga email",
+ "Password to access %1$s was sent to %2s" : "Fjalëkalimi për akses %1$s ju dërgua %2s",
+ "Password to access {file} was sent to {email}" : "Fjalëkalimi për akses {file} dërguar tek {email}",
+ "Password to access %1$s was sent to you" : "Fjalëkalimi për të aksesuar %1$s ju është dërguar",
+ "Password to access {file} was sent to you" : "Fjalëkalimi për akses {file} tu dërgua ",
+ "Sharing %s failed, this item is already shared with %s" : "Shpërndarja %s dështoi, ky artikull është aktualisht i shpërndarë me %s",
+ "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "S'mund t'jua dergojmë fjalëkalimin e gjeneruar automatikisht. Ju lutem vendosni një adresë emaili të vlefshme ne mjedisin tuaj personal dhe provoni përseri. ",
+ "Failed to send share by email" : "Ndarja e dërguar me anë të email dështoi ",
+ "%s shared »%s« with you" : "%s ndarë »%s« me ju",
+ "%s shared »%s« with you." : "%s ndarë »%s« me ju.",
+ "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.",
+ "Open »%s«" : "Hap »%s«",
+ "%s via %s" : "%s përmes %s",
+ "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s",
+ "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n",
+ "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.",
+ "Password to access »%s«" : "Fjalëkalimi për akses »%s«",
+ "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s",
+ "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s",
+ "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.",
+ "This is the password: %s" : "Ky është fjalëkalimi: %s",
+ "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.",
+ "Could not find share" : "Nuk mund të gjej shpërndarje",
+ "Share by mail" : "Shpërnda me mail",
+ "Allows users to share a personalized link to a file or folder by putting in an email address." : "Lejo përdoruesit të ndajnë një lidhje të personalizuar me një skedar ose dosje duke e vendosur në një adresë e-mail.",
+ "Send password by mail" : "Dërgo fjalëkalimin me mail",
+ "Enforce password protection" : "Forco mbrojtjen e fjalëkalimit",
+ "Failed to send share by E-mail" : "Dështoi në dërgimin e shpërndarjeve me anë të E-mail",
+ "%s shared »%s« with you on behalf of %s" : "%s ndarë »%s« me ju në emër të %s",
+ "Failed to create the E-mail" : "Dështuat për të krijuar E-mail",
+ "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Çkemi\n\n ndau »%s%s« me ju në emër të %s.\n\n%s\n\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Çkemi\n\n%s ndau »%s» me ju.\n\n%s\n\n",
+ "Cheers!" : "Gëzuar!",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju në emër të %s. <br> <br>",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju. <br> <br>"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/sharebymail/l10n/zh_CN.js b/apps/sharebymail/l10n/zh_CN.js
index 20aaf8b0bce..97afec66870 100644
--- a/apps/sharebymail/l10n/zh_CN.js
+++ b/apps/sharebymail/l10n/zh_CN.js
@@ -30,6 +30,7 @@ OC.L10N.register(
"Password to access »%s«" : "访问 »%s« 的密码",
"It is protected with the following password: %s" : "已被已下密码保护:%s",
"Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享",
+ "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。",
"This is the password: %s" : "这是密码: %s",
"You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。",
"Could not find share" : "没有发现共享",
diff --git a/apps/sharebymail/l10n/zh_CN.json b/apps/sharebymail/l10n/zh_CN.json
index 756da2326a1..339edbcd096 100644
--- a/apps/sharebymail/l10n/zh_CN.json
+++ b/apps/sharebymail/l10n/zh_CN.json
@@ -28,6 +28,7 @@
"Password to access »%s«" : "访问 »%s« 的密码",
"It is protected with the following password: %s" : "已被已下密码保护:%s",
"Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享",
+ "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。",
"This is the password: %s" : "这是密码: %s",
"You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。",
"Could not find share" : "没有发现共享",
diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index f4db83ea3cf..32fa51d94a2 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -24,6 +24,7 @@ namespace OCA\ShareByMail;
use OC\CapabilitiesManager;
use OC\HintException;
use OC\Share20\Exception\InvalidShare;
+use OC\User\NoUserException;
use OCA\ShareByMail\Settings\SettingsManager;
use OCP\Activity\IManager;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -541,8 +542,7 @@ class ShareByMailProvider implements IShareProvider {
* @return string
*/
protected function generateToken($size = 15) {
- $token = $this->secureRandom->generate(
- $size, ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS);
+ $token = $this->secureRandom->generate($size, ISecureRandom::CHAR_HUMAN_READABLE);
return $token;
}
@@ -923,7 +923,7 @@ class ShareByMailProvider implements IShareProvider {
private function getNode($userId, $id) {
try {
$userFolder = $this->rootFolder->getUserFolder($userId);
- } catch (NotFoundException $e) {
+ } catch (NoUserException $e) {
throw new InvalidShare();
}
diff --git a/apps/systemtags/l10n/el.js b/apps/systemtags/l10n/el.js
index 5b94fe8a10c..73ea875397f 100644
--- a/apps/systemtags/l10n/el.js
+++ b/apps/systemtags/l10n/el.js
@@ -42,6 +42,8 @@ OC.L10N.register(
"%s (invisible)" : "%s (αόρατο)",
"<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί",
"Collaborative tags" : "Ετικέτες συνεργασίας",
+ "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.",
+ "Select tag …" : "Επιλογή ετικέτας ...",
"Name" : "Όνομα",
"Delete" : "Διαγραφή",
"Public" : "Δημόσιο",
diff --git a/apps/systemtags/l10n/el.json b/apps/systemtags/l10n/el.json
index 011b862da02..e9c61b16026 100644
--- a/apps/systemtags/l10n/el.json
+++ b/apps/systemtags/l10n/el.json
@@ -40,6 +40,8 @@
"%s (invisible)" : "%s (αόρατο)",
"<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί",
"Collaborative tags" : "Ετικέτες συνεργασίας",
+ "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.",
+ "Select tag …" : "Επιλογή ετικέτας ...",
"Name" : "Όνομα",
"Delete" : "Διαγραφή",
"Public" : "Δημόσιο",
diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js
index c18aca68c8f..116f7a366ec 100644
--- a/apps/systemtags/l10n/lv.js
+++ b/apps/systemtags/l10n/lv.js
@@ -28,13 +28,22 @@ OC.L10N.register(
"{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}",
"You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s",
"You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}",
"You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s",
+ "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s",
"{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}",
"You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s",
"You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}",
"%s (restricted)" : "%s (ierobežots)",
"%s (invisible)" : "%s (neredzams)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas",
"Collaborative tags" : "Sadarbības atzīmes",
+ "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.",
+ "Select tag …" : "Izvēlies atzīmi...",
"Name" : "Nosaukums",
"Delete" : "Dzēst",
"Public" : "Publisks",
diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json
index f73c14c6e24..7359422ea9e 100644
--- a/apps/systemtags/l10n/lv.json
+++ b/apps/systemtags/l10n/lv.json
@@ -26,13 +26,22 @@
"{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}",
"You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s",
"You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}",
"You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s",
+ "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s",
"{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}",
"You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s",
"You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}",
"%s (restricted)" : "%s (ierobežots)",
"%s (invisible)" : "%s (neredzams)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas",
"Collaborative tags" : "Sadarbības atzīmes",
+ "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.",
+ "Select tag …" : "Izvēlies atzīmi...",
"Name" : "Nosaukums",
"Delete" : "Dzēst",
"Public" : "Publisks",
diff --git a/apps/systemtags/l10n/sq.js b/apps/systemtags/l10n/sq.js
index 944cc5a9c06..775fb16dc7b 100644
--- a/apps/systemtags/l10n/sq.js
+++ b/apps/systemtags/l10n/sq.js
@@ -19,7 +19,9 @@ OC.L10N.register(
"%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ",
"{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}",
"You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit",
+ "You created system tag {systemtag}" : "Ju keni krijuar etiketimin e sistemit {systemtag}",
"%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} krijoi etiketimin e sistemit {systemtag}",
"You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit",
"You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit",
"%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
@@ -27,16 +29,27 @@ OC.L10N.register(
"You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s",
"You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} përditësoi etiketimin e sistemit {oldsystemtag} në {newsystemtag}",
"You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s",
"You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s shtoi etiketën e sistemit %3$s në %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} shtoi etiketimin e sistemit {systemtag} në {file}",
+ "You removed system tag %2$s from %1$s" : "Ju hoqët etiketimin e sistemit %2$s nga %1$s",
"You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s hoqi etiketimin e sistemit %3$s nga %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} hoqi etiketimin e sistemit {systemtag} nga {file}",
"%s (restricted)" : "%s (e kufizuar)",
"%s (invisible)" : "%s (e padukshme)",
"<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë",
"Collaborative tags" : "Etiketa bashkëpunuese",
+ "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.",
+ "Select tag …" : "Zgjidh etiketimin",
"Name" : "Emër",
"Delete" : "Fshije",
+ "Public" : "Publik",
+ "Restricted" : "I/E kufizuar",
"Invisible" : "I padukshëm",
+ "Reset" : "Rivendos",
"No files in here" : "S’ka kartela këtu",
"No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
"Size" : "Madhësi",
diff --git a/apps/systemtags/l10n/sq.json b/apps/systemtags/l10n/sq.json
index a6617312737..e4cbc8ddcd3 100644
--- a/apps/systemtags/l10n/sq.json
+++ b/apps/systemtags/l10n/sq.json
@@ -17,7 +17,9 @@
"%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ",
"{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}",
"You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit",
+ "You created system tag {systemtag}" : "Ju keni krijuar etiketimin e sistemit {systemtag}",
"%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} krijoi etiketimin e sistemit {systemtag}",
"You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit",
"You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit",
"%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
@@ -25,16 +27,27 @@
"You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s",
"You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} përditësoi etiketimin e sistemit {oldsystemtag} në {newsystemtag}",
"You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s",
"You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s shtoi etiketën e sistemit %3$s në %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} shtoi etiketimin e sistemit {systemtag} në {file}",
+ "You removed system tag %2$s from %1$s" : "Ju hoqët etiketimin e sistemit %2$s nga %1$s",
"You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s hoqi etiketimin e sistemit %3$s nga %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} hoqi etiketimin e sistemit {systemtag} nga {file}",
"%s (restricted)" : "%s (e kufizuar)",
"%s (invisible)" : "%s (e padukshme)",
"<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë",
"Collaborative tags" : "Etiketa bashkëpunuese",
+ "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.",
+ "Select tag …" : "Zgjidh etiketimin",
"Name" : "Emër",
"Delete" : "Fshije",
+ "Public" : "Publik",
+ "Restricted" : "I/E kufizuar",
"Invisible" : "I padukshëm",
+ "Reset" : "Rivendos",
"No files in here" : "S’ka kartela këtu",
"No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
"Size" : "Madhësi",
diff --git a/apps/testing/appinfo/app.php b/apps/testing/appinfo/app.php
index 402889f2674..5dce74bf786 100644
--- a/apps/testing/appinfo/app.php
+++ b/apps/testing/appinfo/app.php
@@ -19,5 +19,5 @@
*
*/
-$app = new \OCA\Testing\Application();
+$app = new \OCA\Testing\AppInfo\Application();
diff --git a/apps/testing/appinfo/routes.php b/apps/testing/appinfo/routes.php
index d45cfe00eca..3e5fda4fc14 100644
--- a/apps/testing/appinfo/routes.php
+++ b/apps/testing/appinfo/routes.php
@@ -20,63 +20,63 @@
*
*/
-namespace OCA\Testing\AppInfo;
+return [
+ 'routes' => [
+ [
+ 'name' => 'RateLimitTest#userAndAnonProtected',
+ 'url' => '/userAndAnonProtected',
+ 'verb' => 'GET',
+ ],
+ [
+ 'name' => 'RateLimitTest#onlyAnonProtected',
+ 'url' => '/anonProtected',
+ 'verb' => 'GET',
+ ],
+ ],
-use OCA\Testing\Config;
-use OCA\Testing\Locking\Provisioning;
-use OCP\API;
-use OCP\AppFramework\App;
-
-$config = new Config(
- \OC::$server->getConfig(),
- \OC::$server->getRequest()
-);
-
-$app = new App('testing');
-$app->registerRoutes(
- $this,
- [
- 'routes' => [
- [
- 'name' => 'RateLimitTest#userAndAnonProtected',
- 'url' => '/userAndAnonProtected',
- 'verb' => 'GET',
- ],
- [
- 'name' => 'RateLimitTest#onlyAnonProtected',
- 'url' => '/anonProtected',
- 'verb' => 'GET',
- ],
- ]
- ]
-);
-
-API::register(
- 'post',
- '/apps/testing/api/v1/app/{appid}/{configkey}',
- [$config, 'setAppValue'],
- 'testing',
- API::ADMIN_AUTH
-);
-
-API::register(
- 'delete',
- '/apps/testing/api/v1/app/{appid}/{configkey}',
- [$config, 'deleteAppValue'],
- 'testing',
- API::ADMIN_AUTH
-);
-
-$locking = new Provisioning(
- \OC::$server->getLockingProvider(),
- \OC::$server->getDatabaseConnection(),
- \OC::$server->getConfig(),
- \OC::$server->getRequest()
-);
-API::register('get', '/apps/testing/api/v1/lockprovisioning', [$locking, 'isLockingEnabled'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('get', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'isLocked'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('post', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'acquireLock'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('put', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'changeLock'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('delete', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'releaseLock'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('delete', '/apps/testing/api/v1/lockprovisioning/{type}', [$locking, 'releaseAll'], 'files_lockprovisioning', API::ADMIN_AUTH);
-API::register('delete', '/apps/testing/api/v1/lockprovisioning', [$locking, 'releaseAll'], 'files_lockprovisioning', API::ADMIN_AUTH);
+ 'ocs' => [
+ [
+ 'name' => 'Config#setAppValue',
+ 'url' => '/api/v1/app/{appid}/{configkey}',
+ 'verb' => 'POST',
+ ],
+ [
+ 'name' => 'Config#deleteAppValue',
+ 'url' => '/api/v1/app/{appid}/{configkey}',
+ 'verb' => 'DELETE',
+ ],
+ [
+ 'name' => 'Locking#isLockingEnabled',
+ 'url' => '/api/v1/lockprovisioning',
+ 'verb' => 'GET',
+ ],
+ [
+ 'name' => 'Locking#isLocked',
+ 'url' => '/api/v1/lockprovisioning/{type}/{user}',
+ 'verb' => 'GET',
+ ],
+ [
+ 'name' => 'Locking#acquireLock',
+ 'url' => '/api/v1/lockprovisioning/{type}/{user}',
+ 'verb' => 'POST',
+ ],
+ [
+ 'name' => 'Locking#changeLock',
+ 'url' => '/api/v1/lockprovisioning/{type}/{user}',
+ 'verb' => 'PUT',
+ ],
+ [
+ 'name' => 'Locking#releaseLock',
+ 'url' => '/api/v1/lockprovisioning/{type}/{user}',
+ 'verb' => 'DELETE',
+ ],
+ [
+ 'name' => 'Locking#releaseAll',
+ 'url' => '/api/v1/lockprovisioning/{type}',
+ 'verb' => 'DELETE',
+ 'defaults' => [
+ 'type' => null
+ ]
+ ],
+ ],
+];
diff --git a/apps/testing/lib/Application.php b/apps/testing/lib/AppInfo/Application.php
index 8f42d0442dd..9d2b100e8b0 100644
--- a/apps/testing/lib/Application.php
+++ b/apps/testing/lib/AppInfo/Application.php
@@ -19,7 +19,7 @@
*
*/
-namespace OCA\Testing;
+namespace OCA\Testing\AppInfo;
use OCP\AppFramework\App;
use OCA\Testing\AlternativeHomeUserBackend;
diff --git a/apps/testing/lib/Config.php b/apps/testing/lib/Controller/ConfigController.php
index 6cdd28d4b3e..7b3e73ab173 100644
--- a/apps/testing/lib/Config.php
+++ b/apps/testing/lib/Controller/ConfigController.php
@@ -20,52 +20,48 @@
*
*/
-namespace OCA\Testing;
+namespace OCA\Testing\Controller;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCSController;
use OCP\IConfig;
use OCP\IRequest;
-class Config {
+class ConfigController extends OCSController {
/** @var IConfig */
private $config;
- /** @var IRequest */
- private $request;
-
/**
- * @param IConfig $config
+ * @param string $appName
* @param IRequest $request
+ * @param IConfig $config
*/
- public function __construct(IConfig $config, IRequest $request) {
+ public function __construct($appName,
+ IRequest $request,
+ IConfig $config) {
+ parent::__construct($appName, $request);
$this->config = $config;
- $this->request = $request;
}
/**
- * @param array $parameters
- * @return \OC_OCS_Result
+ * @param string $appid
+ * @param string $configkey
+ * @param string $value
+ * @return DataResponse
*/
- public function setAppValue($parameters) {
- $app = $parameters['appid'];
- $configKey = $parameters['configkey'];
-
- $value = $this->request->getParam('value');
- $this->config->setAppValue($app, $configKey, $value);
-
- return new \OC_OCS_Result();
+ public function setAppValue($appid, $configkey, $value) {
+ $this->config->setAppValue($appid, $configkey, $value);
+ return new DataResponse();
}
/**
- * @param array $parameters
- * @return \OC_OCS_Result
+ * @param string $appid
+ * @param string $configkey
+ * @return DataResponse
*/
- public function deleteAppValue($parameters) {
- $app = $parameters['appid'];
- $configKey = $parameters['configkey'];
-
- $this->config->deleteAppValue($app, $configKey);
-
- return new \OC_OCS_Result();
+ public function deleteAppValue($appid, $configkey) {
+ $this->config->deleteAppValue($appid, $configkey);
+ return new DataResponse();
}
}
diff --git a/apps/testing/lib/Controller/LockingController.php b/apps/testing/lib/Controller/LockingController.php
new file mode 100644
index 00000000000..6056d9d5d7e
--- /dev/null
+++ b/apps/testing/lib/Controller/LockingController.php
@@ -0,0 +1,246 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Testing\Controller;
+
+use OC\Lock\DBLockingProvider;
+use OC\User\NoUserException;
+use OCA\Testing\Locking\FakeDBLockingProvider;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCS\OCSException;
+use OCP\AppFramework\OCSController;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotFoundException;
+use OCP\IConfig;
+use OCP\IDBConnection;
+use OCP\IRequest;
+use OCP\Lock\ILockingProvider;
+use OCP\Lock\LockedException;
+
+class LockingController extends OCSController {
+
+ /** @var ILockingProvider */
+ protected $lockingProvider;
+
+ /** @var FakeDBLockingProvider */
+ protected $fakeDBLockingProvider;
+
+ /** @var IDBConnection */
+ protected $connection;
+
+ /** @var IConfig */
+ protected $config;
+
+ /** @var IRootFolder */
+ protected $rootFolder;
+
+ /**
+ * @param string $appName
+ * @param IRequest $request
+ * @param ILockingProvider $lockingProvider
+ * @param FakeDBLockingProvider $fakeDBLockingProvider
+ * @param IDBConnection $connection
+ * @param IConfig $config
+ * @param IRootFolder $rootFolder
+ */
+ public function __construct($appName,
+ IRequest $request,
+ ILockingProvider $lockingProvider,
+ FakeDBLockingProvider $fakeDBLockingProvider,
+ IDBConnection $connection,
+ IConfig $config,
+ IRootFolder $rootFolder) {
+ parent::__construct($appName, $request);
+
+ $this->lockingProvider = $lockingProvider;
+ $this->fakeDBLockingProvider = $fakeDBLockingProvider;
+ $this->connection = $connection;
+ $this->config = $config;
+ $this->rootFolder = $rootFolder;
+ }
+
+ /**
+ * @return ILockingProvider
+ * @throws \RuntimeException
+ */
+ protected function getLockingProvider() {
+ if ($this->lockingProvider instanceof DBLockingProvider) {
+ return $this->fakeDBLockingProvider;
+ }
+ throw new \RuntimeException('Lock provisioning is only possible using the DBLockingProvider');
+ }
+
+ /**
+ * @param string $user
+ * @param string $path
+ * @return string
+ * @throws NotFoundException
+ */
+ protected function getPath($user, $path) {
+ $node = $this->rootFolder->getUserFolder($user)->get($path);
+ return 'files/' . md5($node->getStorage()->getId() . '::' . trim($node->getInternalPath(), '/'));
+ }
+
+ /**
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function isLockingEnabled() {
+ try {
+ $this->getLockingProvider();
+ return new DataResponse();
+ } catch (\RuntimeException $e) {
+ throw new OCSException($e->getMessage(), Http::STATUS_NOT_IMPLEMENTED, $e);
+ }
+ }
+
+ /**
+ * @param int $type
+ * @param string $user
+ * @param string $path
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function acquireLock($type, $user, $path) {
+ try {
+ $path = $this->getPath($user, $path);
+ } catch (NoUserException $e) {
+ throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e);
+ } catch (NotFoundException $e) {
+ throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e);
+ }
+
+ $lockingProvider = $this->getLockingProvider();
+
+ try {
+ $lockingProvider->acquireLock($path, $type);
+ $this->config->setAppValue('testing', 'locking_' . $path, $type);
+ return new DataResponse();
+ } catch (LockedException $e) {
+ throw new OCSException('', Http::STATUS_LOCKED, $e);
+ }
+ }
+
+ /**
+ * @param int $type
+ * @param string $user
+ * @param string $path
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function changeLock($type, $user, $path) {
+ try {
+ $path = $this->getPath($user, $path);
+ } catch (NoUserException $e) {
+ throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e);
+ } catch (NotFoundException $e) {
+ throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e);
+ }
+
+ $lockingProvider = $this->getLockingProvider();
+
+ try {
+ $lockingProvider->changeLock($path, $type);
+ $this->config->setAppValue('testing', 'locking_' . $path, $type);
+ return new DataResponse();
+ } catch (LockedException $e) {
+ throw new OCSException('', Http::STATUS_LOCKED, $e);
+ }
+ }
+
+ /**
+ * @param int $type
+ * @param string $user
+ * @param string $path
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function releaseLock($type, $user, $path) {
+ try {
+ $path = $this->getPath($user, $path);
+ } catch (NoUserException $e) {
+ throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e);
+ } catch (NotFoundException $e) {
+ throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e);
+ }
+
+ $lockingProvider = $this->getLockingProvider();
+
+ try {
+ $lockingProvider->releaseLock($path, $type);
+ $this->config->deleteAppValue('testing', 'locking_' . $path);
+ return new DataResponse();
+ } catch (LockedException $e) {
+ throw new OCSException('', Http::STATUS_LOCKED, $e);
+ }
+ }
+
+ /**
+ * @param int $type
+ * @param string $user
+ * @param string $path
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function isLocked($type, $user, $path) {
+ try {
+ $path = $this->getPath($user, $path);
+ } catch (NoUserException $e) {
+ throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e);
+ } catch (NotFoundException $e) {
+ throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e);
+ }
+
+ $lockingProvider = $this->getLockingProvider();
+
+ if ($lockingProvider->isLocked($path, $type)) {
+ return new DataResponse();
+ }
+
+ throw new OCSException('', Http::STATUS_LOCKED);
+ }
+
+ /**
+ * @param int $type
+ * @return DataResponse
+ */
+ public function releaseAll($type = null) {
+ $lockingProvider = $this->getLockingProvider();
+
+ foreach ($this->config->getAppKeys('testing') as $lock) {
+ if (strpos($lock, 'locking_') === 0) {
+ $path = substr($lock, strlen('locking_'));
+
+ if ($type === ILockingProvider::LOCK_EXCLUSIVE && (int)$this->config->getAppValue('testing', $lock) === ILockingProvider::LOCK_EXCLUSIVE) {
+ $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
+ } else if ($type === ILockingProvider::LOCK_SHARED && (int)$this->config->getAppValue('testing', $lock) === ILockingProvider::LOCK_SHARED) {
+ $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
+ } else {
+ $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
+ }
+ }
+ }
+
+ return new DataResponse();
+ }
+}
diff --git a/apps/testing/locking/fakedblockingprovider.php b/apps/testing/lib/Locking/FakeDBLockingProvider.php
index 174cc2ec7fe..174cc2ec7fe 100644
--- a/apps/testing/locking/fakedblockingprovider.php
+++ b/apps/testing/lib/Locking/FakeDBLockingProvider.php
diff --git a/apps/testing/locking/provisioning.php b/apps/testing/locking/provisioning.php
deleted file mode 100644
index 7e3256ec605..00000000000
--- a/apps/testing/locking/provisioning.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OCA\Testing\Locking;
-
-use OC\Lock\DBLockingProvider;
-use OC\User\NoUserException;
-use OCP\AppFramework\Http;
-use OCP\Files\NotFoundException;
-use OCP\IConfig;
-use OCP\IDBConnection;
-use OCP\IRequest;
-use OCP\Lock\ILockingProvider;
-use OCP\Lock\LockedException;
-
-class Provisioning {
-
- /** @var ILockingProvider */
- protected $lockingProvider;
-
- /** @var IDBConnection */
- protected $connection;
-
- /** @var IConfig */
- protected $config;
-
- /** @var IRequest */
- protected $request;
-
- /**
- * @param ILockingProvider $lockingProvider
- * @param IDBConnection $connection
- * @param IConfig $config
- * @param IRequest $request
- */
- public function __construct(ILockingProvider $lockingProvider, IDBConnection $connection, IConfig $config, IRequest $request) {
- $this->lockingProvider = $lockingProvider;
- $this->connection = $connection;
- $this->config = $config;
- $this->request = $request;
- }
-
- /**
- * @return ILockingProvider
- */
- protected function getLockingProvider() {
- if ($this->lockingProvider instanceof DBLockingProvider) {
- return \OC::$server->query('OCA\Testing\Locking\FakeDBLockingProvider');
- } else {
- throw new \RuntimeException('Lock provisioning is only possible using the DBLockingProvider');
- }
- }
-
- /**
- * @param array $parameters
- * @return int
- */
- protected function getType($parameters) {
- return isset($parameters['type']) ? (int) $parameters['type'] : 0;
- }
-
- /**
- * @param array $parameters
- * @return int
- */
- protected function getPath($parameters) {
- $node = \OC::$server->getRootFolder()
- ->getUserFolder($parameters['user'])
- ->get($this->request->getParam('path'));
- return 'files/' . md5($node->getStorage()->getId() . '::' . trim($node->getInternalPath(), '/'));
- }
-
- /**
- * @return \OC_OCS_Result
- */
- public function isLockingEnabled() {
- try {
- $this->getLockingProvider();
- return new \OC_OCS_Result(null, 100);
- } catch (\RuntimeException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_IMPLEMENTED, $e->getMessage());
- }
- }
-
- /**
- * @param array $parameters
- * @return \OC_OCS_Result
- */
- public function acquireLock(array $parameters) {
- try {
- $path = $this->getPath($parameters);
- } catch (NoUserException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found');
- } catch (NotFoundException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found');
- }
- $type = $this->getType($parameters);
-
- $lockingProvider = $this->getLockingProvider();
-
- try {
- $lockingProvider->acquireLock($path, $type);
- $this->config->setAppValue('testing', 'locking_' . $path, $type);
- return new \OC_OCS_Result(null, 100);
- } catch (LockedException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_LOCKED);
- }
- }
-
- /**
- * @param array $parameters
- * @return \OC_OCS_Result
- */
- public function changeLock(array $parameters) {
- try {
- $path = $this->getPath($parameters);
- } catch (NoUserException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found');
- } catch (NotFoundException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found');
- }
- $type = $this->getType($parameters);
-
- $lockingProvider = $this->getLockingProvider();
-
- try {
- $lockingProvider->changeLock($path, $type);
- $this->config->setAppValue('testing', 'locking_' . $path, $type);
- return new \OC_OCS_Result(null, 100);
- } catch (LockedException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_LOCKED);
- }
- }
-
- /**
- * @param array $parameters
- * @return \OC_OCS_Result
- */
- public function releaseLock(array $parameters) {
- try {
- $path = $this->getPath($parameters);
- } catch (NoUserException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found');
- } catch (NotFoundException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found');
- }
- $type = $this->getType($parameters);
-
- $lockingProvider = $this->getLockingProvider();
-
- try {
- $lockingProvider->releaseLock($path, $type);
- $this->config->deleteAppValue('testing', 'locking_' . $path);
- return new \OC_OCS_Result(null, 100);
- } catch (LockedException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_LOCKED);
- }
- }
-
- /**
- * @param array $parameters
- * @return \OC_OCS_Result
- */
- public function isLocked(array $parameters) {
- try {
- $path = $this->getPath($parameters);
- } catch (NoUserException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found');
- } catch (NotFoundException $e) {
- return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found');
- }
- $type = $this->getType($parameters);
-
- $lockingProvider = $this->getLockingProvider();
-
- if ($lockingProvider->isLocked($path, $type)) {
- return new \OC_OCS_Result(null, 100);
- }
-
- return new \OC_OCS_Result(null, Http::STATUS_LOCKED);
- }
-
- /**
- * @param array $parameters
- * @return \OC_OCS_Result
- */
- public function releaseAll(array $parameters) {
- $type = $this->getType($parameters);
-
- $lockingProvider = $this->getLockingProvider();
-
- foreach ($this->config->getAppKeys('testing') as $lock) {
- if (strpos($lock, 'locking_') === 0) {
- $path = substr($lock, strlen('locking_'));
-
- if ($type === ILockingProvider::LOCK_EXCLUSIVE && $this->config->getAppValue('testing', $lock) == ILockingProvider::LOCK_EXCLUSIVE) {
- $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
- } else if ($type === ILockingProvider::LOCK_SHARED && $this->config->getAppValue('testing', $lock) == ILockingProvider::LOCK_SHARED) {
- $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
- } else {
- $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock));
- }
- }
- }
-
- return new \OC_OCS_Result(null, 100);
- }
-}
diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss
index 20b84d2a0d3..1f18cc068c2 100644
--- a/apps/theming/css/theming.scss
+++ b/apps/theming/css/theming.scss
@@ -20,8 +20,8 @@
filter: invert(1);
filter: progid:DXImageTransform.Microsoft.BasicImage(invert='1');
}
- #contactsmenu .icon-contacts {
- background-image: url('../../../core/img/places/contacts-dark.svg');
+ #contactsmenu .icon-contacts svg path {
+ fill: #000;
}
#settings .icon-settings-white {
background-image: url('../../../core/img/actions/settings-dark.svg');
diff --git a/apps/theming/l10n/ar.js b/apps/theming/l10n/ar.js
index d1ac1d3b117..c88b7be872d 100644
--- a/apps/theming/l10n/ar.js
+++ b/apps/theming/l10n/ar.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"theming",
{
+ "Loading preview…" : "جار تحميل المعاينة ...",
"Saved" : "تم الحفظ",
"Admin" : "ادارة",
"a safe home for all your data" : "مكان آمن لكل معلوماتك",
@@ -12,7 +13,9 @@ OC.L10N.register(
"Unsupported image type" : "صيغة الصورة غير مقبولة",
"You are already using a custom theme" : "انت تستعمل قالب مخصص",
"Theming" : "تخصيص القالب",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.",
"Name" : "الاسم",
+ "Reset to default" : "اعادة تعيين الافتراضيات",
"Web address" : "عنوان صفحة أنترنت",
"Web address https://…" : "عنوان صفحة أنترنت https://",
"Slogan" : "شعار",
@@ -21,6 +24,7 @@ OC.L10N.register(
"Upload new logo" : "رفع شعار جديد",
"Login image" : "صورة الدخول",
"Upload new login background" : "تحميل خلفية جديدة للدخول",
+ "Remove background image" : "إزالة صورة الخلفية",
"reset to default" : "إلغاء كل التغييرات",
"Log in image" : "صورة الدخول"
},
diff --git a/apps/theming/l10n/ar.json b/apps/theming/l10n/ar.json
index 25e3a8cd7cf..bd7aca38418 100644
--- a/apps/theming/l10n/ar.json
+++ b/apps/theming/l10n/ar.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Loading preview…" : "جار تحميل المعاينة ...",
"Saved" : "تم الحفظ",
"Admin" : "ادارة",
"a safe home for all your data" : "مكان آمن لكل معلوماتك",
@@ -10,7 +11,9 @@
"Unsupported image type" : "صيغة الصورة غير مقبولة",
"You are already using a custom theme" : "انت تستعمل قالب مخصص",
"Theming" : "تخصيص القالب",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.",
"Name" : "الاسم",
+ "Reset to default" : "اعادة تعيين الافتراضيات",
"Web address" : "عنوان صفحة أنترنت",
"Web address https://…" : "عنوان صفحة أنترنت https://",
"Slogan" : "شعار",
@@ -19,6 +22,7 @@
"Upload new logo" : "رفع شعار جديد",
"Login image" : "صورة الدخول",
"Upload new login background" : "تحميل خلفية جديدة للدخول",
+ "Remove background image" : "إزالة صورة الخلفية",
"reset to default" : "إلغاء كل التغييرات",
"Log in image" : "صورة الدخول"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
diff --git a/apps/theming/l10n/ca.js b/apps/theming/l10n/ca.js
new file mode 100644
index 00000000000..ae523acb2b1
--- /dev/null
+++ b/apps/theming/l10n/ca.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "theming",
+ {
+ "Loading preview…" : "Carregant vista prèvia ...",
+ "Saved" : "Guardat",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "un lloc segur per a les teves dades",
+ "The given name is too long" : "El nom introduït és massa llarg",
+ "The given web address is too long" : "L'adreça web proporcionada és massa llarga",
+ "The given slogan is too long" : "El lema indicat és massa llarg",
+ "The given color is invalid" : "El color donat no és vàlid",
+ "No file uploaded" : "No s'ha carregat cap fitxer",
+ "Unsupported image type" : "Tipus d'imatge no compatible",
+ "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat",
+ "Theming" : "Adaptació de temes",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.",
+ "Name" : "Nom",
+ "Reset to default" : "Restablir al valor predeterminat",
+ "Web address" : "Adreça web",
+ "Web address https://…" : "Adreça del servidor https://…",
+ "Slogan" : "Lema",
+ "Color" : "Color",
+ "Logo" : "Logotip",
+ "Upload new logo" : "Penjar un nou logotip",
+ "Login image" : "Login logo",
+ "Upload new login background" : "Carregar nou fons d'inici de sessió",
+ "Remove background image" : "Elimina la imatge de fons",
+ "reset to default" : "restablir a configuració predeterminada",
+ "Log in image" : "Imatge d'entrada"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/ca.json b/apps/theming/l10n/ca.json
new file mode 100644
index 00000000000..794bf8ba05c
--- /dev/null
+++ b/apps/theming/l10n/ca.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Loading preview…" : "Carregant vista prèvia ...",
+ "Saved" : "Guardat",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "un lloc segur per a les teves dades",
+ "The given name is too long" : "El nom introduït és massa llarg",
+ "The given web address is too long" : "L'adreça web proporcionada és massa llarga",
+ "The given slogan is too long" : "El lema indicat és massa llarg",
+ "The given color is invalid" : "El color donat no és vàlid",
+ "No file uploaded" : "No s'ha carregat cap fitxer",
+ "Unsupported image type" : "Tipus d'imatge no compatible",
+ "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat",
+ "Theming" : "Adaptació de temes",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.",
+ "Name" : "Nom",
+ "Reset to default" : "Restablir al valor predeterminat",
+ "Web address" : "Adreça web",
+ "Web address https://…" : "Adreça del servidor https://…",
+ "Slogan" : "Lema",
+ "Color" : "Color",
+ "Logo" : "Logotip",
+ "Upload new logo" : "Penjar un nou logotip",
+ "Login image" : "Login logo",
+ "Upload new login background" : "Carregar nou fons d'inici de sessió",
+ "Remove background image" : "Elimina la imatge de fons",
+ "reset to default" : "restablir a configuració predeterminada",
+ "Log in image" : "Imatge d'entrada"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js
new file mode 100644
index 00000000000..7cf3019f55f
--- /dev/null
+++ b/apps/theming/l10n/ja.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "theming",
+ {
+ "Loading preview…" : "プレビューを読込み中...",
+ "Saved" : "保存済み",
+ "Admin" : "管理者",
+ "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム",
+ "The given name is too long" : "名前が長すぎます",
+ "The given web address is too long" : "Webアドレスが長すぎます",
+ "The given slogan is too long" : "スローガンが長すぎます",
+ "The given color is invalid" : "無効な色です",
+ "No file uploaded" : "ファイルがアップロードされていません",
+ "Unsupported image type" : "サポートされていない画像形式です",
+ "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています",
+ "Theming" : "テーマ",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。",
+ "Name" : "名前",
+ "Reset to default" : "デフォルトに戻す",
+ "Web address" : "Webアドレス",
+ "Web address https://…" : "Webアドレス https://...",
+ "Slogan" : "スローガン",
+ "Color" : "色",
+ "Logo" : "ロゴ",
+ "Upload new logo" : "新しいロゴをアップロード",
+ "Login image" : "ログイン画像",
+ "Upload new login background" : "新しいログイン背景画像をアップロード",
+ "Remove background image" : "背景画像を削除",
+ "reset to default" : "デフォルトに戻す",
+ "Log in image" : "ログイン画像"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json
new file mode 100644
index 00000000000..69c37a17500
--- /dev/null
+++ b/apps/theming/l10n/ja.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Loading preview…" : "プレビューを読込み中...",
+ "Saved" : "保存済み",
+ "Admin" : "管理者",
+ "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム",
+ "The given name is too long" : "名前が長すぎます",
+ "The given web address is too long" : "Webアドレスが長すぎます",
+ "The given slogan is too long" : "スローガンが長すぎます",
+ "The given color is invalid" : "無効な色です",
+ "No file uploaded" : "ファイルがアップロードされていません",
+ "Unsupported image type" : "サポートされていない画像形式です",
+ "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています",
+ "Theming" : "テーマ",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。",
+ "Name" : "名前",
+ "Reset to default" : "デフォルトに戻す",
+ "Web address" : "Webアドレス",
+ "Web address https://…" : "Webアドレス https://...",
+ "Slogan" : "スローガン",
+ "Color" : "色",
+ "Logo" : "ロゴ",
+ "Upload new logo" : "新しいロゴをアップロード",
+ "Login image" : "ログイン画像",
+ "Upload new login background" : "新しいログイン背景画像をアップロード",
+ "Remove background image" : "背景画像を削除",
+ "reset to default" : "デフォルトに戻す",
+ "Log in image" : "ログイン画像"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/theming/l10n/lv.js b/apps/theming/l10n/lv.js
new file mode 100644
index 00000000000..e579c6338f9
--- /dev/null
+++ b/apps/theming/l10n/lv.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "theming",
+ {
+ "Loading preview…" : "Ielādē priekšskatījumu...",
+ "Saved" : "Saglabāts",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "droša vieta visiem jūsu datiem",
+ "The given name is too long" : "Norādītais nosaukums ir pārāk garš",
+ "The given web address is too long" : "Norādītā adrese ir pārāk gara",
+ "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs",
+ "The given color is invalid" : "Norādītā krāsa ir nederīga",
+ "No file uploaded" : "Nav augšupielādēta faila",
+ "Unsupported image type" : "Neatbalstīts attēla tips",
+ "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu",
+ "Theming" : "Dizains",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.",
+ "Name" : "Nosaukums",
+ "Reset to default" : "Atiestatīt",
+ "Web address" : "Tīmekļa adrese",
+ "Web address https://…" : "Servera adrese https://…",
+ "Slogan" : "Sauklis",
+ "Color" : "Krāsa",
+ "Logo" : "Logo",
+ "Upload new logo" : "Augšupielādēt jaunu logo",
+ "Login image" : "Pieslēgšanās fona attēls",
+ "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu",
+ "Remove background image" : "Noņemt fona attēlu",
+ "reset to default" : "Atiestatīt",
+ "Log in image" : "Pieslēgšanas fona attēls"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/theming/l10n/lv.json b/apps/theming/l10n/lv.json
new file mode 100644
index 00000000000..6c0bbaa90a8
--- /dev/null
+++ b/apps/theming/l10n/lv.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Loading preview…" : "Ielādē priekšskatījumu...",
+ "Saved" : "Saglabāts",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "droša vieta visiem jūsu datiem",
+ "The given name is too long" : "Norādītais nosaukums ir pārāk garš",
+ "The given web address is too long" : "Norādītā adrese ir pārāk gara",
+ "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs",
+ "The given color is invalid" : "Norādītā krāsa ir nederīga",
+ "No file uploaded" : "Nav augšupielādēta faila",
+ "Unsupported image type" : "Neatbalstīts attēla tips",
+ "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu",
+ "Theming" : "Dizains",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.",
+ "Name" : "Nosaukums",
+ "Reset to default" : "Atiestatīt",
+ "Web address" : "Tīmekļa adrese",
+ "Web address https://…" : "Servera adrese https://…",
+ "Slogan" : "Sauklis",
+ "Color" : "Krāsa",
+ "Logo" : "Logo",
+ "Upload new logo" : "Augšupielādēt jaunu logo",
+ "Login image" : "Pieslēgšanās fona attēls",
+ "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu",
+ "Remove background image" : "Noņemt fona attēlu",
+ "reset to default" : "Atiestatīt",
+ "Log in image" : "Pieslēgšanas fona attēls"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/theming/l10n/sq.js b/apps/theming/l10n/sq.js
new file mode 100644
index 00000000000..a8bb7640d2f
--- /dev/null
+++ b/apps/theming/l10n/sq.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "theming",
+ {
+ "Loading preview…" : "Duke ngarkuar pamjen paraprake...",
+ "Saved" : "E ruajtur",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "një vënd i sigurtë për të dhënat e tua ",
+ "The given name is too long" : "Emri i dhënë është tepër i gjatë ",
+ "The given web address is too long" : "Adresa e dhënë e ueb-it është tepër e gjate ",
+ "The given slogan is too long" : "Slogani i dhënë është shumë i gjatë ",
+ "The given color is invalid" : "Ngjyra e dhënë është invalide ",
+ "No file uploaded" : "Asnjë skedar i ngarkuar",
+ "Unsupported image type" : "Lloj imazhi i pa suportuar",
+ "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë",
+ "Theming" : "Duke vendosur theme-n",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.",
+ "Name" : "Emri",
+ "Reset to default" : "Rivendos tek të paracaktuarat",
+ "Web address" : "Adresa e Web",
+ "Web address https://…" : "Adresë uebi https://...",
+ "Slogan" : "Sllogan",
+ "Color" : "Ngjyrë ",
+ "Logo" : "Logo",
+ "Upload new logo" : "Ngarko logo të re ",
+ "Login image" : "Imazhi i hyrjes",
+ "Upload new login background" : "Ngarko background të ri hyrjeje",
+ "Remove background image" : "Hiqni imazhin në sfond",
+ "reset to default" : "rivendos tek të paracaktuarat",
+ "Log in image" : "Imazhi i identifikimit"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/sq.json b/apps/theming/l10n/sq.json
new file mode 100644
index 00000000000..be6b236c56f
--- /dev/null
+++ b/apps/theming/l10n/sq.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Loading preview…" : "Duke ngarkuar pamjen paraprake...",
+ "Saved" : "E ruajtur",
+ "Admin" : "Admin",
+ "a safe home for all your data" : "një vënd i sigurtë për të dhënat e tua ",
+ "The given name is too long" : "Emri i dhënë është tepër i gjatë ",
+ "The given web address is too long" : "Adresa e dhënë e ueb-it është tepër e gjate ",
+ "The given slogan is too long" : "Slogani i dhënë është shumë i gjatë ",
+ "The given color is invalid" : "Ngjyra e dhënë është invalide ",
+ "No file uploaded" : "Asnjë skedar i ngarkuar",
+ "Unsupported image type" : "Lloj imazhi i pa suportuar",
+ "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë",
+ "Theming" : "Duke vendosur theme-n",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.",
+ "Name" : "Emri",
+ "Reset to default" : "Rivendos tek të paracaktuarat",
+ "Web address" : "Adresa e Web",
+ "Web address https://…" : "Adresë uebi https://...",
+ "Slogan" : "Sllogan",
+ "Color" : "Ngjyrë ",
+ "Logo" : "Logo",
+ "Upload new logo" : "Ngarko logo të re ",
+ "Login image" : "Imazhi i hyrjes",
+ "Upload new login background" : "Ngarko background të ri hyrjeje",
+ "Remove background image" : "Hiqni imazhin në sfond",
+ "reset to default" : "rivendos tek të paracaktuarat",
+ "Log in image" : "Imazhi i identifikimit"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js
new file mode 100644
index 00000000000..507a71e10c9
--- /dev/null
+++ b/apps/theming/l10n/zh_TW.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "theming",
+ {
+ "Loading preview…" : "正在載入即時預覽...",
+ "Saved" : "已儲存",
+ "Admin" : "管理員",
+ "a safe home for all your data" : "你資料的安全屋",
+ "The given name is too long" : "指定的名稱太長",
+ "The given web address is too long" : "提供的網址太長",
+ "The given slogan is too long" : "指定的口號太長",
+ "The given color is invalid" : "指定的顏色無效",
+ "No file uploaded" : "未上傳檔案",
+ "Unsupported image type" : "不支援的圖片類型",
+ "You are already using a custom theme" : "你已經使用了客製化主題",
+ "Theming" : "佈景主題",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主題功能可以讓用戶能進行簡單的編輯頁面外觀與觀看感受。且所有使用者都可以看見編輯結果。",
+ "Name" : "名稱",
+ "Reset to default" : "重設到預設值",
+ "Web address" : "網址",
+ "Web address https://…" : "網址 https://…",
+ "Slogan" : "口號",
+ "Color" : "顏色",
+ "Logo" : "Logo",
+ "Upload new logo" : "上傳新的Logo",
+ "Login image" : "登入圖片",
+ "Upload new login background" : "上傳新的登入背景",
+ "Remove background image" : "移除背景圖片",
+ "reset to default" : "重設到預設值",
+ "Log in image" : "登入圖片"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json
new file mode 100644
index 00000000000..6704a8fda7c
--- /dev/null
+++ b/apps/theming/l10n/zh_TW.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Loading preview…" : "正在載入即時預覽...",
+ "Saved" : "已儲存",
+ "Admin" : "管理員",
+ "a safe home for all your data" : "你資料的安全屋",
+ "The given name is too long" : "指定的名稱太長",
+ "The given web address is too long" : "提供的網址太長",
+ "The given slogan is too long" : "指定的口號太長",
+ "The given color is invalid" : "指定的顏色無效",
+ "No file uploaded" : "未上傳檔案",
+ "Unsupported image type" : "不支援的圖片類型",
+ "You are already using a custom theme" : "你已經使用了客製化主題",
+ "Theming" : "佈景主題",
+ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主題功能可以讓用戶能進行簡單的編輯頁面外觀與觀看感受。且所有使用者都可以看見編輯結果。",
+ "Name" : "名稱",
+ "Reset to default" : "重設到預設值",
+ "Web address" : "網址",
+ "Web address https://…" : "網址 https://…",
+ "Slogan" : "口號",
+ "Color" : "顏色",
+ "Logo" : "Logo",
+ "Upload new logo" : "上傳新的Logo",
+ "Login image" : "登入圖片",
+ "Upload new login background" : "上傳新的登入背景",
+ "Remove background image" : "移除背景圖片",
+ "reset to default" : "重設到預設值",
+ "Log in image" : "登入圖片"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index 2b3be1e6413..dff24ee7960 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -51,6 +51,12 @@ class ThemingDefaults extends \OC_Defaults {
private $color;
/** @var Util */
private $util;
+ /** @var string */
+ private $iTunesAppId;
+ /** @var string */
+ private $iOSClientUrl;
+ /** @var string */
+ private $AndroidClientUrl;
/**
* ThemingDefaults constructor.
@@ -82,6 +88,9 @@ class ThemingDefaults extends \OC_Defaults {
$this->url = parent::getBaseUrl();
$this->slogan = parent::getSlogan();
$this->color = parent::getColorPrimary();
+ $this->iTunesAppId = parent::getiTunesAppId();
+ $this->iOSClientUrl = parent::getiOSClientUrl();
+ $this->AndroidClientUrl = parent::getAndroidClientUrl();
}
public function getName() {
@@ -180,6 +189,27 @@ class ThemingDefaults extends \OC_Defaults {
return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground') . '?v=' . $cacheBusterCounter;
}
+ /**
+ * @return string
+ */
+ public function getiTunesAppId() {
+ return $this->config->getAppValue('theming', 'iTunesAppId', $this->iTunesAppId);
+ }
+
+ /**
+ * @return string
+ */
+ public function getiOSClientUrl() {
+ return $this->config->getAppValue('theming', 'iOSClientUrl', $this->iOSClientUrl);
+ }
+
+ /**
+ * @return string
+ */
+ public function getAndroidClientUrl() {
+ return $this->config->getAppValue('theming', 'AndroidClientUrl', $this->AndroidClientUrl);
+ }
+
/**
* @return array scss variables to overwrite
@@ -290,5 +320,4 @@ class ThemingDefaults extends \OC_Defaults {
return $returnValue;
}
-
}
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index 1df16ea4976..f0e8fd92ca8 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -30,6 +30,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IConfig;
use OCP\Files\IRootFolder;
+use Leafo\ScssPhp\Compiler;
class Util {
@@ -95,10 +96,12 @@ class Util {
if (strlen($hex) !== 6) {
return 0;
}
- $r = hexdec(substr($hex, 0, 2));
- $g = hexdec(substr($hex, 2, 2));
- $b = hexdec(substr($hex, 4, 2));
- return (0.299 * $r + 0.587 * $g + 0.114 * $b)/255;
+ $red = hexdec(substr($hex, 0, 2));
+ $green = hexdec(substr($hex, 2, 2));
+ $blue = hexdec(substr($hex, 4, 2));
+ $compiler = new Compiler();
+ $hsl = $compiler->toHSL($red, $green, $blue);
+ return $hsl[3]/100;
}
/**
diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php
index 8646eaf865f..057229483e9 100644
--- a/apps/theming/tests/ThemingDefaultsTest.php
+++ b/apps/theming/tests/ThemingDefaultsTest.php
@@ -543,4 +543,65 @@ class ThemingDefaultsTest extends TestCase {
];
$this->assertEquals($expected, $this->template->getScssVariables());
}
+
+ public function testGetDefaultAndroidURL() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'AndroidClientUrl', 'https://play.google.com/store/apps/details?id=com.nextcloud.client')
+ ->willReturn('https://play.google.com/store/apps/details?id=com.nextcloud.client');
+
+ $this->assertEquals('https://play.google.com/store/apps/details?id=com.nextcloud.client', $this->template->getAndroidClientUrl());
+ }
+
+ public function testGetCustomAndroidURL() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'AndroidClientUrl', 'https://play.google.com/store/apps/details?id=com.nextcloud.client')
+ ->willReturn('https://play.google.com/store/apps/details?id=com.mycloud.client');
+
+ $this->assertEquals('https://play.google.com/store/apps/details?id=com.mycloud.client', $this->template->getAndroidClientUrl());
+ }
+
+ public function testGetDefaultiOSURL() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'iOSClientUrl', 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8')
+ ->willReturn('https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8');
+
+ $this->assertEquals('https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8', $this->template->getiOSClientUrl());
+ }
+
+ public function testGetCustomiOSURL() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'iOSClientUrl', 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8')
+ ->willReturn('https://itunes.apple.com/us/app/nextcloud/id1234567890?mt=8');
+
+ $this->assertEquals('https://itunes.apple.com/us/app/nextcloud/id1234567890?mt=8', $this->template->getiOSClientUrl());
+ }
+
+ public function testGetDefaultiTunesAppId() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'iTunesAppId', '1125420102')
+ ->willReturn('1125420102');
+
+ $this->assertEquals('1125420102', $this->template->getiTunesAppId());
+ }
+
+ public function testGetCustomiTunesAppId() {
+ $this->config
+ ->expects($this->once())
+ ->method('getAppValue')
+ ->with('theming', 'iTunesAppId', '1125420102')
+ ->willReturn('1234567890');
+
+ $this->assertEquals('1234567890', $this->template->getiTunesAppId());
+ }
+
}
diff --git a/apps/twofactor_backupcodes/l10n/sq.js b/apps/twofactor_backupcodes/l10n/sq.js
new file mode 100644
index 00000000000..83a7afbf272
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/sq.js
@@ -0,0 +1,19 @@
+OC.L10N.register(
+ "twofactor_backupcodes",
+ {
+ "Generate backup codes" : "Gjenero kodet rezerve",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Kodet rezervë janë gjeneruar. {{të përdorura}} nga {{totali}} kode janë përdorur.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Këto janë kodet tuaja rezervë. Ju lutemi ruajini dhe/ose printojini ato pasi nuk do të jeni në gjendje që ti lexoni më vonë",
+ "Save backup codes" : "Ruaj kodet e kopjuara",
+ "Print backup codes" : "Printo kodet rezervë ",
+ "Regenerate backup codes" : "Gjenero kodet e kopjuara",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Nëse gjeneroni kode rezervë, automaktikisht ju çaktivizoni kodet e vjetra.",
+ "An error occurred while generating your backup codes" : "Ndodhi një problem ndërsa ishin duke u prodhuar kodet tuaja rezervë",
+ "Nextcloud backup codes" : "Kodet rezervë të Nextcloud",
+ "You created two-factor backup codes for your account" : "Ju krijuat kodet rezervë me dy faktorë për llogarinë tuaj",
+ "Backup code" : "Kod i kopjuar",
+ "Use backup code" : "Përdorni kodin e kopjimit",
+ "Two factor backup codes" : "Dy kopje rezervë të faktorëve",
+ "Second-factor backup codes" : "Kodet e rezervimit të dytë të faktorëve"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/twofactor_backupcodes/l10n/sq.json b/apps/twofactor_backupcodes/l10n/sq.json
new file mode 100644
index 00000000000..f7ec11b3ecf
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/sq.json
@@ -0,0 +1,17 @@
+{ "translations": {
+ "Generate backup codes" : "Gjenero kodet rezerve",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Kodet rezervë janë gjeneruar. {{të përdorura}} nga {{totali}} kode janë përdorur.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Këto janë kodet tuaja rezervë. Ju lutemi ruajini dhe/ose printojini ato pasi nuk do të jeni në gjendje që ti lexoni më vonë",
+ "Save backup codes" : "Ruaj kodet e kopjuara",
+ "Print backup codes" : "Printo kodet rezervë ",
+ "Regenerate backup codes" : "Gjenero kodet e kopjuara",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Nëse gjeneroni kode rezervë, automaktikisht ju çaktivizoni kodet e vjetra.",
+ "An error occurred while generating your backup codes" : "Ndodhi një problem ndërsa ishin duke u prodhuar kodet tuaja rezervë",
+ "Nextcloud backup codes" : "Kodet rezervë të Nextcloud",
+ "You created two-factor backup codes for your account" : "Ju krijuat kodet rezervë me dy faktorë për llogarinë tuaj",
+ "Backup code" : "Kod i kopjuar",
+ "Use backup code" : "Përdorni kodin e kopjimit",
+ "Two factor backup codes" : "Dy kopje rezervë të faktorëve",
+ "Second-factor backup codes" : "Kodet e rezervimit të dytë të faktorëve"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/zh_TW.js b/apps/twofactor_backupcodes/l10n/zh_TW.js
new file mode 100644
index 00000000000..5d00fc9f615
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/zh_TW.js
@@ -0,0 +1,19 @@
+OC.L10N.register(
+ "twofactor_backupcodes",
+ {
+ "Generate backup codes" : "產生備用碼",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "備用碼已經建立。{{total}}組中有{{used}}組備用碼已被使用過",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "以下是您的備用碼,由於備用碼不會再次顯示,請儲存 並/或 列印。",
+ "Save backup codes" : "儲存備用碼",
+ "Print backup codes" : "列印備用碼",
+ "Regenerate backup codes" : "重新產生備用碼",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "若您重新產生備用碼,原來舊的備用碼將自動失效。",
+ "An error occurred while generating your backup codes" : "產生備用碼時發生錯誤。",
+ "Nextcloud backup codes" : "Nextcloud 備用碼",
+ "You created two-factor backup codes for your account" : "你的帳戶已建立兩階段認證的備用碼。",
+ "Backup code" : "備用碼",
+ "Use backup code" : "使用備用碼",
+ "Two factor backup codes" : "兩階段認證備用碼",
+ "Second-factor backup codes" : "第二階段認證備用碼"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/twofactor_backupcodes/l10n/zh_TW.json b/apps/twofactor_backupcodes/l10n/zh_TW.json
new file mode 100644
index 00000000000..5a95ae3ad2d
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/zh_TW.json
@@ -0,0 +1,17 @@
+{ "translations": {
+ "Generate backup codes" : "產生備用碼",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "備用碼已經建立。{{total}}組中有{{used}}組備用碼已被使用過",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "以下是您的備用碼,由於備用碼不會再次顯示,請儲存 並/或 列印。",
+ "Save backup codes" : "儲存備用碼",
+ "Print backup codes" : "列印備用碼",
+ "Regenerate backup codes" : "重新產生備用碼",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "若您重新產生備用碼,原來舊的備用碼將自動失效。",
+ "An error occurred while generating your backup codes" : "產生備用碼時發生錯誤。",
+ "Nextcloud backup codes" : "Nextcloud 備用碼",
+ "You created two-factor backup codes for your account" : "你的帳戶已建立兩階段認證的備用碼。",
+ "Backup code" : "備用碼",
+ "Use backup code" : "使用備用碼",
+ "Two factor backup codes" : "兩階段認證備用碼",
+ "Second-factor backup codes" : "第二階段認證備用碼"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/updatenotification/css/admin.css b/apps/updatenotification/css/admin.css
new file mode 100644
index 00000000000..59c8f056fbc
--- /dev/null
+++ b/apps/updatenotification/css/admin.css
@@ -0,0 +1,3 @@
+#oca_updatenotification_section p {
+ margin: 25px 0;
+}
diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js
index bb8695e6781..189674aefb4 100644
--- a/apps/updatenotification/l10n/el.js
+++ b/apps/updatenotification/l10n/el.js
@@ -18,7 +18,10 @@ OC.L10N.register(
"Checked on %s" : "Ελέγχθηκε στις %s",
"Update channel:" : "Ενημέρωση καναλιού:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.",
"Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:",
- "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή"
+ "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή.",
+ "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json
index 388ee178778..f9ca81933e3 100644
--- a/apps/updatenotification/l10n/el.json
+++ b/apps/updatenotification/l10n/el.json
@@ -16,7 +16,10 @@
"Checked on %s" : "Ελέγχθηκε στις %s",
"Update channel:" : "Ενημέρωση καναλιού:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.",
"Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:",
- "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή"
+ "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή.",
+ "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js
index f6b3825b56b..801b6f7c3fe 100644
--- a/apps/updatenotification/l10n/is.js
+++ b/apps/updatenotification/l10n/is.js
@@ -18,6 +18,7 @@ OC.L10N.register(
"Checked on %s" : "Athugað þann %s",
"Update channel:" : "Uppfærslurás:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.",
"Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:",
"Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.",
diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json
index c24c469b2f2..8ff7e4a004f 100644
--- a/apps/updatenotification/l10n/is.json
+++ b/apps/updatenotification/l10n/is.json
@@ -16,6 +16,7 @@
"Checked on %s" : "Athugað þann %s",
"Update channel:" : "Uppfærslurás:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.",
"Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:",
"Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.",
diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js
index 289eebe861e..90ee9342fa1 100644
--- a/apps/updatenotification/l10n/ja.js
+++ b/apps/updatenotification/l10n/ja.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"Update to %1$s is available." : "%1$s への更新が利用可能です。",
"Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。",
"Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。",
+ "Update notification" : "通知を更新",
"A new version is available: %s" : "新しいバージョンが利用可能: %s",
"Open updater" : "アップデーターを開く",
"Download now" : "今すぐダウンロード",
@@ -17,6 +18,7 @@ OC.L10N.register(
"Checked on %s" : "%s に確認",
"Update channel:" : "アップデートチャンネル:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "新しいリリースの後、公開されるまでには時間がかかります。\n新しいバージョンを公開して配布しますが、問題が発見されたときにバージョンをスキップすることがあります。",
"Notify members of the following groups about available updates:" : "次のグループのメンバーに対してアップデートのメッセージが表示されます:",
"Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。",
"The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。",
diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json
index fcead04da5b..c7e5c1bb449 100644
--- a/apps/updatenotification/l10n/ja.json
+++ b/apps/updatenotification/l10n/ja.json
@@ -8,6 +8,7 @@
"Update to %1$s is available." : "%1$s への更新が利用可能です。",
"Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。",
"Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。",
+ "Update notification" : "通知を更新",
"A new version is available: %s" : "新しいバージョンが利用可能: %s",
"Open updater" : "アップデーターを開く",
"Download now" : "今すぐダウンロード",
@@ -15,6 +16,7 @@
"Checked on %s" : "%s に確認",
"Update channel:" : "アップデートチャンネル:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "新しいリリースの後、公開されるまでには時間がかかります。\n新しいバージョンを公開して配布しますが、問題が発見されたときにバージョンをスキップすることがあります。",
"Notify members of the following groups about available updates:" : "次のグループのメンバーに対してアップデートのメッセージが表示されます:",
"Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。",
"The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。",
diff --git a/apps/updatenotification/l10n/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js
index 6c22873bf1d..c999ea97edd 100644
--- a/apps/updatenotification/l10n/lt_LT.js
+++ b/apps/updatenotification/l10n/lt_LT.js
@@ -1,8 +1,25 @@
OC.L10N.register(
"updatenotification",
{
- "Updater" : "Atnaujinimo programa",
+ "Update notifications" : "Atnaujinimų pranešimai",
+ "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome atnaujinimą rankiniu būdu",
+ "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.",
+ "Channel updated" : "Kanalas atnaujintas",
+ "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.",
+ "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.",
+ "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.",
+ "Update for {app} to version %s is available." : "Galimas {app} atnaujinimas į %s versiją.",
+ "Update notification" : "Atnaujinimų pranešimai",
+ "A new version is available: %s" : "Yra prieinama nauja versija: %s",
+ "Open updater" : "Atverti atnaujinimo programą",
+ "Download now" : "Atsisiųsti dabar",
+ "Your version is up to date." : "Tavo versija yra naujausia.",
+ "Checked on %s" : "Tikrinta %s",
"Update channel:" : "Atnaujinimo kanalas:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / bandomąjį kanalą. Bet niekada žeminti versijos ar pakeisti į stabilų kanalą."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Atkreipkite dėmesį kad po naujos versijos išleidimo gali praeiti šiek tiek laiko kol ti bus matoma čia. Mes išleidžiame naujas versijas paskirstytai pagal laiką savo klientams, ir kartais praleidžiame atnaujinimus pastebėjus klaidas.",
+ "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:",
+ "Only notification for app updates are available." : "Galimi tik pranešimai apie programos atnaujinimus.",
+ "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json
index db24c0be43b..e6143665742 100644
--- a/apps/updatenotification/l10n/lt_LT.json
+++ b/apps/updatenotification/l10n/lt_LT.json
@@ -1,6 +1,23 @@
{ "translations": {
- "Updater" : "Atnaujinimo programa",
+ "Update notifications" : "Atnaujinimų pranešimai",
+ "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome atnaujinimą rankiniu būdu",
+ "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.",
+ "Channel updated" : "Kanalas atnaujintas",
+ "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.",
+ "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.",
+ "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.",
+ "Update for {app} to version %s is available." : "Galimas {app} atnaujinimas į %s versiją.",
+ "Update notification" : "Atnaujinimų pranešimai",
+ "A new version is available: %s" : "Yra prieinama nauja versija: %s",
+ "Open updater" : "Atverti atnaujinimo programą",
+ "Download now" : "Atsisiųsti dabar",
+ "Your version is up to date." : "Tavo versija yra naujausia.",
+ "Checked on %s" : "Tikrinta %s",
"Update channel:" : "Atnaujinimo kanalas:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / bandomąjį kanalą. Bet niekada žeminti versijos ar pakeisti į stabilų kanalą."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Atkreipkite dėmesį kad po naujos versijos išleidimo gali praeiti šiek tiek laiko kol ti bus matoma čia. Mes išleidžiame naujas versijas paskirstytai pagal laiką savo klientams, ir kartais praleidžiame atnaujinimus pastebėjus klaidas.",
+ "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:",
+ "Only notification for app updates are available." : "Galimi tik pranešimai apie programos atnaujinimus.",
+ "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js
index 6f0b0683ef5..0aba2eb911a 100644
--- a/apps/updatenotification/l10n/sq.js
+++ b/apps/updatenotification/l10n/sq.js
@@ -18,6 +18,7 @@ OC.L10N.register(
"Checked on %s" : "Kontrolluar më %s",
"Update channel:" : "Kanal përditësimesh:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.",
"Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:",
"Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.",
diff --git a/apps/updatenotification/l10n/sq.json b/apps/updatenotification/l10n/sq.json
index e013aa84452..a5f5f4a1c46 100644
--- a/apps/updatenotification/l10n/sq.json
+++ b/apps/updatenotification/l10n/sq.json
@@ -16,6 +16,7 @@
"Checked on %s" : "Kontrolluar më %s",
"Update channel:" : "Kanal përditësimesh:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.",
"Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:",
"Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.",
diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js
index b7e292cff7b..b3e6b4d7712 100644
--- a/apps/updatenotification/l10n/zh_CN.js
+++ b/apps/updatenotification/l10n/zh_CN.js
@@ -18,6 +18,7 @@ OC.L10N.register(
"Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "请注意, 在新版本发布后, 它可能需要一段时间才能显示在这里。新版本发布后, 随着时间的推移, 当用户发现问题时我们可能会跳过一个版本。",
"Notify members of the following groups about available updates:" : "提醒一下组群的用户关于可用的更新:",
"Only notification for app updates are available." : "仅提醒应用更新就绪。",
"The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器",
diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json
index bee2c4f7ea1..f0c1eeb397b 100644
--- a/apps/updatenotification/l10n/zh_CN.json
+++ b/apps/updatenotification/l10n/zh_CN.json
@@ -16,6 +16,7 @@
"Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "请注意, 在新版本发布后, 它可能需要一段时间才能显示在这里。新版本发布后, 随着时间的推移, 当用户发现问题时我们可能会跳过一个版本。",
"Notify members of the following groups about available updates:" : "提醒一下组群的用户关于可用的更新:",
"Only notification for app updates are available." : "仅提醒应用更新就绪。",
"The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器",
diff --git a/apps/updatenotification/l10n/zh_TW.js b/apps/updatenotification/l10n/zh_TW.js
index a7e225e3413..3b0955f3ef9 100644
--- a/apps/updatenotification/l10n/zh_TW.js
+++ b/apps/updatenotification/l10n/zh_TW.js
@@ -5,8 +5,12 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新",
"{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新",
"Channel updated" : "頻道已更新",
+ "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新",
+ "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。",
"Update to %1$s is available." : "更新版 %1$s 已經釋出",
"Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出",
+ "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新",
+ "Update notification" : "更新通知",
"A new version is available: %s" : "新版本可用:%s",
"Open updater" : "打開更新程式",
"Download now" : "現在下載",
@@ -14,8 +18,10 @@ OC.L10N.register(
"Checked on %s" : "於 %s 檢查過",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "請注意,新版本釋出後,需要過一段時間才會在此顯示通知。隨著時間推進,我們為用戶推出了新的版本,有時候會在發現問題時跳過前一個版本更新。",
"Notify members of the following groups about available updates:" : "有可用更新時通知這些群組:",
"Only notification for app updates are available." : "僅提供應用程式更新的通知",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期",
"The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新"
},
"nplurals=1; plural=0;");
diff --git a/apps/updatenotification/l10n/zh_TW.json b/apps/updatenotification/l10n/zh_TW.json
index 7386d753e94..1acf5a387c0 100644
--- a/apps/updatenotification/l10n/zh_TW.json
+++ b/apps/updatenotification/l10n/zh_TW.json
@@ -3,8 +3,12 @@
"Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新",
"{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新",
"Channel updated" : "頻道已更新",
+ "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新",
+ "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。",
"Update to %1$s is available." : "更新版 %1$s 已經釋出",
"Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出",
+ "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新",
+ "Update notification" : "更新通知",
"A new version is available: %s" : "新版本可用:%s",
"Open updater" : "打開更新程式",
"Download now" : "現在下載",
@@ -12,8 +16,10 @@
"Checked on %s" : "於 %s 檢查過",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。",
+ "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "請注意,新版本釋出後,需要過一段時間才會在此顯示通知。隨著時間推進,我們為用戶推出了新的版本,有時候會在發現問題時跳過前一個版本更新。",
"Notify members of the following groups about available updates:" : "有可用更新時通知這些群組:",
"Only notification for app updates are available." : "僅提供應用程式更新的通知",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期",
"The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php
index 0a867f1267c..fd68a6dd962 100644
--- a/apps/updatenotification/lib/Controller/AdminController.php
+++ b/apps/updatenotification/lib/Controller/AdminController.php
@@ -86,9 +86,8 @@ class AdminController extends Controller implements ISettings {
* @return TemplateResponse
*/
public function displayPanel() {
- $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime(
- $this->config->getAppValue('core', 'lastupdatedat')
- );
+ $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat');
+ $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp);
$channels = [
'daily',
@@ -106,15 +105,20 @@ class AdminController extends Controller implements ISettings {
$notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
+ $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/';
+ $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL);
+
$params = [
'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
+ 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0,
'lastChecked' => $lastUpdateCheck,
'currentChannel' => $currentChannel,
'channels' => $channels,
'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
'updaterEnabled' => (empty($updateState['updaterEnabled'])) ? false : $updateState['updaterEnabled'],
-
+ 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL,
+ 'updateServerURL' => $updateServerURL,
'notify_groups' => implode('|', $notifyGroups),
];
diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php
index e512825da04..2fc1d36b0cb 100644
--- a/apps/updatenotification/lib/Notification/Notifier.php
+++ b/apps/updatenotification/lib/Notification/Notifier.php
@@ -117,7 +117,7 @@ class Notifier implements INotifier {
}
$notification->setParsedSubject($l->t('Update for %1$s to version %2$s is available.', [$appName, $notification->getObjectId()]))
- ->setRichSubject($l->t('Update for {app} to version %s is available.', $notification->getObjectId()), [
+ ->setRichSubject($l->t('Update for {app} to version %s is available.', [$notification->getObjectId()]), [
'app' => [
'type' => 'app',
'id' => $notification->getObjectType(),
diff --git a/apps/updatenotification/templates/admin.php b/apps/updatenotification/templates/admin.php
index 369d4905a40..e09d19848e7 100644
--- a/apps/updatenotification/templates/admin.php
+++ b/apps/updatenotification/templates/admin.php
@@ -1,31 +1,50 @@
<?php
script('updatenotification', 'admin');
+ style('updatenotification', 'admin');
/** @var array $_ */
/** @var bool $isNewVersionAvailable */
$isNewVersionAvailable = $_['isNewVersionAvailable'];
/** @var string $newVersionString */
$newVersionString = $_['newVersionString'];
+ /** @var bool $isUpdateChecked */
+ $isUpdateChecked = $_['isUpdateChecked'];
/** @var string $lastCheckedDate */
$lastCheckedDate = $_['lastChecked'];
/** @var array $channels */
$channels = $_['channels'];
/** @var string $currentChannel */
$currentChannel = $_['currentChannel'];
+ /** @var string $updateServerURL */
+ $updateServerURL = $_['updateServerURL'];
+ /** @var bool $isDefaultUpdateServerURL */
+ $isDefaultUpdateServerURL = $_['isDefaultUpdateServerURL'];
?>
<form id="oca_updatenotification_section" class="followupsection">
- <?php if($isNewVersionAvailable === true) { ?>
- <strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
- <?php if ($_['updaterEnabled']) { ?>
- <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
+ <p>
+ <?php if ($isNewVersionAvailable === true) { ?>
+ <strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
+ <?php if ($_['updaterEnabled']) { ?>
+ <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
+ <?php } ?>
+ <?php if (!empty($_['downloadLink'])) { ?>
+ <a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a>
+ <?php } ?>
+ <?php } elseif (!$isUpdateChecked) { ?>
+ <?php p($l->t('The update check is not yet finished. Please refresh the page.')); ?>
+ <?php } else { ?>
+ <?php p($l->t('Your version is up to date.')); ?>
+ <span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span>
<?php } ?>
- <?php if (!empty($_['downloadLink'])) { ?>
- <a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a>
+
+ <?php if (!$isDefaultUpdateServerURL) { ?>
+ <br />
+ <em>
+ <?php p($l->t("A non-default update server is in use to be checked for updates:")); ?>
+ <code><?php p($updateServerURL); ?></code>
+ </em>
<?php } ?>
- <?php } else { ?>
- <?php p($l->t('Your version is up to date.')); ?>
- <span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span>
- <?php } ?>
+ </p>
<p>
<label for="release-channel"><?php p($l->t('Update channel:')) ?></label>
@@ -37,20 +56,16 @@
</option>
<?php } ?>
</select>
- <span id="channel_save_msg" class="msg"></span>
- </p>
- <p>
- <em><?php p($l->t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?></em>
+ <span id="channel_save_msg" class="msg"></span><br />
+ <em><?php p($l->t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?></em><br />
<em><?php p($l->t('Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found.')); ?></em>
</p>
<p id="oca_updatenotification_groups">
- <br />
<?php p($l->t('Notify members of the following groups about available updates:')); ?>
- <input name="oca_updatenotification_groups_list" type="hidden" id="oca_updatenotification_groups_list" value="<?php p($_['notify_groups']) ?>" style="width: 400px">
+ <input name="oca_updatenotification_groups_list" type="hidden" id="oca_updatenotification_groups_list" value="<?php p($_['notify_groups']) ?>" style="width: 400px"><br />
<em class="<?php if (!in_array($currentChannel, ['daily', 'git'])) p('hidden'); ?>">
- <br />
<?php p($l->t('Only notification for app updates are available.')); ?>
<?php if ($currentChannel === 'daily') p($l->t('The selected update channel makes dedicated notifications for the server obsolete.')); ?>
<?php if ($currentChannel === 'git') p($l->t('The selected update channel does not support updates of the server.')); ?>
diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php
index 31e852a9e2e..ebf044abffd 100644
--- a/apps/updatenotification/tests/Controller/AdminControllerTest.php
+++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php
@@ -103,6 +103,11 @@ class AdminControllerTest extends TestCase {
['core', 'lastupdatedat', '', '12345'],
['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
]);
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValue')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
+ ->willReturn('https://updates.nextcloud.com/server/');
$this->dateTimeFormatter
->expects($this->once())
->method('formatDateTime')
@@ -120,12 +125,15 @@ class AdminControllerTest extends TestCase {
$params = [
'isNewVersionAvailable' => true,
+ 'isUpdateChecked' => true,
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
'newVersionString' => '8.1.2',
'downloadLink' => 'https://downloads.nextcloud.org/server',
'updaterEnabled' => true,
+ 'isDefaultUpdateServerURL' => true,
+ 'updateServerURL' => 'https://updates.nextcloud.com/server/',
'notify_groups' => 'admin',
];
@@ -154,6 +162,11 @@ class AdminControllerTest extends TestCase {
['core', 'lastupdatedat', '', '12345'],
['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
]);
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValue')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
+ ->willReturn('https://updates.nextcloud.com/server/');
$this->dateTimeFormatter
->expects($this->once())
->method('formatDateTime')
@@ -166,12 +179,15 @@ class AdminControllerTest extends TestCase {
$params = [
'isNewVersionAvailable' => false,
+ 'isUpdateChecked' => true,
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
'newVersionString' => '',
'downloadLink' => '',
'updaterEnabled' => 0,
+ 'isDefaultUpdateServerURL' => true,
+ 'updateServerURL' => 'https://updates.nextcloud.com/server/',
'notify_groups' => 'admin',
];
diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php
index 0416e49767b..d48a6be9382 100644
--- a/apps/user_ldap/ajax/testConfiguration.php
+++ b/apps/user_ldap/ajax/testConfiguration.php
@@ -67,19 +67,19 @@ try {
$ldapWrapper->read($connection->getConnectionResource(), '', 'objectClass=*', array('dn'));
} catch (\Exception $e) {
if($e->getCode() === 1) {
- OCP\JSON::error(array('message' => $l->t('The configuration is invalid: anonymous bind is not allowed.')));
+ OCP\JSON::error(array('message' => $l->t('Invalid configuration: Anonymous binding is not allowed.')));
exit;
}
}
OCP\JSON::success(array('message'
- => $l->t('The configuration is valid and the connection could be established!')));
+ => $l->t('Valid configuration, connection established!')));
} else {
OCP\JSON::error(array('message'
- => $l->t('The configuration is valid, but the Bind failed. Please check the server settings and credentials.')));
+ => $l->t('Valid configuration, but binding failed. Please check the server settings and credentials.')));
}
} else {
OCP\JSON::error(array('message'
- => $l->t('The configuration is invalid. Please have a look at the logs for further details.')));
+ => $l->t('Invalid configuration. Please have a look at the logs for further details.')));
}
} catch (\Exception $e) {
OCP\JSON::error(array('message' => $e->getMessage()));
diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php
index 43ec69a950b..09f9b412342 100644
--- a/apps/user_ldap/appinfo/install.php
+++ b/apps/user_ldap/appinfo/install.php
@@ -21,10 +21,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
-$state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doSet');
+$config = \OC::$server->getConfig();
+$state = $config->getSystemValue('ldapIgnoreNamingRules', 'doSet');
if($state === 'doSet') {
OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
}
-$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
+$helper = new \OCA\User_LDAP\Helper($config);
$helper->setLDAPProvider();
diff --git a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
index a2537539ede..7cc35aae0aa 100644
--- a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
+++ b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
@@ -142,16 +142,16 @@ OCA = OCA || {};
var usersFound = parseInt(result.changes.ldap_test_loginname, 10);
if(usersFound < 1) {
var filter = $('<p>').text(result.changes.ldap_test_effective_filter).html();
- message = t('user_ldap', 'User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>' + filter);
+ message = t('user_ldap', 'User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>' + filter);
console.warn(filter);
isHtml = true;
} else if(usersFound === 1) {
message = t('user_ldap', 'User found and settings verified.');
} else if(usersFound > 1) {
- message = t('user_ldap', 'Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.');
+ message = t('user_ldap', 'Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.');
}
} else {
- message = t('user_ldap', 'An unspecified error occurred. Please check the settings and the log.');
+ message = t('user_ldap', 'An unspecified error occurred. Please check log and settings.');
if(!_.isUndefined(result.message) && result.message) {
message = result.message;
}
diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js
index 7a7433ac4bb..93ada9caa4e 100644
--- a/apps/user_ldap/l10n/ast.js
+++ b/apps/user_ldap/l10n/ast.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Fallu al llimpiar los mapeos.",
"Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ",
- "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración ye válida, pero falló'l vínculu. Por favor, comprueba la configuración y les credenciales nel sirvidor.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración nun ye válida. Por favor, écha-y un güeyu a los rexistros pa más detalles.",
"No action specified" : "Nun s'especificó l'aición",
"No configuration specified" : "Nun s'especificó la configuración",
"No data specified" : "Nun s'especificaron los datos",
@@ -42,16 +38,13 @@ OC.L10N.register(
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.",
"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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?",
"Select attributes" : "Esbillar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>",
"User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.",
"Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadru de grupu taba desactiváu , por mor qu'el servidor LDAP / AD nun almite memberOf .",
"_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"],
"_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap",
"Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada",
"Invalid Host" : "Agospiu non válidu",
"Test Configuration" : "Configuración de prueba",
diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json
index 6086745f064..45f77b2b6bd 100644
--- a/apps/user_ldap/l10n/ast.json
+++ b/apps/user_ldap/l10n/ast.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Fallu al llimpiar los mapeos.",
"Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ",
- "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración ye válida, pero falló'l vínculu. Por favor, comprueba la configuración y les credenciales nel sirvidor.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración nun ye válida. Por favor, écha-y un güeyu a los rexistros pa más detalles.",
"No action specified" : "Nun s'especificó l'aición",
"No configuration specified" : "Nun s'especificó la configuración",
"No data specified" : "Nun s'especificaron los datos",
@@ -40,16 +36,13 @@
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.",
"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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?",
"Select attributes" : "Esbillar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>",
"User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.",
"Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadru de grupu taba desactiváu , por mor qu'el servidor LDAP / AD nun almite memberOf .",
"_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"],
"_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap",
"Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada",
"Invalid Host" : "Agospiu non válidu",
"Test Configuration" : "Configuración de prueba",
diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js
index 8df1842e925..8f8065bfdbd 100644
--- a/apps/user_ldap/l10n/cs.js
+++ b/apps/user_ldap/l10n/cs.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Selhalo zrušení mapování.",
"Failed to delete the server configuration" : "Selhalo smazání nastavení serveru",
- "The configuration is invalid: anonymous bind is not allowed." : "Tato konfigurace není platná: anonymní bind není povolen.",
- "The configuration is valid and the connection could be established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Neplatná konfigurace: Anonymní navázání není povoleno.",
+ "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.",
"No action specified" : "Neurčena žádná akce",
"No configuration specified" : "Neurčena žádná konfigurace",
"No data specified" : "Neurčena žádná data",
@@ -45,10 +45,10 @@ 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?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?",
"Mode switch" : "Přepnutí módu",
"Select attributes" : "Vyberte atributy",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
"User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.",
- "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvažte zúžení vyhledávání, protože současné zahrnuje mnoho uživatelů, ze kterých se bude schopen přihlásit pouze první.",
+ "An unspecified error occurred. Please check log and settings." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD propojení",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
"Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost",
"Invalid Host" : "Neplatný hostitel",
"Test Configuration" : "Vyzkoušet nastavení",
diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json
index 95295cf94b1..1f7943695e5 100644
--- a/apps/user_ldap/l10n/cs.json
+++ b/apps/user_ldap/l10n/cs.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Selhalo zrušení mapování.",
"Failed to delete the server configuration" : "Selhalo smazání nastavení serveru",
- "The configuration is invalid: anonymous bind is not allowed." : "Tato konfigurace není platná: anonymní bind není povolen.",
- "The configuration is valid and the connection could be established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Neplatná konfigurace: Anonymní navázání není povoleno.",
+ "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.",
"No action specified" : "Neurčena žádná akce",
"No configuration specified" : "Neurčena žádná konfigurace",
"No data specified" : "Neurčena žádná data",
@@ -43,10 +43,10 @@
"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?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?",
"Mode switch" : "Přepnutí módu",
"Select attributes" : "Vyberte atributy",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
"User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.",
- "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvažte zúžení vyhledávání, protože současné zahrnuje mnoho uživatelů, ze kterých se bude schopen přihlásit pouze první.",
+ "An unspecified error occurred. Please check log and settings." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD propojení",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
"Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost",
"Invalid Host" : "Neplatný hostitel",
"Test Configuration" : "Vyzkoušet nastavení",
diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js
index d017a4d3bb3..0cf6247c809 100644
--- a/apps/user_ldap/l10n/da.js
+++ b/apps/user_ldap/l10n/da.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.",
"Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfigurationen er ugyldig: anonyme bindinger tillades ikke.",
- "The configuration is valid and the connection could be established!" : "Konfigurationen er korrekt og forbindelsen kunne etableres!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen er gyldig, men forbindelsen mislykkedes. Tjek venligst serverindstillingerne og akkreditiverne.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurationen er ugyldig. Se venligst i loggen for yderligere detaljer.",
"No action specified" : "Der er ikke angivet en handling",
"No configuration specified" : "Der er ikke angivet en konfiguration",
"No data specified" : "Der er ikke angivet data",
@@ -38,10 +34,7 @@ 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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?",
"Mode switch" : "Skift af tilstand",
"Select attributes" : "Vælg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
"User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men mere end én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.",
"Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod",
@@ -50,7 +43,6 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"],
"_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede ldap-indstillinger.",
"Could not find the desired feature" : "Fandt ikke den ønskede funktion",
"Invalid Host" : "Ugyldig vært",
"Test Configuration" : "Test konfigurationen",
diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json
index 0afde6bf4c0..db301ba175e 100644
--- a/apps/user_ldap/l10n/da.json
+++ b/apps/user_ldap/l10n/da.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.",
"Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfigurationen er ugyldig: anonyme bindinger tillades ikke.",
- "The configuration is valid and the connection could be established!" : "Konfigurationen er korrekt og forbindelsen kunne etableres!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen er gyldig, men forbindelsen mislykkedes. Tjek venligst serverindstillingerne og akkreditiverne.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurationen er ugyldig. Se venligst i loggen for yderligere detaljer.",
"No action specified" : "Der er ikke angivet en handling",
"No configuration specified" : "Der er ikke angivet en konfiguration",
"No data specified" : "Der er ikke angivet data",
@@ -36,10 +32,7 @@
"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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?",
"Mode switch" : "Skift af tilstand",
"Select attributes" : "Vælg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
"User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men mere end én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.",
"Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod",
@@ -48,7 +41,6 @@
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"],
"_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede ldap-indstillinger.",
"Could not find the desired feature" : "Fandt ikke den ønskede funktion",
"Invalid Host" : "Ugyldig vært",
"Test Configuration" : "Test konfigurationen",
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index c6f33f807e9..0f98e09228d 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
- "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt.",
- "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können in den Logdateien nachgelesen werden.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
+ "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ",
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
@@ -45,10 +45,10 @@ 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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll immer noch in den Modus gewechselt werden?",
"Mode switch" : "Modus wechseln",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein sich anzumelden. Verwende einen weiter einschränkenenden Filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.",
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"Test Configuration" : "Testkonfiguration",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index e4692eee43d..06d2dd6275a 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
- "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt.",
- "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können in den Logdateien nachgelesen werden.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
+ "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ",
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
@@ -43,10 +43,10 @@
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll immer noch in den Modus gewechselt werden?",
"Mode switch" : "Modus wechseln",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein sich anzumelden. Verwende einen weiter einschränkenenden Filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.",
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"Test Configuration" : "Testkonfiguration",
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index f3e64022ebf..0786dc85fd8 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
- "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.",
- "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
+ "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ",
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Logdateien. ",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
@@ -45,10 +45,10 @@ 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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwägen Sie, Ihre Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP/AD-Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.",
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"Test Configuration" : "Testkonfiguration",
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index 6aec7b8f2e7..96f53778d85 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
- "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.",
- "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
+ "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ",
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Logdateien. ",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
@@ -43,10 +43,10 @@
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwägen Sie, Ihre Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP/AD-Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.",
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"Test Configuration" : "Testkonfiguration",
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index 4ab5ad6efd9..b006f8a8860 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -3,10 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Αποτυχία εκκαθάρισης των αντιστοιχιών.",
"Failed to delete the server configuration" : "Αποτυχία διαγραφής ρυθμίσεων διακομιστή",
- "The configuration is invalid: anonymous bind is not allowed." : "Η διαμόρφωση δεν είναι έγκυρη: δεν επιτρέπεται ανώνυμη δέσμευση.",
- "The configuration is valid and the connection could be established!" : "Οι ρυθμίσεις είναι έγκυρες και η σύνδεση μπορεί να πραγματοποιηθεί!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Οι ρυθμίσεις είναι έγκυρες, αλλά απέτυχε η σύνδεση. Παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή και τα διαπιστευτήρια.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Η διαμόρφωση είναι άκυρη. Παρακαλώ ελέγξτε τα αρχεία σφαλμάτων για περαιτέρω λεπτομέρειες.",
+ "Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία",
"No action specified" : "Καμμία εντολή δεν προσδιορίστηκε",
"No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε",
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
@@ -43,21 +40,22 @@ 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?" : "Η αλλαγή της κατάστασης θα ενεργοποιήσει αυτόματα ερωτήματα LDAP. Ανάλογα με το μέγεθος του LDAP αυτό μπορεί να διαρκέσει αρκετά. Θέλετε ακόμη να αλλάξετε κατάσταση λειτουργίας;",
"Mode switch" : "Αλλαγή κατάστασης",
"Select attributes" : "Επιλογή χαρακτηριστικών",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ",
"User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.",
- "An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.",
+ "An unspecified error occurred. Please check log and settings." : "Παρουσιάστηκε ακαθόριστο λάθος. Παρακαλώ ελέγξτε το αρχείο καταγραφής και τις ρυθμίσεις.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.",
"Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.",
+ "Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό",
"Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.",
+ "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."],
+ "LDAP / AD integration" : "LDAP / AD ενσωμάτωση",
"_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"],
"_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP",
- "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητου χαρακτηριστικού",
+ "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού",
"Invalid Host" : "Άκυρος εξυπηρετητής",
- "Test Configuration" : "Δοκιμαστικες ρυθμισεις",
+ "Test Configuration" : "Δοκιμαστικές ρυθμίσεις",
"Help" : "Βοήθεια",
"Groups meeting these criteria are available in %s:" : "Οι ομάδες που πληρούν τα κριτήρια είναι διαθέσιμες σε %s:",
"Only these object classes:" : "Μόνο οι κλάσεις αντικειμένων:",
@@ -68,8 +66,10 @@ OC.L10N.register(
"Edit LDAP Query" : "Επεξεργασία ερωτήματος ",
"LDAP Filter:" : "Φίλτρο LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
+ "Verify settings and count the groups" : "Έλεγχος ρυθμίσεων και μέτρημα ομάδων",
"When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:",
"LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Μπορείτε να παρακάμψετε το πρωτόκολο αν δεν επιθυμείτε SSL. Εάν είναι επιθυμητό ξεκινήστε με ldaps://",
"LDAP / AD Email Address:" : "Διεύθυνση ηλ. ταχυδρομείου LDAP / AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Επιτρέπει με χρήση μια ιδιότητας email. Τα mail και mailPrimaryAddress θα επιτραπούν.",
"Other Attributes:" : "Άλλες Ιδιότητες:",
@@ -94,6 +94,7 @@ OC.L10N.register(
"Test Base DN" : "Δοκιμή ",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Αποφυγή αυτόματων αιτημάτων LDAP. Προτιμότερο για μεγαλύτερες εγκαταστάσεις, αλλά απαιτεί κάποιες γνώσεις LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Εισάγετε με μη αυτόματο τρόπο φίλτρα LDAP (προτείνεται για μεγάλους καταλόγους)",
+ "Listing and searching for users is constrained by these criteria:" : "Η εμφάνιση και αναζήτηση για χρήστες περιορίζεται από τα κριτήρια:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Οι πιο συνηθισμένες κλάσεις αντικειμένων για τους χρήστες είναι οι organizationalPerson, person, user, και inetOrgPerson. Εάν δεν είσαστε σίγουροι πιο κλάση να επιλέξετε, παρακαλώ συμβουλευτείτε τον διαχειριστή του καταλόγου σας.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιοι χρήστες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
"Verify settings and count users" : "Επαλήθευση ρυθμίσεων και καταμέτρηση χρηστών",
@@ -146,6 +147,7 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Όταν ενεργοποιηθεί, οι ομάδες που περιέχουν ομάδες υποστηρίζονται. (Λειτουργεί μόνο αν το χαρακτηριστικό μέλους ομάδες περιέχει Διακεκριμένα Ονόματα.)",
"Paging chunksize" : "Μέγεθος σελιδοποίησης",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Μέγεθος τμήματος που χρησιμοποιείται για την σελιδοποίηση αναζητήσεων LDAP που μπορεί να επιστρέψουν πολλά δεδομένα, όπως απαρίθμηση χρηστών ή ομάδων. (Η τιμή 0 απενεργοποιεί την σελιδοποίηση των αναζητήσεων LDAP σε αυτές τις περιπτώσεις.)",
+ "Enable LDAP password changes per user" : "Ενεργοποίηση αλλαγών συνθηματικού LDAP ανά χρήστη",
"Special Attributes" : "Ειδικά Χαρακτηριστικά ",
"Quota Field" : "Ποσοσταση πεδιου",
"Quota Default" : "Προκαθισμενο πεδιο",
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index 6878070ceaa..57e5ac6097b 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -1,10 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Αποτυχία εκκαθάρισης των αντιστοιχιών.",
"Failed to delete the server configuration" : "Αποτυχία διαγραφής ρυθμίσεων διακομιστή",
- "The configuration is invalid: anonymous bind is not allowed." : "Η διαμόρφωση δεν είναι έγκυρη: δεν επιτρέπεται ανώνυμη δέσμευση.",
- "The configuration is valid and the connection could be established!" : "Οι ρυθμίσεις είναι έγκυρες και η σύνδεση μπορεί να πραγματοποιηθεί!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Οι ρυθμίσεις είναι έγκυρες, αλλά απέτυχε η σύνδεση. Παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή και τα διαπιστευτήρια.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Η διαμόρφωση είναι άκυρη. Παρακαλώ ελέγξτε τα αρχεία σφαλμάτων για περαιτέρω λεπτομέρειες.",
+ "Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία",
"No action specified" : "Καμμία εντολή δεν προσδιορίστηκε",
"No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε",
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
@@ -41,21 +38,22 @@
"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?" : "Η αλλαγή της κατάστασης θα ενεργοποιήσει αυτόματα ερωτήματα LDAP. Ανάλογα με το μέγεθος του LDAP αυτό μπορεί να διαρκέσει αρκετά. Θέλετε ακόμη να αλλάξετε κατάσταση λειτουργίας;",
"Mode switch" : "Αλλαγή κατάστασης",
"Select attributes" : "Επιλογή χαρακτηριστικών",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ",
"User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.",
- "An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.",
+ "An unspecified error occurred. Please check log and settings." : "Παρουσιάστηκε ακαθόριστο λάθος. Παρακαλώ ελέγξτε το αρχείο καταγραφής και τις ρυθμίσεις.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.",
"Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.",
+ "Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό",
"Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.",
+ "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."],
+ "LDAP / AD integration" : "LDAP / AD ενσωμάτωση",
"_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"],
"_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP",
- "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητου χαρακτηριστικού",
+ "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού",
"Invalid Host" : "Άκυρος εξυπηρετητής",
- "Test Configuration" : "Δοκιμαστικες ρυθμισεις",
+ "Test Configuration" : "Δοκιμαστικές ρυθμίσεις",
"Help" : "Βοήθεια",
"Groups meeting these criteria are available in %s:" : "Οι ομάδες που πληρούν τα κριτήρια είναι διαθέσιμες σε %s:",
"Only these object classes:" : "Μόνο οι κλάσεις αντικειμένων:",
@@ -66,8 +64,10 @@
"Edit LDAP Query" : "Επεξεργασία ερωτήματος ",
"LDAP Filter:" : "Φίλτρο LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
+ "Verify settings and count the groups" : "Έλεγχος ρυθμίσεων και μέτρημα ομάδων",
"When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:",
"LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Μπορείτε να παρακάμψετε το πρωτόκολο αν δεν επιθυμείτε SSL. Εάν είναι επιθυμητό ξεκινήστε με ldaps://",
"LDAP / AD Email Address:" : "Διεύθυνση ηλ. ταχυδρομείου LDAP / AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Επιτρέπει με χρήση μια ιδιότητας email. Τα mail και mailPrimaryAddress θα επιτραπούν.",
"Other Attributes:" : "Άλλες Ιδιότητες:",
@@ -92,6 +92,7 @@
"Test Base DN" : "Δοκιμή ",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Αποφυγή αυτόματων αιτημάτων LDAP. Προτιμότερο για μεγαλύτερες εγκαταστάσεις, αλλά απαιτεί κάποιες γνώσεις LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Εισάγετε με μη αυτόματο τρόπο φίλτρα LDAP (προτείνεται για μεγάλους καταλόγους)",
+ "Listing and searching for users is constrained by these criteria:" : "Η εμφάνιση και αναζήτηση για χρήστες περιορίζεται από τα κριτήρια:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Οι πιο συνηθισμένες κλάσεις αντικειμένων για τους χρήστες είναι οι organizationalPerson, person, user, και inetOrgPerson. Εάν δεν είσαστε σίγουροι πιο κλάση να επιλέξετε, παρακαλώ συμβουλευτείτε τον διαχειριστή του καταλόγου σας.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιοι χρήστες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
"Verify settings and count users" : "Επαλήθευση ρυθμίσεων και καταμέτρηση χρηστών",
@@ -144,6 +145,7 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Όταν ενεργοποιηθεί, οι ομάδες που περιέχουν ομάδες υποστηρίζονται. (Λειτουργεί μόνο αν το χαρακτηριστικό μέλους ομάδες περιέχει Διακεκριμένα Ονόματα.)",
"Paging chunksize" : "Μέγεθος σελιδοποίησης",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Μέγεθος τμήματος που χρησιμοποιείται για την σελιδοποίηση αναζητήσεων LDAP που μπορεί να επιστρέψουν πολλά δεδομένα, όπως απαρίθμηση χρηστών ή ομάδων. (Η τιμή 0 απενεργοποιεί την σελιδοποίηση των αναζητήσεων LDAP σε αυτές τις περιπτώσεις.)",
+ "Enable LDAP password changes per user" : "Ενεργοποίηση αλλαγών συνθηματικού LDAP ανά χρήστη",
"Special Attributes" : "Ειδικά Χαρακτηριστικά ",
"Quota Field" : "Ποσοσταση πεδιου",
"Quota Default" : "Προκαθισμενο πεδιο",
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index b3601b4b225..db9f8cd2164 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Failed to clear the mappings.",
"Failed to delete the server configuration" : "Failed to delete the server configuration",
- "The configuration is invalid: anonymous bind is not allowed." : "The configuration is invalid: anonymous bind is not allowed.",
- "The configuration is valid and the connection could be established!" : "The configuration is valid and the connection could be established!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "The configuration is valid, but the Bind failed. Please check the server settings and credentials.",
- "The configuration is invalid. Please have a look at the logs for further details." : "The configuration is invalid. Please have a look at the logs for further details.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
+ "Valid configuration, connection established!" : "Valid configuration, connection established!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
@@ -45,10 +45,10 @@ 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?" : "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?",
"Mode switch" : "Mode switch",
"Select attributes" : "Select attributes",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>",
"User found and settings verified." : "User found and settings verified.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.",
- "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.",
+ "An unspecified error occurred. Please check log and settings." : "An unspecified error occurred. Please check log and settings.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s group found","%s groups found"],
"_%s user found_::_%s users found_" : ["%s user found","%s users found"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.",
"Could not find the desired feature" : "Could not find the desired feature",
"Invalid Host" : "Invalid Host",
"Test Configuration" : "Test Configuration",
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 6bea154a08d..2a1f1ffcdf1 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Failed to clear the mappings.",
"Failed to delete the server configuration" : "Failed to delete the server configuration",
- "The configuration is invalid: anonymous bind is not allowed." : "The configuration is invalid: anonymous bind is not allowed.",
- "The configuration is valid and the connection could be established!" : "The configuration is valid and the connection could be established!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "The configuration is valid, but the Bind failed. Please check the server settings and credentials.",
- "The configuration is invalid. Please have a look at the logs for further details." : "The configuration is invalid. Please have a look at the logs for further details.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
+ "Valid configuration, connection established!" : "Valid configuration, connection established!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
@@ -43,10 +43,10 @@
"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?" : "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?",
"Mode switch" : "Mode switch",
"Select attributes" : "Select attributes",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>",
"User found and settings verified." : "User found and settings verified.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.",
- "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.",
+ "An unspecified error occurred. Please check log and settings." : "An unspecified error occurred. Please check log and settings.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s group found","%s groups found"],
"_%s user found_::_%s users found_" : ["%s user found","%s users found"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.",
"Could not find the desired feature" : "Could not find the desired feature",
"Invalid Host" : "Invalid Host",
"Test Configuration" : "Test Configuration",
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 461aa2aea12..8388bf93b35 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -3,10 +3,8 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.",
"Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración no es válida: no están permitidos enlaces anónimos.",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el nexo. Por favor, compruebe la configuración del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, revise el registro para más detalles.",
+ "Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor, echa un vistazo al registro para más detalles.",
"No action specified" : "No se ha especificado la acción",
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
@@ -45,10 +43,10 @@ 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?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?",
"Mode switch" : "Modo interruptor",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuario no encontrado. Por favor, comprueba tus atributos de registro y el nombre de usuario. Filtro efectivo (para copiar y pegar para validación en línea de comandos): <br/>",
"User found and settings verified." : "Usuario encontrado y configuración verificada.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.",
- "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera ajustar tu búsqueda, pues abarca varios usuarios, solo el primero de los cuales podrá entrar.",
+ "An unspecified error occurred. Please check log and settings." : "Ha ocurrido un error no especificado. Por favor, comprueba el registro y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.",
@@ -62,7 +60,7 @@ OC.L10N.register(
"LDAP / AD integration" : "Integración LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No se pudo detectar el atributo de nombre de usuario pantalla. Por favor especifique lo mismo en ajustes avanzados ldap.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ",
"Could not find the desired feature" : "No se puede encontrar la función deseada.",
"Invalid Host" : "Host inválido",
"Test Configuration" : "Configuración de prueba",
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index 953e9d264ad..0580589b7e2 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -1,10 +1,8 @@
{ "translations": {
"Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.",
"Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración no es válida: no están permitidos enlaces anónimos.",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el nexo. Por favor, compruebe la configuración del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, revise el registro para más detalles.",
+ "Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor, echa un vistazo al registro para más detalles.",
"No action specified" : "No se ha especificado la acción",
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
@@ -43,10 +41,10 @@
"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?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?",
"Mode switch" : "Modo interruptor",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuario no encontrado. Por favor, comprueba tus atributos de registro y el nombre de usuario. Filtro efectivo (para copiar y pegar para validación en línea de comandos): <br/>",
"User found and settings verified." : "Usuario encontrado y configuración verificada.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.",
- "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera ajustar tu búsqueda, pues abarca varios usuarios, solo el primero de los cuales podrá entrar.",
+ "An unspecified error occurred. Please check log and settings." : "Ha ocurrido un error no especificado. Por favor, comprueba el registro y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.",
@@ -60,7 +58,7 @@
"LDAP / AD integration" : "Integración LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No se pudo detectar el atributo de nombre de usuario pantalla. Por favor especifique lo mismo en ajustes avanzados ldap.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ",
"Could not find the desired feature" : "No se puede encontrar la función deseada.",
"Invalid Host" : "Host inválido",
"Test Configuration" : "Configuración de prueba",
diff --git a/apps/user_ldap/l10n/es_AR.js b/apps/user_ldap/l10n/es_AR.js
index 2988aab0594..50cc5c63ac3 100644
--- a/apps/user_ldap/l10n/es_AR.js
+++ b/apps/user_ldap/l10n/es_AR.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.",
"Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.",
"No action specified" : "No se ha especificado una acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
@@ -45,10 +41,7 @@ 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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?",
"Mode switch" : "Cambio de modo",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Favor de verficar los atributos de inicio de sesión así como su nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos): </br>",
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuraciones verficados, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.",
- "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar las configuraciones y la bitácroa. ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.",
@@ -62,7 +55,6 @@ OC.L10N.register(
"LDAP / AD integration" : "Integración con LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en las configuraciones avanzadas de LDAP.",
"Could not find the desired feature" : "No fue posible encontrar la función deseada.",
"Invalid Host" : "Servidor inválido",
"Test Configuration" : "Probar configuración",
diff --git a/apps/user_ldap/l10n/es_AR.json b/apps/user_ldap/l10n/es_AR.json
index e284895699f..1d2c2ec754a 100644
--- a/apps/user_ldap/l10n/es_AR.json
+++ b/apps/user_ldap/l10n/es_AR.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.",
"Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.",
"No action specified" : "No se ha especificado una acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
@@ -43,10 +39,7 @@
"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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?",
"Mode switch" : "Cambio de modo",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Favor de verficar los atributos de inicio de sesión así como su nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos): </br>",
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuraciones verficados, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.",
- "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar las configuraciones y la bitácroa. ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.",
@@ -60,7 +53,6 @@
"LDAP / AD integration" : "Integración con LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en las configuraciones avanzadas de LDAP.",
"Could not find the desired feature" : "No fue posible encontrar la función deseada.",
"Invalid Host" : "Servidor inválido",
"Test Configuration" : "Probar configuración",
diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js
index ad15b12899a..89f9bfe67c8 100644
--- a/apps/user_ldap/l10n/es_MX.js
+++ b/apps/user_ldap/l10n/es_MX.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.",
"Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima.",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Por favor verifica los ajustes del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Por favor consulta las bitácoras para más detalles.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
+ "Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
@@ -45,10 +45,10 @@ 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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?",
"Mode switch" : "Cambio de modo",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Por favor verfica los atributos de inicio de sesión así como tu nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuario no encontrado. Por favor verifica tus atributos de inicio de sesión y tu usuario. Filtro aplicado (para copiar-y-pegar para una validación de línea de comando): <br/>",
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Las configuraciones han sido verficadas, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.",
- "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Por favor verifica las configuraciones y la bitácroa. ",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera refinar la búsqueda, ya que abarca demasiados usuarios y solo el primero de ellos podrá iniciar sesión. ",
+ "An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, por favor verifica el servidor, puerto y credenciales. ",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "Integración con LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ",
"Could not find the desired feature" : "No fue posible encontrar la función deseada.",
"Invalid Host" : "Servidor inválido",
"Test Configuration" : "Probar configuración",
diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json
index bc8d2e6aa04..062f7c44391 100644
--- a/apps/user_ldap/l10n/es_MX.json
+++ b/apps/user_ldap/l10n/es_MX.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.",
"Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima.",
- "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Por favor verifica los ajustes del servidor y las credenciales.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Por favor consulta las bitácoras para más detalles.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
+ "Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
@@ -43,10 +43,10 @@
"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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?",
"Mode switch" : "Cambio de modo",
"Select attributes" : "Seleccionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Por favor verfica los atributos de inicio de sesión así como tu nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuario no encontrado. Por favor verifica tus atributos de inicio de sesión y tu usuario. Filtro aplicado (para copiar-y-pegar para una validación de línea de comando): <br/>",
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Las configuraciones han sido verficadas, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.",
- "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Por favor verifica las configuraciones y la bitácroa. ",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera refinar la búsqueda, ya que abarca demasiados usuarios y solo el primero de ellos podrá iniciar sesión. ",
+ "An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, por favor verifica el servidor, puerto y credenciales. ",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "Integración con LDAP / AD",
"_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ",
"Could not find the desired feature" : "No fue posible encontrar la función deseada.",
"Invalid Host" : "Servidor inválido",
"Test Configuration" : "Probar configuración",
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index 22c6209ae66..55bb5b5c975 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Erreur lors de la suppression des associations.",
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
- "The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuration non valide : Le lien anonyme n'est pas autorisé.",
+ "Valid configuration, connection established!" : "Configuration valide, connexion établie !",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
@@ -45,10 +45,10 @@ 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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
"Mode switch" : "Basculer de mode",
"Select attributes" : "Sélectionner les attributs",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.",
- "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Veuillez affiner votre recherche, car elle inclue de nombreux utilisateurs. Seul le premier de cette liste sera capable de se connecter.",
+ "An unspecified error occurred. Please check log and settings." : "Une erreur inconnue s'est produite. Veuillez vérifier le log et les paramètres.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "Intégration LDAP/AD",
"_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"],
"_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.",
"Could not find the desired feature" : "Impossible de trouver la fonction souhaitée",
"Invalid Host" : "Hôte non valide",
"Test Configuration" : "Tester la configuration",
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index c23669f35e5..c35a04011d3 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Erreur lors de la suppression des associations.",
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
- "The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuration non valide : Le lien anonyme n'est pas autorisé.",
+ "Valid configuration, connection established!" : "Configuration valide, connexion établie !",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
@@ -43,10 +43,10 @@
"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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
"Mode switch" : "Basculer de mode",
"Select attributes" : "Sélectionner les attributs",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.",
- "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Veuillez affiner votre recherche, car elle inclue de nombreux utilisateurs. Seul le premier de cette liste sera capable de se connecter.",
+ "An unspecified error occurred. Please check log and settings." : "Une erreur inconnue s'est produite. Veuillez vérifier le log et les paramètres.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "Intégration LDAP/AD",
"_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"],
"_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.",
"Could not find the desired feature" : "Impossible de trouver la fonction souhaitée",
"Invalid Host" : "Hôte non valide",
"Test Configuration" : "Tester la configuration",
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index f7ad6623f09..aca22db6a5f 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Gagal membersihkan pemetaan.",
"Failed to delete the server configuration" : "Gagal menghapus konfigurasi server",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan",
- "The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
@@ -38,10 +34,7 @@ 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?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
"Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.",
- "An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
@@ -50,7 +43,6 @@ OC.L10N.register(
"LDAP / AD integration" : "Integrasi LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
"Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan",
"Invalid Host" : "Host tidak sah",
"Test Configuration" : "Uji Konfigurasi",
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index b38d6ff76bc..a91af849bd2 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Gagal membersihkan pemetaan.",
"Failed to delete the server configuration" : "Gagal menghapus konfigurasi server",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan",
- "The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
@@ -36,10 +32,7 @@
"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?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
"Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.",
- "An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
@@ -48,7 +41,6 @@
"LDAP / AD integration" : "Integrasi LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
"Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan",
"Invalid Host" : "Host tidak sah",
"Test Configuration" : "Uji Konfigurasi",
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index cca2ebf8794..a1e2ffdcd7f 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Cancellazione delle associazioni non riuscita.",
"Failed to delete the server configuration" : "Eliminazione della configurazione del server non riuscita",
- "The configuration is invalid: anonymous bind is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.",
- "The configuration is valid and the connection could be established!" : "La configurazione è valida e la connessione può essere stabilita.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configurazione è valida, ma il Bind non è riuscito. Controlla le impostazioni del server e le credenziali.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configurazione non è valida. Controlla i log per ulteriori dettagli.",
"No action specified" : "Nessuna azione specificata",
"No configuration specified" : "Nessuna configurazione specificata",
"No data specified" : "Nessun dato specificato",
@@ -42,10 +38,7 @@ 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?" : "Il cambio di modalità abiliterà le query LDAP automatiche. In base alla dimensione di LDAP, potrebbero richiedere del tempo. Vuoi ancora cambiare modalità?",
"Mode switch" : "Cambio modalità",
"Select attributes" : "Seleziona gli attributi",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):<br/>",
"User found and settings verified." : "Utente trovato e impostazioni verificate.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
- "An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.",
"Please provide a login name to test against" : "Fornisci un nome di accesso da provare",
@@ -57,7 +50,6 @@ OC.L10N.register(
"LDAP / AD integration" : "Integrazione LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati"],
"_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di ldap.",
"Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata",
"Invalid Host" : "Host non valido",
"Test Configuration" : "Prova configurazione",
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index c85a42a2621..d88d08b7eca 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Cancellazione delle associazioni non riuscita.",
"Failed to delete the server configuration" : "Eliminazione della configurazione del server non riuscita",
- "The configuration is invalid: anonymous bind is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.",
- "The configuration is valid and the connection could be established!" : "La configurazione è valida e la connessione può essere stabilita.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configurazione è valida, ma il Bind non è riuscito. Controlla le impostazioni del server e le credenziali.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configurazione non è valida. Controlla i log per ulteriori dettagli.",
"No action specified" : "Nessuna azione specificata",
"No configuration specified" : "Nessuna configurazione specificata",
"No data specified" : "Nessun dato specificato",
@@ -40,10 +36,7 @@
"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?" : "Il cambio di modalità abiliterà le query LDAP automatiche. In base alla dimensione di LDAP, potrebbero richiedere del tempo. Vuoi ancora cambiare modalità?",
"Mode switch" : "Cambio modalità",
"Select attributes" : "Seleziona gli attributi",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):<br/>",
"User found and settings verified." : "Utente trovato e impostazioni verificate.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
- "An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.",
"Please provide a login name to test against" : "Fornisci un nome di accesso da provare",
@@ -55,7 +48,6 @@
"LDAP / AD integration" : "Integrazione LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati"],
"_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di ldap.",
"Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata",
"Invalid Host" : "Host non valido",
"Test Configuration" : "Prova configurazione",
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index a3f292ee22c..55e3419764a 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -3,15 +3,15 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "マッピングのクリアに失敗しました。",
"Failed to delete the server configuration" : "サーバー設定の削除に失敗しました",
- "The configuration is invalid: anonymous bind is not allowed." : "設定は無効です: 匿名接続は、許可されていません。",
- "The configuration is valid and the connection could be established!" : "設定は有効です。接続できました。",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。",
- "The configuration is invalid. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。",
"No action specified" : "アクションが指定されていません",
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
" Could not set configuration %s" : "構成 %s を設定できませんでした",
"Action does not exist" : "アクションが存在しません",
+ "Weak password" : "脆弱なパスワード",
+ "So-so password" : "悪くないパスワード",
+ "Good password" : "良いパスワード",
+ "Strong password" : "強固なパスワード",
"The Base DN appears to be wrong" : "ベース DN が誤っている可能性があります",
"Testing configuration…" : "設定検証中…",
"Configuration incorrect" : "設定に誤りがあります",
@@ -38,10 +38,7 @@ 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?" : "モード切替により自動LDAP問合せが有効になります。LDAPのデータ量により時間がかかる可能性があります。モードを切り替えますか?",
"Mode switch" : "モード変更",
"Select attributes" : "属性を選択",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます): <br/>",
"User found and settings verified." : "ユーザーが見つかり、設定が検証できました。",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
- "An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。",
"Please provide a login name to test against" : "テストの為にログイン名を入力してください。",
@@ -50,7 +47,6 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD 統合",
"_%s group found_::_%s groups found_" : ["%s グループが見つかりました"],
"_%s user found_::_%s users found_" : ["%s ユーザーが見つかりました"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。",
"Could not find the desired feature" : "望ましい機能は見つかりませんでした",
"Invalid Host" : "無効なホスト",
"Test Configuration" : "設定をテスト",
@@ -150,7 +146,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。",
"Internal Username" : "内部ユーザー名",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
"Override UUID detection" : "UUID検出を再定義する",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index b89394d9bd8..5152937aa2c 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -1,15 +1,15 @@
{ "translations": {
"Failed to clear the mappings." : "マッピングのクリアに失敗しました。",
"Failed to delete the server configuration" : "サーバー設定の削除に失敗しました",
- "The configuration is invalid: anonymous bind is not allowed." : "設定は無効です: 匿名接続は、許可されていません。",
- "The configuration is valid and the connection could be established!" : "設定は有効です。接続できました。",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。",
- "The configuration is invalid. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。",
"No action specified" : "アクションが指定されていません",
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
" Could not set configuration %s" : "構成 %s を設定できませんでした",
"Action does not exist" : "アクションが存在しません",
+ "Weak password" : "脆弱なパスワード",
+ "So-so password" : "悪くないパスワード",
+ "Good password" : "良いパスワード",
+ "Strong password" : "強固なパスワード",
"The Base DN appears to be wrong" : "ベース DN が誤っている可能性があります",
"Testing configuration…" : "設定検証中…",
"Configuration incorrect" : "設定に誤りがあります",
@@ -36,10 +36,7 @@
"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?" : "モード切替により自動LDAP問合せが有効になります。LDAPのデータ量により時間がかかる可能性があります。モードを切り替えますか?",
"Mode switch" : "モード変更",
"Select attributes" : "属性を選択",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます): <br/>",
"User found and settings verified." : "ユーザーが見つかり、設定が検証できました。",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
- "An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。",
"Please provide a login name to test against" : "テストの為にログイン名を入力してください。",
@@ -48,7 +45,6 @@
"LDAP / AD integration" : "LDAP / AD 統合",
"_%s group found_::_%s groups found_" : ["%s グループが見つかりました"],
"_%s user found_::_%s users found_" : ["%s ユーザーが見つかりました"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。",
"Could not find the desired feature" : "望ましい機能は見つかりませんでした",
"Invalid Host" : "無効なホスト",
"Test Configuration" : "設定をテスト",
@@ -148,7 +144,7 @@
"User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。",
"Internal Username" : "内部ユーザー名",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
"Override UUID detection" : "UUID検出を再定義する",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。",
diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js
index 57679a677a6..931344009d1 100644
--- a/apps/user_ldap/l10n/ko.js
+++ b/apps/user_ldap/l10n/ko.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "매핑을 비울 수 없습니다.",
"Failed to delete the server configuration" : "서버 설정을 삭제할 수 없습니다.",
- "The configuration is invalid: anonymous bind is not allowed." : "설정이 잘못되었습니다: 익명 연결은 허용되지 않습니다.",
- "The configuration is valid and the connection could be established!" : "설정 정보가 올바르고 연결할 수 있습니다!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "설정 정보가 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.",
- "The configuration is invalid. Please have a look at the logs for further details." : "설정이 올바르지 않습니다. 자세한 사항은 로그를 참고하십시오.",
"No action specified" : "동작이 지정되지 않음",
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
@@ -45,10 +41,7 @@ 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?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?",
"Mode switch" : "모드 전환",
"Select attributes" : "속성 선택",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):<br/>",
"User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.",
- "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.",
@@ -62,7 +55,6 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP/AD 통합",
"_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"],
"_%s user found_::_%s users found_" : ["사용자 %s명 찾음"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.",
"Could not find the desired feature" : "필요한 기능을 찾을 수 없음",
"Invalid Host" : "잘못된 호스트",
"Test Configuration" : "설정 시험",
diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json
index efab0b46afb..f2711d8a311 100644
--- a/apps/user_ldap/l10n/ko.json
+++ b/apps/user_ldap/l10n/ko.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "매핑을 비울 수 없습니다.",
"Failed to delete the server configuration" : "서버 설정을 삭제할 수 없습니다.",
- "The configuration is invalid: anonymous bind is not allowed." : "설정이 잘못되었습니다: 익명 연결은 허용되지 않습니다.",
- "The configuration is valid and the connection could be established!" : "설정 정보가 올바르고 연결할 수 있습니다!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "설정 정보가 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.",
- "The configuration is invalid. Please have a look at the logs for further details." : "설정이 올바르지 않습니다. 자세한 사항은 로그를 참고하십시오.",
"No action specified" : "동작이 지정되지 않음",
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
@@ -43,10 +39,7 @@
"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?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?",
"Mode switch" : "모드 전환",
"Select attributes" : "속성 선택",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):<br/>",
"User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.",
- "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.",
@@ -60,7 +53,6 @@
"LDAP / AD integration" : "LDAP/AD 통합",
"_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"],
"_%s user found_::_%s users found_" : ["사용자 %s명 찾음"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.",
"Could not find the desired feature" : "필요한 기능을 찾을 수 없음",
"Invalid Host" : "잘못된 호스트",
"Test Configuration" : "설정 시험",
diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js
index 09b66485b46..2d6549f6b1b 100644
--- a/apps/user_ldap/l10n/nb.js
+++ b/apps/user_ldap/l10n/nb.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.",
"Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.",
- "The configuration is invalid: anonymous bind is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
- "The configuration is valid and the connection could be established!" : "Oppsettet er i orden og tilkoblingen skal være etablert!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
+ "Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
"No action specified" : "Ingen handling spesifisert",
"No configuration specified" : "Inget oppsett spesifisert",
"No data specified" : "Ingen data spesifisert",
@@ -45,10 +45,10 @@ 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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?",
"Mode switch" : "Endring av modus",
"Select attributes" : "Velg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
"User found and settings verified." : "Bruker funnet og innstillinger bekreftet.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men mer enn én bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
- "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvei å snevre inn søket ditt, siden det spenner over mange brukere, bare den første derav vil kunne logge inn.",
+ "An unspecified error occurred. Please check log and settings." : "En uspesifisert feil oppstod. Sjekk loggen og innstillingene.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD integrasjon",
"_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"],
"_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
"Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten",
"Invalid Host" : "Ugyldig tjener",
"Test Configuration" : "Test oppsettet",
diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json
index 9db7a3780c5..ee9b60f03bb 100644
--- a/apps/user_ldap/l10n/nb.json
+++ b/apps/user_ldap/l10n/nb.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.",
"Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.",
- "The configuration is invalid: anonymous bind is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
- "The configuration is valid and the connection could be established!" : "Oppsettet er i orden og tilkoblingen skal være etablert!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
+ "Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
"No action specified" : "Ingen handling spesifisert",
"No configuration specified" : "Inget oppsett spesifisert",
"No data specified" : "Ingen data spesifisert",
@@ -43,10 +43,10 @@
"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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?",
"Mode switch" : "Endring av modus",
"Select attributes" : "Velg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
"User found and settings verified." : "Bruker funnet og innstillinger bekreftet.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men mer enn én bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
- "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvei å snevre inn søket ditt, siden det spenner over mange brukere, bare den første derav vil kunne logge inn.",
+ "An unspecified error occurred. Please check log and settings." : "En uspesifisert feil oppstod. Sjekk loggen og innstillingene.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD integrasjon",
"_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"],
"_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
"Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten",
"Invalid Host" : "Ugyldig tjener",
"Test Configuration" : "Test oppsettet",
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index dbcf774f8d5..d2b337957eb 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Niet gelukt de vertalingen leeg te maken.",
"Failed to delete the server configuration" : "Verwijderen serverconfiguratie mislukt",
- "The configuration is invalid: anonymous bind is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.",
- "The configuration is valid and the connection could be established!" : "De configuratie is geldig en de verbinding is geslaagd!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens.",
- "The configuration is invalid. Please have a look at the logs for further details." : "De configuratie is ongeldig. Bekijk de logbestanden voor meer details.",
"No action specified" : "Geen actie opgegeven",
"No configuration specified" : "Geen configuratie opgegeven",
"No data specified" : "Geen gegevens verstrekt",
@@ -45,10 +41,7 @@ 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?" : "Omschakelen van de modus schakelt automatische LDAP opvragingen in. Afhankelijk van je LDAP omvang kan dat even duren. Wil je nog steeds omschakelen?",
"Mode switch" : "Omschakelen modus",
"Select attributes" : "Selecteer attributen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De \"%uid\" opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.",
@@ -62,7 +55,6 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD integratie",
"_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"],
"_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.",
"Could not find the desired feature" : "Kon de gewenste functie niet vinden",
"Invalid Host" : "Ongeldige server",
"Test Configuration" : "Test configuratie",
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index b67be009436..945ffc6bc8d 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Niet gelukt de vertalingen leeg te maken.",
"Failed to delete the server configuration" : "Verwijderen serverconfiguratie mislukt",
- "The configuration is invalid: anonymous bind is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.",
- "The configuration is valid and the connection could be established!" : "De configuratie is geldig en de verbinding is geslaagd!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens.",
- "The configuration is invalid. Please have a look at the logs for further details." : "De configuratie is ongeldig. Bekijk de logbestanden voor meer details.",
"No action specified" : "Geen actie opgegeven",
"No configuration specified" : "Geen configuratie opgegeven",
"No data specified" : "Geen gegevens verstrekt",
@@ -43,10 +39,7 @@
"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?" : "Omschakelen van de modus schakelt automatische LDAP opvragingen in. Afhankelijk van je LDAP omvang kan dat even duren. Wil je nog steeds omschakelen?",
"Mode switch" : "Omschakelen modus",
"Select attributes" : "Selecteer attributen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
- "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De \"%uid\" opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.",
@@ -60,7 +53,6 @@
"LDAP / AD integration" : "LDAP / AD integratie",
"_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"],
"_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.",
"Could not find the desired feature" : "Kon de gewenste functie niet vinden",
"Invalid Host" : "Ongeldige server",
"Test Configuration" : "Test configuratie",
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index e0da13deb2b..27ab10ef907 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.",
"Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
- "The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
@@ -45,10 +41,7 @@ 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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej): <br/>",
"User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
- "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Brakuje tekstu zastępczego \"%uid\". W trakcie odpytywania serwera LDAP / AD zostanie on zastąpiony nazwą logowania.",
@@ -62,7 +55,6 @@ OC.L10N.register(
"LDAP / AD integration" : "Integracja z LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
"_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.",
"Could not find the desired feature" : "Nie można znaleźć żądanej funkcji",
"Invalid Host" : "Niepoprawny Host",
"Test Configuration" : "Sprawdź konfigurację",
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index c30e35215f8..5a9a6aabaf5 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.",
"Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera",
- "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
- "The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
@@ -43,10 +39,7 @@
"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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej): <br/>",
"User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
- "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Brakuje tekstu zastępczego \"%uid\". W trakcie odpytywania serwera LDAP / AD zostanie on zastąpiony nazwą logowania.",
@@ -60,7 +53,6 @@
"LDAP / AD integration" : "Integracja z LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
"_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.",
"Could not find the desired feature" : "Nie można znaleźć żądanej funkcji",
"Invalid Host" : "Niepoprawny Host",
"Test Configuration" : "Sprawdź konfigurację",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 5e6894ce6f0..2297bb83bea 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Falhou ao limpar os mapeamentos.",
"Failed to delete the server configuration" : "Falha ao excluir a configuração do servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: vínculo anônimo não é permitido.",
- "The configuration is valid and the connection could be established!" : "A configuração é válida e a conexão foi estabelecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração é válida, mas o vínculo falhou. Verifique as configurações do servidor e as credenciais.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Configuração inválida. Por favor, dê uma olhada nos logs para mais detalhes.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.",
+ "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
@@ -45,10 +45,10 @@ 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?" : "Mudar o modo irá permitir consultas LDAP automáticas. Dependendo do tamanho do LDAP isso pode demorar um pouco. Você ainda quer mudar o modo?",
"Mode switch" : "Trocar de modo",
"Select attributes" : "Selecionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuário não encontrado. Verifique seus atributos de login e nome de usuário. Filtro efetivo (para copiar e colar para validação de linha de comando): <br/>",
"User found and settings verified." : "Usuário encontrado e configurações verificadas.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
- "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considere restringir sua pesquisa, pois abrange muitos usuários, apenas o primeiro de quem poderá fazer logon.",
+ "An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "Integração LDAP / AD",
"_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"],
"_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o atributo de nome de exibição do usuário. Por favor, indique-o em configurações avançadas do LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
"Test Configuration" : "Teste de Configuração",
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 0b795514313..8bdd45c3d06 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Falhou ao limpar os mapeamentos.",
"Failed to delete the server configuration" : "Falha ao excluir a configuração do servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: vínculo anônimo não é permitido.",
- "The configuration is valid and the connection could be established!" : "A configuração é válida e a conexão foi estabelecida!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração é válida, mas o vínculo falhou. Verifique as configurações do servidor e as credenciais.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Configuração inválida. Por favor, dê uma olhada nos logs para mais detalhes.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.",
+ "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
@@ -43,10 +43,10 @@
"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?" : "Mudar o modo irá permitir consultas LDAP automáticas. Dependendo do tamanho do LDAP isso pode demorar um pouco. Você ainda quer mudar o modo?",
"Mode switch" : "Trocar de modo",
"Select attributes" : "Selecionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuário não encontrado. Verifique seus atributos de login e nome de usuário. Filtro efetivo (para copiar e colar para validação de linha de comando): <br/>",
"User found and settings verified." : "Usuário encontrado e configurações verificadas.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
- "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considere restringir sua pesquisa, pois abrange muitos usuários, apenas o primeiro de quem poderá fazer logon.",
+ "An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "Integração LDAP / AD",
"_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"],
"_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o atributo de nome de exibição do usuário. Por favor, indique-o em configurações avançadas do LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
"Test Configuration" : "Teste de Configuração",
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index 73cb96fc81c..55ae12d89e4 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Falhou ao limpar os mapas.",
"Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.",
- "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer a conexão. Por favor, verifique as configurações do servidor e as credenciais.",
- "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o registo (log) do ownCloud para mais detalhes.",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhuma data especificada",
@@ -38,16 +34,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?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?",
"Mode switch" : "Trocar de modo",
"Select attributes" : "Selecionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação): <br/>",
"User found and settings verified." : "Utilizador encontrado e as definilções verificadas",
- "An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.",
"Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Uma vez que o servidor LDAP / AD não suporta a propriedade \"memberOf\" (grupos) a caixa de grupos foi desactivada.",
"_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detetar o atributo do nome do utilizador. Por favor especifique-o nas configurações ldap avançadas.",
"Could not find the desired feature" : "Não se encontrou a função desejada",
"Invalid Host" : "Hospedeiro Inválido",
"Test Configuration" : "Testar a configuração",
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index 84d48eb9fe7..e0f4fe2c12f 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Falhou ao limpar os mapas.",
"Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.",
- "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer a conexão. Por favor, verifique as configurações do servidor e as credenciais.",
- "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o registo (log) do ownCloud para mais detalhes.",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhuma data especificada",
@@ -36,16 +32,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?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?",
"Mode switch" : "Trocar de modo",
"Select attributes" : "Selecionar atributos",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação): <br/>",
"User found and settings verified." : "Utilizador encontrado e as definilções verificadas",
- "An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.",
"Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Uma vez que o servidor LDAP / AD não suporta a propriedade \"memberOf\" (grupos) a caixa de grupos foi desactivada.",
"_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"],
"_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detetar o atributo do nome do utilizador. Por favor especifique-o nas configurações ldap avançadas.",
"Could not find the desired feature" : "Não se encontrou a função desejada",
"Invalid Host" : "Hospedeiro Inválido",
"Test Configuration" : "Testar a configuração",
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index 0835a2c9359..23de1ae1609 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -3,17 +3,17 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Не удалось очистить соответствия.",
"Failed to delete the server configuration" : "Не удалось удалить конфигурацию сервера",
- "The configuration is invalid: anonymous bind is not allowed." : "Некорректная конфигурация: анонимная связь не разрешается.",
- "The configuration is valid and the connection could be established!" : "Конфигурация корректна и подключение может быть установлено!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Конфигурация корректна, но операция подключения завершилась неудачно. Проверьте настройки сервера и учетные данные.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурация некорректна. Проверьте журналы для уточнения деталей.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.",
+ "Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.",
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
" Could not set configuration %s" : "Невозможно создать конфигурацию %s",
"Action does not exist" : "Действия не существует",
"LDAP user and group backend" : "Интерфейс пользователей и групп LDAP",
- "Renewing …" : "Обновляется…",
+ "Renewing …" : "Обновление…",
"Very weak password" : "Очень слабый пароль",
"Weak password" : "Слабый пароль",
"So-so password" : "Так себе пароль",
@@ -45,10 +45,10 @@ 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?" : "Переключение режима задействует автоматические запросы LDAP. В зависимости от размера LDAP это может занять много времени. Вы все еще желаете переключить режим?",
"Mode switch" : "Переключение режима",
"Select attributes" : "Выберите атрибуты",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Пользователь не найден. Проверьте данные для входа и имя пользователя. Действующий фильтр (для копирования и вставки при проверке в командой строке): <br/>",
"User found and settings verified." : "Пользователь найден и настройки проверены.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.",
- "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Подумайте о сужении поиска, поскольку он охватывает многих пользователей, но только первый из которых сможет войти в систему.",
+ "An unspecified error occurred. Please check log and settings." : "Произошла неуказанная ошибка. Проверьте настройки и журнал.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "Интеграция LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
"_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Некорректный адрес сервера",
"Test Configuration" : "Проверить конфигурацию",
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index 1086cf695d2..ded858226e9 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -1,17 +1,17 @@
{ "translations": {
"Failed to clear the mappings." : "Не удалось очистить соответствия.",
"Failed to delete the server configuration" : "Не удалось удалить конфигурацию сервера",
- "The configuration is invalid: anonymous bind is not allowed." : "Некорректная конфигурация: анонимная связь не разрешается.",
- "The configuration is valid and the connection could be established!" : "Конфигурация корректна и подключение может быть установлено!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Конфигурация корректна, но операция подключения завершилась неудачно. Проверьте настройки сервера и учетные данные.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурация некорректна. Проверьте журналы для уточнения деталей.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.",
+ "Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.",
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
" Could not set configuration %s" : "Невозможно создать конфигурацию %s",
"Action does not exist" : "Действия не существует",
"LDAP user and group backend" : "Интерфейс пользователей и групп LDAP",
- "Renewing …" : "Обновляется…",
+ "Renewing …" : "Обновление…",
"Very weak password" : "Очень слабый пароль",
"Weak password" : "Слабый пароль",
"So-so password" : "Так себе пароль",
@@ -43,10 +43,10 @@
"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?" : "Переключение режима задействует автоматические запросы LDAP. В зависимости от размера LDAP это может занять много времени. Вы все еще желаете переключить режим?",
"Mode switch" : "Переключение режима",
"Select attributes" : "Выберите атрибуты",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Пользователь не найден. Проверьте данные для входа и имя пользователя. Действующий фильтр (для копирования и вставки при проверке в командой строке): <br/>",
"User found and settings verified." : "Пользователь найден и настройки проверены.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.",
- "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Подумайте о сужении поиска, поскольку он охватывает многих пользователей, но только первый из которых сможет войти в систему.",
+ "An unspecified error occurred. Please check log and settings." : "Произошла неуказанная ошибка. Проверьте настройки и журнал.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "Интеграция LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
"_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Некорректный адрес сервера",
"Test Configuration" : "Проверить конфигурацию",
diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js
index 27f87a4b316..05ec82cd481 100644
--- a/apps/user_ldap/l10n/sk.js
+++ b/apps/user_ldap/l10n/sk.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.",
"Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.",
- "The configuration is invalid: anonymous bind is not allowed." : "Nastavenia sú neplatné: anonymný bind nie je povolený.",
- "The configuration is valid and the connection could be established!" : "Nastavenie je v poriadku a pripojenie je stabilné.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
- "The configuration is invalid. 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",
@@ -38,9 +34,7 @@ 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é.",
- "An unspecified error occurred. Please check the settings and the log." : "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.",
"Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
@@ -49,7 +43,6 @@ OC.L10N.register(
"LDAP / AD integration" : "Spolupráca s LDAP/AD",
"_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"],
"_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nemožno zistiť používateľský atribút pre zobrazenie používateľského mena. Prosím, zadajte ho sami v pokročilých nastaveniach LDAP.",
"Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu",
"Invalid Host" : "Neplatný hostiteľ",
"Test Configuration" : "Test nastavenia",
diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json
index 9d06c29d11c..e8617fe1773 100644
--- a/apps/user_ldap/l10n/sk.json
+++ b/apps/user_ldap/l10n/sk.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.",
"Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.",
- "The configuration is invalid: anonymous bind is not allowed." : "Nastavenia sú neplatné: anonymný bind nie je povolený.",
- "The configuration is valid and the connection could be established!" : "Nastavenie je v poriadku a pripojenie je stabilné.",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
- "The configuration is invalid. 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",
@@ -36,9 +32,7 @@
"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é.",
- "An unspecified error occurred. Please check the settings and the log." : "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.",
"Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
@@ -47,7 +41,6 @@
"LDAP / AD integration" : "Spolupráca s LDAP/AD",
"_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"],
"_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nemožno zistiť používateľský atribút pre zobrazenie používateľského mena. Prosím, zadajte ho sami v pokročilých nastaveniach LDAP.",
"Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu",
"Invalid Host" : "Neplatný hostiteľ",
"Test Configuration" : "Test nastavenia",
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index d2f7297a5d0..cfc628cae30 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Čiščenje preslikav je spodletelo.",
"Failed to delete the server configuration" : "Brisanje nastavitev strežnika je spodletelo.",
- "The configuration is invalid: anonymous bind is not allowed." : "Nastavitev ni veljavna: brezimne povezave niso dovoljene.",
- "The configuration is valid and the connection could be established!" : "Nastavitev je veljavna, zato je povezavo mogoče vzpostaviti!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavitev je veljavna, vendar pa je vez spodletela. Preveriti je treba nastavitve strežnika in ustreznost poveril.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Nastavitev ni veljavna. Več podrobnosti o napaki je zabeleženih v dnevniku.",
"No action specified" : "Ni določenega dejanja",
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
@@ -38,9 +34,7 @@ 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?" : "Preklop načina omogoči samodejne poizvedbe LDAP. Glede na velikost je lahko opravilo dolgotrajno. Ali res želite preklopiti način?",
"Mode switch" : "Preklop načina",
"Select attributes" : "Izbor atributov",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice): <br/>",
"User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.",
- "An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.",
"Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus",
@@ -49,7 +43,6 @@ OC.L10N.register(
"Your password will expire tomorrow." : "Vaše geslo bo poteklo naslednji dan",
"_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"],
"_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.",
"Could not find the desired feature" : "Želene zmožnosti ni mogoče najti",
"Invalid Host" : "Neveljaven gostitelj",
"Test Configuration" : "Preizkusne nastavitve",
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index c80ff0b6f91..6f5a5d9674c 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Čiščenje preslikav je spodletelo.",
"Failed to delete the server configuration" : "Brisanje nastavitev strežnika je spodletelo.",
- "The configuration is invalid: anonymous bind is not allowed." : "Nastavitev ni veljavna: brezimne povezave niso dovoljene.",
- "The configuration is valid and the connection could be established!" : "Nastavitev je veljavna, zato je povezavo mogoče vzpostaviti!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavitev je veljavna, vendar pa je vez spodletela. Preveriti je treba nastavitve strežnika in ustreznost poveril.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Nastavitev ni veljavna. Več podrobnosti o napaki je zabeleženih v dnevniku.",
"No action specified" : "Ni določenega dejanja",
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
@@ -36,9 +32,7 @@
"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?" : "Preklop načina omogoči samodejne poizvedbe LDAP. Glede na velikost je lahko opravilo dolgotrajno. Ali res želite preklopiti način?",
"Mode switch" : "Preklop načina",
"Select attributes" : "Izbor atributov",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice): <br/>",
"User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.",
- "An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.",
"Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus",
@@ -47,7 +41,6 @@
"Your password will expire tomorrow." : "Vaše geslo bo poteklo naslednji dan",
"_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"],
"_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.",
"Could not find the desired feature" : "Želene zmožnosti ni mogoče najti",
"Invalid Host" : "Neveljaven gostitelj",
"Test Configuration" : "Preizkusne nastavitve",
diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js
index 3254abf8003..874615ed51c 100644
--- a/apps/user_ldap/l10n/sq.js
+++ b/apps/user_ldap/l10n/sq.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.",
"Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit",
- "The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.",
- "The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Formësimi është i pavlefshëm. Ju lutemi, për hollësi të mëtejshme, hidhuni një sy regjistrave.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.",
+ "Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.",
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
@@ -45,22 +45,24 @@ 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?" : "Këmbimi i mënyrë do të lejojë kërkesa LDAP automatike. Në varësi të madhësisë për LDAP-in tuaj, kjo mund të hajë ca kohë. Doni prapë të këmbehet mënyra?",
"Mode switch" : "Këmbim mënyre",
"Select attributes" : "Përzgjidhni atribute",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Përdoruesi nuk u gjet. Ju lutemi kontrolloni atributet tuaja të identifikimit dhe emrin e përdoruesit. Filtër efektiv (për të kopjuar dhe ngjitur për validimin e rreshtit të komandës): <br/>",
"User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Konfigurimet u verifikuan, por më shumë se një përdorues u gjet. Vetëm i pari do të jetë në gjendje të kyçet. Konsideroni një filter më të kufizuar. ",
- "An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Konsideroni të kufizoni kërkimin tuaj, pasi ai përfshin shumë përdorues, vetëm i pari ij të cilëve do të jetë në gjendje të hyjë.",
+ "An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendi \"%uis\" po mungon. Do të zëvendësohet me emrin e identifikimit kur të kërkohet LDAP / AD.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.",
"Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:",
"Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri",
"Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër",
"Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"],
"LDAP / AD integration" : "Integrimi LDAP / AD",
"_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"],
"_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.",
"Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar",
"Invalid Host" : "Strehë e Pavlefshme",
"Test Configuration" : "Provoni konfigurimet",
@@ -74,8 +76,10 @@ OC.L10N.register(
"Edit LDAP Query" : "Përpunoni Kërkesë LDAP",
"LDAP Filter:" : "Filtër LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count the groups" : "Verifiko konfigurimet dhe numëro grupet",
"When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:",
"LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Lejon hyrjen në emrin e përdoruesit LDAP / AD, që është ose uid ose sAMAccountName dhe do të zbulohet.",
"LDAP / AD Email Address:" : "Adresë Email LDAP / AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Lejon hyrje kundrejt një atributi email. Do të lejohen Mail dhe mailPrimaryAddress.",
"Other Attributes:" : "Atribute të Tjerë:",
@@ -84,9 +88,11 @@ OC.L10N.register(
"Verify settings" : "Verifikoni rregullimet",
"1. Server" : "1. Shërbyes",
"%s. Server:" : "%s. Shërbyes:",
+ "Add a new configuration" : "Shto një konfigurim të ri",
"Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie",
"Delete the current configuration" : "Fshije formësimin e tanishëm",
"Host" : "Strehë",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ju mund të hiqni protokollin, nëse nuk keni nevojë për SSL. Nëse po, filloni me ldaps: //",
"Port" : "Portë",
"Detect Port" : "Zbulo Portë",
"User DN" : "DN Përdoruesi",
@@ -99,14 +105,19 @@ OC.L10N.register(
"Test Base DN" : "Testo DN Bazë",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.",
"Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)",
+ "Listing and searching for users is constrained by these criteria:" : "Listimi dhe kërkimi i përdoruesve është i kufizuar nga këto kritere:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
"Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
"Saving" : "Po ruhet",
"Back" : "Mbrapsht",
"Continue" : "Vazhdo",
+ "Please renew your password." : "Ju lutem rinovoni fjalëkalimin tuaj",
+ "An internal error occurred." : "Ndodhi një gabim i brendshëm.",
+ "Please try again or contact your administrator." : "Ju lutem provoni përsëri ose kontaktoni administratorin tuaj.",
"Current password" : "Fjalëkalimi aktual",
"New password" : "Fjalëkalim i ri",
+ "Renew password" : "Rinovo fjalëkalimin",
"Wrong password. Reset it?" : "Fjalëkalim i gabuar. Do ta rivendosësh?",
"Wrong password." : "Fjalëkalim i gabuar.",
"Cancel" : "Anullo",
@@ -130,7 +141,7 @@ OC.L10N.register(
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "E pakëshillueshme, përdoreni vetëm për testim! Nëse lidhja funksionon vetëm me këtë mundësi, importoni te shërbyesi juaj %s dëshminë SSL të shërbyesit LDAP.",
"Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "në sekonda. Ndryshimi e zbraz fshehtinën.",
- "Directory Settings" : "Rregullime Drejtorie",
+ "Directory Settings" : "Konfigurime Direktorish",
"User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran",
"The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.",
"2nd User Display Name Field" : "Fushë e 2-të Emri Përdoruesi Në Ekran",
@@ -151,14 +162,22 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)",
"Paging chunksize" : "Madhësi copash faqosjeje",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)",
+ "Enable LDAP password changes per user" : "Aktivizo ndryshimet LDPA e fjalëkalimit për përdorues",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Lejo përdoruesit të LDAP të ndryshojnë fjalëkalimin e tyre dhe lejojnë Administratorët Super dhe Administratorët e Grupit të ndryshojnë fjalëkalimin e përdoruesve të tyre të LDAP. Vepron vetëm kur politikat e kontrollit të qasjes janë konfiguruar në përputhje me rrethanat në serverin LDAP. Ndërkohë që fjalëkalimet u dërgohen në mënyrë të thjeshtë tek serveri LDAP, duhet të përdoret enkriptimi i transportit dhe duhet të konfigurohet hashja e fjalëkalimit në serverin LDAP.",
"(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)",
+ "Default password policy DN" : "Politika e fjalëkalimit të parazgjedhur DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN e një politike të parazgjedhur të fjalëkalimit që do të përdoret për trajtimin e skadimit të fjalëkalimit. Punon vetëm kur ndryshimet e fjalëkalimeve LDAP për përdorues janë të aktivizuara dhe mbështetet vetëm nga OpenLDAP. Lëreni bosh për të çaktivizuar trajtimin e skadimit të fjalëkalimit.",
"Special Attributes" : "Atribute Speciale",
"Quota Field" : "Fushë Kuotash",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lër bosh për kuotën e parazgjedhur të përdoruesit. Përndryshe, specifikoni një atribut LDAP/AD.",
"Quota Default" : "Parazgjedhje Kuotash",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Mbishkruaj mbi kuotën e parazgjedhur për përdoruesit e LDAP që nuk kanë një kuotë të caktuar në Fushën e Kuotës.",
"Email Field" : "Fushë Email-i",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Vendos emailin e përdoruesit nga atributi i tyre LDAP. Lëreni bosh për sjelljen e paracaktuar.",
"User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.",
"Internal Username" : "Emër i Brendshëm Përdoruesi",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Në paracaktim, emri i brendshëm i përdoruesit do të krijohet nga atributi UUID. Sigurohuni që emri i përdoruesit është unik dhe karakteret nuk kanë nevojë të konvertohen. Emri i përdoruesit të brendshëm ka kufizim që lejohen vetëm këto karaktere: [a-zA-Z0-9 _. @ -]. Karaktere të tjera zëvendësohen me korrespondencën e tyre ASCII ose thjesht hiqen. Për goditjet një numër do të shtohet / rritet. Emri i brendshëm përdoret për të identifikuar një përdorues brenda. Është gjithashtu emri i parazgjedhur për dosjen e përdoruesit në shtëpi. Është gjithashtu një pjesë e URL-ve të largëta, për shembull për të gjitha shërbimet * DAV. Me këtë cilësim, sjellja e parazgjedhur mund të fshihet. Lëreni bosh për sjelljen e paracaktuar. Ndryshimet do të kenë efekt vetëm në përdoruesit e sapo hartuar (shtuar) LDAP.",
"Internal Username Attribute:" : "Atribut Emër i Brendshëm Përdoruesi:",
"Override UUID detection" : "Anashkalo zbullim UUID-je",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Si parazgjedhje, atributi UUID zbulohet automatikisht. Atributi UUID përdoret për të identifikuar pa dyshime përdorues dhe grupe LDAP. Gjithashtu, emri i brendshëm i përdoruesi do të krijohet mbi bazën e UUID-së, në mos u përcaktoftë ndryshe më sipër. Mund ta anashkaloni rregullimin dhe të jepni një atribut tuajin sipas dëshirës. Duhet të siguroni që atributi sipas dëshirës të mund të jepet si për përdorues, ashtu edhe për grupe, dhe se është unik. Lëreni të zbrazët që të ruhet sjellja parazgjedhje. Ndryshimet do të kenë efekt vetëm etëm mbi përdorues LDAP të përshoqëruar (shtuar) rishtas.",
diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json
index f5af2b619ed..3c01d607e02 100644
--- a/apps/user_ldap/l10n/sq.json
+++ b/apps/user_ldap/l10n/sq.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.",
"Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit",
- "The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.",
- "The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Formësimi është i pavlefshëm. Ju lutemi, për hollësi të mëtejshme, hidhuni një sy regjistrave.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.",
+ "Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.",
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
@@ -43,22 +43,24 @@
"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?" : "Këmbimi i mënyrë do të lejojë kërkesa LDAP automatike. Në varësi të madhësisë për LDAP-in tuaj, kjo mund të hajë ca kohë. Doni prapë të këmbehet mënyra?",
"Mode switch" : "Këmbim mënyre",
"Select attributes" : "Përzgjidhni atribute",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Përdoruesi nuk u gjet. Ju lutemi kontrolloni atributet tuaja të identifikimit dhe emrin e përdoruesit. Filtër efektiv (për të kopjuar dhe ngjitur për validimin e rreshtit të komandës): <br/>",
"User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Konfigurimet u verifikuan, por më shumë se një përdorues u gjet. Vetëm i pari do të jetë në gjendje të kyçet. Konsideroni një filter më të kufizuar. ",
- "An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Konsideroni të kufizoni kërkimin tuaj, pasi ai përfshin shumë përdorues, vetëm i pari ij të cilëve do të jetë në gjendje të hyjë.",
+ "An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendi \"%uis\" po mungon. Do të zëvendësohet me emrin e identifikimit kur të kërkohet LDAP / AD.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.",
"Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:",
"Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri",
"Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër",
"Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"],
"LDAP / AD integration" : "Integrimi LDAP / AD",
"_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"],
"_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.",
"Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar",
"Invalid Host" : "Strehë e Pavlefshme",
"Test Configuration" : "Provoni konfigurimet",
@@ -72,8 +74,10 @@
"Edit LDAP Query" : "Përpunoni Kërkesë LDAP",
"LDAP Filter:" : "Filtër LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count the groups" : "Verifiko konfigurimet dhe numëro grupet",
"When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:",
"LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Lejon hyrjen në emrin e përdoruesit LDAP / AD, që është ose uid ose sAMAccountName dhe do të zbulohet.",
"LDAP / AD Email Address:" : "Adresë Email LDAP / AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Lejon hyrje kundrejt një atributi email. Do të lejohen Mail dhe mailPrimaryAddress.",
"Other Attributes:" : "Atribute të Tjerë:",
@@ -82,9 +86,11 @@
"Verify settings" : "Verifikoni rregullimet",
"1. Server" : "1. Shërbyes",
"%s. Server:" : "%s. Shërbyes:",
+ "Add a new configuration" : "Shto një konfigurim të ri",
"Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie",
"Delete the current configuration" : "Fshije formësimin e tanishëm",
"Host" : "Strehë",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ju mund të hiqni protokollin, nëse nuk keni nevojë për SSL. Nëse po, filloni me ldaps: //",
"Port" : "Portë",
"Detect Port" : "Zbulo Portë",
"User DN" : "DN Përdoruesi",
@@ -97,14 +103,19 @@
"Test Base DN" : "Testo DN Bazë",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.",
"Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)",
+ "Listing and searching for users is constrained by these criteria:" : "Listimi dhe kërkimi i përdoruesve është i kufizuar nga këto kritere:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
"Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
"Saving" : "Po ruhet",
"Back" : "Mbrapsht",
"Continue" : "Vazhdo",
+ "Please renew your password." : "Ju lutem rinovoni fjalëkalimin tuaj",
+ "An internal error occurred." : "Ndodhi një gabim i brendshëm.",
+ "Please try again or contact your administrator." : "Ju lutem provoni përsëri ose kontaktoni administratorin tuaj.",
"Current password" : "Fjalëkalimi aktual",
"New password" : "Fjalëkalim i ri",
+ "Renew password" : "Rinovo fjalëkalimin",
"Wrong password. Reset it?" : "Fjalëkalim i gabuar. Do ta rivendosësh?",
"Wrong password." : "Fjalëkalim i gabuar.",
"Cancel" : "Anullo",
@@ -128,7 +139,7 @@
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "E pakëshillueshme, përdoreni vetëm për testim! Nëse lidhja funksionon vetëm me këtë mundësi, importoni te shërbyesi juaj %s dëshminë SSL të shërbyesit LDAP.",
"Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "në sekonda. Ndryshimi e zbraz fshehtinën.",
- "Directory Settings" : "Rregullime Drejtorie",
+ "Directory Settings" : "Konfigurime Direktorish",
"User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran",
"The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.",
"2nd User Display Name Field" : "Fushë e 2-të Emri Përdoruesi Në Ekran",
@@ -149,14 +160,22 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)",
"Paging chunksize" : "Madhësi copash faqosjeje",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)",
+ "Enable LDAP password changes per user" : "Aktivizo ndryshimet LDPA e fjalëkalimit për përdorues",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Lejo përdoruesit të LDAP të ndryshojnë fjalëkalimin e tyre dhe lejojnë Administratorët Super dhe Administratorët e Grupit të ndryshojnë fjalëkalimin e përdoruesve të tyre të LDAP. Vepron vetëm kur politikat e kontrollit të qasjes janë konfiguruar në përputhje me rrethanat në serverin LDAP. Ndërkohë që fjalëkalimet u dërgohen në mënyrë të thjeshtë tek serveri LDAP, duhet të përdoret enkriptimi i transportit dhe duhet të konfigurohet hashja e fjalëkalimit në serverin LDAP.",
"(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)",
+ "Default password policy DN" : "Politika e fjalëkalimit të parazgjedhur DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN e një politike të parazgjedhur të fjalëkalimit që do të përdoret për trajtimin e skadimit të fjalëkalimit. Punon vetëm kur ndryshimet e fjalëkalimeve LDAP për përdorues janë të aktivizuara dhe mbështetet vetëm nga OpenLDAP. Lëreni bosh për të çaktivizuar trajtimin e skadimit të fjalëkalimit.",
"Special Attributes" : "Atribute Speciale",
"Quota Field" : "Fushë Kuotash",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lër bosh për kuotën e parazgjedhur të përdoruesit. Përndryshe, specifikoni një atribut LDAP/AD.",
"Quota Default" : "Parazgjedhje Kuotash",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Mbishkruaj mbi kuotën e parazgjedhur për përdoruesit e LDAP që nuk kanë një kuotë të caktuar në Fushën e Kuotës.",
"Email Field" : "Fushë Email-i",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Vendos emailin e përdoruesit nga atributi i tyre LDAP. Lëreni bosh për sjelljen e paracaktuar.",
"User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.",
"Internal Username" : "Emër i Brendshëm Përdoruesi",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Në paracaktim, emri i brendshëm i përdoruesit do të krijohet nga atributi UUID. Sigurohuni që emri i përdoruesit është unik dhe karakteret nuk kanë nevojë të konvertohen. Emri i përdoruesit të brendshëm ka kufizim që lejohen vetëm këto karaktere: [a-zA-Z0-9 _. @ -]. Karaktere të tjera zëvendësohen me korrespondencën e tyre ASCII ose thjesht hiqen. Për goditjet një numër do të shtohet / rritet. Emri i brendshëm përdoret për të identifikuar një përdorues brenda. Është gjithashtu emri i parazgjedhur për dosjen e përdoruesit në shtëpi. Është gjithashtu një pjesë e URL-ve të largëta, për shembull për të gjitha shërbimet * DAV. Me këtë cilësim, sjellja e parazgjedhur mund të fshihet. Lëreni bosh për sjelljen e paracaktuar. Ndryshimet do të kenë efekt vetëm në përdoruesit e sapo hartuar (shtuar) LDAP.",
"Internal Username Attribute:" : "Atribut Emër i Brendshëm Përdoruesi:",
"Override UUID detection" : "Anashkalo zbullim UUID-je",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Si parazgjedhje, atributi UUID zbulohet automatikisht. Atributi UUID përdoret për të identifikuar pa dyshime përdorues dhe grupe LDAP. Gjithashtu, emri i brendshëm i përdoruesi do të krijohet mbi bazën e UUID-së, në mos u përcaktoftë ndryshe më sipër. Mund ta anashkaloni rregullimin dhe të jepni një atribut tuajin sipas dëshirës. Duhet të siguroni që atributi sipas dëshirës të mund të jepet si për përdorues, ashtu edhe për grupe, dhe se është unik. Lëreni të zbrazët që të ruhet sjellja parazgjedhje. Ndryshimet do të kenë efekt vetëm etëm mbi përdorues LDAP të përshoqëruar (shtuar) rishtas.",
diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js
index f83c03b860a..547ab0d50b0 100644
--- a/apps/user_ldap/l10n/sv.js
+++ b/apps/user_ldap/l10n/sv.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Fel vid rensning av mappningar",
"Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen",
- "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.",
- "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.",
"No action specified" : "Ingen åtgärd har angetts",
"No configuration specified" : "Ingen konfiguration har angetts",
"No data specified" : "Ingen data har angetts",
@@ -37,10 +33,7 @@ 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?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?",
"Mode switch" : "Lägesändring",
"Select attributes" : "Välj attribut",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
"User found and settings verified." : "Användare hittad och inställnings bekräftade.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
- "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.",
"Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med",
@@ -49,7 +42,6 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"],
"_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
"Could not find the desired feature" : "Det gick inte hitta den önskade funktionen",
"Invalid Host" : "Felaktig värd",
"Test Configuration" : "Testa konfigurationen",
@@ -147,6 +139,14 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
"Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
+ "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.",
+ "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!",
+ "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
"Verify settings and count groups" : "Verifiera inställningar och räkna grupper",
"Add a new and blank configuration" : "Skapa en ny och tom konfiguration",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://",
diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json
index e2cca5157d0..16db5792943 100644
--- a/apps/user_ldap/l10n/sv.json
+++ b/apps/user_ldap/l10n/sv.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Fel vid rensning av mappningar",
"Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen",
- "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.",
- "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.",
"No action specified" : "Ingen åtgärd har angetts",
"No configuration specified" : "Ingen konfiguration har angetts",
"No data specified" : "Ingen data har angetts",
@@ -35,10 +31,7 @@
"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?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?",
"Mode switch" : "Lägesändring",
"Select attributes" : "Välj attribut",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
"User found and settings verified." : "Användare hittad och inställnings bekräftade.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
- "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.",
"Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med",
@@ -47,7 +40,6 @@
"LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"],
"_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
"Could not find the desired feature" : "Det gick inte hitta den önskade funktionen",
"Invalid Host" : "Felaktig värd",
"Test Configuration" : "Testa konfigurationen",
@@ -145,6 +137,14 @@
"Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
"Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
+ "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.",
+ "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!",
+ "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
"Verify settings and count groups" : "Verifiera inställningar och räkna grupper",
"Add a new and blank configuration" : "Skapa en ny och tom konfiguration",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://",
diff --git a/apps/user_ldap/l10n/th.js b/apps/user_ldap/l10n/th.js
index ee96a99b51b..b04775e1ab7 100644
--- a/apps/user_ldap/l10n/th.js
+++ b/apps/user_ldap/l10n/th.js
@@ -3,10 +3,6 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "ล้มเหลวขณะล้าง Mappings",
"Failed to delete the server configuration" : "ลบการกำหนดค่าเซิร์ฟเวอร์ล้มเหลว",
- "The configuration is invalid: anonymous bind is not allowed." : "การกำหนดค่าไม่ถูกต้อง: การไม่ระบุตัวตนไม่ได้รับอนุญาต",
- "The configuration is valid and the connection could be established!" : "การกำหนดค่าถูกต้องและการเชื่อมต่อสามารถเชื่อมต่อได้!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "การกำหนดค่าถูกต้อง, แต่การผูกข้อมูลล้มเหลว, กรุณาตรวจสอบการตั้งค่าเซิร์ฟเวอร์และข้อมูลการเข้าใช้งาน",
- "The configuration is invalid. Please have a look at the logs for further details." : "การกำหนดค่าไม่ถูกต้อง ดูได้ที่บันทึกสำหรับรายละเอียดเพิ่มเติม",
"No action specified" : "ไม่ได้ระบุการดำเนินการ",
"No configuration specified" : "ไม่ได้กำหนดค่า",
"No data specified" : "ไม่มีข้อมูลที่ระบุ",
@@ -38,16 +34,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?" : "โหมดสลับจะช่วยค้นหา LDAP อัตโนมัติ ขึ้นอยู่กับขนาด LDAP ของคุณมันอาจใช้เวลาสักครู่ คุณยังยังต้องการใช้โหมดสลับ?",
"Mode switch" : "โหมดสลับ",
"Select attributes" : "เลือกคุณลักษณะ",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด): <br/>",
"User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว",
- "An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ",
"Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "กล่องข้อความกลุ่มถูกปิดการใช้งานเนื่องจากเซิร์ฟเวอร์ LDAP/AD ไม่สนับสนุน memberOf",
"_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"],
"_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ไม่สามารถตรวจสอบคุณลักษณะการแสดงชื่อของผู้ใช้ กรุณาระบุการตั้งค่า LDAP ขั้นสูงด้วยตัวคุณเอง",
"Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ",
"Invalid Host" : "โฮสต์ไม่ถูกต้อง",
"Test Configuration" : "ทดสอบการตั้งค่า",
diff --git a/apps/user_ldap/l10n/th.json b/apps/user_ldap/l10n/th.json
index c060ff33dcf..89e89ca3022 100644
--- a/apps/user_ldap/l10n/th.json
+++ b/apps/user_ldap/l10n/th.json
@@ -1,10 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "ล้มเหลวขณะล้าง Mappings",
"Failed to delete the server configuration" : "ลบการกำหนดค่าเซิร์ฟเวอร์ล้มเหลว",
- "The configuration is invalid: anonymous bind is not allowed." : "การกำหนดค่าไม่ถูกต้อง: การไม่ระบุตัวตนไม่ได้รับอนุญาต",
- "The configuration is valid and the connection could be established!" : "การกำหนดค่าถูกต้องและการเชื่อมต่อสามารถเชื่อมต่อได้!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "การกำหนดค่าถูกต้อง, แต่การผูกข้อมูลล้มเหลว, กรุณาตรวจสอบการตั้งค่าเซิร์ฟเวอร์และข้อมูลการเข้าใช้งาน",
- "The configuration is invalid. Please have a look at the logs for further details." : "การกำหนดค่าไม่ถูกต้อง ดูได้ที่บันทึกสำหรับรายละเอียดเพิ่มเติม",
"No action specified" : "ไม่ได้ระบุการดำเนินการ",
"No configuration specified" : "ไม่ได้กำหนดค่า",
"No data specified" : "ไม่มีข้อมูลที่ระบุ",
@@ -36,16 +32,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?" : "โหมดสลับจะช่วยค้นหา LDAP อัตโนมัติ ขึ้นอยู่กับขนาด LDAP ของคุณมันอาจใช้เวลาสักครู่ คุณยังยังต้องการใช้โหมดสลับ?",
"Mode switch" : "โหมดสลับ",
"Select attributes" : "เลือกคุณลักษณะ",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด): <br/>",
"User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว",
- "An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ",
"Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "กล่องข้อความกลุ่มถูกปิดการใช้งานเนื่องจากเซิร์ฟเวอร์ LDAP/AD ไม่สนับสนุน memberOf",
"_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"],
"_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ไม่สามารถตรวจสอบคุณลักษณะการแสดงชื่อของผู้ใช้ กรุณาระบุการตั้งค่า LDAP ขั้นสูงด้วยตัวคุณเอง",
"Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ",
"Invalid Host" : "โฮสต์ไม่ถูกต้อง",
"Test Configuration" : "ทดสอบการตั้งค่า",
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index 6197dff6ca0..fa51ef4710f 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Eşleştirmeler temizlenemedi.",
"Failed to delete the server configuration" : "Sunucu yapılandırması silinemedi",
- "The configuration is invalid: anonymous bind is not allowed." : "Yapılandırma geçersiz: anonim bağlamaya izin verilmiyor.",
- "The configuration is valid and the connection could be established!" : "Yapılandırma geçerli. Bağlanabilir!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlanamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.",
+ "Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.",
"No action specified" : "Hehrangi bir işlem belirtilmemiş",
"No configuration specified" : "Herhangi bir yapılandırma belirtilmemiş",
"No data specified" : "Herhangi bir veri belirtilmemiş",
@@ -45,10 +45,10 @@ 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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
"Mode switch" : "Kip değişimi",
"Select attributes" : "Öznitelikleri seçin",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
"User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden fazla kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.",
- "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Çok sayıda kullanıcı bulunduğundan ve yalnız birinci kullanıcı oturum açabileceğinden arama ölçütlerinizi sıkılaştırmayı deneyin.",
+ "An unspecified error occurred. Please check log and settings." : "Bilinmeyen bir sorun çıktı. Lütfen günlüğü ve ayarları denetleyin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ",
@@ -62,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD bütünleştirmesi",
"_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"],
"_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş ldap ayarları bölümünden kendiniz belirleyin.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.",
"Could not find the desired feature" : "İstenilen özellik bulunamadı",
"Invalid Host" : "Sunucu Geçersiz",
"Test Configuration" : "Yapılandırmayı Sına",
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index 707f7cac60a..cb13b1bef5c 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -1,10 +1,10 @@
{ "translations": {
"Failed to clear the mappings." : "Eşleştirmeler temizlenemedi.",
"Failed to delete the server configuration" : "Sunucu yapılandırması silinemedi",
- "The configuration is invalid: anonymous bind is not allowed." : "Yapılandırma geçersiz: anonim bağlamaya izin verilmiyor.",
- "The configuration is valid and the connection could be established!" : "Yapılandırma geçerli. Bağlanabilir!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlanamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.",
+ "Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.",
+ "Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
+ "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.",
"No action specified" : "Hehrangi bir işlem belirtilmemiş",
"No configuration specified" : "Herhangi bir yapılandırma belirtilmemiş",
"No data specified" : "Herhangi bir veri belirtilmemiş",
@@ -43,10 +43,10 @@
"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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
"Mode switch" : "Kip değişimi",
"Select attributes" : "Öznitelikleri seçin",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
"User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden fazla kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.",
- "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Çok sayıda kullanıcı bulunduğundan ve yalnız birinci kullanıcı oturum açabileceğinden arama ölçütlerinizi sıkılaştırmayı deneyin.",
+ "An unspecified error occurred. Please check log and settings." : "Bilinmeyen bir sorun çıktı. Lütfen günlüğü ve ayarları denetleyin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ",
@@ -60,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD bütünleştirmesi",
"_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"],
"_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş ldap ayarları bölümünden kendiniz belirleyin.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.",
"Could not find the desired feature" : "İstenilen özellik bulunamadı",
"Invalid Host" : "Sunucu Geçersiz",
"Test Configuration" : "Yapılandırmayı Sına",
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index ff259ae2358..a8bd4ed6515 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -3,15 +3,16 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "清除映射失败。",
"Failed to delete the server configuration" : "未能删除服务器配置",
- "The configuration is invalid: anonymous bind is not allowed." : "配置无效:不允许匿名绑定。",
- "The configuration is valid and the connection could be established!" : "配置有效,能够建立连接!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
- "The configuration is invalid. Please have a look at the logs for further details." : "配置无效。更多细节请查看 ownCloud 日志。",
+ "Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。",
+ "Valid configuration, connection established!" : "配置有效,连接成功!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
+ "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。",
"No action specified" : "未指定操作",
"No configuration specified" : "未指定配置文件",
"No data specified" : "未指定数据",
" Could not set configuration %s" : " 无法设定配置文件 %s",
"Action does not exist" : "操作不存在",
+ "LDAP user and group backend" : "LDAP用户和组",
"Renewing …" : "更新...",
"Very weak password" : "非常弱的密码",
"Weak password" : "弱密码",
@@ -44,12 +45,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?" : "切换模式将启用自动LDAP查询。根据您的LDAP规模,可能需要一段时间。是否继续切换模式?",
"Mode switch" : "切换模式",
"Select attributes" : "选择属性",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
"User found and settings verified." : "用户已找到,设置已验证。",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。",
- "An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回结果太多可考虑进一步缩小搜索范围,仅返回的第一个用户有效。",
+ "An unspecified error occurred. Please check log and settings." : "发生未指定的错误。请检查设置和日志。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
"Password change rejected. Hint: " : "密码更改出错。提示:",
@@ -60,7 +62,7 @@ OC.L10N.register(
"LDAP / AD integration" : "LDAP / AD 整合",
"_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
"_%s user found_::_%s users found_" : ["发现 %s 个用户"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
"Could not find the desired feature" : "无法找到所需的功能",
"Invalid Host" : "无效的主机",
"Test Configuration" : "测试配置",
@@ -74,8 +76,10 @@ OC.L10N.register(
"Edit LDAP Query" : "编辑LDAP查询",
"LDAP Filter:" : "LDAP筛选:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "该筛选条件指定哪些LDAP组有权访问%s的实例。",
+ "Verify settings and count the groups" : "验证设置和统计组",
"When logging in, %s will find the user based on the following attributes:" : "登录时,%s将查找基于以下属性的用户:",
"LDAP / AD Username:" : "LDAP/AD用户名:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "允许是能被检测到的UID或SAM帐户LDAP/ AD用户名登录。",
"LDAP / AD Email Address:" : "LDAP/AD邮箱地址:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "允许email属性登录。邮件和邮件主地址将被允许。",
"Other Attributes:" : "其他属性:",
@@ -161,10 +165,15 @@ OC.L10N.register(
"Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。",
"(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)",
+ "Default password policy DN" : "默认的密码规则DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "用于密码过期处理的默认密码策略的DN。只有当LDAP密码修改并且用户启用的情况下有效,仅支持OpenLDAP。留空以禁用密码过期处理。",
"Special Attributes" : "特殊属性",
"Quota Field" : "配额字段",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Quota Default" : "默认配额",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆盖配额域中没有配额设置的LDAP用户的默认配额。",
"Email Field" : "电邮字段",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "从LDAP属性设置用户的电子邮件。留空则采用为默认行为。",
"User Home Folder Naming Rule" : "用户主目录命名规则",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Internal Username" : "内部用户名",
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index d238123f810..ed59fb8b8f2 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -1,15 +1,16 @@
{ "translations": {
"Failed to clear the mappings." : "清除映射失败。",
"Failed to delete the server configuration" : "未能删除服务器配置",
- "The configuration is invalid: anonymous bind is not allowed." : "配置无效:不允许匿名绑定。",
- "The configuration is valid and the connection could be established!" : "配置有效,能够建立连接!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
- "The configuration is invalid. Please have a look at the logs for further details." : "配置无效。更多细节请查看 ownCloud 日志。",
+ "Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。",
+ "Valid configuration, connection established!" : "配置有效,连接成功!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
+ "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。",
"No action specified" : "未指定操作",
"No configuration specified" : "未指定配置文件",
"No data specified" : "未指定数据",
" Could not set configuration %s" : " 无法设定配置文件 %s",
"Action does not exist" : "操作不存在",
+ "LDAP user and group backend" : "LDAP用户和组",
"Renewing …" : "更新...",
"Very weak password" : "非常弱的密码",
"Weak password" : "弱密码",
@@ -42,12 +43,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?" : "切换模式将启用自动LDAP查询。根据您的LDAP规模,可能需要一段时间。是否继续切换模式?",
"Mode switch" : "切换模式",
"Select attributes" : "选择属性",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
"User found and settings verified." : "用户已找到,设置已验证。",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。",
- "An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回结果太多可考虑进一步缩小搜索范围,仅返回的第一个用户有效。",
+ "An unspecified error occurred. Please check log and settings." : "发生未指定的错误。请检查设置和日志。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
"Password change rejected. Hint: " : "密码更改出错。提示:",
@@ -58,7 +60,7 @@
"LDAP / AD integration" : "LDAP / AD 整合",
"_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
"_%s user found_::_%s users found_" : ["发现 %s 个用户"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
"Could not find the desired feature" : "无法找到所需的功能",
"Invalid Host" : "无效的主机",
"Test Configuration" : "测试配置",
@@ -72,8 +74,10 @@
"Edit LDAP Query" : "编辑LDAP查询",
"LDAP Filter:" : "LDAP筛选:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "该筛选条件指定哪些LDAP组有权访问%s的实例。",
+ "Verify settings and count the groups" : "验证设置和统计组",
"When logging in, %s will find the user based on the following attributes:" : "登录时,%s将查找基于以下属性的用户:",
"LDAP / AD Username:" : "LDAP/AD用户名:",
+ "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "允许是能被检测到的UID或SAM帐户LDAP/ AD用户名登录。",
"LDAP / AD Email Address:" : "LDAP/AD邮箱地址:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "允许email属性登录。邮件和邮件主地址将被允许。",
"Other Attributes:" : "其他属性:",
@@ -159,10 +163,15 @@
"Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。",
"(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)",
+ "Default password policy DN" : "默认的密码规则DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "用于密码过期处理的默认密码策略的DN。只有当LDAP密码修改并且用户启用的情况下有效,仅支持OpenLDAP。留空以禁用密码过期处理。",
"Special Attributes" : "特殊属性",
"Quota Field" : "配额字段",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Quota Default" : "默认配额",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆盖配额域中没有配额设置的LDAP用户的默认配额。",
"Email Field" : "电邮字段",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "从LDAP属性设置用户的电子邮件。留空则采用为默认行为。",
"User Home Folder Naming Rule" : "用户主目录命名规则",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Internal Username" : "内部用户名",
diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php
index 851ff03cbb4..c65e6e34e2c 100644
--- a/apps/user_ldap/lib/Configuration.php
+++ b/apps/user_ldap/lib/Configuration.php
@@ -349,7 +349,7 @@ class Configuration {
*/
protected function getSystemValue($varName) {
//FIXME: if another system value is added, softcode the default value
- return \OCP\Config::getSystemValue($varName, false);
+ return \OC::$server->getConfig()->getSystemValue($varName, false);
}
/**
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index 60ce664684a..f7617fa5a51 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -1067,7 +1067,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
* @return boolean
*
* Returns the supported actions as int to be
- * compared with OC_USER_BACKEND_CREATE_USER etc.
+ * compared with \OC\User\Backend::CREATE_USER etc.
*/
public function implementsActions($actions) {
return (bool)(\OC\Group\Backend::COUNT_USERS & $actions);
diff --git a/apps/user_ldap/lib/Group_Proxy.php b/apps/user_ldap/lib/Group_Proxy.php
index c102e7ac626..e546c84a90c 100644
--- a/apps/user_ldap/lib/Group_Proxy.php
+++ b/apps/user_ldap/lib/Group_Proxy.php
@@ -190,7 +190,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface {
* @return boolean
*
* Returns the supported actions as int to be
- * compared with OC_USER_BACKEND_CREATE_USER etc.
+ * compared with \OC\User\Backend::CREATE_USER etc.
*/
public function implementsActions($actions) {
//it's the same across all our user backends obviously
diff --git a/apps/user_ldap/lib/Notification/Notifier.php b/apps/user_ldap/lib/Notification/Notifier.php
index 0099d764f03..795d8d4c344 100644
--- a/apps/user_ldap/lib/Notification/Notifier.php
+++ b/apps/user_ldap/lib/Notification/Notifier.php
@@ -63,9 +63,9 @@ class Notifier implements INotifier {
$params = $notification->getSubjectParameters();
$days = (int) $params[0];
if ($days === 2) {
- $notification->setParsedSubject($l->t('Your password will expire tomorrow.', $days));
+ $notification->setParsedSubject($l->t('Your password will expire tomorrow.'));
} else if ($days === 1) {
- $notification->setParsedSubject($l->t('Your password will expire today.', $days));
+ $notification->setParsedSubject($l->t('Your password will expire today.'));
} else {
$notification->setParsedSubject($l->n(
'Your password will expire within %n day.',
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index 75cdb3951ca..3cc2fec740e 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -486,7 +486,7 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
* @return boolean
*
* Returns the supported actions as int to be
- * compared with OC_USER_BACKEND_CREATE_USER etc.
+ * compared with \OC\User\Backend::CREATE_USER etc.
*/
public function implementsActions($actions) {
return (bool)((Backend::CHECK_PASSWORD
diff --git a/apps/user_ldap/lib/User_Proxy.php b/apps/user_ldap/lib/User_Proxy.php
index 8e81b10f7b3..d1784ad7c14 100644
--- a/apps/user_ldap/lib/User_Proxy.php
+++ b/apps/user_ldap/lib/User_Proxy.php
@@ -119,7 +119,7 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface,
* @return boolean
*
* Returns the supported actions as int to be
- * compared with OC_USER_BACKEND_CREATE_USER etc.
+ * compared with \OC\User\Backend::CREATE_USER etc.
*/
public function implementsActions($actions) {
//it's the same across all our user backends obviously
diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php
index 73fcd4f1e44..f6b78208fd2 100644
--- a/apps/user_ldap/lib/Wizard.php
+++ b/apps/user_ldap/lib/Wizard.php
@@ -107,7 +107,7 @@ class Wizard extends LDAPUtility {
} else if ($type === 'objects') {
$result = $this->access->countObjects($limit);
} else {
- throw new \Exception('internal error: invalid object type', 500);
+ throw new \Exception('Internal error: Invalid object type', 500);
}
return $result;
@@ -244,7 +244,7 @@ class Wizard extends LDAPUtility {
}
};
- throw new \Exception(self::$l->t('Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.'));
+ throw new \Exception(self::$l->t('Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.'));
}
/**
@@ -905,7 +905,7 @@ class Wizard extends LDAPUtility {
$er = $this->ldap->firstEntry($cr, $rr);
$attrs = $this->ldap->getAttributes($cr, $er);
$dn = $this->ldap->getDN($cr, $er);
- if ($dn == false || $dn === '') {
+ if ($dn === false || $dn === '') {
continue;
}
$filterPart = '(memberof=' . $dn . ')';
diff --git a/apps/user_ldap/templates/part.wizard-loginfilter.php b/apps/user_ldap/templates/part.wizard-loginfilter.php
index 779b3fdb9a1..2b0bd3f230d 100644
--- a/apps/user_ldap/templates/part.wizard-loginfilter.php
+++ b/apps/user_ldap/templates/part.wizard-loginfilter.php
@@ -9,7 +9,7 @@
</label>
<input type="checkbox" id="ldap_loginfilter_username"
- title="<?php p($l->t('Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected.'));?>"
+ title="<?php p($l->t('Allows login against the LDAP / AD username, which is either "uid" or "sAMAccountName" and will be detected.'));?>"
name="ldap_loginfilter_username" value="1" />
</p>
<p>
@@ -18,7 +18,7 @@
</label>
<input type="checkbox" id="ldap_loginfilter_email"
- title="<?php p($l->t('Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed.'));?>"
+ title="<?php p($l->t('Allows login against an email attribute. "mail" and "mailPrimaryAddress" allowed.'));?>"
name="ldap_loginfilter_email" value="1" />
</p>
<p>
@@ -41,7 +41,7 @@
<textarea type="text" id="ldap_login_filter" name="ldap_login_filter"
class="ldapFilterInputElement"
placeholder="<?php p($l->t('Edit LDAP Query'));?>"
- title="<?php p($l->t('Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: "uid=%%uid"'));?>">
+ title="<?php p($l->t('Defines the filter to apply, when login is attempted. "%%uid" replaces the username in the login action. Example: "uid=%%uid"'));?>">
</textarea>
</p>
<p>
diff --git a/apps/workflowengine/l10n/el.js b/apps/workflowengine/l10n/el.js
index a8ea95f7aee..8fc59e07852 100644
--- a/apps/workflowengine/l10n/el.js
+++ b/apps/workflowengine/l10n/el.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Saved" : "Αποθηκεύτηκε",
"Saving failed:" : "Απέτυχε η αποθήκευση:",
- "File MIME type" : "MIME τύπος αρχείου",
+ "File MIME type" : "Τύπος αρχείου MIME",
"is" : "είναι",
"is not" : "δεν είναι",
"matches" : "ταιριάζει",
@@ -37,9 +37,11 @@ OC.L10N.register(
"Android client" : "Πελάτης Android",
"iOS client" : "Πελάτης iOS",
"Desktop client" : "Πελάτης σταθερού υπολογιστή",
+ "User group membership" : "Συμμετοχή σε ομάδα χρηστών",
"is member of" : "είναι μέλος του",
"is not member of" : "δεν είναι μέλος του",
"The given operator is invalid" : "Ο δοσμένος πάροχος δεν είναι έγκυρος",
+ "The given regular expression is invalid" : "Η δοθείσα κανονική έκφραση δεν είναι έγκυρη",
"The given file size is invalid" : "Το δοσμένο μέγεθος αρχείου δεν είναι έγκυρο",
"The given tag id is invalid" : "Το δοσμένο id της ετικέτας δεν είναι έγκυρο",
"The given IP range is invalid" : "Η δοσμένη περιοχή IP δεν είναι έγκυρη",
@@ -57,6 +59,7 @@ OC.L10N.register(
"Check %s is invalid" : "Έλεγχος %s δεν είναι έγκυρος",
"Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει",
"Workflow" : "Ροή εργασίας",
+ "Files workflow engine" : "Μηχανή αρχείων ροής εργασιών",
"Open documentation" : "Άνοιγμ τεκμηρίωσης",
"Add rule group" : "Προσθέστε κανόνα ομάδας",
"Short rule description" : "Μικρή περιγραφή κανόνα",
diff --git a/apps/workflowengine/l10n/el.json b/apps/workflowengine/l10n/el.json
index 3dbeb509abf..214b88d887c 100644
--- a/apps/workflowengine/l10n/el.json
+++ b/apps/workflowengine/l10n/el.json
@@ -1,7 +1,7 @@
{ "translations": {
"Saved" : "Αποθηκεύτηκε",
"Saving failed:" : "Απέτυχε η αποθήκευση:",
- "File MIME type" : "MIME τύπος αρχείου",
+ "File MIME type" : "Τύπος αρχείου MIME",
"is" : "είναι",
"is not" : "δεν είναι",
"matches" : "ταιριάζει",
@@ -35,9 +35,11 @@
"Android client" : "Πελάτης Android",
"iOS client" : "Πελάτης iOS",
"Desktop client" : "Πελάτης σταθερού υπολογιστή",
+ "User group membership" : "Συμμετοχή σε ομάδα χρηστών",
"is member of" : "είναι μέλος του",
"is not member of" : "δεν είναι μέλος του",
"The given operator is invalid" : "Ο δοσμένος πάροχος δεν είναι έγκυρος",
+ "The given regular expression is invalid" : "Η δοθείσα κανονική έκφραση δεν είναι έγκυρη",
"The given file size is invalid" : "Το δοσμένο μέγεθος αρχείου δεν είναι έγκυρο",
"The given tag id is invalid" : "Το δοσμένο id της ετικέτας δεν είναι έγκυρο",
"The given IP range is invalid" : "Η δοσμένη περιοχή IP δεν είναι έγκυρη",
@@ -55,6 +57,7 @@
"Check %s is invalid" : "Έλεγχος %s δεν είναι έγκυρος",
"Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει",
"Workflow" : "Ροή εργασίας",
+ "Files workflow engine" : "Μηχανή αρχείων ροής εργασιών",
"Open documentation" : "Άνοιγμ τεκμηρίωσης",
"Add rule group" : "Προσθέστε κανόνα ομάδας",
"Short rule description" : "Μικρή περιγραφή κανόνα",
diff --git a/apps/workflowengine/l10n/lt_LT.js b/apps/workflowengine/l10n/lt_LT.js
new file mode 100644
index 00000000000..270e10a058b
--- /dev/null
+++ b/apps/workflowengine/l10n/lt_LT.js
@@ -0,0 +1,74 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Saved" : "Įrašyta",
+ "Saving failed:" : "Įrašymas nepavyko:",
+ "File MIME type" : "Failo MIME tipas",
+ "is" : "yra",
+ "is not" : "nėra",
+ "matches" : "atitinka",
+ "does not match" : "nesutapo",
+ "Example: {placeholder}" : "Pavyzdys: {placeholder}",
+ "File size (upload)" : "Failo dydis (įkėlimas)",
+ "less" : "mažiau",
+ "less or equals" : "mažiau arba lygu",
+ "greater or equals" : "daugiau arba lygu",
+ "greater" : "daugiau",
+ "File system tag" : "Failų sistemos žymė",
+ "is tagged with" : "pažymėtas",
+ "is not tagged with" : "nepažymėtas",
+ "Select tag…" : "Pasirinkite žymę…",
+ "Request remote address" : "Užklausos nutolęs adresas",
+ "matches IPv4" : "atitinka IPv4",
+ "does not match IPv4" : "neatitinka IPv4",
+ "matches IPv6" : "atitinka IPv6",
+ "does not match IPv6" : "neatitinka IPv6",
+ "Request time" : "Užklausos laikas",
+ "between" : "tarp",
+ "not between" : "nėra tarp",
+ "Start" : "Pradžia",
+ "End" : "Pabaiga",
+ "Select timezone…" : "Pasirinkite laiko juostą…",
+ "Request URL" : "Užklausos URL",
+ "Predefined URLs" : "Apibrėžti URLs",
+ "Files WebDAV" : "WebDAV failai",
+ "Request user agent" : "Užklausos vartotojo agentas",
+ "Sync clients" : "Sinchronizavimo klientas",
+ "Android client" : "Android klientas",
+ "iOS client" : "iOS klientas",
+ "Desktop client" : "Darbalaukio klientas",
+ "User group membership" : "Vartotojų grupių narystės",
+ "is member of" : "priklauso",
+ "is not member of" : "nepriklauso",
+ "The given operator is invalid" : "Nurodytas operatorius yra neteisingas",
+ "The given regular expression is invalid" : "Nurodyta reguliari išraiška neteisinga",
+ "The given file size is invalid" : "Nurodytas failo dydis neteisingas",
+ "The given tag id is invalid" : "Nurodyta žymė neteisinga",
+ "The given IP range is invalid" : "Nurodytas IP rėžis nėra korektiškas",
+ "The given IP range is not valid for IPv4" : "Nurodytas IPv4 adresas neteisingas",
+ "The given IP range is not valid for IPv6" : "Nurodytas IPv6 adresas neteisingas",
+ "The given time span is invalid" : "Neteisingai nurodytas laiko tarpsnis",
+ "The given start time is invalid" : "Neteisingai nurodyta laiko pradžia",
+ "The given end time is invalid" : "Neteisingai nurodyta laiko pabaiga",
+ "The given group does not exist" : "Pateikta grupė neegzistuoja",
+ "Check %s is invalid or does not exist" : "%s neteisingas arba neegzistuoja",
+ "Operation #%s does not exist" : "Operacijos #%s nėra",
+ "Operation %s does not exist" : "Operacijos %s nėra",
+ "Operation %s is invalid" : "Neteisinga %s operacija",
+ "Check %s does not exist" : "%s neegzistuoja",
+ "Check %s is invalid" : "Neteisingas %s",
+ "Check #%s does not exist" : "#%s neegzistuoja",
+ "Workflow" : "Darbo eiga",
+ "Files workflow engine" : "Darbo eigos su failais variklis",
+ "Open documentation" : "Atverti dokumentaciją",
+ "Add rule group" : "Pridėti taisyklių grupę",
+ "Short rule description" : "Rodyti taisyklės aprašymą",
+ "Add rule" : "Pridėti taisyklę",
+ "Reset" : "Atstatyti",
+ "Save" : "Įrašyti",
+ "Saving…" : "Įrašoma…",
+ "Loading…" : "Įkeliama…",
+ "Successfully saved" : "Sėkmingai įrašyta",
+ "File mime type" : "Failo mime tipas"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json
new file mode 100644
index 00000000000..09dc1a4b531
--- /dev/null
+++ b/apps/workflowengine/l10n/lt_LT.json
@@ -0,0 +1,72 @@
+{ "translations": {
+ "Saved" : "Įrašyta",
+ "Saving failed:" : "Įrašymas nepavyko:",
+ "File MIME type" : "Failo MIME tipas",
+ "is" : "yra",
+ "is not" : "nėra",
+ "matches" : "atitinka",
+ "does not match" : "nesutapo",
+ "Example: {placeholder}" : "Pavyzdys: {placeholder}",
+ "File size (upload)" : "Failo dydis (įkėlimas)",
+ "less" : "mažiau",
+ "less or equals" : "mažiau arba lygu",
+ "greater or equals" : "daugiau arba lygu",
+ "greater" : "daugiau",
+ "File system tag" : "Failų sistemos žymė",
+ "is tagged with" : "pažymėtas",
+ "is not tagged with" : "nepažymėtas",
+ "Select tag…" : "Pasirinkite žymę…",
+ "Request remote address" : "Užklausos nutolęs adresas",
+ "matches IPv4" : "atitinka IPv4",
+ "does not match IPv4" : "neatitinka IPv4",
+ "matches IPv6" : "atitinka IPv6",
+ "does not match IPv6" : "neatitinka IPv6",
+ "Request time" : "Užklausos laikas",
+ "between" : "tarp",
+ "not between" : "nėra tarp",
+ "Start" : "Pradžia",
+ "End" : "Pabaiga",
+ "Select timezone…" : "Pasirinkite laiko juostą…",
+ "Request URL" : "Užklausos URL",
+ "Predefined URLs" : "Apibrėžti URLs",
+ "Files WebDAV" : "WebDAV failai",
+ "Request user agent" : "Užklausos vartotojo agentas",
+ "Sync clients" : "Sinchronizavimo klientas",
+ "Android client" : "Android klientas",
+ "iOS client" : "iOS klientas",
+ "Desktop client" : "Darbalaukio klientas",
+ "User group membership" : "Vartotojų grupių narystės",
+ "is member of" : "priklauso",
+ "is not member of" : "nepriklauso",
+ "The given operator is invalid" : "Nurodytas operatorius yra neteisingas",
+ "The given regular expression is invalid" : "Nurodyta reguliari išraiška neteisinga",
+ "The given file size is invalid" : "Nurodytas failo dydis neteisingas",
+ "The given tag id is invalid" : "Nurodyta žymė neteisinga",
+ "The given IP range is invalid" : "Nurodytas IP rėžis nėra korektiškas",
+ "The given IP range is not valid for IPv4" : "Nurodytas IPv4 adresas neteisingas",
+ "The given IP range is not valid for IPv6" : "Nurodytas IPv6 adresas neteisingas",
+ "The given time span is invalid" : "Neteisingai nurodytas laiko tarpsnis",
+ "The given start time is invalid" : "Neteisingai nurodyta laiko pradžia",
+ "The given end time is invalid" : "Neteisingai nurodyta laiko pabaiga",
+ "The given group does not exist" : "Pateikta grupė neegzistuoja",
+ "Check %s is invalid or does not exist" : "%s neteisingas arba neegzistuoja",
+ "Operation #%s does not exist" : "Operacijos #%s nėra",
+ "Operation %s does not exist" : "Operacijos %s nėra",
+ "Operation %s is invalid" : "Neteisinga %s operacija",
+ "Check %s does not exist" : "%s neegzistuoja",
+ "Check %s is invalid" : "Neteisingas %s",
+ "Check #%s does not exist" : "#%s neegzistuoja",
+ "Workflow" : "Darbo eiga",
+ "Files workflow engine" : "Darbo eigos su failais variklis",
+ "Open documentation" : "Atverti dokumentaciją",
+ "Add rule group" : "Pridėti taisyklių grupę",
+ "Short rule description" : "Rodyti taisyklės aprašymą",
+ "Add rule" : "Pridėti taisyklę",
+ "Reset" : "Atstatyti",
+ "Save" : "Įrašyti",
+ "Saving…" : "Įrašoma…",
+ "Loading…" : "Įkeliama…",
+ "Successfully saved" : "Sėkmingai įrašyta",
+ "File mime type" : "Failo mime tipas"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js
index 3245afed086..1e96ec1d72e 100644
--- a/apps/workflowengine/l10n/lv.js
+++ b/apps/workflowengine/l10n/lv.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Saved" : "Saglabāts",
"Saving failed:" : "Saglabāšana neizdevās:",
+ "File MIME type" : "Faila MIME tips",
"is" : "ir",
"is not" : "nav",
"matches" : "atbilst",
@@ -58,6 +59,7 @@ OC.L10N.register(
"Check %s is invalid" : "Pārbaude %s ir nederīga",
"Check #%s does not exist" : "Pārbaude #%s nepastāv",
"Workflow" : "Darbplūsma",
+ "Files workflow engine" : "Faila darblūsmas programma",
"Open documentation" : "Atvērt dokumentāciju",
"Add rule group" : "Pievienot kārtulu grupas",
"Short rule description" : "Īss kārtulas apraksts",
diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json
index fabd7d15577..90bd428f4b9 100644
--- a/apps/workflowengine/l10n/lv.json
+++ b/apps/workflowengine/l10n/lv.json
@@ -1,6 +1,7 @@
{ "translations": {
"Saved" : "Saglabāts",
"Saving failed:" : "Saglabāšana neizdevās:",
+ "File MIME type" : "Faila MIME tips",
"is" : "ir",
"is not" : "nav",
"matches" : "atbilst",
@@ -56,6 +57,7 @@
"Check %s is invalid" : "Pārbaude %s ir nederīga",
"Check #%s does not exist" : "Pārbaude #%s nepastāv",
"Workflow" : "Darbplūsma",
+ "Files workflow engine" : "Faila darblūsmas programma",
"Open documentation" : "Atvērt dokumentāciju",
"Add rule group" : "Pievienot kārtulu grupas",
"Short rule description" : "Īss kārtulas apraksts",
diff --git a/apps/workflowengine/l10n/zh_TW.js b/apps/workflowengine/l10n/zh_TW.js
index 07ed427b3ab..82c4f6905f1 100644
--- a/apps/workflowengine/l10n/zh_TW.js
+++ b/apps/workflowengine/l10n/zh_TW.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"does not match IPv6" : "不能匹配 IPv6",
"Request time" : "請求時間",
"between" : "之間",
+ "not between" : "皆非",
"Start" : "開始",
"End" : "結束",
"Select timezone…" : "選擇時區...",
@@ -36,6 +37,9 @@ OC.L10N.register(
"Android client" : "Android 客戶端",
"iOS client" : "iOS 客戶端",
"Desktop client" : "桌面客戶端",
+ "User group membership" : "使用者成員關係",
+ "is member of" : "是成員來自",
+ "is not member of" : "不是成員來自",
"The given operator is invalid" : "指定的操作無效",
"The given regular expression is invalid" : "指定的規則表達式無效",
"The given file size is invalid" : "指定的檔案大小無效",
diff --git a/apps/workflowengine/l10n/zh_TW.json b/apps/workflowengine/l10n/zh_TW.json
index 27fa421bace..0b561b98d28 100644
--- a/apps/workflowengine/l10n/zh_TW.json
+++ b/apps/workflowengine/l10n/zh_TW.json
@@ -23,6 +23,7 @@
"does not match IPv6" : "不能匹配 IPv6",
"Request time" : "請求時間",
"between" : "之間",
+ "not between" : "皆非",
"Start" : "開始",
"End" : "結束",
"Select timezone…" : "選擇時區...",
@@ -34,6 +35,9 @@
"Android client" : "Android 客戶端",
"iOS client" : "iOS 客戶端",
"Desktop client" : "桌面客戶端",
+ "User group membership" : "使用者成員關係",
+ "is member of" : "是成員來自",
+ "is not member of" : "不是成員來自",
"The given operator is invalid" : "指定的操作無效",
"The given regular expression is invalid" : "指定的規則表達式無效",
"The given file size is invalid" : "指定的檔案大小無效",
diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php
index e93498b5075..48d29cf207e 100644
--- a/apps/workflowengine/lib/Manager.php
+++ b/apps/workflowengine/lib/Manager.php
@@ -165,7 +165,7 @@ class Manager implements IManager {
return $row;
}
- throw new \UnexpectedValueException($this->l->t('Operation #%s does not exist', $id));
+ throw new \UnexpectedValueException($this->l->t('Operation #%s does not exist', [$id]));
}
/**
@@ -250,11 +250,11 @@ class Manager implements IManager {
/** @var IOperation $instance */
$instance = $this->container->query($class);
} catch (QueryException $e) {
- throw new \UnexpectedValueException($this->l->t('Operation %s does not exist', $class));
+ throw new \UnexpectedValueException($this->l->t('Operation %s does not exist', [$class]));
}
if (!($instance instanceof IOperation)) {
- throw new \UnexpectedValueException($this->l->t('Operation %s is invalid', $class));
+ throw new \UnexpectedValueException($this->l->t('Operation %s is invalid', [$class]));
}
$instance->validateOperation($name, $checks, $operation);
@@ -264,11 +264,11 @@ class Manager implements IManager {
/** @var ICheck $instance */
$instance = $this->container->query($check['class']);
} catch (QueryException $e) {
- throw new \UnexpectedValueException($this->l->t('Check %s does not exist', $class));
+ throw new \UnexpectedValueException($this->l->t('Check %s does not exist', [$class]));
}
if (!($instance instanceof ICheck)) {
- throw new \UnexpectedValueException($this->l->t('Check %s is invalid', $class));
+ throw new \UnexpectedValueException($this->l->t('Check %s is invalid', [$class]));
}
$instance->validateCheck($check['operator'], $check['value']);
diff --git a/build/.phan/config.php b/build/.phan/config.php
new file mode 100644
index 00000000000..26421529433
--- /dev/null
+++ b/build/.phan/config.php
@@ -0,0 +1,159 @@
+<?php
+/**
+ * This configuration will be read and overlaid on top of the
+ * default configuration. Command line arguments will be applied
+ * after this file is read.
+ *
+ * @see src/Phan/Config.php
+ * See Config for all configurable options.
+ */
+return [
+ // A list of directories that should be parsed for class and
+ // method information. After excluding the directories
+ // defined in exclude_analysis_directory_list, the remaining
+ // files will be statically analyzed for errors.
+ //
+ // Thus, both first-party and third-party code being used by
+ // your application should be included in this list.
+ 'directory_list' => [
+ 'build/.phan/stubs',
+ '3rdparty',
+ 'lib/composer',
+ 'themes',
+ 'lib/',
+ 'apps/',
+ 'core/',
+ 'ocs/',
+ 'ocs-provider/',
+ 'settings/',
+ 'tests/lib/Util/User',
+ ],
+
+ // A directory list that defines files that will be excluded
+ // from static analysis, but whose class and method
+ // information should be included.
+ //
+ // Generally, you'll want to include the directories for
+ // third-party code (such as "vendor/") in this list.
+ //
+ // n.b.: If you'd like to parse but not analyze 3rd
+ // party code, directories containing that code
+ // should be added to the `directory_list` as
+ // to `exclude_analysis_directory_list`.
+ "exclude_analysis_directory_list" => [
+ '3rdparty',
+ 'lib/composer',
+ 'apps/admin_audit/tests',
+ 'apps/comments/tests',
+ 'apps/dav/tests',
+ 'apps/encryption/tests',
+ 'apps/federatedfilesharing/tests',
+ 'apps/federation/tests',
+ 'apps/files/tests',
+ 'apps/files_external/3rdparty',
+ 'apps/files_external/tests',
+ 'apps/files_sharing/tests',
+ 'apps/files_trashbin/tests',
+ 'apps/files_versions/tests',
+ 'apps/lookup_server_connector/tests',
+ 'apps/oauth2/tests',
+ 'apps/provisioning_api/tests',
+ 'apps/sharebymail/tests',
+ 'apps/systemtags/tests',
+ 'apps/testing/tests',
+ 'apps/theming/tests',
+ 'apps/twofactor_backupcodes/tests',
+ 'apps/updatenotification/tests',
+ 'apps/user_ldap/tests',
+ 'apps/workflowengine/tests',
+ ],
+
+ // The number of processes to fork off during the analysis
+ // phase.
+ 'processes' => 10,
+
+ // Backwards Compatibility Checking. This is slow
+ // and expensive, but you should consider running
+ // it before upgrading your version of PHP to a
+ // new version that has backward compatibility
+ // breaks.
+ 'backward_compatibility_checks' => false,
+
+ // Run a quick version of checks that takes less
+ // time at the cost of not running as thorough
+ // an analysis. You should consider setting this
+ // to true only when you wish you had more issues
+ // to fix in your code base.
+ 'quick_mode' => true,
+
+ // If enabled, check all methods that override a
+ // parent method to make sure its signature is
+ // compatible with the parent's. This check
+ // can add quite a bit of time to the analysis.
+ 'analyze_signature_compatibility' => false,
+
+ // The minimum severity level to report on. This can be
+ // set to Issue::SEVERITY_LOW, Issue::SEVERITY_NORMAL or
+ // Issue::SEVERITY_CRITICAL. Setting it to only
+ // critical issues is a good place to start on a big
+ // sloppy mature code base.
+ 'minimum_severity' => 10,
+
+ // If true, missing properties will be created when
+ // they are first seen. If false, we'll report an
+ // error message if there is an attempt to write
+ // to a class property that wasn't explicitly
+ // defined.
+ 'allow_missing_properties' => true,
+
+ // Allow null to be cast as any type and for any
+ // type to be cast to null. Setting this to false
+ // will cut down on false positives.
+ 'null_casts_as_any_type' => true,
+
+ // Allow null to be cast as any array-like type (Requires 0.9.3+)
+ // This is an incremental step in migrating away from null_casts_as_any_type.
+ // If null_casts_as_any_type is true, this has no effect.
+ 'null_casts_as_array' => false,
+
+ // Allow any array-like type to be cast to null. (Requires 0.9.3+)
+ // This is an incremental step in migrating away from null_casts_as_any_type.
+ // If null_casts_as_any_type is true, this has no effect.
+ 'array_casts_as_null' => false,
+
+ // If enabled, scalars (int, float, bool, true, false, string, null)
+ // are treated as if they can cast to each other.
+ 'scalar_implicit_cast' => true,
+
+ // If this has entries, scalars (int, float, bool, true, false, string, null)
+ // are allowed to perform the casts listed.
+ // E.g. ['int' => ['float', 'string'], 'float' => ['int'], 'string' => ['int'], 'null' => ['string']]
+ // allows casting null to a string, but not vice versa.
+ // (subset of scalar_implicit_cast)
+ // (Requires 0.9.3+)
+ 'scalar_implicit_partial' => [],
+
+ // If true, seemingly undeclared variables in the global
+ // scope will be ignored. This is useful for projects
+ // with complicated cross-file globals that you have no
+ // hope of fixing.
+ 'ignore_undeclared_variables_in_global_scope' => true,
+
+ // Add any issue types (such as 'PhanUndeclaredMethod')
+ // to this black-list to inhibit them from being reported.
+ 'suppress_issue_types' => [
+ // 'PhanUndeclaredMethod',
+ ],
+
+ // If empty, no filter against issues types will be applied.
+ // If this white-list is non-empty, only issues within the list
+ // will be emitted by Phan.
+ 'whitelist_issue_types' => [
+ // 'PhanAccessMethodPrivate',
+ ],
+
+ // A list of plugin files to execute
+ 'plugins' => [
+ 'build/.phan/plugins/SqlInjectionCheckerPlugin.php',
+ ],
+];
diff --git a/build/.phan/plugin-checker.php b/build/.phan/plugin-checker.php
new file mode 100644
index 00000000000..681904264f6
--- /dev/null
+++ b/build/.phan/plugin-checker.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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/>.
+ *
+ */
+
+$expected = <<<EOT
+build/.phan/tests/SqlInjectionCheckerTest.php:23 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:35 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:37 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:39 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:41 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:43 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:54 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:61 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:62 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:69 SqlInjectionChecker Potential SQL injection detected
+build/.phan/tests/SqlInjectionCheckerTest.php:70 SqlInjectionChecker Potential SQL injection detected
+
+EOT;
+
+$result = shell_exec('php '. __DIR__ . '/../../lib/composer/etsy/phan/phan -k build/.phan/config.php --include-analysis-file-list build/.phan/tests/* --directory build/.phan/tests/');
+
+if($result !== $expected) {
+ echo("Output of phan doesn't match expectation\n");
+ echo("Expected: $expected\n");
+ echo("Result: $result\n");
+ exit(1);
+}
diff --git a/build/.phan/plugins/SqlInjectionCheckerPlugin.php b/build/.phan/plugins/SqlInjectionCheckerPlugin.php
new file mode 100644
index 00000000000..8cfd5ac4752
--- /dev/null
+++ b/build/.phan/plugins/SqlInjectionCheckerPlugin.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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/>.
+ *
+ */
+
+declare(strict_types=1);
+
+use Phan\PluginV2;
+use Phan\PluginV2\AnalyzeNodeCapability;
+use Phan\PluginV2\PluginAwareAnalysisVisitor;
+
+class SqlInjectionCheckerPlugin extends PluginV2 implements AnalyzeNodeCapability{
+ public static function getAnalyzeNodeVisitorClassName() : string {
+ return SqlInjectionCheckerVisitor::class;
+ }
+}
+
+class SqlInjectionCheckerVisitor extends PluginAwareAnalysisVisitor {
+
+ private function throwError() {
+ $this->emit(
+ 'SqlInjectionChecker',
+ 'Potential SQL injection detected',
+ [],
+ \Phan\Issue::SEVERITY_CRITICAL
+ );
+ }
+
+ /**
+ * Checks whether the query builder functions are using prepared statements
+ *
+ * @param \ast\Node $node
+ */
+ private function checkQueryBuilderParameters(\ast\Node $node) {
+ $dangerousFunctions = [
+ 'eq',
+ 'neq',
+ 'lt',
+ 'lte',
+ 'gt',
+ 'gte',
+ 'like',
+ 'iLike',
+ 'notLike',
+ ];
+
+ $safeFunctions = [
+ 'createNamedParameter',
+ 'createPositionalParameter',
+ 'createParameter',
+ ];
+
+ $functionsToSearch = [
+ 'set',
+ 'setValue',
+ ];
+
+ $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $node);
+ $expandedNodeType = (string)$expandedNode->asExpandedTypes($this->code_base);
+
+ if($expandedNodeType === '\OCP\DB\QueryBuilder\IQueryBuilder') {
+ /** @var \ast\Node $child */
+ foreach($node->children as $child) {
+ if(isset($child->kind) && $child->kind === 128) {
+ if(isset($child->children)) {
+ /** @var \ast\Node $subChild */
+ foreach ($child->children as $subChild) {
+ // For set actions
+ if(isset($node->children['method']) && in_array($node->children['method'], $functionsToSearch, true) && !is_string($subChild)) {
+ if(!isset($subChild->children['method']) || !in_array($subChild->children['method'], $safeFunctions, true)) {
+ $this->throwError();
+ }
+ }
+
+ if(isset($subChild->children['method'])) {
+ // For all "eq" etc. actions
+ $method = $subChild->children['method'];
+ if(!in_array($method, $dangerousFunctions, true)) {
+ return;
+ }
+
+ /** @var \ast\Node $functionNode */
+ $functionNode = $subChild->children['args'];
+
+ /** @var \ast\Node $secondParameterNode */
+ $secondParameterNode = $functionNode->children[1];
+ $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $secondParameterNode);
+
+ // For literals with a plain string or integer inside
+ if(isset($secondParameterNode->children['method']) && $secondParameterNode->children['method'] === 'literal') {
+ /** @var \ast\Node $functionNode */
+ $functionNode = $secondParameterNode->children['args'];
+
+ $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $functionNode);
+ if(isset($functionNode->children[0]) && (is_string($functionNode->children[0]) || is_int($functionNode->children[0]))) {
+ return;
+ }
+ }
+
+ // If it is an IParameter or a pure string no error is thrown
+ if((string)$expandedNode !== '\OCP\DB\QueryBuilder\IParameter' && !is_string($secondParameterNode)) {
+ $this->throwError();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public function visitMethodCall(\ast\Node $node) {
+ $this->checkQueryBuilderParameters($node);
+ }
+
+}
+
+return new SqlInjectionCheckerPlugin();
diff --git a/build/.phan/stubs/APCIterator.php b/build/.phan/stubs/APCIterator.php
new file mode 100644
index 00000000000..e837b3971a9
--- /dev/null
+++ b/build/.phan/stubs/APCIterator.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * The APCIterator class
+ *
+ * The APCIterator class makes it easier to iterate over large APC caches.
+ * This is helpful as it allows iterating over large caches in steps, while grabbing a defined number
+ * of entries per lock instance, so it frees the cache locks for other activities rather than hold up
+ * the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more
+ * efficient as it's been moved to the C level.
+ *
+ * @link http://php.net/manual/en/class.apciterator.php
+ */
+class APCIterator implements Iterator
+{
+ /**
+ * Constructs an APCIterator iterator object
+ * @link http://php.net/manual/en/apciterator.construct.php
+ * @param string $cache The cache type, which will be 'user' or 'file'.
+ * @param string|string[]|null $search A PCRE regular expression that matches against APC key names,
+ * either as a string for a single regular expression, or as an array of regular expressions.
+ * Or, optionally pass in NULL to skip the search.
+ * @param int $format The desired format, as configured with one ore more of the APC_ITER_* constants.
+ * @param int $chunk_size The chunk size. Must be a value greater than 0. The default value is 100.
+ * @param int $list The type to list. Either pass in APC_LIST_ACTIVE or APC_LIST_INACTIVE.
+ */
+ public function __construct($cache, $search = null, $format = APC_ITER_ALL, $chunk_size = 100, $list = APC_LIST_ACTIVE){}
+
+ /**
+ * Rewinds back the iterator to the first element
+ * @link http://php.net/manual/en/apciterator.rewind.php
+ */
+ public function rewind(){}
+
+ /**
+ * Checks if the current iterator position is valid
+ * @link http://php.net/manual/en/apciterator.valid.php
+ * @return bool Returns TRUE if the current iterator position is valid, otherwise FALSE.
+ */
+ public function valid(){}
+
+ /**
+ * Gets the current item from the APCIterator stack
+ * @link http://php.net/manual/en/apciterator.current.php
+ * @return mixed Returns the current item on success, or FALSE if no more items or exist, or on failure.
+ */
+ public function current(){}
+
+ /**
+ * Gets the current iterator key
+ * @link http://php.net/manual/en/apciterator.key.php
+ * @return string|int|bool Returns the key on success, or FALSE upon failure.
+ */
+ public function key(){}
+
+ /**
+ * Moves the iterator pointer to the next element
+ * @link http://php.net/manual/en/apciterator.next.php
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+ public function next(){}
+
+ /**
+ * Gets the total number of cache hits
+ * @link http://php.net/manual/en/apciterator.gettotalhits.php
+ * @return int|bool The number of hits on success, or FALSE on failure.
+ */
+ public function getTotalHits(){}
+
+ /**
+ * Gets the total cache size
+ * @link http://php.net/manual/en/apciterator.gettotalsize.php
+ * @return int|bool The total cache size.
+ */
+ public function getTotalSize(){}
+
+ /**
+ * Get the total count
+ * @link http://php.net/manual/en/apciterator.gettotalcount.php
+ * @return int|bool The total count.
+ */
+ public function getTotalCount(){}
+}
diff --git a/build/.phan/stubs/APCUIterator.php b/build/.phan/stubs/APCUIterator.php
new file mode 100644
index 00000000000..138e92428eb
--- /dev/null
+++ b/build/.phan/stubs/APCUIterator.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+* The APCUIterator class
+*
+* The APCUIterator class makes it easier to iterate over large APCu caches.
+* This is helpful as it allows iterating over large caches in steps, while grabbing a defined number
+* of entries per lock instance, so it frees the cache locks for other activities rather than hold up
+* the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more
+* efficient as it's been moved to the C level.
+*
+* @link http://php.net/manual/en/class.apcuiterator.php
+* @since APCu 5.0.0
+*/
+class APCUIterator implements Iterator {
+ /**
+ * Constructs an APCUIterator iterator object
+ * @link http://php.net/manual/en/apcuiterator.construct.php
+ * @param string|string[]|null $search A PCRE regular expression that matches against APCu key names,
+ * either as a string for a single regular expression, or as an array of regular expressions.
+ * Or, optionally pass in NULL to skip the search.
+ * @param int $format The desired format, as configured with one ore more of the APC_ITER_* constants.
+ * @param int $chunk_size The chunk size. Must be a value greater than 0. The default value is 100.
+ * @param int $list The type to list. Either pass in APC_LIST_ACTIVE or APC_LIST_DELETED.
+ */
+ public function __construct($search = null, $format = APC_ITER_ALL, $chunk_size = 100, $list = APC_LIST_ACTIVE){}
+
+ /**
+ * Rewinds back the iterator to the first element
+ * @link http://php.net/manual/en/apcuiterator.rewind.php
+ */
+ public function rewind(){}
+
+ /**
+ * Checks if the current iterator position is valid
+ * @link http://php.net/manual/en/apcuiterator.valid.php
+ * @return bool Returns TRUE if the current iterator position is valid, otherwise FALSE.
+ */
+ public function valid(){}
+
+ /**
+ * Gets the current item from the APCUIterator stack
+ * @link http://php.net/manual/en/apcuiterator.current.php
+ * @return mixed Returns the current item on success, or FALSE if no more items or exist, or on failure.
+ */
+ public function current(){}
+
+ /**
+ * Gets the current iterator key
+ * @link http://php.net/manual/en/apcuiterator.key.php
+ * @return string|int|bool Returns the key on success, or FALSE upon failure.
+ */
+ public function key(){}
+
+ /**
+ * Moves the iterator pointer to the next element
+ * @link http://php.net/manual/en/apcuiterator.next.php
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+ public function next(){}
+
+ /**
+ * Gets the total number of cache hits
+ * @link http://php.net/manual/en/apcuiterator.gettotalhits.php
+ * @return int|bool The number of hits on success, or FALSE on failure.
+ */
+ public function getTotalHits(){}
+
+ /**
+ * Gets the total cache size
+ * @link http://php.net/manual/en/apcuiterator.gettotalsize.php
+ * @return int|bool The total cache size.
+ */
+ public function getTotalSize(){}
+
+ /**
+ * Get the total count
+ * @link http://php.net/manual/en/apcuiterator.gettotalcount.php
+ * @return int|bool The total count.
+ */
+ public function getTotalCount(){}
+}
diff --git a/build/.phan/stubs/apc.php b/build/.phan/stubs/apc.php
new file mode 100644
index 00000000000..8e533998a9a
--- /dev/null
+++ b/build/.phan/stubs/apc.php
@@ -0,0 +1,318 @@
+<?
+
+/**
+ * Stubs for APC 3.1.4
+ *
+ * Author: Johnny Woo
+ * Date: Aug 9, 2010
+ * Time: 12:19:14 PM
+ */
+
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_LIST_ACTIVE', 1);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_LIST_DELETED', 2);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_TYPE', 1);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_KEY', 2);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_FILENAME', 4);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_DEVICE', 8);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_INODE', 16);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_VALUE', 32);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_MD5', 64);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_NUM_HITS', 128);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_MTIME', 256);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_CTIME', 512);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_DTIME', 1024);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_ATIME', 2048);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_REFCOUNT', 4096);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_MEM_SIZE', 8192);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_TTL', 16384);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_NONE', 0);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_ITER_ALL', -1);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_BIN_VERIFY_MD5', 1);
+/**
+ * @link http://php.net/manual/en/apc.constants.php
+ */
+define('APC_BIN_VERIFY_CRC32', 2);
+
+/**
+ * Retrieves cached information and meta-data from APC's data store
+ * @link http://php.net/manual/en/function.apc-cache-info.php
+ * @param string $type If cache_type is "user", information about the user cache will be returned.
+ * If cache_type is "filehits", information about which files have been served from the bytecode
+ * cache for the current request will be returned. This feature must be enabled at compile time
+ * using --enable-filehits. If an invalid or no cache_type is specified, information about the
+ * system cache (cached files) will be returned.
+ * @param bool $limited If limited is TRUE, the return value will exclude the individual list
+ * of cache entries. This is useful when trying to optimize calls for statistics gathering.
+ * @return array|bool Array of cached data (and meta-data) or FALSE on failure.
+ */
+function apc_cache_info($type = '', $limited = false){}
+
+/**
+ * Clears the APC cache
+ * @link http://php.net/manual/en/function.apc-clear-cache.php
+ * @param string $cache_type If cache_type is "user", the user cache will be cleared;
+ * otherwise, the system cache (cached files) will be cleared.
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+function apc_clear_cache($cache_type = ''){}
+
+/**
+ * Retrieves APC's Shared Memory Allocation information
+ * @link http://php.net/manual/en/function.apc-sma-info.php
+ * @param bool $limited When set to FALSE (default) apc_sma_info() will
+ * return a detailed information about each segment.
+ * @return array|bool Array of Shared Memory Allocation data; FALSE on failure.
+ */
+function apc_sma_info($limited = false){}
+
+/**
+ * Cache a variable in the data store
+ * @link http://php.net/manual/en/function.apc-store.php
+ * @param string|array $key String: Store the variable using this name. Keys are cache-unique,
+ * so storing a second value with the same key will overwrite the original value.
+ * Array: Names in key, variables in value.
+ * @param mixed $var [optional] The variable to store
+ * @param int $ttl [optional] Time To Live; store var in the cache for ttl seconds. After the ttl has passed,
+ * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied
+ * (or if the ttl is 0), the value will persist until it is removed from the cache manually,
+ * or otherwise fails to exist in the cache (clear, restart, etc.).
+ * @return bool|array Returns TRUE on success or FALSE on failure | array with error keys.
+ */
+function apc_store($key, $var, $ttl = 0){}
+
+/**
+ * Fetch a stored variable from the cache
+ * @link http://php.net/manual/en/function.apc-fetch.php
+ * @param string|string[] $key The key used to store the value (with apc_store()).
+ * If an array is passed then each element is fetched and returned.
+ * @param bool $success Set to TRUE in success and FALSE in failure.
+ * @return mixed The stored variable or array of variables on success; FALSE on failure.
+ */
+function apc_fetch($key, &$success = null){}
+
+/**
+ * Removes a stored variable from the cache
+ * @link http://php.net/manual/en/function.apc-delete.php
+ * @param string|string[]|APCIterator $key The key used to store the value (with apc_store()).
+ * @return bool|string[] Returns TRUE on success or FALSE on failure. For array of keys returns list of failed keys.
+ */
+function apc_delete($key){}
+
+/**
+ * Defines a set of constants for retrieval and mass-definition
+ *
+ * define() is notoriously slow. Since the main benefit of APC is to increase
+ * the performance of scripts/applications, this mechanism is provided to streamline
+ * the process of mass constant definition. However, this function does not perform
+ * as well as anticipated. For a better-performing solution, try the hidef extension from PECL.
+ *
+ * @link http://php.net/manual/en/function.apc-define-constants.php
+ * @param string $key The key serves as the name of the constant set being stored.
+ * This key is used to retrieve the stored constants in apc_load_constants().
+ * @param array $constants An associative array of constant_name => value pairs.
+ * The constant_name must follow the normal constant naming rules. Value must evaluate to a scalar value.
+ * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive;
+ * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE
+ * the constants will be declared as case-insensitive symbols.
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+function apc_define_constants($key, array $constants, $case_sensitive = true){}
+
+/**
+ * Caches a variable in the data store, only if it's not already stored
+ * @link http://php.net/manual/en/function.apc-add.php
+ * @param string $key Store the variable using this name. Keys are cache-unique,
+ * so attempting to use apc_add() to store data with a key that already exists will not
+ * overwrite the existing data, and will instead return FALSE. (This is the only difference
+ * between apc_add() and apc_store().)
+ * @param mixed $var The variable to store
+ * @param int $ttl Time To Live; store var in the cache for ttl seconds. After the ttl has passed,
+ * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied
+ * (or if the ttl is 0), the value will persist until it is removed from the cache manually,
+ * or otherwise fails to exist in the cache (clear, restart, etc.).
+ * @return bool
+ */
+function apc_add($key, $var, $ttl = 0){}
+
+/**
+ * Stores a file in the bytecode cache, bypassing all filters
+ * @link http://php.net/manual/en/function.apc-compile-file.php
+ * @param string|string[] $filename Full or relative path to a PHP file that will be
+ * compiled and stored in the bytecode cache.
+ * @param bool $atomic
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+function apc_compile_file($filename, $atomic = true){}
+
+/**
+ * Loads a set of constants from the cache
+ * @link http://php.net/manual/en/function.apc-load-constants.php
+ * @param string $key The name of the constant set (that was stored
+ * with apc_define_constants()) to be retrieved.
+ * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive;
+ * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE
+ * the constants will be declared as case-insensitive symbols.
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+function apc_load_constants($key, $case_sensitive = true){}
+
+/**
+ * Checks if APC key exists
+ * @link http://php.net/manual/en/function.apc-exists.php
+ * @param bool|string[] $keys A string, or an array of strings, that contain keys.
+ * @return bool|string[] Returns TRUE if the key exists, otherwise FALSE
+ * Or if an array was passed to keys, then an array is returned that
+ * contains all existing keys, or an empty array if none exist.
+ */
+function apc_exists($keys){}
+
+/**
+ * Deletes the given files from the opcode cache
+ *
+ * Accepts a string, array of strings, or APCIterator object.
+ * Returns True/False, or for an Array an Array of failed files.
+ *
+ * @link http://php.net/manual/en/function.apc-delete-file.php
+ * @param string|string[]|APCIterator $keys
+ * @return bool|string[]
+ */
+function apc_delete_file($keys){}
+
+/**
+ * Increase a stored number
+ * @link http://php.net/manual/en/function.apc-inc.php
+ * @param string $key The key of the value being increased.
+ * @param int $step The step, or value to increase.
+ * @param bool $success Optionally pass the success or fail boolean value to this referenced variable.
+ * @return int|bool Returns the current value of key's value on success, or FALSE on failure.
+ */
+function apc_inc($key, $step = 1, &$success = null){}
+
+/**
+ * Decrease a stored number
+ * @link http://php.net/manual/en/function.apc-dec.php
+ * @param string $key The key of the value being decreased.
+ * @param int $step The step, or value to decrease.
+ * @param bool $success Optionally pass the success or fail boolean value to this referenced variable.
+ * @return int|bool Returns the current value of key's value on success, or FALSE on failure.
+ */
+function apc_dec($key, $step = 1, &$success = null){}
+
+/**
+ * @link http://php.net/manual/en/function.apc-cas.php
+ * @param string $key
+ * @param int $old
+ * @param int $new
+ * @return bool
+ */
+function apc_cas($key, $old, $new){}
+
+/**
+ * Returns a binary dump of the given files and user variables from the APC cache
+ *
+ * A NULL for files or user_vars signals a dump of every entry, while array() will dump nothing.
+ *
+ * @link http://php.net/manual/en/function.apc-bin-dump.php
+ * @param string[]|null $files The files. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing.
+ * @param string[]|null $user_vars The user vars. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing.
+ * @return string|bool|null Returns a binary dump of the given files and user variables from the APC cache, FALSE if APC is not enabled, or NULL if an unknown error is encountered.
+ */
+function apc_bin_dump($files = null, $user_vars = null){}
+
+/**
+ * Output a binary dump of the given files and user variables from the APC cache to the named file
+ * @link http://php.net/manual/en/function.apc-bin-dumpfile.php
+ * @param string[]|null $files The file names being dumped.
+ * @param string[]|null $user_vars The user variables being dumped.
+ * @param string $filename The filename where the dump is being saved.
+ * @param int $flags Flags passed to the filename stream. See the file_put_contents() documentation for details.
+ * @param resource $context The context passed to the filename stream. See the file_put_contents() documentation for details.
+ * @return int|bool The number of bytes written to the file, otherwise FALSE if APC
+ * is not enabled, filename is an invalid file name, filename can't be opened,
+ * the file dump can't be completed (e.g., the hard drive is out of disk space),
+ * or an unknown error was encountered.
+ */
+function apc_bin_dumpfile($files, $user_vars, $filename, $flags = 0, $context = null){}
+
+/**
+ * Load the given binary dump into the APC file/user cache
+ * @link http://php.net/manual/en/function.apc-bin-load.php
+ * @param string $data The binary dump being loaded, likely from apc_bin_dump().
+ * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both.
+ * @return bool Returns TRUE if the binary dump data was loaded with success, otherwise FALSE is returned.
+ * FALSE is returned if APC is not enabled, or if the data is not a valid APC binary dump (e.g., unexpected size).
+ */
+function apc_bin_load($data, $flags = 0){}
+
+/**
+ * Load the given binary dump from the named file into the APC file/user cache
+ * @link http://php.net/manual/en/function.apc-bin-loadfile.php
+ * @param string $filename The file name containing the dump, likely from apc_bin_dumpfile().
+ * @param resource $context The files context.
+ * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both.
+ * @return bool Returns TRUE on success, otherwise FALSE Reasons it may return FALSE include APC
+ * is not enabled, filename is an invalid file name or empty, filename can't be opened,
+ * the file dump can't be completed, or if the data is not a valid APC binary dump (e.g., unexpected size).
+ */
+function apc_bin_loadfile($filename, $context = null, $flags = 0){}
+
diff --git a/build/.phan/stubs/apcu.php b/build/.phan/stubs/apcu.php
new file mode 100644
index 00000000000..f08f860d4f7
--- /dev/null
+++ b/build/.phan/stubs/apcu.php
@@ -0,0 +1,235 @@
+<?php
+
+/**
+ * Stubs for APCu 5.0.0
+ */
+
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_LIST_ACTIVE', 1);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_LIST_DELETED', 2);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_TYPE', 1);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_KEY', 2);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_FILENAME', 4);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_DEVICE', 8);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_INODE', 16);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_VALUE', 32);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_MD5', 64);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_NUM_HITS', 128);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_MTIME', 256);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_CTIME', 512);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_DTIME', 1024);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_ATIME', 2048);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_REFCOUNT', 4096);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_MEM_SIZE', 8192);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_TTL', 16384);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_NONE', 0);
+/**
+ * @link http://php.net/manual/en/apcu.constants.php
+ */
+define('APC_ITER_ALL', -1);
+
+
+/**
+ * Clears the APCu cache
+ * @link http://php.net/manual/en/function.apcu-clear-cache.php
+ *
+ * @return bool Returns TRUE always.
+ */
+function apcu_clear_cache(){}
+
+/**
+ * Retrieves APCu Shared Memory Allocation information
+ * @link http://php.net/manual/en/function.apcu-sma-info.php
+ * @param bool $limited When set to FALSE (default) apcu_sma_info() will
+ * return a detailed information about each segment.
+ *
+ * @return array|bool Array of Shared Memory Allocation data; FALSE on failure.
+ */
+function apcu_sma_info($limited = false){}
+
+/**
+ * Cache a variable in the data store
+ * @link http://php.net/manual/en/function.apcu-store.php
+ * @param string|array $key String: Store the variable using this name. Keys are cache-unique,
+ * so storing a second value with the same key will overwrite the original value.
+ * Array: Names in key, variables in value.
+ * @param mixed $var [optional] The variable to store
+ * @param int $ttl [optional] Time To Live; store var in the cache for ttl seconds. After the ttl has passed,
+ * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied
+ * (or if the ttl is 0), the value will persist until it is removed from the cache manually,
+ * or otherwise fails to exist in the cache (clear, restart, etc.).
+ * @return bool|array Returns TRUE on success or FALSE on failure | array with error keys.
+ */
+function apcu_store($key, $var, $ttl = 0){}
+
+/**
+ * Fetch a stored variable from the cache
+ * @link http://php.net/manual/en/function.apcu-fetch.php
+ * @param string|string[] $key The key used to store the value (with apcu_store()).
+ * If an array is passed then each element is fetched and returned.
+ * @param bool $success Set to TRUE in success and FALSE in failure.
+ * @return mixed The stored variable or array of variables on success; FALSE on failure.
+ */
+function apcu_fetch($key, &$success = null){}
+
+/**
+ * Removes a stored variable from the cache
+ * @link http://php.net/manual/en/function.apcu-delete.php
+ * @param string|string[]|APCUIterator $key The key used to store the value (with apcu_store()).
+ * @return bool|string[] Returns TRUE on success or FALSE on failure. For array of keys returns list of failed keys.
+ */
+function apcu_delete($key){}
+
+/**
+ * Caches a variable in the data store, only if it's not already stored
+ * @link http://php.net/manual/en/function.apcu-add.php
+ * @param string $key Store the variable using this name. Keys are cache-unique,
+ * so attempting to use apcu_add() to store data with a key that already exists will not
+ * overwrite the existing data, and will instead return FALSE. (This is the only difference
+ * between apcu_add() and apcu_store().)
+ * @param mixed $var The variable to store
+ * @param int $ttl Time To Live; store var in the cache for ttl seconds. After the ttl has passed,
+ * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied
+ * (or if the ttl is 0), the value will persist until it is removed from the cache manually,
+ * or otherwise fails to exist in the cache (clear, restart, etc.).
+ * @return bool
+ */
+function apcu_add($key, $var, $ttl = 0){}
+
+/**
+ * Checks if APCu key exists
+ * @link http://php.net/manual/en/function.apcu-exists.php
+ * @param string|string[] $keys A string, or an array of strings, that contain keys.
+ * @return bool|string[] Returns TRUE if the key exists, otherwise FALSE
+ * Or if an array was passed to keys, then an array is returned that
+ * contains all existing keys, or an empty array if none exist.
+ */
+function apcu_exists($keys){}
+
+/**
+ * Increase a stored number
+ * @link http://php.net/manual/en/function.apcu-inc.php
+ * @param string $key The key of the value being increased.
+ * @param int $step The step, or value to increase.
+ * @param bool $success Optionally pass the success or fail boolean value to this referenced variable.
+ * @return int|bool Returns the current value of key's value on success, or FALSE on failure.
+ */
+function apcu_inc($key, $step = 1, &$success = null){}
+
+/**
+ * Decrease a stored number
+ * @link http://php.net/manual/en/function.apcu-dec.php
+ * @param string $key The key of the value being decreased.
+ * @param int $step The step, or value to decrease.
+ * @param bool $success Optionally pass the success or fail boolean value to this referenced variable.
+ * @return int|bool Returns the current value of key's value on success, or FALSE on failure.
+ */
+function apcu_dec($key, $step = 1, &$success = null){}
+
+/**
+ * Updates an old value with a new value
+ *
+ * apcu_cas() updates an already existing integer value if the old parameter matches the currently stored value
+ * with the value of the new parameter.
+ *
+ * @link http://php.net/manual/en/function.apcu-cas.php
+ * @param string $key The key of the value being updated.
+ * @param int $old The old value (the value currently stored).
+ * @param int $new The new value to update to.
+ * @return bool Returns TRUE on success or FALSE on failure.
+ */
+function apcu_cas($key, $old, $new){}
+
+/**
+ * Atomically fetch or generate a cache entry
+ *
+ * <p>Atomically attempts to find key in the cache, if it cannot be found generator is called,
+ * passing key as the only argument. The return value of the call is then cached with the optionally
+ * specified ttl, and returned.
+ * </p>
+ *
+ * <p>Note: When control enters <i>apcu_entry()</i> the lock for the cache is acquired exclusively, it is released when
+ * control leaves apcu_entry(): In effect, this turns the body of generator into a critical section,
+ * disallowing two processes from executing the same code paths concurrently.
+ * In addition, it prohibits the concurrent execution of any other APCu functions,
+ * since they will acquire the same lock.
+ * </p>
+ *
+ * @link http://php.net/manual/en/function.apcu-entry.php
+ *
+ * @param string $key Identity of cache entry
+ * @param callable $generator A callable that accepts key as the only argument and returns the value to cache.
+ * <p>Warning
+ * The only APCu function that can be called safely by generator is apcu_entry().</p>
+ * @param int $ttl [optional] Time To Live; store var in the cache for ttl seconds.
+ * After the ttl has passed, the stored variable will be expunged from the cache (on the next request).
+ * If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually,
+ * or otherwise fails to exist in the cache (clear, restart, etc.).
+ * @return mixed Returns the cached value
+ * @since APCu 5.1.0
+ */
+function apcu_entry($key, callable $generator, $ttl = 0){}
+
+/**
+ * Retrieves cached information from APCu's data store
+ *
+ * @link http://php.net/manual/en/function.apcu-cache-info.php
+ *
+ * @param bool $limited If limited is TRUE, the return value will exclude the individual list of cache entries.
+ * This is useful when trying to optimize calls for statistics gathering.
+ * @return array|bool Array of cached data (and meta-data) or FALSE on failure
+ */
+function apcu_cache_info($limited = false){}
diff --git a/build/.phan/stubs/memcached.php b/build/.phan/stubs/memcached.php
new file mode 100644
index 00000000000..2c8aced175e
--- /dev/null
+++ b/build/.phan/stubs/memcached.php
@@ -0,0 +1,1257 @@
+<?php
+// Start of memcached v.2.1.0
+
+/**
+ * Represents a connection to a set of memcached servers.
+ * @link http://php.net/manual/en/class.memcached.php
+ */
+class Memcached {
+
+ /**
+ * <p>Enables or disables payload compression. When enabled,
+ * item values longer than a certain threshold (currently 100 bytes) will be
+ * compressed during storage and decompressed during retrieval
+ * transparently.</p>
+ * <p>Type: boolean, default: <b>TRUE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_COMPRESSION = -1001;
+ const OPT_COMPRESSION_TYPE = -1004;
+
+ /**
+ * <p>This can be used to create a "domain" for your item keys. The value
+ * specified here will be prefixed to each of the keys. It cannot be
+ * longer than 128 characters and will reduce the
+ * maximum available key size. The prefix is applied only to the item keys,
+ * not to the server keys.</p>
+ * <p>Type: string, default: "".</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_PREFIX_KEY = -1002;
+
+ /**
+ * <p>
+ * Specifies the serializer to use for serializing non-scalar values.
+ * The valid serializers are <b>Memcached::SERIALIZER_PHP</b>
+ * or <b>Memcached::SERIALIZER_IGBINARY</b>. The latter is
+ * supported only when memcached is configured with
+ * --enable-memcached-igbinary option and the
+ * igbinary extension is loaded.
+ * </p>
+ * <p>Type: integer, default: <b>Memcached::SERIALIZER_PHP</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_SERIALIZER = -1003;
+
+ /**
+ * <p>Indicates whether igbinary serializer support is available.</p>
+ * <p>Type: boolean.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HAVE_IGBINARY = 0;
+
+ /**
+ * <p>Indicates whether JSON serializer support is available.</p>
+ * <p>Type: boolean.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HAVE_JSON = 0;
+ const HAVE_SESSION = 1;
+ const HAVE_SASL = 0;
+
+ /**
+ * <p>Specifies the hashing algorithm used for the item keys. The valid
+ * values are supplied via <b>Memcached::HASH_*</b> constants.
+ * Each hash algorithm has its advantages and its disadvantages. Go with the
+ * default if you don't know or don't care.</p>
+ * <p>Type: integer, default: <b>Memcached::HASH_DEFAULT</b></p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_HASH = 2;
+
+ /**
+ * <p>The default (Jenkins one-at-a-time) item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_DEFAULT = 0;
+
+ /**
+ * <p>MD5 item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_MD5 = 1;
+
+ /**
+ * <p>CRC item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_CRC = 2;
+
+ /**
+ * <p>FNV1_64 item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_FNV1_64 = 3;
+
+ /**
+ * <p>FNV1_64A item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_FNV1A_64 = 4;
+
+ /**
+ * <p>FNV1_32 item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_FNV1_32 = 5;
+
+ /**
+ * <p>FNV1_32A item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_FNV1A_32 = 6;
+
+ /**
+ * <p>Hsieh item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_HSIEH = 7;
+
+ /**
+ * <p>Murmur item key hashing algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const HASH_MURMUR = 8;
+
+ /**
+ * <p>Specifies the method of distributing item keys to the servers.
+ * Currently supported methods are modulo and consistent hashing. Consistent
+ * hashing delivers better distribution and allows servers to be added to
+ * the cluster with minimal cache losses.</p>
+ * <p>Type: integer, default: <b>Memcached::DISTRIBUTION_MODULA.</b></p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_DISTRIBUTION = 9;
+
+ /**
+ * <p>Modulo-based key distribution algorithm.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const DISTRIBUTION_MODULA = 0;
+
+ /**
+ * <p>Consistent hashing key distribution algorithm (based on libketama).</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const DISTRIBUTION_CONSISTENT = 1;
+ const DISTRIBUTION_VIRTUAL_BUCKET = 6;
+
+ /**
+ * <p>Enables or disables compatibility with libketama-like behavior. When
+ * enabled, the item key hashing algorithm is set to MD5 and distribution is
+ * set to be weighted consistent hashing distribution. This is useful
+ * because other libketama-based clients (Python, Ruby, etc.) with the same
+ * server configuration will be able to access the keys transparently.
+ * </p>
+ * <p>
+ * It is highly recommended to enable this option if you want to use
+ * consistent hashing, and it may be enabled by default in future
+ * releases.
+ * </p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_LIBKETAMA_COMPATIBLE = 16;
+ const OPT_LIBKETAMA_HASH = 17;
+ const OPT_TCP_KEEPALIVE = 32;
+
+ /**
+ * <p>Enables or disables buffered I/O. Enabling buffered I/O causes
+ * storage commands to "buffer" instead of being sent. Any action that
+ * retrieves data causes this buffer to be sent to the remote connection.
+ * Quitting the connection or closing down the connection will also cause
+ * the buffered data to be pushed to the remote connection.</p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_BUFFER_WRITES = 10;
+
+ /**
+ * <p>Enable the use of the binary protocol. Please note that you cannot
+ * toggle this option on an open connection.</p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_BINARY_PROTOCOL = 18;
+
+ /**
+ * <p>Enables or disables asynchronous I/O. This is the fastest transport
+ * available for storage functions.</p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_NO_BLOCK = 0;
+
+ /**
+ * <p>Enables or disables the no-delay feature for connecting sockets (may
+ * be faster in some environments).</p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_TCP_NODELAY = 1;
+
+ /**
+ * <p>The maximum socket send buffer in bytes.</p>
+ * <p>Type: integer, default: varies by platform/kernel
+ * configuration.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_SOCKET_SEND_SIZE = 4;
+
+ /**
+ * <p>The maximum socket receive buffer in bytes.</p>
+ * <p>Type: integer, default: varies by platform/kernel
+ * configuration.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_SOCKET_RECV_SIZE = 5;
+
+ /**
+ * <p>In non-blocking mode this set the value of the timeout during socket
+ * connection, in milliseconds.</p>
+ * <p>Type: integer, default: 1000.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_CONNECT_TIMEOUT = 14;
+
+ /**
+ * <p>The amount of time, in seconds, to wait until retrying a failed
+ * connection attempt.</p>
+ * <p>Type: integer, default: 0.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_RETRY_TIMEOUT = 15;
+
+ /**
+ * <p>Socket sending timeout, in microseconds. In cases where you cannot
+ * use non-blocking I/O this will allow you to still have timeouts on the
+ * sending of data.</p>
+ * <p>Type: integer, default: 0.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_SEND_TIMEOUT = 19;
+
+ /**
+ * <p>Socket reading timeout, in microseconds. In cases where you cannot
+ * use non-blocking I/O this will allow you to still have timeouts on the
+ * reading of data.</p>
+ * <p>Type: integer, default: 0.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_RECV_TIMEOUT = 20;
+
+ /**
+ * <p>Timeout for connection polling, in milliseconds.</p>
+ * <p>Type: integer, default: 1000.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_POLL_TIMEOUT = 8;
+
+ /**
+ * <p>Enables or disables caching of DNS lookups.</p>
+ * <p>Type: boolean, default: <b>FALSE</b>.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_CACHE_LOOKUPS = 6;
+
+ /**
+ * <p>Specifies the failure limit for server connection attempts. The
+ * server will be removed after this many continuous connection
+ * failures.</p>
+ * <p>Type: integer, default: 0.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const OPT_SERVER_FAILURE_LIMIT = 21;
+ const OPT_AUTO_EJECT_HOSTS = 28;
+ const OPT_HASH_WITH_PREFIX_KEY = 25;
+ const OPT_NOREPLY = 26;
+ const OPT_SORT_HOSTS = 12;
+ const OPT_VERIFY_KEY = 13;
+ const OPT_USE_UDP = 27;
+ const OPT_NUMBER_OF_REPLICAS = 29;
+ const OPT_RANDOMIZE_REPLICA_READ = 30;
+ const OPT_REMOVE_FAILED_SERVERS = 35;
+
+ /**
+ * <p>The operation was successful.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_SUCCESS = 0;
+
+ /**
+ * <p>The operation failed in some fashion.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_FAILURE = 1;
+
+ /**
+ * <p>DNS lookup failed.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_HOST_LOOKUP_FAILURE = 2;
+
+ /**
+ * <p>Failed to read network data.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_UNKNOWN_READ_FAILURE = 7;
+
+ /**
+ * <p>Bad command in memcached protocol.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_PROTOCOL_ERROR = 8;
+
+ /**
+ * <p>Error on the client side.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_CLIENT_ERROR = 9;
+
+ /**
+ * <p>Error on the server side.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_SERVER_ERROR = 10;
+
+ /**
+ * <p>Failed to write network data.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_WRITE_FAILURE = 5;
+
+ /**
+ * <p>Failed to do compare-and-swap: item you are trying to store has been
+ * modified since you last fetched it.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_DATA_EXISTS = 12;
+
+ /**
+ * <p>Item was not stored: but not because of an error. This normally
+ * means that either the condition for an "add" or a "replace" command
+ * wasn't met, or that the item is in a delete queue.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_NOTSTORED = 14;
+
+ /**
+ * <p>Item with this key was not found (with "get" operation or "cas"
+ * operations).</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_NOTFOUND = 16;
+
+ /**
+ * <p>Partial network data read error.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_PARTIAL_READ = 18;
+
+ /**
+ * <p>Some errors occurred during multi-get.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_SOME_ERRORS = 19;
+
+ /**
+ * <p>Server list is empty.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_NO_SERVERS = 20;
+
+ /**
+ * <p>End of result set.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_END = 21;
+
+ /**
+ * <p>System error.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_ERRNO = 26;
+
+ /**
+ * <p>The operation was buffered.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_BUFFERED = 32;
+
+ /**
+ * <p>The operation timed out.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_TIMEOUT = 31;
+
+ /**
+ * <p>Bad key.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_BAD_KEY_PROVIDED = 33;
+ const RES_STORED = 15;
+ const RES_DELETED = 22;
+ const RES_STAT = 24;
+ const RES_ITEM = 25;
+ const RES_NOT_SUPPORTED = 28;
+ const RES_FETCH_NOTFINISHED = 30;
+ const RES_SERVER_MARKED_DEAD = 35;
+ const RES_UNKNOWN_STAT_KEY = 36;
+ const RES_INVALID_HOST_PROTOCOL = 34;
+ const RES_MEMORY_ALLOCATION_FAILURE = 17;
+ const RES_E2BIG = 37;
+ const RES_KEY_TOO_BIG = 39;
+ const RES_SERVER_TEMPORARILY_DISABLED = 47;
+ const RES_SERVER_MEMORY_ALLOCATION_FAILURE = 48;
+ const RES_AUTH_PROBLEM = 40;
+ const RES_AUTH_FAILURE = 41;
+ const RES_AUTH_CONTINUE = 42;
+
+
+ /**
+ * <p>Failed to create network socket.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_CONNECTION_SOCKET_CREATE_FAILURE = 11;
+
+ /**
+ * <p>Payload failure: could not compress/decompress or serialize/unserialize the value.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const RES_PAYLOAD_FAILURE = -1001;
+
+ /**
+ * <p>The default PHP serializer.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const SERIALIZER_PHP = 1;
+
+ /**
+ * <p>The igbinary serializer.
+ * Instead of textual representation it stores PHP data structures in a
+ * compact binary form, resulting in space and time gains.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const SERIALIZER_IGBINARY = 2;
+
+ /**
+ * <p>The JSON serializer. Requires PHP 5.2.10+.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const SERIALIZER_JSON = 3;
+ const SERIALIZER_JSON_ARRAY = 4;
+ const COMPRESSION_FASTLZ = 2;
+ const COMPRESSION_ZLIB = 1;
+
+ /**
+ * <p>A flag for <b>Memcached::getMulti</b> and
+ * <b>Memcached::getMultiByKey</b> to ensure that the keys are
+ * returned in the same order as they were requested in. Non-existing keys
+ * get a default value of NULL.</p>
+ * @link http://php.net/manual/en/memcached.constants.php
+ */
+ const GET_PRESERVE_ORDER = 1;
+ const GET_ERROR_RETURN_VALUE = false;
+
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Create a Memcached instance
+ * @link http://php.net/manual/en/memcached.construct.php
+ * @param $persistent_id [optional]
+ * @param $callback [optional]
+ */
+ public function __construct ($persistent_id, $callback) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Return the result code of the last operation
+ * @link http://php.net/manual/en/memcached.getresultcode.php
+ * @return int Result code of the last Memcached operation.
+ */
+ public function getResultCode () {}
+
+ /**
+ * (PECL memcached &gt;= 1.0.0)<br/>
+ * Return the message describing the result of the last operation
+ * @link http://php.net/manual/en/memcached.getresultmessage.php
+ * @return string Message describing the result of the last Memcached operation.
+ */
+ public function getResultMessage () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Retrieve an item
+ * @link http://php.net/manual/en/memcached.get.php
+ * @param string $key <p>
+ * The key of the item to retrieve.
+ * </p>
+ * @param callable $cache_cb [optional] <p>
+ * Read-through caching callback or <b>NULL</b>.
+ * </p>
+ * @param float $cas_token [optional] <p>
+ * The variable to store the CAS token in.
+ * </p>
+ * @return mixed the value stored in the cache or <b>FALSE</b> otherwise.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function get ($key, callable $cache_cb = null, &$cas_token = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Retrieve an item from a specific server
+ * @link http://php.net/manual/en/memcached.getbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key of the item to fetch.
+ * </p>
+ * @param callable $cache_cb [optional] <p>
+ * Read-through caching callback or <b>NULL</b>
+ * </p>
+ * @param float $cas_token [optional] <p>
+ * The variable to store the CAS token in.
+ * </p>
+ * @return mixed the value stored in the cache or <b>FALSE</b> otherwise.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function getByKey ($server_key, $key, callable $cache_cb = null, &$cas_token = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Retrieve multiple items
+ * @link http://php.net/manual/en/memcached.getmulti.php
+ * @param array $keys <p>
+ * Array of keys to retrieve.
+ * </p>
+ * @param array $cas_tokens [optional] <p>
+ * The variable to store the CAS tokens for the found items.
+ * </p>
+ * @param int $flags [optional] <p>
+ * The flags for the get operation.
+ * </p>
+ * @return mixed the array of found items or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function getMulti (array $keys, array &$cas_tokens = null, $flags = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Retrieve multiple items from a specific server
+ * @link http://php.net/manual/en/memcached.getmultibykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param array $keys <p>
+ * Array of keys to retrieve.
+ * </p>
+ * @param string $cas_tokens [optional] <p>
+ * The variable to store the CAS tokens for the found items.
+ * </p>
+ * @param int $flags [optional] <p>
+ * The flags for the get operation.
+ * </p>
+ * @return array the array of found items or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function getMultiByKey ($server_key, array $keys, &$cas_tokens = null, $flags = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Request multiple items
+ * @link http://php.net/manual/en/memcached.getdelayed.php
+ * @param array $keys <p>
+ * Array of keys to request.
+ * </p>
+ * @param bool $with_cas [optional] <p>
+ * Whether to request CAS token values also.
+ * </p>
+ * @param callable $value_cb [optional] <p>
+ * The result callback or <b>NULL</b>.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function getDelayed (array $keys, $with_cas = null, callable $value_cb = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Request multiple items from a specific server
+ * @link http://php.net/manual/en/memcached.getdelayedbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param array $keys <p>
+ * Array of keys to request.
+ * </p>
+ * @param bool $with_cas [optional] <p>
+ * Whether to request CAS token values also.
+ * </p>
+ * @param callable $value_cb [optional] <p>
+ * The result callback or <b>NULL</b>.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function getDelayedByKey ($server_key, array $keys, $with_cas = null, callable $value_cb = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Fetch the next result
+ * @link http://php.net/manual/en/memcached.fetch.php
+ * @return array the next result or <b>FALSE</b> otherwise.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_END</b> if result set is exhausted.
+ */
+ public function fetch () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Fetch all the remaining results
+ * @link http://php.net/manual/en/memcached.fetchall.php
+ * @return array the results or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function fetchAll () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Store an item
+ * @link http://php.net/manual/en/memcached.set.php
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function set ($key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Store an item on a specific server
+ * @link http://php.net/manual/en/memcached.setbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function setByKey ($server_key, $key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Set a new expiration on an item
+ * @link http://php.net/manual/en/memcached.touch.php
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param int $expiration <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function touch ($key, $expiration) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Set a new expiration on an item on a specific server
+ * @link http://php.net/manual/en/memcached.touchbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param int $expiration <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function touchByKey ($server_key, $key, $expiration) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Store multiple items
+ * @link http://php.net/manual/en/memcached.setmulti.php
+ * @param array $items <p>
+ * An array of key/value pairs to store on the server.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function setMulti (array $items, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Store multiple items on a specific server
+ * @link http://php.net/manual/en/memcached.setmultibykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param array $items <p>
+ * An array of key/value pairs to store on the server.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function setMultiByKey ($server_key, array $items, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Compare and swap an item
+ * @link http://php.net/manual/en/memcached.cas.php
+ * @param float $cas_token <p>
+ * Unique value associated with the existing item. Generated by memcache.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_DATA_EXISTS</b> if the item you are trying
+ * to store has been modified since you last fetched it.
+ */
+ public function cas ($cas_token, $key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Compare and swap an item on a specific server
+ * @link http://php.net/manual/en/memcached.casbykey.php
+ * @param float $cas_token <p>
+ * Unique value associated with the existing item. Generated by memcache.
+ * </p>
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_DATA_EXISTS</b> if the item you are trying
+ * to store has been modified since you last fetched it.
+ */
+ public function casByKey ($cas_token, $server_key, $key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Add an item under a new key
+ * @link http://php.net/manual/en/memcached.add.php
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key already exists.
+ */
+ public function add ($key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Add an item under a new key on a specific server
+ * @link http://php.net/manual/en/memcached.addbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key already exists.
+ */
+ public function addByKey ($server_key, $key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Append data to an existing item
+ * @link http://php.net/manual/en/memcached.append.php
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param string $value <p>
+ * The string to append.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function append ($key, $value) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Append data to an existing item on a specific server
+ * @link http://php.net/manual/en/memcached.appendbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param string $value <p>
+ * The string to append.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function appendByKey ($server_key, $key, $value) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Prepend data to an existing item
+ * @link http://php.net/manual/en/memcached.prepend.php
+ * @param string $key <p>
+ * The key of the item to prepend the data to.
+ * </p>
+ * @param string $value <p>
+ * The string to prepend.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function prepend ($key, $value) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Prepend data to an existing item on a specific server
+ * @link http://php.net/manual/en/memcached.prependbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key of the item to prepend the data to.
+ * </p>
+ * @param string $value <p>
+ * The string to prepend.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function prependByKey ($server_key, $key, $value) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Replace the item under an existing key
+ * @link http://php.net/manual/en/memcached.replace.php
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function replace ($key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Replace the item under an existing key on a specific server
+ * @link http://php.net/manual/en/memcached.replacebykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key under which to store the value.
+ * </p>
+ * @param mixed $value <p>
+ * The value to store.
+ * </p>
+ * @param int $expiration [optional] <p>
+ * The expiration time, defaults to 0. See Expiration Times for more info.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTSTORED</b> if the key does not exist.
+ */
+ public function replaceByKey ($server_key, $key, $value, $expiration = null) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Delete an item
+ * @link http://php.net/manual/en/memcached.delete.php
+ * @param string $key <p>
+ * The key to be deleted.
+ * </p>
+ * @param int $time [optional] <p>
+ * The amount of time the server will wait to delete the item.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function delete ($key, $time = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Delete multiple items
+ * @link http://php.net/manual/en/memcached.deletemulti.php
+ * @param array $keys <p>
+ * The keys to be deleted.
+ * </p>
+ * @param int $time [optional] <p>
+ * The amount of time the server will wait to delete the items.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function deleteMulti (array $keys, $time = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Delete an item from a specific server
+ * @link http://php.net/manual/en/memcached.deletebykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key to be deleted.
+ * </p>
+ * @param int $time [optional] <p>
+ * The amount of time the server will wait to delete the item.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function deleteByKey ($server_key, $key, $time = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Delete multiple items from a specific server
+ * @link http://php.net/manual/en/memcached.deletemultibykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param array $keys <p>
+ * The keys to be deleted.
+ * </p>
+ * @param int $time [optional] <p>
+ * The amount of time the server will wait to delete the items.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * The <b>Memcached::getResultCode</b> will return
+ * <b>Memcached::RES_NOTFOUND</b> if the key does not exist.
+ */
+ public function deleteMultiByKey ($server_key, array $keys, $time = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Increment numeric item's value
+ * @link http://php.net/manual/en/memcached.increment.php
+ * @param string $key <p>
+ * The key of the item to increment.
+ * </p>
+ * @param int $offset [optional] <p>
+ * The amount by which to increment the item's value.
+ * </p>
+ * @param int $initial_value [optional] <p>
+ * The value to set the item to if it doesn't currently exist.
+ * </p>
+ * @param int $expiry [optional] <p>
+ * The expiry time to set on the item.
+ * </p>
+ * @return int new item's value on success or <b>FALSE</b> on failure.
+ */
+ public function increment ($key, $offset = 1, $initial_value = 0, $expiry = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Decrement numeric item's value
+ * @link http://php.net/manual/en/memcached.decrement.php
+ * @param string $key <p>
+ * The key of the item to decrement.
+ * </p>
+ * @param int $offset [optional] <p>
+ * The amount by which to decrement the item's value.
+ * </p>
+ * @param int $initial_value [optional] <p>
+ * The value to set the item to if it doesn't currently exist.
+ * </p>
+ * @param int $expiry [optional] <p>
+ * The expiry time to set on the item.
+ * </p>
+ * @return int item's new value on success or <b>FALSE</b> on failure.
+ */
+ public function decrement ($key, $offset = 1, $initial_value = 0, $expiry = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Increment numeric item's value, stored on a specific server
+ * @link http://php.net/manual/en/memcached.incrementbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key of the item to increment.
+ * </p>
+ * @param int $offset [optional] <p>
+ * The amount by which to increment the item's value.
+ * </p>
+ * @param int $initial_value [optional] <p>
+ * The value to set the item to if it doesn't currently exist.
+ * </p>
+ * @param int $expiry [optional] <p>
+ * The expiry time to set on the item.
+ * </p>
+ * @return int new item's value on success or <b>FALSE</b> on failure.
+ */
+ public function incrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Decrement numeric item's value, stored on a specific server
+ * @link http://php.net/manual/en/memcached.decrementbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @param string $key <p>
+ * The key of the item to decrement.
+ * </p>
+ * @param int $offset [optional] <p>
+ * The amount by which to decrement the item's value.
+ * </p>
+ * @param int $initial_value [optional] <p>
+ * The value to set the item to if it doesn't currently exist.
+ * </p>
+ * @param int $expiry [optional] <p>
+ * The expiry time to set on the item.
+ * </p>
+ * @return int item's new value on success or <b>FALSE</b> on failure.
+ */
+ public function decrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Add a server to the server pool
+ * @link http://php.net/manual/en/memcached.addserver.php
+ * @param string $host <p>
+ * The hostname of the memcache server. If the hostname is invalid, data-related
+ * operations will set
+ * <b>Memcached::RES_HOST_LOOKUP_FAILURE</b> result code.
+ * </p>
+ * @param int $port <p>
+ * The port on which memcache is running. Usually, this is
+ * 11211.
+ * </p>
+ * @param int $weight [optional] <p>
+ * The weight of the server relative to the total weight of all the
+ * servers in the pool. This controls the probability of the server being
+ * selected for operations. This is used only with consistent distribution
+ * option and usually corresponds to the amount of memory available to
+ * memcache on that server.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function addServer ($host, $port, $weight = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.1)<br/>
+ * Add multiple servers to the server pool
+ * @link http://php.net/manual/en/memcached.addservers.php
+ * @param array $servers
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function addServers (array $servers) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Get the list of the servers in the pool
+ * @link http://php.net/manual/en/memcached.getserverlist.php
+ * @return array The list of all servers in the server pool.
+ */
+ public function getServerList () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Map a key to a server
+ * @link http://php.net/manual/en/memcached.getserverbykey.php
+ * @param string $server_key <p>
+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
+ * </p>
+ * @return array an array containing three keys of host,
+ * port, and weight on success or <b>FALSE</b>
+ * on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function getServerByKey ($server_key) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Clears all servers from the server list
+ * @link http://php.net/manual/en/memcached.resetserverlist.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function resetServerList () {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Close any open connections
+ * @link http://php.net/manual/en/memcached.quit.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function quit () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Get server pool statistics
+ * @link http://php.net/manual/en/memcached.getstats.php
+ * @return array Array of server statistics, one entry per server.
+ */
+ public function getStats () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.5)<br/>
+ * Get server pool version info
+ * @link http://php.net/manual/en/memcached.getversion.php
+ * @return array Array of server versions, one entry per server.
+ */
+ public function getVersion () {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Gets the keys stored on all the servers
+ * @link http://php.net/manual/en/memcached.getallkeys.php
+ * @return array the keys stored on all the servers on success or <b>FALSE</b> on failure.
+ */
+ public function getAllKeys () {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Invalidate all items in the cache
+ * @link http://php.net/manual/en/memcached.flush.php
+ * @param int $delay [optional] <p>
+ * Numer of seconds to wait before invalidating the items.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ * Use <b>Memcached::getResultCode</b> if necessary.
+ */
+ public function flush ($delay = 0) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Retrieve a Memcached option value
+ * @link http://php.net/manual/en/memcached.getoption.php
+ * @param int $option <p>
+ * One of the Memcached::OPT_* constants.
+ * </p>
+ * @return mixed the value of the requested option, or <b>FALSE</b> on
+ * error.
+ */
+ public function getOption ($option) {}
+
+ /**
+ * (PECL memcached &gt;= 0.1.0)<br/>
+ * Set a Memcached option
+ * @link http://php.net/manual/en/memcached.setoption.php
+ * @param int $option
+ * @param mixed $value
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function setOption ($option, $value) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Set Memcached options
+ * @link http://php.net/manual/en/memcached.setoptions.php
+ * @param array $options <p>
+ * An associative array of options where the key is the option to set and
+ * the value is the new value for the option.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function setOptions (array $options) {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Check if a persitent connection to memcache is being used
+ * @link http://php.net/manual/en/memcached.ispersistent.php
+ * @return bool true if Memcache instance uses a persistent connection, false otherwise.
+ */
+ public function isPersistent () {}
+
+ /**
+ * (PECL memcached &gt;= 2.0.0)<br/>
+ * Check if the instance was recently created
+ * @link http://php.net/manual/en/memcached.ispristine.php
+ * @return bool the true if instance is recently created, false otherwise.
+ */
+ public function isPristine () {}
+
+}
+
+/**
+ * @link http://php.net/manual/en/class.memcachedexception.php
+ */
+class MemcachedException extends RuntimeException {
+
+}
+// End of memcached v.2.1.0
diff --git a/build/.phan/stubs/xcache.php b/build/.phan/stubs/xcache.php
new file mode 100644
index 00000000000..22700b1b190
--- /dev/null
+++ b/build/.phan/stubs/xcache.php
@@ -0,0 +1,217 @@
+<?php
+/**
+ * Common Used Functions
+ */
+
+/**
+ * Get cached data by specified name
+ *
+ * @param string $name Key name
+ * @return mixed
+ */
+function xcache_get($name) {}
+
+/**
+ * Store data to cache by specified name
+ *
+ * @param string $name Key name
+ * @param mixed $value Value to store
+ * @param int $ttl TTL in seconds
+ * @return bool TRUE on success, FALSE otherwise
+ */
+function xcache_set($name, $value, $ttl = 0) {}
+
+/**
+ * Check if an entry exists in cache by specified name
+ *
+ * @param string $name Key name
+ * @return bool TRUE if key exists, FALSE otherwise
+ */
+function xcache_isset($name) {}
+
+/**
+ * Unset existing data in cache by specified name
+ *
+ * @param string $name Key name
+ * @return bool
+ */
+function xcache_unset($name) {}
+
+/**
+ * Unset existing data in cache by specified prefix
+ *
+ * @param string $prefix Keys' prefix
+ * @return bool
+ */
+function xcache_unset_by_prefix($prefix) {}
+
+/**
+ * Increase an int counter in cache by specified name, create it if not exists
+ *
+ * @param string $name
+ * @param mixed $value
+ * @param int $ttl
+ * @return int
+ */
+function xcache_inc($name, $value = 1, $ttl = 0) {}
+
+/**
+ * Decrease an int counter in cache by specified name, create it if not exists
+ *
+ * @param string $name
+ * @param mixed $value
+ * @param int $ttl
+ * @return int
+ */
+function xcache_dec($name, $value = 1, $ttl = 0) {}
+
+/**
+ * Administrator Functions
+ */
+
+/**
+ * Return count of cache on specified cache type
+ *
+ * @param int $type
+ * @return int
+ */
+function xcache_count($type) {}
+
+/**
+ * Get cache info by id on specified cache type
+ *
+ * @param int $type
+ * @param int $id
+ * @return array
+ */
+function xcache_info($type, $id) {}
+
+/**
+ * Get cache entries list by id on specified cache type
+ *
+ * @param int $type
+ * @param int $id
+ * @return array
+ */
+function xcache_list($type, $id) {}
+
+/**
+ * Clear cache by id on specified cache type
+ *
+ * @param int $type
+ * @param int $id
+ * @return void
+ */
+function xcache_clear_cache($type, $id = -1) {}
+
+/**
+ * @param int $op_type
+ * @return string
+ */
+function xcache_coredump($op_type) {}
+
+/**
+ * Coverager Functions
+ */
+
+/**
+ * @param string $data
+ * @return array
+ */
+function xcache_coverager_decode($data) {}
+
+/**
+ * @param bool $clean
+ * @return void
+ */
+function xcache_coverager_start($clean = true) {}
+
+/**
+ * @param bool $clean
+ * @return void
+ */
+function xcache_coverager_stop($clean = false) {}
+
+/**
+ * @param bool $clean
+ * @return array
+ */
+function xcache_coverager_get($clean = false) {}
+
+/**
+ * Opcode Functions
+ */
+
+/**
+ * @param string $filename
+ * @return string
+ */
+function xcache_asm($filename) {}
+
+/**
+ * Disassemble file into opcode array by filename
+ *
+ * @param string $filename
+ * @return string
+ */
+function xcache_dasm_file($filename) {}
+
+/**
+ * Disassemble php code into opcode array
+ *
+ * @param string $code
+ * @return string
+ */
+function xcache_dasm_string($code) {}
+
+/**
+ * Encode php file into XCache opcode encoded format
+ *
+ * @param string $filename
+ * @return string
+ */
+function xcache_encode($filename) {}
+
+/**
+ * Decode(load) opcode from XCache encoded format file
+ *
+ * @param string $filename
+ * @return bool
+ */
+function xcache_decode($filename) {}
+
+/**
+ * @param int $op_type
+ * @return string
+ */
+function xcache_get_op_type($op_type) {}
+
+/**
+ * @param int $type
+ * @return string
+ */
+function xcache_get_data_type($type) {}
+
+/**
+ * @param int $opcode
+ * @return string
+ */
+function xcache_get_opcode($opcode) {}
+
+/**
+ * @param int $op_type
+ * @return string
+ */
+function xcache_get_op_spec($op_type) {}
+
+/**
+ * @param int $opcode
+ * @return string
+ */
+function xcache_get_opcode_spec($opcode) {}
+
+/**
+ * @param string $name
+ * @return string
+ */
+function xcache_is_autoglobal($name) {}
diff --git a/build/.phan/tests/SqlInjectionCheckerTest.php b/build/.phan/tests/SqlInjectionCheckerTest.php
new file mode 100644
index 00000000000..3824d5c1704
--- /dev/null
+++ b/build/.phan/tests/SqlInjectionCheckerTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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/>.
+ *
+ */
+
+$builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+$builder->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf']));
+
+class SqlInjectionCheckerTest {
+ private $qb;
+
+ public function __construct(\OCP\IDBConnection $dbConnection) {
+ $this->qb = $dbConnection->getQueryBuilder();
+ }
+
+ public function testEqAndNeq() {
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal('myString')));
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal(0)));
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($_GET['bar'])));
+ $asdf = '123';
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($asdf)));
+ $asdf = 1;
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->neq('asdf', $asdf));
+ $asdf = '123';
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->lt('asdf', $asdf));
+ $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('s.resourceid', 'a.id'));
+ $this->qb->select('*')->from('ado')->andWhere($this->qb->expr()->gte('asdf', $_GET['asdf']));
+ $this->qb->select('*')
+ ->from('ado')
+ ->where($this->qb->expr()->eq('asdf', $this->qb->createNamedParameter('asdf')));
+ $this->qb->select('*')
+ ->from('ado')
+ ->where($this->qb->expr()->eq('asdf', $this->qb->createPositionalParameter('asdf')));
+ }
+
+ public function testInstantiatingDatabaseConnection() {
+ $qb = \OC::$server->getDatabaseConnection();
+ $qb->getQueryBuilder()->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf']));
+ }
+
+ public function testSet() {
+ $this->qb->update('file_locks')->set('lock', $this->qb->createNamedParameter('lukaslukaslukas'));
+ $this->qb->update('file_locks')->set('lock', '1234');
+ $asdf = '1234';
+ $this->qb->update('file_locks')->set('lock', $asdf);
+ $this->qb->update('file_locks')->set('lock', $_GET['asdf']);
+ }
+
+ public function testSetValue() {
+ $this->qb->update('file_locks')->setValue('lock', $this->qb->createNamedParameter('lukaslukaslukas'));
+ $this->qb->update('file_locks')->setValue('lock', '1234');
+ $asdf = '1234';
+ $this->qb->update('file_locks')->setValue('lock', $asdf);
+ $this->qb->update('file_locks')->setValue('lock', $_GET['asdf']);
+ }
+} \ No newline at end of file
diff --git a/build/files-checker.php b/build/files-checker.php
index 4d4e64e3614..66c44bd971b 100644
--- a/build/files-checker.php
+++ b/build/files-checker.php
@@ -58,7 +58,6 @@ $expectedFiles = [
'COPYING-README',
'core',
'cron.php',
- 'db_structure.xml',
'index.html',
'index.php',
'issue_template.md',
diff --git a/core/img/image-optimization.sh b/build/image-optimization.sh
index b5de96e018b..cf82e120dcd 100755
--- a/core/img/image-optimization.sh
+++ b/build/image-optimization.sh
@@ -17,4 +17,4 @@ do
done;
}
-recursive_optimize_images ../../
+recursive_optimize_images ../
diff --git a/config/config.sample.php b/config/config.sample.php
index 3d1ccb8c2c1..71d1aa3a02c 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -902,10 +902,6 @@ $CONFIG = array(
* - OC\Preview\TIFF
* - OC\Preview\Font
*
- * .. note:: Troubleshooting steps for the MS Word previews are available
- * at the :doc:`../configuration_files/collaborative_documents_configuration`
- * section of the Administrators Manual.
- *
* The following providers are not available in Microsoft Windows:
*
* - OC\Preview\Movie
@@ -1262,7 +1258,7 @@ $CONFIG = array(
*
* If you want to convert an existing 3-byte setup into a 4-byte setup please
* set the parameters in MySQL as mentioned below and run the migration command:
- * ./occ db:convert-mysql-charset
+ * ./occ db:convert-mysql-charset
* The config setting will be set automatically after a successful run.
*
* Consult the documentation for more details.
diff --git a/core/Command/App/Install.php b/core/Command/App/Install.php
new file mode 100644
index 00000000000..0c99c7ff85a
--- /dev/null
+++ b/core/Command/App/Install.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Klaus Herberth <klaus@jsxc.org>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Core\Command\App;
+
+use OC\Installer;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Install extends Command {
+
+ protected function configure() {
+ $this
+ ->setName('app:install')
+ ->setDescription('install an app')
+ ->addArgument(
+ 'app-id',
+ InputArgument::REQUIRED,
+ 'install the specified app'
+ )
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $appId = $input->getArgument('app-id');
+
+ if (\OC_App::getAppPath($appId)) {
+ $output->writeln($appId . ' already installed');
+ return 1;
+ }
+
+ try {
+ $installer = new Installer(
+ \OC::$server->getAppFetcher(),
+ \OC::$server->getHTTPClientService(),
+ \OC::$server->getTempManager(),
+ \OC::$server->getLogger(),
+ \OC::$server->getConfig()
+ );
+ $installer->downloadApp($appId);
+ $result = $installer->installApp($appId);
+ } catch(\Exception $e) {
+ $output->writeln('Error: ' . $e->getMessage());
+ return 1;
+ }
+
+ if($result === false) {
+ $output->writeln($appId . ' couldn\'t be installed');
+ return 1;
+ }
+
+ $output->writeln($appId . ' installed');
+
+ return 0;
+ }
+}
diff --git a/core/Command/App/ListApps.php b/core/Command/App/ListApps.php
index e03e3ce8f56..c933a2519ef 100644
--- a/core/Command/App/ListApps.php
+++ b/core/Command/App/ListApps.php
@@ -73,7 +73,7 @@ class ListApps extends Base {
//sort enabled apps above disabled apps
foreach ($apps as $app) {
- if ($shippedFilter !== null && \OC_App::isShipped($app) !== $shippedFilter){
+ if ($shippedFilter !== null && $this->manager->isShipped($app) !== $shippedFilter){
continue;
}
if ($this->manager->isInstalled($app)) {
diff --git a/core/Command/Db/ConvertType.php b/core/Command/Db/ConvertType.php
index 4ca7899fec6..a7839522934 100644
--- a/core/Command/Db/ConvertType.php
+++ b/core/Command/Db/ConvertType.php
@@ -28,6 +28,10 @@
namespace OC\Core\Command\Db;
+use Doctrine\DBAL\DBALException;
+use Doctrine\DBAL\Schema\Table;
+use Doctrine\DBAL\Types\Type;
+use OC\DB\MigrationService;
use OCP\DB\QueryBuilder\IQueryBuilder;
use \OCP\IConfig;
use OC\DB\Connection;
@@ -190,7 +194,7 @@ class ConvertType extends Command implements CompletionAwareInterface {
$this->clearSchema($toDB, $input, $output);
}
- $this->createSchema($toDB, $input, $output);
+ $this->createSchema($fromDB, $toDB, $input, $output);
$toTables = $this->getTables($toDB);
$fromTables = $this->getTables($fromDB);
@@ -217,27 +221,43 @@ class ConvertType extends Command implements CompletionAwareInterface {
$this->convertDB($fromDB, $toDB, $intersectingTables, $input, $output);
}
- protected function createSchema(Connection $toDB, InputInterface $input, OutputInterface $output) {
+ protected function createSchema(Connection $fromDB, Connection $toDB, InputInterface $input, OutputInterface $output) {
$output->writeln('<info>Creating schema in new database</info>');
+
+ $fromMS = new MigrationService('core', $fromDB);
+ $currentMigration = $fromMS->getMigration('current');
+ if ($currentMigration !== '0') {
+ $toMS = new MigrationService('core', $toDB);
+ $toMS->migrate($currentMigration);
+ }
+
$schemaManager = new \OC\DB\MDB2SchemaManager($toDB);
- $schemaManager->createDbFromStructure(\OC::$SERVERROOT.'/db_structure.xml');
$apps = $input->getOption('all-apps') ? \OC_App::getAllApps() : \OC_App::getEnabledApps();
foreach($apps as $app) {
if (file_exists(\OC_App::getAppPath($app).'/appinfo/database.xml')) {
$schemaManager->createDbFromStructure(\OC_App::getAppPath($app).'/appinfo/database.xml');
+ } else {
+ // Make sure autoloading works...
+ \OC_App::loadApp($app);
+ $fromMS = new MigrationService($app, $fromDB);
+ $currentMigration = $fromMS->getMigration('current');
+ if ($currentMigration !== '0') {
+ $toMS = new MigrationService($app, $toDB);
+ $toMS->migrate($currentMigration);
+ }
}
}
}
protected function getToDBConnection(InputInterface $input, OutputInterface $output) {
$type = $input->getArgument('type');
- $connectionParams = array(
+ $connectionParams = $this->connectionFactory->createConnectionParams();
+ $connectionParams = array_merge($connectionParams, [
'host' => $input->getArgument('hostname'),
'user' => $input->getArgument('username'),
'password' => $input->getOption('password'),
'dbname' => $input->getArgument('database'),
- 'tablePrefix' => $this->config->getSystemValue('dbtableprefix', 'oc_'),
- );
+ ]);
if ($input->getOption('port')) {
$connectionParams['port'] = $input->getOption('port');
}
@@ -261,13 +281,26 @@ class ConvertType extends Command implements CompletionAwareInterface {
return $db->getSchemaManager()->listTableNames();
}
- protected function copyTable(Connection $fromDB, Connection $toDB, $table, InputInterface $input, OutputInterface $output) {
+ /**
+ * @param Connection $fromDB
+ * @param Connection $toDB
+ * @param Table $table
+ * @param InputInterface $input
+ * @param OutputInterface $output
+ * @suppress SqlInjectionChecker
+ */
+ protected function copyTable(Connection $fromDB, Connection $toDB, Table $table, InputInterface $input, OutputInterface $output) {
+ if ($table->getName() === $toDB->getPrefix() . 'migrations') {
+ $output->writeln('<comment>Skipping migrations table because it was already filled by running the migrations</comment>');
+ return;
+ }
+
$chunkSize = $input->getOption('chunk-size');
$query = $fromDB->getQueryBuilder();
$query->automaticTablePrefix(false);
$query->selectAlias($query->createFunction('COUNT(*)'), 'num_entries')
- ->from($table);
+ ->from($table->getName());
$result = $query->execute();
$count = $result->fetchColumn();
$result->closeCursor();
@@ -285,12 +318,25 @@ class ConvertType extends Command implements CompletionAwareInterface {
$query = $fromDB->getQueryBuilder();
$query->automaticTablePrefix(false);
$query->select('*')
- ->from($table)
+ ->from($table->getName())
->setMaxResults($chunkSize);
+ try {
+ $orderColumns = $table->getPrimaryKeyColumns();
+ } catch (DBALException $e) {
+ $orderColumns = [];
+ foreach ($table->getColumns() as $column) {
+ $orderColumns[] = $column->getName();
+ }
+ }
+
+ foreach ($orderColumns as $column) {
+ $query->addOrderBy($column);
+ }
+
$insertQuery = $toDB->getQueryBuilder();
$insertQuery->automaticTablePrefix(false);
- $insertQuery->insert($table);
+ $insertQuery->insert($table->getName());
$parametersCreated = false;
for ($chunk = 0; $chunk < $numChunks; $chunk++) {
@@ -322,33 +368,35 @@ class ConvertType extends Command implements CompletionAwareInterface {
$progress->finish();
}
- protected function getColumnType($table, $column) {
- if (isset($this->columnTypes[$table][$column])) {
- return $this->columnTypes[$table][$column];
+ protected function getColumnType(Table $table, $columnName) {
+ $tableName = $table->getName();
+ if (isset($this->columnTypes[$tableName][$columnName])) {
+ return $this->columnTypes[$tableName][$columnName];
}
- $prefix = $this->config->getSystemValue('dbtableprefix', 'oc_');
- $this->columnTypes[$table][$column] = false;
+ $type = $table->getColumn($columnName)->getType()->getName();
- if ($table === $prefix . 'cards' && $column === 'carddata') {
- $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB;
- } else if ($column === 'calendardata') {
- if ($table === $prefix . 'calendarobjects' ||
- $table === $prefix . 'schedulingobjects') {
- $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB;
- }
+ switch ($type) {
+ case Type::BLOB:
+ case Type::TEXT:
+ $this->columnTypes[$tableName][$columnName] = IQueryBuilder::PARAM_LOB;
+ break;
+ default:
+ $this->columnTypes[$tableName][$columnName] = false;
}
- return $this->columnTypes[$table][$column];
+ return $this->columnTypes[$tableName][$columnName];
}
protected function convertDB(Connection $fromDB, Connection $toDB, array $tables, InputInterface $input, OutputInterface $output) {
$this->config->setSystemValue('maintenance', true);
+ $schema = $fromDB->createSchema();
+
try {
// copy table rows
foreach($tables as $table) {
$output->writeln($table);
- $this->copyTable($fromDB, $toDB, $table, $input, $output);
+ $this->copyTable($fromDB, $toDB, $schema->getTable($table), $input, $output);
}
if ($input->getArgument('type') === 'pgsql') {
$tools = new \OC\DB\PgSqlTools($this->config);
diff --git a/core/Command/Db/GenerateChangeScript.php b/core/Command/Db/GenerateChangeScript.php
deleted file mode 100644
index bbe8d29958e..00000000000
--- a/core/Command/Db/GenerateChangeScript.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OC\Core\Command\Db;
-
-use Stecman\Component\Symfony\Console\BashCompletion\Completion;
-use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
-use Stecman\Component\Symfony\Console\BashCompletion\Completion\ShellPathCompletion;
-use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-class GenerateChangeScript extends Command implements CompletionAwareInterface {
- protected function configure() {
- $this
- ->setName('db:generate-change-script')
- ->setDescription('generates the change script from the current connected db to db_structure.xml')
- ->addArgument(
- 'schema-xml',
- InputArgument::OPTIONAL,
- 'the schema xml to be used as target schema',
- \OC::$SERVERROOT . '/db_structure.xml'
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output) {
-
- $file = $input->getArgument('schema-xml');
-
- $schemaManager = new \OC\DB\MDB2SchemaManager(\OC::$server->getDatabaseConnection());
-
- try {
- $result = $schemaManager->updateDbFromStructure($file, true);
- $output->writeln($result);
- } catch (\Exception $e) {
- $output->writeln('Failed to update database structure ('.$e.')');
- }
-
- }
-
- /**
- * @param string $optionName
- * @param CompletionContext $context
- * @return string[]
- */
- public function completeOptionValues($optionName, CompletionContext $context) {
- return [];
- }
-
- /**
- * @param string $argumentName
- * @param CompletionContext $context
- * @return string[]
- */
- public function completeArgumentValues($argumentName, CompletionContext $context) {
- if ($argumentName === 'schema-xml') {
- $helper = new ShellPathCompletion(
- $this->getName(),
- 'schema-xml',
- Completion::TYPE_ARGUMENT
- );
- return $helper->run();
- }
- return [];
- }
-}
diff --git a/core/Command/Db/Migrations/GenerateCommand.php b/core/Command/Db/Migrations/GenerateCommand.php
index e6c38d06e5d..4db82d6eff4 100644
--- a/core/Command/Db/Migrations/GenerateCommand.php
+++ b/core/Command/Db/Migrations/GenerateCommand.php
@@ -36,9 +36,9 @@ use Symfony\Component\Console\Output\OutputInterface;
class GenerateCommand extends Command {
- private static $_templateSimple =
+ protected static $_templateSimple =
'<?php
-namespace <namespace>;
+namespace {{<namespace}};
use Doctrine\DBAL\Schema\Schema;
use OCP\Migration\SimpleMigrationStep;
@@ -47,7 +47,7 @@ use OCP\Migration\IOutput;
/**
* Auto-generated migration step: Please modify to your needs!
*/
-class <classname> extends SimpleMigrationStep {
+class {{classname}} extends SimpleMigrationStep {
/**
* @param IOutput $output
@@ -66,7 +66,7 @@ class <classname> extends SimpleMigrationStep {
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- return null;
+{{schemabody}}
}
/**
@@ -81,7 +81,7 @@ class <classname> extends SimpleMigrationStep {
';
/** @var IDBConnection */
- private $connection;
+ protected $connection;
/**
* @param IDBConnection $connection
@@ -123,16 +123,24 @@ class <classname> extends SimpleMigrationStep {
/**
* @param MigrationService $ms
* @param string $className
+ * @param string $schemaBody
* @return string
*/
- private function generateMigration(MigrationService $ms, $className) {
+ protected function generateMigration(MigrationService $ms, $className, $schemaBody = '') {
+ if ($schemaBody === '') {
+ $schemaBody = "\t\t" . 'return null;';
+ }
+
+
$placeHolders = [
- '<namespace>',
- '<classname>',
+ '{{namespace}}',
+ '{{classname}}',
+ '{{schemabody}}',
];
$replacements = [
$ms->getMigrationsNamespace(),
$className,
+ $schemaBody,
];
$code = str_replace($placeHolders, $replacements, self::$_templateSimple);
$dir = $ms->getMigrationsDirectory();
@@ -147,7 +155,7 @@ class <classname> extends SimpleMigrationStep {
return $path;
}
- private function ensureMigrationDirExists($directory) {
+ protected function ensureMigrationDirExists($directory) {
if (file_exists($directory) && is_dir($directory)) {
return;
}
diff --git a/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php
new file mode 100644
index 00000000000..54a4d95738e
--- /dev/null
+++ b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php
@@ -0,0 +1,199 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Julius Haertl <jus@bitgrid.net>
+ *
+ * @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 OC\Core\Command\Db\Migrations;
+
+
+use Doctrine\DBAL\Schema\Schema;
+use OC\DB\MDB2SchemaReader;
+use OC\DB\MigrationService;
+use OC\Migration\ConsoleOutput;
+use OCP\App\IAppManager;
+use OCP\IConfig;
+use OCP\IDBConnection;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class GenerateFromSchemaFileCommand extends GenerateCommand {
+
+ /** @var IConfig */
+ protected $config;
+
+ /** @var IAppManager */
+ protected $appManager;
+
+ public function __construct(IConfig $config, IAppManager $appManager, IDBConnection $connection) {
+ parent::__construct($connection);
+ $this->config = $config;
+ $this->appManager = $appManager;
+ }
+
+
+ protected function configure() {
+ parent::configure();
+
+ $this->setName('migrations:generate-from-schema');
+ }
+
+ public function execute(InputInterface $input, OutputInterface $output) {
+ $appName = $input->getArgument('app');
+ $version = $input->getArgument('version');
+
+ if (!preg_match('/^\d{1,16}$/',$version)) {
+ $output->writeln('<error>The given version is invalid. Only 0-9 are allowed (max. 16 digits)</error>');
+ return 1;
+ }
+
+ $schemaFile = $this->appManager->getAppPath($appName) . '/appinfo/database.xml';
+ if (!file_exists($schemaFile)) {
+ $output->writeln('<error>App ' . $appName . ' does not have a database.xml file</error>');
+ return 2;
+ }
+
+ $reader = new MDB2SchemaReader($this->config, $this->connection->getDatabasePlatform());
+ $schema = new Schema();
+ $reader->loadSchemaFromFile($schemaFile, $schema);
+
+ $schemaBody = $this->schemaToMigration($schema);
+
+ $ms = new MigrationService($appName, $this->connection, new ConsoleOutput($output));
+
+ $date = date('YmdHis');
+ $path = $this->generateMigration($ms, 'Version' . $version . 'Date' . $date, $schemaBody);
+
+ $output->writeln("New migration class has been generated to <info>$path</info>");
+ return 0;
+ }
+
+ /**
+ * @param Schema $schema
+ * @return string
+ */
+ protected function schemaToMigration(Schema $schema) {
+ $content = <<<'EOT'
+ /** @var Schema $schema */
+ $schema = $schemaClosure();
+
+EOT;
+
+ foreach ($schema->getTables() as $table) {
+ $content .= str_replace('{{table-name}}', substr($table->getName(), 3), <<<'EOT'
+
+ if (!$schema->hasTable('{{table-name}}')) {
+ $table = $schema->createTable('{{table-name}}');
+
+EOT
+ );
+
+ foreach ($table->getColumns() as $column) {
+ $content .= str_replace(['{{name}}', '{{type}}'], [$column->getName(), $column->getType()->getName()], <<<'EOT'
+ $table->addColumn('{{name}}', '{{type}}', [
+
+EOT
+ );
+ if ($column->getAutoincrement()) {
+ $content .= <<<'EOT'
+ 'autoincrement' => true,
+
+EOT;
+ }
+ $content .= str_replace('{{notnull}}', $column->getNotnull() ? 'true' : 'false', <<<'EOT'
+ 'notnull' => {{notnull}},
+
+EOT
+ );
+ if ($column->getLength() !== null) {
+ $content .= str_replace('{{length}}', $column->getLength(), <<<'EOT'
+ 'length' => {{length}},
+
+EOT
+ );
+ }
+ $default = $column->getDefault();
+ if ($default !== null) {
+ $default = is_numeric($default) ? $default : "'$default'";
+ $content .= str_replace('{{default}}', $default, <<<'EOT'
+ 'default' => {{default}},
+
+EOT
+ );
+ }
+ $content .= <<<'EOT'
+ ]);
+
+EOT;
+ }
+
+ $content .= <<<'EOT'
+
+EOT;
+
+ $primaryKey = $table->getPrimaryKey();
+ if ($primaryKey !== null) {
+ $content .= str_replace('{{columns}}', implode('\', \'', $primaryKey->getUnquotedColumns()), <<<'EOT'
+ $table->setPrimaryKey(['{{columns}}']);
+
+EOT
+ );
+ }
+
+ foreach ($table->getIndexes() as $index) {
+ if ($index->isPrimary()) {
+ continue;
+ }
+
+ if ($index->isUnique()) {
+ $content .= str_replace(
+ ['{{columns}}', '{{name}}'],
+ [implode('\', \'', $index->getUnquotedColumns()), $index->getName()],
+ <<<'EOT'
+ $table->addUniqueIndex(['{{columns}}'], '{{name}}');
+
+EOT
+ );
+ } else {
+ $content .= str_replace(
+ ['{{columns}}', '{{name}}'],
+ [implode('\', \'', $index->getUnquotedColumns()), $index->getName()],
+ <<<'EOT'
+ $table->addIndex(['{{columns}}'], '{{name}}');
+
+EOT
+ );
+ }
+ }
+
+ $content .= <<<'EOT'
+ }
+
+EOT;
+ }
+
+ $content .= <<<'EOT'
+ return $schema;
+EOT;
+
+ return $content;
+ }
+}
diff --git a/core/Command/Maintenance/Install.php b/core/Command/Maintenance/Install.php
index fa6262d24ad..342614236d7 100644
--- a/core/Command/Maintenance/Install.php
+++ b/core/Command/Maintenance/Install.php
@@ -61,6 +61,7 @@ class Install extends Command {
->addOption('database-user', null, InputOption::VALUE_REQUIRED, 'User name to connect to the database')
->addOption('database-pass', null, InputOption::VALUE_OPTIONAL, 'Password of the database user', null)
->addOption('database-table-prefix', null, InputOption::VALUE_OPTIONAL, 'Prefix for all tables (default: oc_)', null)
+ ->addOption('database-table-space', null, InputOption::VALUE_OPTIONAL, 'Table space of the database (oci only)', null)
->addOption('admin-user', null, InputOption::VALUE_REQUIRED, 'User name of the admin account', 'admin')
->addOption('admin-pass', null, InputOption::VALUE_REQUIRED, 'Password of the admin account')
->addOption('data-dir', null, InputOption::VALUE_REQUIRED, 'Path to data directory', \OC::$SERVERROOT."/data");
@@ -171,6 +172,9 @@ class Install extends Command {
'adminpass' => $adminPassword,
'directory' => $dataDir
];
+ if ($db === 'oci') {
+ $options['dbtablespace'] = $input->getParameterOption('--database-table-space', '');
+ }
return $options;
}
diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php
index 5a3d6309149..cb0ece9fa45 100644
--- a/core/Controller/AvatarController.php
+++ b/core/Controller/AvatarController.php
@@ -173,6 +173,7 @@ class AvatarController extends Controller {
if (isset($path)) {
$path = stripslashes($path);
$userFolder = $this->rootFolder->getUserFolder($this->userId);
+ /** @var File $node */
$node = $userFolder->get($path);
if (!($node instanceof File)) {
return new JSONResponse(['data' => ['message' => $this->l->t('Please select a file.')]]);
@@ -296,7 +297,7 @@ class AvatarController extends Controller {
Http::STATUS_OK,
['Content-Type' => $image->mimeType()]);
- $resp->setETag(crc32($image->data()));
+ $resp->setETag((string)crc32($image->data()));
$resp->cacheFor(0);
$resp->setLastModified(new \DateTime('now', new \DateTimeZone('GMT')));
return $resp;
@@ -328,7 +329,7 @@ class AvatarController extends Controller {
}
$image = new \OC_Image($tmpAvatar);
- $image->crop($crop['x'], $crop['y'], round($crop['w']), round($crop['h']));
+ $image->crop($crop['x'], $crop['y'], (int)round($crop['w']), (int)round($crop['h']));
try {
$avatar = $this->avatarManager->getAvatar($this->userId);
$avatar->set($image);
diff --git a/core/Controller/ContactsMenuController.php b/core/Controller/ContactsMenuController.php
index bbb990f1a4f..76eaf11085d 100644
--- a/core/Controller/ContactsMenuController.php
+++ b/core/Controller/ContactsMenuController.php
@@ -54,7 +54,7 @@ class ContactsMenuController extends Controller {
* @NoAdminRequired
*
* @param string|null filter
- * @return JSONResponse
+ * @return \JsonSerializable[]
*/
public function index($filter = null) {
return $this->manager->getEntries($this->userSession->getUser(), $filter);
@@ -65,15 +65,14 @@ class ContactsMenuController extends Controller {
*
* @param integer $shareType
* @param string $shareWith
- * @return JSONResponse
+ * @return JSONResponse|\JsonSerializable
*/
public function findOne($shareType, $shareWith) {
$contact = $this->manager->findOne($this->userSession->getUser(), $shareType, $shareWith);
if ($contact) {
return $contact;
- } else {
- return new JSONResponse([], Http::STATUS_NOT_FOUND);
}
+ return new JSONResponse([], Http::STATUS_NOT_FOUND);
}
}
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php
index 1c75b1f3c8b..12431571256 100644
--- a/core/Controller/LoginController.php
+++ b/core/Controller/LoginController.php
@@ -248,7 +248,7 @@ class LoginController extends Controller {
$args['redirect_url'] = $redirect_url;
}
$response = new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args));
- $response->throttle();
+ $response->throttle(['user' => $user]);
$this->session->set('loginMessages', [
['invalidpassword'], []
]);
diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php
index 0d5988a2495..59a4e0b2534 100644
--- a/core/Controller/LostController.php
+++ b/core/Controller/LostController.php
@@ -267,7 +267,7 @@ class LostController extends Controller {
\OC_Hook::emit('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', array('uid' => $userId, 'password' => $password));
$this->config->deleteUserValue($userId, 'core', 'lostpassword');
- @\OC_User::unsetMagicInCookie();
+ @\OC::$server->getUserSession()->unsetMagicInCookie();
} catch (\Exception $e){
return $this->error($e->getMessage());
}
diff --git a/core/Controller/OCSController.php b/core/Controller/OCSController.php
index 35eac3a3d8b..ff939f71a4f 100644
--- a/core/Controller/OCSController.php
+++ b/core/Controller/OCSController.php
@@ -122,11 +122,11 @@ class OCSController extends \OCP\AppFramework\OCSController {
]);
}
- $response = new DataResponse(null, 102);
+ $response = new DataResponse([], 102);
$response->throttle();
return $response;
}
- return new DataResponse(null, 101);
+ return new DataResponse([], 101);
}
/**
@@ -146,6 +146,6 @@ class OCSController extends \OCP\AppFramework\OCSController {
return new DataResponse($data);
}
- return new DataResponse('User not found', 404);
+ return new DataResponse(['User not found'], 404);
}
}
diff --git a/core/Middleware/TwoFactorMiddleware.php b/core/Middleware/TwoFactorMiddleware.php
index e35c53d4049..a4e0d7219ec 100644
--- a/core/Middleware/TwoFactorMiddleware.php
+++ b/core/Middleware/TwoFactorMiddleware.php
@@ -104,7 +104,7 @@ class TwoFactorMiddleware extends Middleware {
// TODO: dont check/enforce 2FA if a auth token is used
}
- private function checkTwoFactor($controller, $methodName, IUser $user) {
+ private function checkTwoFactor(Controller $controller, $methodName, IUser $user) {
// If two-factor auth is in progress disallow access to any controllers
// defined within "LoginController".
$needsSecondFactor = $this->twoFactorManager->needsSecondFactor($user);
diff --git a/core/Migrations/Version13000Date20170718121200.php b/core/Migrations/Version13000Date20170718121200.php
new file mode 100644
index 00000000000..81743bd203f
--- /dev/null
+++ b/core/Migrations/Version13000Date20170718121200.php
@@ -0,0 +1,897 @@
+<?php
+namespace OC\Core\Migrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use OCP\Migration\SimpleMigrationStep;
+use OCP\Migration\IOutput;
+
+/**
+ * Auto-generated migration step: Please modify to your needs!
+ */
+class Version13000Date20170718121200 extends SimpleMigrationStep {
+
+ /**
+ * @param IOutput $output
+ * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param array $options
+ * @since 13.0.0
+ */
+ public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
+ }
+
+ /**
+ * @param IOutput $output
+ * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param array $options
+ * @return null|Schema
+ * @since 13.0.0
+ */
+ public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
+ /** @var Schema $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('appconfig')) {
+ $table = $schema->createTable('appconfig');
+ $table->addColumn('appid', 'string', [
+ 'notnull' => true,
+ 'length' => 32,
+ 'default' => '',
+ ]);
+ $table->addColumn('configkey', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('configvalue', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['appid', 'configkey']);
+ $table->addIndex(['configkey'], 'appconfig_config_key_index');
+ $table->addIndex(['appid'], 'appconfig_appid_key');
+ }
+
+ if (!$schema->hasTable('storages')) {
+ $table = $schema->createTable('storages');
+ $table->addColumn('id', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('numeric_id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('available', 'integer', [
+ 'notnull' => true,
+ 'default' => 1,
+ ]);
+ $table->addColumn('last_checked', 'integer', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['numeric_id']);
+ $table->addUniqueIndex(['id'], 'storages_id_index');
+ }
+
+ if (!$schema->hasTable('mounts')) {
+ $table = $schema->createTable('mounts');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('storage_id', 'integer', [
+ 'notnull' => true,
+ ]);
+ $table->addColumn('root_id', 'integer', [
+ 'notnull' => true,
+ ]);
+ $table->addColumn('user_id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('mount_point', 'string', [
+ 'notnull' => true,
+ 'length' => 4000,
+ ]);
+ $table->addColumn('mount_id', 'integer', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['user_id'], 'mounts_user_index');
+ $table->addIndex(['storage_id'], 'mounts_storage_index');
+ $table->addIndex(['root_id'], 'mounts_root_index');
+ $table->addIndex(['mount_id'], 'mounts_mount_id_index');
+ $table->addUniqueIndex(['user_id', 'root_id'], 'mounts_user_root_index');
+ }
+
+ if (!$schema->hasTable('mimetypes')) {
+ $table = $schema->createTable('mimetypes');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('mimetype', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['mimetype'], 'mimetype_id_index');
+ }
+
+ if (!$schema->hasTable('filecache')) {
+ $table = $schema->createTable('filecache');
+ $table->addColumn('fileid', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('storage', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('path', 'string', [
+ 'notnull' => false,
+ 'length' => 4000,
+ ]);
+ $table->addColumn('path_hash', 'string', [
+ 'notnull' => true,
+ 'length' => 32,
+ 'default' => '',
+ ]);
+ $table->addColumn('parent', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('name', 'string', [
+ 'notnull' => false,
+ 'length' => 250,
+ ]);
+ $table->addColumn('mimetype', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('mimepart', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('size', 'bigint', [
+ 'notnull' => true,
+ 'length' => 8,
+ 'default' => 0,
+ ]);
+ $table->addColumn('mtime', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('storage_mtime', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('encrypted', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('unencrypted_size', 'bigint', [
+ 'notnull' => true,
+ 'length' => 8,
+ 'default' => 0,
+ ]);
+ $table->addColumn('etag', 'string', [
+ 'notnull' => false,
+ 'length' => 40,
+ ]);
+ $table->addColumn('permissions', 'integer', [
+ 'notnull' => false,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('checksum', 'string', [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->setPrimaryKey(['fileid']);
+ $table->addUniqueIndex(['storage', 'path_hash'], 'fs_storage_path_hash');
+ $table->addIndex(['parent', 'name'], 'fs_parent_name_hash');
+ $table->addIndex(['storage', 'mimetype'], 'fs_storage_mimetype');
+ $table->addIndex(['storage', 'mimepart'], 'fs_storage_mimepart');
+ $table->addIndex(['storage', 'size', 'fileid'], 'fs_storage_size');
+ }
+
+ if (!$schema->hasTable('group_user')) {
+ $table = $schema->createTable('group_user');
+ $table->addColumn('gid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['gid', 'uid']);
+ $table->addIndex(['uid'], 'gu_uid_index');
+ }
+
+ if (!$schema->hasTable('group_admin')) {
+ $table = $schema->createTable('group_admin');
+ $table->addColumn('gid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['gid', 'uid']);
+ $table->addIndex(['uid'], 'group_admin_uid');
+ }
+
+ if (!$schema->hasTable('groups')) {
+ $table = $schema->createTable('groups');
+ $table->addColumn('gid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['gid']);
+ }
+
+ if (!$schema->hasTable('preferences')) {
+ $table = $schema->createTable('preferences');
+ $table->addColumn('userid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('appid', 'string', [
+ 'notnull' => true,
+ 'length' => 32,
+ 'default' => '',
+ ]);
+ $table->addColumn('configkey', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('configvalue', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['userid', 'appid', 'configkey']);
+ }
+
+ if (!$schema->hasTable('properties')) {
+ $table = $schema->createTable('properties');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('userid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('propertypath', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('propertyname', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('propertyvalue', 'text', [
+ 'notnull' => true,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['userid'], 'property_index');
+ }
+
+ if (!$schema->hasTable('share')) {
+ $table = $schema->createTable('share');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('share_type', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->addColumn('share_with', 'string', [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->addColumn('password', 'string', [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->addColumn('uid_owner', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('uid_initiator', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('parent', 'integer', [
+ 'notnull' => false,
+ 'length' => 4,
+ ]);
+ $table->addColumn('item_type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('item_source', 'string', [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->addColumn('item_target', 'string', [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->addColumn('file_source', 'integer', [
+ 'notnull' => false,
+ 'length' => 4,
+ ]);
+ $table->addColumn('file_target', 'string', [
+ 'notnull' => false,
+ 'length' => 512,
+ ]);
+ $table->addColumn('permissions', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->addColumn('stime', 'bigint', [
+ 'notnull' => true,
+ 'length' => 8,
+ 'default' => 0,
+ ]);
+ $table->addColumn('accepted', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->addColumn('expiration', 'datetime', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('token', 'string', [
+ 'notnull' => false,
+ 'length' => 32,
+ ]);
+ $table->addColumn('mail_send', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->addColumn('share_name', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['item_type', 'share_type'], 'item_share_type_index');
+ $table->addIndex(['file_source'], 'file_source_index');
+ $table->addIndex(['token'], 'token_index');
+ }
+
+ if (!$schema->hasTable('jobs')) {
+ $table = $schema->createTable('jobs');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('class', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('argument', 'string', [
+ 'notnull' => true,
+ 'length' => 4000,
+ 'default' => '',
+ ]);
+ $table->addColumn('last_run', 'integer', [
+ 'notnull' => false,
+ 'default' => 0,
+ ]);
+ $table->addColumn('last_checked', 'integer', [
+ 'notnull' => false,
+ 'default' => 0,
+ ]);
+ $table->addColumn('reserved_at', 'integer', [
+ 'notnull' => false,
+ 'default' => 0,
+ ]);
+ $table->addColumn('execution_duration', 'integer', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['class'], 'job_class_index');
+ }
+
+ if (!$schema->hasTable('users')) {
+ $table = $schema->createTable('users');
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('displayname', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('password', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['uid']);
+ }
+
+ if (!$schema->hasTable('authtoken')) {
+ $table = $schema->createTable('authtoken');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('login_name', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('password', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('name', 'text', [
+ 'notnull' => true,
+ 'default' => '',
+ ]);
+ $table->addColumn('token', 'string', [
+ 'notnull' => true,
+ 'length' => 200,
+ 'default' => '',
+ ]);
+ $table->addColumn('type', 'smallint', [
+ 'notnull' => true,
+ 'length' => 2,
+ 'default' => 0,
+ ]);
+ $table->addColumn('remember', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->addColumn('last_activity', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('last_check', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('scope', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['token'], 'authtoken_token_index');
+ $table->addIndex(['last_activity'], 'authtoken_last_activity_index');
+ }
+
+ if (!$schema->hasTable('bruteforce_attempts')) {
+ $table = $schema->createTable('bruteforce_attempts');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('action', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('occurred', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('ip', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('subnet', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('metadata', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['ip'], 'bruteforce_attempts_ip');
+ $table->addIndex(['subnet'], 'bruteforce_attempts_subnet');
+ }
+
+ if (!$schema->hasTable('vcategory')) {
+ $table = $schema->createTable('vcategory');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('category', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['uid'], 'uid_index');
+ $table->addIndex(['type'], 'type_index');
+ $table->addIndex(['category'], 'category_index');
+ }
+
+ if (!$schema->hasTable('vcategory_to_object')) {
+ $table = $schema->createTable('vcategory_to_object');
+ $table->addColumn('objid', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('categoryid', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['categoryid', 'objid', 'type']);
+ $table->addIndex(['objid', 'type'], 'vcategory_objectd_index');
+ }
+
+ if (!$schema->hasTable('systemtag')) {
+ $table = $schema->createTable('systemtag');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('name', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('visibility', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 1,
+ ]);
+ $table->addColumn('editable', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 1,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['name', 'visibility', 'editable'], 'tag_ident');
+ }
+
+ if (!$schema->hasTable('systemtag_object_mapping')) {
+ $table = $schema->createTable('systemtag_object_mapping');
+ $table->addColumn('objectid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('objecttype', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('systemtagid', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addUniqueIndex(['objecttype', 'objectid', 'systemtagid'], 'mapping');
+ }
+
+ if (!$schema->hasTable('systemtag_group')) {
+ $table = $schema->createTable('systemtag_group');
+ $table->addColumn('systemtagid', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('gid', 'string', [
+ 'notnull' => true,
+ ]);
+ $table->setPrimaryKey(['gid', 'systemtagid']);
+ }
+
+ if (!$schema->hasTable('file_locks')) {
+ $table = $schema->createTable('file_locks');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('lock', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('key', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('ttl', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => -1,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['key'], 'lock_key_index');
+ $table->addIndex(['ttl'], 'lock_ttl_index');
+ }
+
+ if (!$schema->hasTable('comments')) {
+ $table = $schema->createTable('comments');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('parent_id', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('topmost_parent_id', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('children_count', 'integer', [
+ 'notnull' => true,
+ 'length' => 4,
+ 'default' => 0,
+ ]);
+ $table->addColumn('actor_type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('actor_id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('message', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('verb', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('creation_timestamp', 'datetime', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('latest_child_timestamp', 'datetime', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('object_type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('object_id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addIndex(['parent_id'], 'comments_parent_id_index');
+ $table->addIndex(['topmost_parent_id'], 'comments_topmost_parent_id_idx');
+ $table->addIndex(['object_type', 'object_id', 'creation_timestamp'], 'comments_object_index');
+ $table->addIndex(['actor_type', 'actor_id'], 'comments_actor_index');
+ }
+
+ if (!$schema->hasTable('comments_read_markers')) {
+ $table = $schema->createTable('comments_read_markers');
+ $table->addColumn('user_id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('marker_datetime', 'datetime', [
+ 'notnull' => false,
+ ]);
+ $table->addColumn('object_type', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('object_id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addIndex(['object_type', 'object_id'], 'comments_marker_object_index');
+ $table->addUniqueIndex(['user_id', 'object_type', 'object_id'], 'comments_marker_index');
+ }
+
+ if (!$schema->hasTable('credentials')) {
+ $table = $schema->createTable('credentials');
+ $table->addColumn('user', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('identifier', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('credentials', 'text', [
+ 'notnull' => false,
+ ]);
+ $table->setPrimaryKey(['user', 'identifier']);
+ $table->addIndex(['user'], 'credentials_user');
+ }
+
+ if (!$schema->hasTable('admin_sections')) {
+ $table = $schema->createTable('admin_sections');
+ $table->addColumn('id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('class', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('priority', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['class'], 'admin_sections_class');
+ }
+
+ if (!$schema->hasTable('admin_settings')) {
+ $table = $schema->createTable('admin_settings');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('class', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('section', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('priority', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['class'], 'admin_settings_class');
+ $table->addIndex(['section'], 'admin_settings_section');
+ }
+
+ if (!$schema->hasTable('personal_sections')) {
+ $table = $schema->createTable('personal_sections');
+ $table->addColumn('id', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->addColumn('class', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('priority', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['class'], 'personal_sections_class');
+ }
+
+ if (!$schema->hasTable('personal_settings')) {
+ $table = $schema->createTable('personal_settings');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ 'length' => 4,
+ ]);
+ $table->addColumn('class', 'string', [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('section', 'string', [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->addColumn('priority', 'smallint', [
+ 'notnull' => true,
+ 'length' => 1,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['class'], 'personal_settings_class');
+ $table->addIndex(['section'], 'personal_settings_section');
+ }
+
+ if (!$schema->hasTable('accounts')) {
+ $table = $schema->createTable('accounts');
+ $table->addColumn('uid', 'string', [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('data', 'text', [
+ 'notnull' => true,
+ 'default' => '',
+ ]);
+ $table->setPrimaryKey(['uid']);
+ }
+ return $schema;
+ }
+
+ /**
+ * @param IOutput $output
+ * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param array $options
+ * @since 13.0.0
+ */
+ public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
+ }
+}
diff --git a/core/ajax/update.php b/core/ajax/update.php
index d23e3b0d56d..818291d3eff 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -50,6 +50,10 @@ class FeedBackHandler {
private $progressStateStep = 0;
/** @var string */
private $currentStep;
+ /** @var \OCP\IEventSource */
+ private $eventSource;
+ /** @var \OCP\IL10N */
+ private $l10n;
public function __construct(\OCP\IEventSource $eventSource, \OCP\IL10N $l10n) {
$this->eventSource = $eventSource;
@@ -220,7 +224,7 @@ if (OC::checkUpgrade(false)) {
if (!empty($disabledApps)) {
$eventSource->send('notice',
- (string)$l->t('Following apps have been disabled: %s', implode(', ', $disabledApps)));
+ (string)$l->t('Following apps have been disabled: %s', [implode(', ', $disabledApps)]));
}
} else {
$eventSource->send('notice', (string)$l->t('Already up to date'));
diff --git a/core/css/header.scss b/core/css/header.scss
index c4d4205103a..e744d3acb40 100644
--- a/core/css/header.scss
+++ b/core/css/header.scss
@@ -137,18 +137,18 @@
vertical-align: middle;
}
- #header-left,
- #header-right {
+ #header-left, .header-left,
+ #header-right, .header-right {
display: inline-flex;
align-items: center;
}
- #header-left {
+ #header-left, .header-left {
flex: 0 0;
flex-grow: 1;
}
- #header-right {
+ #header-right, .header-right {
justify-content: flex-end;
}
}
@@ -211,7 +211,8 @@ nav {
margin-left: -54px;
}
-#navigation {
+#navigation,
+.ui-datepicker {
position: relative;
left: -100%;
width: 160px;
@@ -272,6 +273,7 @@ nav {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
+ max-width: 110px;
}
svg,
span {
diff --git a/core/css/icons.scss b/core/css/icons.scss
index ae6df353f1e..e694d807ba5 100644
--- a/core/css/icons.scss
+++ b/core/css/icons.scss
@@ -18,6 +18,20 @@
background-position: center;
min-width: 16px;
min-height: 16px;
+ display: inline-flex;
+ align-self: center;
+ position: relative;
+}
+
+[class^='icon-'] svg,
+[class*=' icon-'] svg {
+ height: 16px;
+ width: 16px;
+ vertical-align: -3px; // counter default DOM offset
+}
+
+.icon-white svg path {
+ fill: $color-primary-text;
}
.icon-breadcrumb {
@@ -369,6 +383,10 @@ img, object, video, button, textarea, input, select {
background-image: url('../img/actions/toggle.svg?v=1');
}
+.icon-toggle-pictures {
+ background-image: url('../img/actions/toggle-pictures.svg?v=1');
+}
+
.icon-triangle-e {
background-image: url('../img/actions/triangle-e.svg?v=1');
}
@@ -441,14 +459,6 @@ img, object, video, button, textarea, input, select {
background-image: url('../img/places/calendar-dark.svg?v=1');
}
-.icon-contacts {
- background-image: url('../img/places/contacts.svg?v=1');
-}
-
-.icon-contacts-dark {
- background-image: url('../img/places/contacts-dark.svg?v=1');
-}
-
.icon-files {
background-image: url('../img/places/files.svg?v=1');
}
diff --git a/core/css/inputs.scss b/core/css/inputs.scss
index 13a164e13f2..3ea90d322bb 100644
--- a/core/css/inputs.scss
+++ b/core/css/inputs.scss
@@ -492,8 +492,9 @@ input {
}
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
- border: none;
- background: nc-darken($color-main-background, 3%);
+ border: 1px solid transparent;
+ background: inherit;
+ color: $color-primary;
}
/* Animation */
diff --git a/core/css/styles.scss b/core/css/styles.scss
index 35fc300eafe..f2acca38e1e 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -964,6 +964,83 @@ code {
background-image: url('../img/actions/play-previous.svg?v=1');
}
+/* ---- jQuery UI datepicker ---- */
+.ui-widget.ui-datepicker {
+ margin-top: 10px;
+ padding: 4px 8px;
+ width: auto;
+
+ .ui-state-default,
+ .ui-widget-content .ui-state-default,
+ .ui-widget-header .ui-state-default {
+ border: 1px solid transparent;
+ background: inherit;
+ }
+ .ui-widget-header {
+ padding: 7px;
+ font-size: 13px;
+ border: none;
+ background-color: $color-main-background;
+ color: $color-main-text;
+
+ .ui-datepicker-title {
+ line-height: 1;
+ font-weight: 300;
+ }
+ .ui-icon {
+ opacity: .5;
+
+ &.ui-icon-circle-triangle-e {
+ background: url("../img/actions/arrow-right.svg") center center no-repeat;
+ }
+ &.ui-icon-circle-triangle-w {
+ background: url("../img/actions/arrow-left.svg") center center no-repeat;
+ }
+ }
+ .ui-state-hover .ui-icon {
+ opacity: 1;
+ }
+ }
+ .ui-datepicker-calendar {
+ th {
+ font-weight: normal;
+ color: nc-lighten($color-main-text, 33%);
+ opacity: .8;
+ }
+ tr:hover {
+ background-color: inherit;
+ }
+ td {
+ > * {
+ border-radius: 50%;
+ text-align: center;
+ font-weight: normal;
+ color: $color-main-text;
+ padding: 6px;
+ line-height: 12px;
+ }
+
+ &.ui-datepicker-today a:not(.ui-state-hover) {
+ background-color: nc-lighten($color-main-text, 86%);
+ }
+
+ &.ui-datepicker-current-day a.ui-state-active,
+ .ui-state-hover,
+ .ui-state-focus {
+ background-color: $color-primary;
+ color: $color-primary-text;
+ font-weight: bold;
+ }
+
+ &.ui-datepicker-week-end :not(.ui-state-hover),
+ .ui-priority-secondary:not(.ui-state-hover) {
+ color: nc-lighten($color-main-text, 33%);
+ opacity: .8;
+ }
+ }
+ }
+}
+
.ui-datepicker-prev, .ui-datepicker-next {
border: nc-lighten($color-main-text, 86%);
background: $color-main-background;
diff --git a/core/img/actions/arrow-left.svg b/core/img/actions/arrow-left.svg
new file mode 100644
index 00000000000..34b2fda2426
--- /dev/null
+++ b/core/img/actions/arrow-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewbox="0 0 16 16"><path d="m5.5 8 6 6v1l-7-7 7-7v1z"/></svg>
diff --git a/core/img/actions/arrow-right.svg b/core/img/actions/arrow-right.svg
new file mode 100644
index 00000000000..102b9cf6b5b
--- /dev/null
+++ b/core/img/actions/arrow-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewbox="0 0 16 16"><path d="m10.5 8-6-6v-1l7 7-7 7v-1z"/></svg>
diff --git a/core/img/places/contacts-dark.svg b/core/img/places/contacts-dark.svg
deleted file mode 100644
index 56ff262e91f..00000000000
--- a/core/img/places/contacts-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewbox="0 0 32 32"><path d="M9.24 6.67c-1.955 0-3.613 1.43-3.613 3.275.014.583.066 1.302.414 2.823v.037l.038.038c.112.32.275.503.49.753.215.25.47.544.715.79l.075.076c.048.21.107.436.15.64.117.54.105.922.076 1.053-.84.295-1.885.647-2.823 1.054-.526.228-1.002.433-1.392.677-.39.244-.777.43-.903.978a.473.473 0 0 0 0 .076c-.123 1.13-.31 2.793-.452 3.915a.618.618 0 0 0 .3.603c1.704.92 4.32 1.29 6.927 1.28 2.607-.01 5.202-.403 6.85-1.28a.618.618 0 0 0 .3-.603c-.044-.35-.1-1.14-.15-1.92-.05-.778-.09-1.543-.15-1.994a.607.607 0 0 0-.15-.3c-.524-.626-1.306-1.008-2.22-1.393-.836-.352-1.815-.717-2.786-1.13-.055-.12-.11-.473 0-1.016.03-.144.074-.3.113-.45l.263-.3c.216-.248.447-.506.64-.754.192-.25.35-.462.452-.753l.037-.038c.393-1.588.393-2.25.413-2.823v-.037c0-1.845-1.658-3.275-3.613-3.275zm10.336-3.005c-2.85 0-5.268 2.084-5.268 4.774.02.85.096 1.898.604 4.115v.055l.055.055c.162.466.4.733.713 1.097s.687.793 1.043 1.153c.04.042.068.068.11.11.07.306.155.636.22.932.168.788.15 1.346.11 1.537-1.226.43-2.75.942-4.117 1.536-.768.334-1.462.632-2.03.988-.57.356-1.134.625-1.317 1.427a.67.67 0 0 0 0 .11c-.18 1.648-.452 4.07-.66 5.707a.9.9 0 0 0 .44.878c2.48 1.34 6.295 1.88 10.096 1.865s7.584-.586 9.987-1.865a.9.9 0 0 0 .44-.878c-.067-.512-.148-1.665-.22-2.8-.072-1.133-.134-2.25-.22-2.907a.884.884 0 0 0-.22-.44c-.763-.91-1.903-1.468-3.237-2.03-1.217-.513-2.645-1.045-4.06-1.646-.08-.177-.16-.69 0-1.483.042-.212.108-.44.164-.658.133-.15.237-.272.384-.44.315-.36.652-.735.933-1.098.28-.362.51-.673.66-1.097l.053-.055c.574-2.315.574-3.28.604-4.116V8.44c0-2.69-2.418-4.775-5.268-4.775z"/></svg>
diff --git a/core/img/places/contacts.svg b/core/img/places/contacts.svg
index 4e6206db09c..56ff262e91f 100644
--- a/core/img/places/contacts.svg
+++ b/core/img/places/contacts.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewbox="0 0 32 32"><path d="M9.24 6.67c-1.955 0-3.613 1.43-3.613 3.275.014.583.066 1.302.414 2.823v.037l.038.038c.112.32.275.503.49.753.215.25.47.544.715.79l.075.076c.048.21.107.436.15.64.117.54.105.922.076 1.053-.84.295-1.885.647-2.823 1.054-.526.228-1.002.433-1.392.677-.39.244-.777.43-.903.978a.473.473 0 0 0 0 .076c-.123 1.13-.31 2.793-.452 3.915a.618.618 0 0 0 .3.603c1.704.92 4.32 1.29 6.927 1.28 2.607-.01 5.202-.403 6.85-1.28a.618.618 0 0 0 .3-.603c-.044-.35-.1-1.14-.15-1.92-.05-.778-.09-1.543-.15-1.994a.607.607 0 0 0-.15-.3c-.524-.626-1.306-1.008-2.22-1.393-.836-.352-1.815-.717-2.786-1.13-.055-.12-.11-.473 0-1.016.03-.144.074-.3.113-.45l.263-.3c.216-.248.447-.506.64-.754.192-.25.35-.462.452-.753l.037-.038c.393-1.588.393-2.25.413-2.823v-.037c0-1.845-1.658-3.275-3.613-3.275zm10.336-3.005c-2.85 0-5.268 2.084-5.268 4.774.02.85.096 1.898.604 4.115v.055l.055.055c.162.466.4.733.713 1.097s.687.793 1.043 1.153c.04.042.068.068.11.11.07.306.155.636.22.932.168.788.15 1.346.11 1.537-1.226.43-2.75.942-4.117 1.536-.768.334-1.462.632-2.03.988-.57.356-1.134.625-1.317 1.427a.67.67 0 0 0 0 .11c-.18 1.648-.452 4.07-.66 5.707a.9.9 0 0 0 .44.878c2.48 1.34 6.295 1.88 10.096 1.865s7.584-.586 9.987-1.865a.9.9 0 0 0 .44-.878c-.067-.512-.148-1.665-.22-2.8-.072-1.133-.134-2.25-.22-2.907a.884.884 0 0 0-.22-.44c-.763-.91-1.903-1.468-3.237-2.03-1.217-.513-2.645-1.045-4.06-1.646-.08-.177-.16-.69 0-1.483.042-.212.108-.44.164-.658.133-.15.237-.272.384-.44.315-.36.652-.735.933-1.098.28-.362.51-.673.66-1.097l.053-.055c.574-2.315.574-3.28.604-4.116V8.44c0-2.69-2.418-4.775-5.268-4.775z" fill="#fff"/></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewbox="0 0 32 32"><path d="M9.24 6.67c-1.955 0-3.613 1.43-3.613 3.275.014.583.066 1.302.414 2.823v.037l.038.038c.112.32.275.503.49.753.215.25.47.544.715.79l.075.076c.048.21.107.436.15.64.117.54.105.922.076 1.053-.84.295-1.885.647-2.823 1.054-.526.228-1.002.433-1.392.677-.39.244-.777.43-.903.978a.473.473 0 0 0 0 .076c-.123 1.13-.31 2.793-.452 3.915a.618.618 0 0 0 .3.603c1.704.92 4.32 1.29 6.927 1.28 2.607-.01 5.202-.403 6.85-1.28a.618.618 0 0 0 .3-.603c-.044-.35-.1-1.14-.15-1.92-.05-.778-.09-1.543-.15-1.994a.607.607 0 0 0-.15-.3c-.524-.626-1.306-1.008-2.22-1.393-.836-.352-1.815-.717-2.786-1.13-.055-.12-.11-.473 0-1.016.03-.144.074-.3.113-.45l.263-.3c.216-.248.447-.506.64-.754.192-.25.35-.462.452-.753l.037-.038c.393-1.588.393-2.25.413-2.823v-.037c0-1.845-1.658-3.275-3.613-3.275zm10.336-3.005c-2.85 0-5.268 2.084-5.268 4.774.02.85.096 1.898.604 4.115v.055l.055.055c.162.466.4.733.713 1.097s.687.793 1.043 1.153c.04.042.068.068.11.11.07.306.155.636.22.932.168.788.15 1.346.11 1.537-1.226.43-2.75.942-4.117 1.536-.768.334-1.462.632-2.03.988-.57.356-1.134.625-1.317 1.427a.67.67 0 0 0 0 .11c-.18 1.648-.452 4.07-.66 5.707a.9.9 0 0 0 .44.878c2.48 1.34 6.295 1.88 10.096 1.865s7.584-.586 9.987-1.865a.9.9 0 0 0 .44-.878c-.067-.512-.148-1.665-.22-2.8-.072-1.133-.134-2.25-.22-2.907a.884.884 0 0 0-.22-.44c-.763-.91-1.903-1.468-3.237-2.03-1.217-.513-2.645-1.045-4.06-1.646-.08-.177-.16-.69 0-1.483.042-.212.108-.44.164-.658.133-.15.237-.272.384-.44.315-.36.652-.735.933-1.098.28-.362.51-.673.66-1.097l.053-.055c.574-2.315.574-3.28.604-4.116V8.44c0-2.69-2.418-4.775-5.268-4.775z"/></svg>
diff --git a/core/js/files/client.js b/core/js/files/client.js
index d8e615f6d6d..176cabf04b1 100644
--- a/core/js/files/client.js
+++ b/core/js/files/client.js
@@ -331,11 +331,10 @@
case 'C':
case 'K':
data.permissions |= OC.PERMISSION_CREATE;
- if (!isFile) {
- data.permissions |= OC.PERMISSION_UPDATE;
- }
break;
case 'W':
+ case 'N':
+ case 'V':
data.permissions |= OC.PERMISSION_UPDATE;
break;
case 'D':
diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js
index 5d518c78bcb..fc9de2170f9 100644
--- a/core/js/jquery-showpassword.js
+++ b/core/js/jquery-showpassword.js
@@ -74,7 +74,7 @@
// Create clone
var $clone = cloneElement($input);
- $clone.insertAfter($input);
+ $clone.insertBefore($input);
// Set callback arguments
if(callback.fn){
diff --git a/core/js/js.js b/core/js/js.js
index 2aa7bf1bc55..c02ef5c7920 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1203,7 +1203,7 @@ OC.Notification={
/**
* Updates (replaces) a sanitized notification.
- *
+ *
* @param {string} text Message to display
* @return {jQuery} JQuery element for notificaiton row
*/
@@ -1512,7 +1512,7 @@ function initCore() {
var resizeMenu = function() {
var appList = $('#appmenu li');
- var headerWidth = $('#header-left').width() - $('#nextcloud').width()
+ var headerWidth = $('.header-left').width() - $('#nextcloud').width()
var usePercentualAppMenuLimit = 0.33;
var minAppsDesktop = 8;
var availableWidth = headerWidth - $(appList).width();
diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js
index 507abd7e774..35279f3501e 100644
--- a/core/js/tests/specs/setupchecksSpec.js
+++ b/core/js/tests/specs/setupchecksSpec.js
@@ -151,7 +151,7 @@ describe('OC.SetupChecks tests', function() {
JSON.stringify({
isUrandomAvailable: true,
serverHasInternetConnection: false,
- memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance',
+ memcacheDocs: 'https://docs.nextcloud.com/server/go.php?to=admin-performance',
forwardedForHeadersWorking: true,
isCorrectMemcachedPHPModuleInstalled: true,
hasPassedCodeIntegrityCheck: true,
@@ -166,7 +166,7 @@ describe('OC.SetupChecks tests', function() {
msg: '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. We suggest to enable Internet connection for this server if you want to have all features.',
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
}, {
- msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.',
+ msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://docs.nextcloud.com/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.',
type: OC.SetupChecks.MESSAGE_TYPE_INFO
}]);
done();
@@ -184,7 +184,7 @@ describe('OC.SetupChecks tests', function() {
JSON.stringify({
isUrandomAvailable: true,
serverHasInternetConnection: false,
- memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance',
+ memcacheDocs: 'https://docs.nextcloud.com/server/go.php?to=admin-performance',
forwardedForHeadersWorking: true,
isCorrectMemcachedPHPModuleInstalled: true,
hasPassedCodeIntegrityCheck: true,
@@ -200,7 +200,7 @@ describe('OC.SetupChecks tests', function() {
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
},
{
- msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.',
+ msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://docs.nextcloud.com/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.',
type: OC.SetupChecks.MESSAGE_TYPE_INFO
}]);
done();
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index bd1abee203d..7040a5cf748 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Please select a file." : "Seleccioneu un fitxer.",
"File is too big" : "El fitxer és massa gran",
- "The selected file is not an image." : "El fitxer seleccionat no és una imatge",
+ "The selected file is not an image." : "El fitxer seleccionat no és una imatge.",
"The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.",
"Invalid file provided" : "El fitxer proporcionat no és vàlid",
"No image or file provided" : "No s'han proporcionat imatges o fitxers",
@@ -20,23 +20,30 @@ OC.L10N.register(
"Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.",
"Password reset" : "Canvi de contrasenya",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.",
"Reset your password" : "Canvia la teva contrasenya",
"%s password reset" : "restableix la contrasenya %s",
"Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.",
"Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.",
"Preparing update" : "Preparant l'actualització",
"[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair warning: " : "Advertiment de reparació:",
- "Repair error: " : "Error de reparació:",
+ "Repair warning: " : "Advertiment de reparació: ",
+ "Repair error: " : "Error de reparació: ",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s",
"Turned on maintenance mode" : "Activat el mode de manteniment",
"Turned off maintenance mode" : "Desactivat el mode de manteniment",
"Maintenance mode is kept active" : "El mode de manteniment es manté activat",
"Updating database schema" : "Actualitzant l'esquema de la base de dades",
"Updated database" : "Actualitzada la base de dades",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades",
"Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions",
+ "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori",
"Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori",
+ "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps",
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
"Set log level to debug" : "Modifica el nivell de registre a depuració",
@@ -47,15 +54,18 @@ OC.L10N.register(
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
+ "Search contacts …" : "Cerca contactes …",
"No contacts found" : "No s'han trobat contactes",
- "Show all contacts …" : "Mostra tots els contactes...",
+ "Show all contacts …" : "Mostra tots els contactes …",
"There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes",
- "Loading your contacts …" : "Carregant els teus contactes...",
+ "Loading your contacts …" : "Carregant els teus contactes …",
"Looking for {term} …" : "Buscant {term} …",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…</a>",
"No action available" : "Cap acció disponible",
"Error fetching contact actions" : "Error al carregar les accions del contacte",
"Settings" : "Configuració",
"Connection to server lost" : "S'ha perdut la connexió amb el servidor",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemes carregant la pagina, recarregant en 1%n segon","Problemes carregant la pagina, recarregant en 1%n segons"],
"Saving..." : "Desant...",
"Dismiss" : "Rebutja",
"This action requires you to confirm your password" : "Aquesta acció requereix que confirmis la teva contrasenya",
@@ -63,9 +73,11 @@ OC.L10N.register(
"Password" : "Contrasenya",
"Cancel" : "Cancel·la",
"Confirm" : "Confirma",
+ "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar",
"seconds ago" : "segons enrere",
- "Logging in …" : "Accedint a...",
+ "Logging in …" : "Accedint a …",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"I know what I'm doing" : "Sé el que faig",
"Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.",
"No" : "No",
@@ -75,7 +87,7 @@ OC.L10N.register(
"Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}",
"OK" : "D'acord",
"Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}",
- "read-only" : "Només de lectura",
+ "read-only" : "només de lectura",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"],
"One file conflict" : "Un fitxer en conflicte",
"New Files" : "Fitxers nous",
@@ -93,8 +105,21 @@ OC.L10N.register(
"Good password" : "Contrasenya bona",
"Strong password" : "Contrasenya forta",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "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. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Reescannejar...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.",
"Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor",
- "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.",
"Shared" : "Compartit",
"Shared with {recipients}" : "Compartit amb {recipients}",
"Error setting expiration date" : "Error en establir la data de venciment",
@@ -103,6 +128,7 @@ OC.L10N.register(
"Expiration" : "Expiració",
"Expiration date" : "Data de venciment",
"Choose a password for the public link" : "Escolliu una contrasenya per l'enllaç públic",
+ "Choose a password for the public link or press the \"Enter\" key" : "Escolliu una contrasenya per l'enllaç públic o premeu la tecla \"Enter\"",
"Copied!" : "Copiat!",
"Copy" : "Copia",
"Not supported!" : "No soportat!",
@@ -122,10 +148,11 @@ OC.L10N.register(
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you by {owner}" : "Compartit amb vos per {owner}",
"Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç",
"group" : "grup",
"remote" : "remot",
"email" : "email",
- "shared by {sharer}" : "Compartit per {sharer}",
+ "shared by {sharer}" : "compartit per {sharer}",
"Unshare" : "Deixa de compartir",
"Can reshare" : "Pot recompartir",
"Can edit" : "Pot editar",
@@ -135,17 +162,27 @@ OC.L10N.register(
"Access control" : "Control d'accés",
"Could not unshare" : "No pot descompartir",
"Error while sharing" : "Error en compartir",
+ "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.",
+ "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}",
"No users found for {search}" : "No s'han trobat usuaris per {search}",
- "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.",
+ "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho",
"{sharee} (group)" : "{sharee} (grup)",
"{sharee} (remote)" : "{sharee} (remot)",
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Comparteix",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.",
+ "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
"Name or email address..." : "Nom o adreça electrònica...",
+ "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
+ "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…",
"Name..." : "Nom...",
"Error" : "Error",
"Error removing share" : "Error al treure compartició",
+ "Non-existing tag #{tag}" : "Etiqueta inexistent #{tag}",
"restricted" : "restringit",
"invisible" : "invisible",
"({scope})" : "({scope})",
@@ -158,13 +195,20 @@ OC.L10N.register(
"sunny" : "asolellat",
"Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}",
"Hello {name}" : "Hola {name}",
- "new" : "Nou",
- "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "],
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Aquests són els resultats de la cerca<script>alert(1)</script></strong>",
+ "new" : "nou",
+ "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.",
"Update to {version}" : "Actualitza a {version}",
- "An error occurred." : "S'ha produït un error",
+ "An error occurred." : "S'ha produït un error.",
"Please reload the page." : "Carregueu la pàgina de nou.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'actualització no va tenir èxit. Per a més informació <a href=\"{url}\">consulta la nostra nota al fòrum</a> que cobreix aquest assumpte.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunitat Nextcloud</a>.",
"Continue to Nextcloud" : "Continua a Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."],
"Searching other places" : "Buscant altres ubicacions",
+ "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"],
"Personal" : "Personal",
"Users" : "Usuaris",
"Apps" : "Aplicacions",
@@ -180,7 +224,7 @@ OC.L10N.register(
"More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.",
"Technical details" : "Detalls tècnics",
"Remote Address: %s" : "Adreça remota: %s",
- "Request ID: %s" : "Sol·licitud ID: %s ",
+ "Request ID: %s" : "Sol·licitud ID: %s",
"Type: %s" : "Tipus: %s",
"Code: %s" : "Codi: %s",
"Message: %s" : "Missatge: %s",
@@ -189,12 +233,13 @@ OC.L10N.register(
"Trace" : "Traça",
"Security warning" : "Advertiment de seguretat",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.",
"Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>",
"Username" : "Nom d'usuari",
"Storage & database" : "Emmagatzematge i base de dades",
"Data folder" : "Carpeta de dades",
"Configure the database" : "Configura la base de dades",
- "Only %s is available." : "Només hi ha disponible %s",
+ "Only %s is available." : "Només hi ha disponible %s.",
"Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.",
"For more details check out the documentation." : "Per més detalls consulteu la documentació.",
"Database user" : "Usuari de la base de dades",
@@ -202,20 +247,23 @@ OC.L10N.register(
"Database name" : "Nom de la base de dades",
"Database tablespace" : "Espai de taula de la base de dades",
"Database host" : "Ordinador central de la base de dades",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).",
"Performance warning" : "Alerta de rendiment",
"SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.",
"For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.",
"Finish setup" : "Acaba la configuració",
- "Finishing …" : "Acabant...",
+ "Finishing …" : "Acabant …",
"Need help?" : "Necessites ajuda?",
"See the documentation" : "Consulti la documentació",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.",
"More apps" : "Més aplicacions",
"Search" : "Cerca",
+ "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:",
"Confirm your password" : "Confirma la teva contrasenya",
"Server side authentication failed!" : "L'autenticació del servidor ha fallat!",
"Please contact your administrator." : "Contacteu amb l'administrador.",
+ "An internal error occurred." : "S'ha produït un error intern.",
"Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.",
"Username or email" : "Nom d'usuari o correu electrònic",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
@@ -223,31 +271,41 @@ OC.L10N.register(
"Log in" : "Inici de sessió",
"Stay logged in" : "Mantén la sessió connectada",
"Alternative Logins" : "Acreditacions alternatives",
+ "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.",
"App token" : "Testimoni d'aplicació",
- "Redirecting …" : "Redirigint...",
+ "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació",
+ "Redirecting …" : "Redirigint …",
"New password" : "Contrasenya nova",
"New Password" : "Contrasenya nova",
"Reset password" : "Reinicialitza la contrasenya",
"Two-factor authentication" : "Segon factor d'autenticació",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.",
"Cancel log in" : "Cancel·la l'accés a",
"Use backup code" : "Utilitza un codi de copia de seguretat",
- "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable",
+ "Error while validating your second factor" : "Error al validar el segon factor d'autenticació",
+ "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.",
"Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança",
"App update required" : "Cal que actualitzeu la aplicació",
"%s will be updated to version %s" : "%s s'actualitzarà a la versió %s",
"These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:",
"These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:",
- "The theme %s has been disabled." : "S'ha desactivat el tema %s",
+ "The theme %s has been disabled." : "S'ha desactivat el tema %s.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.",
"Start update" : "Inicia l'actualització",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:",
"Detailed logs" : "Registres detallats",
"Update needed" : "Actualització necessaria",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentació</a>.",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.",
+ "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat",
"This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.",
"This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
+ "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"Ok" : "D'acord",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.",
@@ -256,8 +314,16 @@ OC.L10N.register(
"can edit" : "pot editar",
"can create" : "pot crear",
"can change" : "pot canviar",
- "can delete" : "Pot esborrar",
+ "can delete" : "pot esborrar",
"access control" : "control d'accés",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud",
+ "Share with users or by mail..." : "Comparteix amb usuaris o per correu...",
+ "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...",
+ "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...",
+ "Share with users or groups..." : "Comparteix amb usuaris o grups...",
+ "Share with users, groups or by mail..." : "Comparteix amb usuaris, grups o per correu...",
+ "Share with users, groups or remote users..." : "Comparteix amb usuaris, grups o usuaris remots...",
+ "Share with users, groups, remote users or by mail..." : "Comparteix amb usuaris, grups, usuaris remots o per correu...",
"Share with users..." : "Comparteix amb usuaris...",
"The object type is not specified." : "No s'ha especificat el tipus d'objecte.",
"Enter new" : "Escriu nou",
@@ -265,6 +331,7 @@ OC.L10N.register(
"Edit tags" : "Edita etiquetes",
"Error loading dialog template: {error}" : "Error en carregar la plantilla de diàleg: {error}",
"No tags selected for deletion." : "No heu seleccionat les etiquetes a eliminar.",
+ "The update was successful. Redirecting you to Nextcloud now." : "L'actualització ha estat exitosa. Redirigint al teu Nextcloud.",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Ei,\n\nnomés fer-te saber que %s ha compartit %s amb tu.\nMira-ho a: %s\n\n",
"The share will expire on %s." : "La compartició venç el %s.",
"Cheers!" : "Salut!",
@@ -272,6 +339,7 @@ OC.L10N.register(
"Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Ei, <br><br>només fer-vos saber que %s us ha comparti <strong>%s</strong>. <br><a href=\"%s\">Mireu-ho!</a>",
"This Nextcloud instance is currently in single user mode." : "La instància Nextcloud està en mode d'usuari únic.",
- "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància."
+ "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància.",
+ "Please use the command line updater because you have a big instance." : "Si us plau, utilitza l'actualització per línia de comandes perquè tens una instància gran."
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 6d88bd21ff9..ff7af7846f1 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -1,7 +1,7 @@
{ "translations": {
"Please select a file." : "Seleccioneu un fitxer.",
"File is too big" : "El fitxer és massa gran",
- "The selected file is not an image." : "El fitxer seleccionat no és una imatge",
+ "The selected file is not an image." : "El fitxer seleccionat no és una imatge.",
"The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.",
"Invalid file provided" : "El fitxer proporcionat no és vàlid",
"No image or file provided" : "No s'han proporcionat imatges o fitxers",
@@ -18,23 +18,30 @@
"Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.",
"Password reset" : "Canvi de contrasenya",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.",
"Reset your password" : "Canvia la teva contrasenya",
"%s password reset" : "restableix la contrasenya %s",
"Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.",
"Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.",
"Preparing update" : "Preparant l'actualització",
"[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair warning: " : "Advertiment de reparació:",
- "Repair error: " : "Error de reparació:",
+ "Repair warning: " : "Advertiment de reparació: ",
+ "Repair error: " : "Error de reparació: ",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s",
"Turned on maintenance mode" : "Activat el mode de manteniment",
"Turned off maintenance mode" : "Desactivat el mode de manteniment",
"Maintenance mode is kept active" : "El mode de manteniment es manté activat",
"Updating database schema" : "Actualitzant l'esquema de la base de dades",
"Updated database" : "Actualitzada la base de dades",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades",
"Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions",
+ "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori",
"Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori",
+ "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps",
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
"Set log level to debug" : "Modifica el nivell de registre a depuració",
@@ -45,15 +52,18 @@
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
+ "Search contacts …" : "Cerca contactes …",
"No contacts found" : "No s'han trobat contactes",
- "Show all contacts …" : "Mostra tots els contactes...",
+ "Show all contacts …" : "Mostra tots els contactes …",
"There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes",
- "Loading your contacts …" : "Carregant els teus contactes...",
+ "Loading your contacts …" : "Carregant els teus contactes …",
"Looking for {term} …" : "Buscant {term} …",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…</a>",
"No action available" : "Cap acció disponible",
"Error fetching contact actions" : "Error al carregar les accions del contacte",
"Settings" : "Configuració",
"Connection to server lost" : "S'ha perdut la connexió amb el servidor",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemes carregant la pagina, recarregant en 1%n segon","Problemes carregant la pagina, recarregant en 1%n segons"],
"Saving..." : "Desant...",
"Dismiss" : "Rebutja",
"This action requires you to confirm your password" : "Aquesta acció requereix que confirmis la teva contrasenya",
@@ -61,9 +71,11 @@
"Password" : "Contrasenya",
"Cancel" : "Cancel·la",
"Confirm" : "Confirma",
+ "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar",
"seconds ago" : "segons enrere",
- "Logging in …" : "Accedint a...",
+ "Logging in …" : "Accedint a …",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"I know what I'm doing" : "Sé el que faig",
"Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.",
"No" : "No",
@@ -73,7 +85,7 @@
"Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}",
"OK" : "D'acord",
"Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}",
- "read-only" : "Només de lectura",
+ "read-only" : "només de lectura",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"],
"One file conflict" : "Un fitxer en conflicte",
"New Files" : "Fitxers nous",
@@ -91,8 +103,21 @@
"Good password" : "Contrasenya bona",
"Strong password" : "Contrasenya forta",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "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. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Reescannejar...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.",
"Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor",
- "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.",
"Shared" : "Compartit",
"Shared with {recipients}" : "Compartit amb {recipients}",
"Error setting expiration date" : "Error en establir la data de venciment",
@@ -101,6 +126,7 @@
"Expiration" : "Expiració",
"Expiration date" : "Data de venciment",
"Choose a password for the public link" : "Escolliu una contrasenya per l'enllaç públic",
+ "Choose a password for the public link or press the \"Enter\" key" : "Escolliu una contrasenya per l'enllaç públic o premeu la tecla \"Enter\"",
"Copied!" : "Copiat!",
"Copy" : "Copia",
"Not supported!" : "No soportat!",
@@ -120,10 +146,11 @@
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you by {owner}" : "Compartit amb vos per {owner}",
"Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç",
"group" : "grup",
"remote" : "remot",
"email" : "email",
- "shared by {sharer}" : "Compartit per {sharer}",
+ "shared by {sharer}" : "compartit per {sharer}",
"Unshare" : "Deixa de compartir",
"Can reshare" : "Pot recompartir",
"Can edit" : "Pot editar",
@@ -133,17 +160,27 @@
"Access control" : "Control d'accés",
"Could not unshare" : "No pot descompartir",
"Error while sharing" : "Error en compartir",
+ "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.",
+ "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}",
"No users found for {search}" : "No s'han trobat usuaris per {search}",
- "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.",
+ "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho",
"{sharee} (group)" : "{sharee} (grup)",
"{sharee} (remote)" : "{sharee} (remot)",
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Comparteix",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.",
+ "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
"Name or email address..." : "Nom o adreça electrònica...",
+ "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
+ "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…",
"Name..." : "Nom...",
"Error" : "Error",
"Error removing share" : "Error al treure compartició",
+ "Non-existing tag #{tag}" : "Etiqueta inexistent #{tag}",
"restricted" : "restringit",
"invisible" : "invisible",
"({scope})" : "({scope})",
@@ -156,13 +193,20 @@
"sunny" : "asolellat",
"Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}",
"Hello {name}" : "Hola {name}",
- "new" : "Nou",
- "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "],
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Aquests són els resultats de la cerca<script>alert(1)</script></strong>",
+ "new" : "nou",
+ "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.",
"Update to {version}" : "Actualitza a {version}",
- "An error occurred." : "S'ha produït un error",
+ "An error occurred." : "S'ha produït un error.",
"Please reload the page." : "Carregueu la pàgina de nou.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'actualització no va tenir èxit. Per a més informació <a href=\"{url}\">consulta la nostra nota al fòrum</a> que cobreix aquest assumpte.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunitat Nextcloud</a>.",
"Continue to Nextcloud" : "Continua a Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."],
"Searching other places" : "Buscant altres ubicacions",
+ "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"],
"Personal" : "Personal",
"Users" : "Usuaris",
"Apps" : "Aplicacions",
@@ -178,7 +222,7 @@
"More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.",
"Technical details" : "Detalls tècnics",
"Remote Address: %s" : "Adreça remota: %s",
- "Request ID: %s" : "Sol·licitud ID: %s ",
+ "Request ID: %s" : "Sol·licitud ID: %s",
"Type: %s" : "Tipus: %s",
"Code: %s" : "Codi: %s",
"Message: %s" : "Missatge: %s",
@@ -187,12 +231,13 @@
"Trace" : "Traça",
"Security warning" : "Advertiment de seguretat",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.",
"Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>",
"Username" : "Nom d'usuari",
"Storage & database" : "Emmagatzematge i base de dades",
"Data folder" : "Carpeta de dades",
"Configure the database" : "Configura la base de dades",
- "Only %s is available." : "Només hi ha disponible %s",
+ "Only %s is available." : "Només hi ha disponible %s.",
"Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.",
"For more details check out the documentation." : "Per més detalls consulteu la documentació.",
"Database user" : "Usuari de la base de dades",
@@ -200,20 +245,23 @@
"Database name" : "Nom de la base de dades",
"Database tablespace" : "Espai de taula de la base de dades",
"Database host" : "Ordinador central de la base de dades",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).",
"Performance warning" : "Alerta de rendiment",
"SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.",
"For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.",
"Finish setup" : "Acaba la configuració",
- "Finishing …" : "Acabant...",
+ "Finishing …" : "Acabant …",
"Need help?" : "Necessites ajuda?",
"See the documentation" : "Consulti la documentació",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.",
"More apps" : "Més aplicacions",
"Search" : "Cerca",
+ "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:",
"Confirm your password" : "Confirma la teva contrasenya",
"Server side authentication failed!" : "L'autenticació del servidor ha fallat!",
"Please contact your administrator." : "Contacteu amb l'administrador.",
+ "An internal error occurred." : "S'ha produït un error intern.",
"Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.",
"Username or email" : "Nom d'usuari o correu electrònic",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
@@ -221,31 +269,41 @@
"Log in" : "Inici de sessió",
"Stay logged in" : "Mantén la sessió connectada",
"Alternative Logins" : "Acreditacions alternatives",
+ "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.",
"App token" : "Testimoni d'aplicació",
- "Redirecting …" : "Redirigint...",
+ "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació",
+ "Redirecting …" : "Redirigint …",
"New password" : "Contrasenya nova",
"New Password" : "Contrasenya nova",
"Reset password" : "Reinicialitza la contrasenya",
"Two-factor authentication" : "Segon factor d'autenticació",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.",
"Cancel log in" : "Cancel·la l'accés a",
"Use backup code" : "Utilitza un codi de copia de seguretat",
- "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable",
+ "Error while validating your second factor" : "Error al validar el segon factor d'autenticació",
+ "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.",
"Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança",
"App update required" : "Cal que actualitzeu la aplicació",
"%s will be updated to version %s" : "%s s'actualitzarà a la versió %s",
"These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:",
"These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:",
- "The theme %s has been disabled." : "S'ha desactivat el tema %s",
+ "The theme %s has been disabled." : "S'ha desactivat el tema %s.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.",
"Start update" : "Inicia l'actualització",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:",
"Detailed logs" : "Registres detallats",
"Update needed" : "Actualització necessaria",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentació</a>.",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.",
+ "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat",
"This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.",
"This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
+ "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"Ok" : "D'acord",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.",
@@ -254,8 +312,16 @@
"can edit" : "pot editar",
"can create" : "pot crear",
"can change" : "pot canviar",
- "can delete" : "Pot esborrar",
+ "can delete" : "pot esborrar",
"access control" : "control d'accés",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud",
+ "Share with users or by mail..." : "Comparteix amb usuaris o per correu...",
+ "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...",
+ "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...",
+ "Share with users or groups..." : "Comparteix amb usuaris o grups...",
+ "Share with users, groups or by mail..." : "Comparteix amb usuaris, grups o per correu...",
+ "Share with users, groups or remote users..." : "Comparteix amb usuaris, grups o usuaris remots...",
+ "Share with users, groups, remote users or by mail..." : "Comparteix amb usuaris, grups, usuaris remots o per correu...",
"Share with users..." : "Comparteix amb usuaris...",
"The object type is not specified." : "No s'ha especificat el tipus d'objecte.",
"Enter new" : "Escriu nou",
@@ -263,6 +329,7 @@
"Edit tags" : "Edita etiquetes",
"Error loading dialog template: {error}" : "Error en carregar la plantilla de diàleg: {error}",
"No tags selected for deletion." : "No heu seleccionat les etiquetes a eliminar.",
+ "The update was successful. Redirecting you to Nextcloud now." : "L'actualització ha estat exitosa. Redirigint al teu Nextcloud.",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Ei,\n\nnomés fer-te saber que %s ha compartit %s amb tu.\nMira-ho a: %s\n\n",
"The share will expire on %s." : "La compartició venç el %s.",
"Cheers!" : "Salut!",
@@ -270,6 +337,7 @@
"Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Ei, <br><br>només fer-vos saber que %s us ha comparti <strong>%s</strong>. <br><a href=\"%s\">Mireu-ho!</a>",
"This Nextcloud instance is currently in single user mode." : "La instància Nextcloud està en mode d'usuari únic.",
- "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància."
+ "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància.",
+ "Please use the command line updater because you have a big instance." : "Si us plau, utilitza l'actualització per línia de comandes perquè tens una instància gran."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 544969405ca..0ba52b2bafb 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -54,7 +54,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
- "Search contacts …" : "…",
+ "Search contacts …" : "Kontakte suchen…",
"No contacts found" : "Keine Kontakte gefunden",
"Show all contacts …" : "Zeige alle Kontakte…",
"There was an error loading your contacts" : "Fehler beim Laden Ihrer Kontakte",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index f34fa4dfaaf..bdfca055c64 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -52,7 +52,7 @@
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
- "Search contacts …" : "…",
+ "Search contacts …" : "Kontakte suchen…",
"No contacts found" : "Keine Kontakte gefunden",
"Show all contacts …" : "Zeige alle Kontakte…",
"There was an error loading your contacts" : "Fehler beim Laden Ihrer Kontakte",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 67ad387b974..1c9e65c59e4 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -13,11 +13,11 @@ OC.L10N.register(
"No temporary profile picture available, try again" : "Δεν υπάρχει προσωρινή φωτογραφία προφίλ, δοκιμάστε ξανά",
"No crop data provided" : "Δεν δόθηκαν δεδομένα περικοπής",
"No valid crop data provided" : "Έχουν δοθεί μη έγκυρα δεδομένα περικοπής",
- "Crop is not square" : "Η περικοπή δεν εχει τετραγωνικό σχήμα",
+ "Crop is not square" : "Η περικοπή δεν έχει τετράγωνο σχήμα",
"State token does not match" : "Το αναγνωριστικό κατάστασης δεν ταιριάζει",
"Password reset is disabled" : "Η επαναφορά συνθηματικού είναι απενεργοποιημένη",
- "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου διακριτικού",
- "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το διακριτικό έχει λήξει",
+ "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου αναγνωριστικού",
+ "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το αναγνωριστικό έχει λήξει",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλεκτρονικού μηνύματος επαναφοράς διότι δεν υπάρχει διεύθυνση ηλεκτρινικής αλληλογραφίας για αυτόν τον χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή.",
"Password reset" : "Επαναφορά συνθηματικού",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Κάντε κλικ στο παρακάτω κουμπί για να επαναφέρετε το συνθηματικό σας. Εάν δεν αιτηθήκατε επαναφορά συνθηματικού, αγνοήστε αυτό το μήνυμα αλληλογραφίας.",
@@ -40,12 +40,13 @@ OC.L10N.register(
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)",
"Checked database schema update" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων",
"Checking updates of apps" : "Έλεγχος ενημερώσεων εφαρμογών",
- "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο κέτρο εφαρμογών",
- "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το κέντρο εφαρμογών",
+ "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο App Store",
+ "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το App Store",
+ "Checked for update of app \"%s\" in appstore" : "Έλεγχος ενημέρωσης εφαρμογής \" 1 %s \" στο App Store",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων για %s μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)",
"Checked database schema update for apps" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων για εφαρμογές",
"Updated \"%s\" to %s" : "Ενημερώθηκε \"%s\" σε %s",
- "Set log level to debug" : "Ορισμός επιπέδου ιστορικού για αποσφαλμάτωση",
+ "Set log level to debug" : "Ορισμός επιπέδου ιστορικού σε αποσφαλμάτωση",
"Reset log level" : "Επαναφορά επιπέδου ιστορικού",
"Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα",
"Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα",
@@ -53,6 +54,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (ασύμβατη)",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
+ "Search contacts …" : "Αναζήτηση επαφών ...",
"No contacts found" : "Δεν βρέθηκαν επαφές",
"Show all contacts …" : "Εμφάνιση όλων των επαφών ...",
"There was an error loading your contacts" : "Υπήρξε σφάλμα κατά την φόρτωση των επαφών σας",
@@ -74,7 +76,7 @@ OC.L10N.register(
"Failed to authenticate, try again" : "Αποτυχία πιστοποίησης, δοκιμάστε πάλι",
"seconds ago" : "δευτερόλεπτα πριν",
"Logging in …" : "Σύνδεση ...",
- "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη με ηλεκτρονικό ταχυδρομείο. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br> Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή.",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br> Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή σας.",
"Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Δεν θα υπάρξει κανένας τρόπος για να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού σας. <br /> Αν δεν είστε σίγουροι για το τι πρέπει να κάνετε, επικοινωνήστε με το διαχειριστή, πριν να συνεχίσετε. <br /> Θέλετε να συνεχίσετε;",
"I know what I'm doing" : "Γνωρίζω τι κάνω",
"Password can not be changed. Please contact your administrator." : "Το συνθηματικό σας δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή.",
@@ -82,8 +84,8 @@ OC.L10N.register(
"Yes" : "Ναι",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Choose" : "Επιλέξτε",
- "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}",
- "OK" : "Εντάξει",
+ "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου επιλογέα αρχείων: {error}",
+ "OK" : "ΟΚ",
"Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}",
"read-only" : "μόνο για ανάγνωση",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"],
@@ -109,8 +111,9 @@ OC.L10N.register(
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Η συσκευή /dev/urandom δεν είναι αναγνώσιμη από την PHP κάτι που θα έπρεπε να μπορεί για λόγους ασφάλειας. Περισσότερες πληροφορίες μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>.",
"You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Έχετε εγκατεστημένη έκδοση PHP {version}. Σας ενθαρρύνουμε να αναβαθμίσετε την έκδοση της PHP το συντομότερο δυνατόν που η διανομή σας το υποστηρίξει ώστε να εκμεταλλευτείτε τις <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">επιδόσεις και τις ενημερώσεις ασφάλειας που παρέχονται από την ομάδα PHP </a>.",
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή. Εάν δεν έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή, αυτό είναι ένα ζήτημα ασφαλείας και μπορείτε να επιτρέψετε σε κάποιον εισβολέα να παρουσιάσει την διεύθυνση IP του παραπλανητικά ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>.",
- "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένη το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki και για τα δύο αρθρώματα</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένο το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki και για τα δύο αρθρώματα</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Μερικά αρχεία δεν πέρασαν από τον έλεγχο της ακεραιότητας. Περισσότερες πληροφορίες για το πως να επιλύσετε πρόβλημα μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Λίστα από μή έγκυρα αρχεία…</a> / <a href=\"{rescanEndpoint}\">Σάρωση ξανά…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "H PHP OPcache δεν είναι σωστά διαμορφωμένη. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Για καλύτερη απόδοση προτείνεται</a>να χρησιμοποιήσετε τις εξής ρυθμίσεις στο <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.",
"Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.",
@@ -125,6 +128,7 @@ OC.L10N.register(
"Expiration" : "Λήξη",
"Expiration date" : "Ημερομηνία λήξης",
"Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο",
+ "Choose a password for the public link or press the \"Enter\" key" : "Επιλέξτε ένα συνθηματικό για την δημόσια διεύθυνση ή πατήστε το \"Enter\" πλήκτρο",
"Copied!" : "Αντιγράφτηκε!",
"Copy" : "Αντιγραφή",
"Not supported!" : "Δεν υποστηρίζεται!",
@@ -134,11 +138,11 @@ OC.L10N.register(
"Share to {name}" : "Διαμοιρασμός με {name}",
"Share link" : "Διαμοιρασμός συνδέσμου",
"Link" : "Σύνδεσμος",
- "Password protect" : "Προστασία συνθηματικού",
- "Allow editing" : "Επιτρέπεται η επεξεργασία",
+ "Password protect" : "Προστασία με συνθηματικό",
+ "Allow editing" : "Επέτρεψε την επεξεργασία",
"Email link to person" : "Αποστολή συνδέσμου με email",
"Send" : "Αποστολή",
- "Allow upload and editing" : "Επιτρέπονται η μεταφόρτωση και η επεξεργασία",
+ "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία",
"Read only" : "Μόνο για ανάγνωση",
"File drop (upload only)" : "Απόθεση αρχείου (μόνο μεταφόρτωση)",
"Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}",
@@ -160,7 +164,7 @@ OC.L10N.register(
"Error while sharing" : "Σφάλμα κατά τον διαμοιρασμό",
"Share details could not be loaded for this item." : "Αδυναμία φόρτωσης λεπτομερειών διαμοιρασμού για αυτό το αντικείμενο.",
"_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Απαιτείται τουλάχιστο {count} χαρακτήρας για αυτόματη συμπλήρωση","Απαιτούνται τουλάχιστο {count} χαρακτήρες για αυτόματη συμπλήρωση"],
- "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα είναι ίσως περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.",
+ "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα ίσως να έχει περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.",
"No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}",
"No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα",
@@ -184,7 +188,7 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Διαγραφή",
"Rename" : "Μετονομασία",
- "Collaborative tags" : "Συνεργατική ετικέτα",
+ "Collaborative tags" : "Συνεργατικές ετικέτες",
"No tags found" : "Δεν βρέθηκαν ετικέτες",
"unknown text" : "άγνωστο κείμενο",
"Hello world!" : "Γεια σου κόσμε!",
@@ -202,7 +206,7 @@ OC.L10N.register(
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Μη επιτυχημένη ενημέρωση. Παρακαλούμε αναφέρετε αυτό το πρόβλημα στην <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">κοινότητα Nextcloud</a>.",
"Continue to Nextcloud" : "Συνέχεια στον Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτο.","Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτα."],
- "Searching other places" : "Έρευνα σε άλλα σημεία.",
+ "Searching other places" : "Αναζήτηση σε άλλα σημεία.",
"No search results in other folders for {tag}{filter}{endtag}" : "Κανένα αποτέλεσμα αναζήτησης σε άλλους φακέλους για {tag}{filter}{endtag}",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"],
"Personal" : "Προσωπικά",
@@ -220,15 +224,15 @@ OC.L10N.register(
"More details can be found in the server log." : "Περισσότερες λεπτομέρειες μπορείτε να βρείτε στο αρχείο καταγραφής του διακομιστή.",
"Technical details" : "Τεχνικές λεπτομέρειες",
"Remote Address: %s" : "Απομακρυσμένη διεύθυνση: %s",
- "Request ID: %s" : "Ταυτότητα αιτήματος: %s",
+ "Request ID: %s" : "ID αιτήματος: %s",
"Type: %s" : "Τύπος: %s",
- "Code: %s" : "Κωδικός: %s",
+ "Code: %s" : "Κώδικας: %s",
"Message: %s" : "Μήνυμα: %s",
"File: %s" : "Αρχείο: %s",
"Line: %s" : "Γραμμή: %s",
"Trace" : "Ανίχνευση",
"Security warning" : "Προειδοποίηση ασφαλείας",
- "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό να είναι προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Για πληροφορίες πως μπορείτε να ρυθμίσετε σωστά τον διακομιστή, παρακαλούμε δείτε την <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">τεκμηρίωση</a>.",
"Create an <strong>admin account</strong>" : "Δημιουργήστε έναν <strong>λογαριασμό διαχειριστή</strong>",
"Username" : "Όνομα χρήστη",
@@ -236,18 +240,18 @@ OC.L10N.register(
"Data folder" : "Φάκελος δεδομένων",
"Configure the database" : "Ρύθμιση της βάσης δεδομένων",
"Only %s is available." : "Μόνο %s είναι διαθέσιμο.",
- "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.",
+ "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα της PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.",
"For more details check out the documentation." : "Για περισσότερες πληροφορίες ανατρέξτε στην τεκμηρίωση.",
"Database user" : "Χρήστης βάσης δεδομένων",
"Database password" : "Συνθηματικό βάσης δεδομένων",
"Database name" : "Όνομα βάσης δεδομένων",
"Database tablespace" : "Κενά πινάκων βάσης δεδομένων",
"Database host" : "Διακομιστής βάσης δεδομένων",
- "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα κεντρικού υπολογιστή (πχ localhost: 5432).",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα διακομιστή (πχ localhost: 5432).",
"Performance warning" : "Προειδοποίηση απόδοσης",
"SQLite will be used as database." : "Η SQLite θα χρησιμοποιηθεί ως βάση δεδομένων.",
"For larger installations we recommend to choose a different database backend." : "Για μεγαλύτερες εγκαταστάσεις συνιστούμε να επιλέξετε διαφορετικό σύστημα υποστήριξης βάσης δεδομένων.",
- "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε τον πελάτη για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε το λογισμικό για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.",
"Finish setup" : "Ολοκλήρωση ρύθμισης",
"Finishing …" : "Ολοκλήρωση...",
"Need help?" : "Θέλετε βοήθεια;",
@@ -257,7 +261,7 @@ OC.L10N.register(
"Search" : "Αναζήτηση",
"This action requires you to confirm your password:" : "Αυτή η ενέργεια απαιτεί επιβεβαίωση του συνθηματικού σας:",
"Confirm your password" : "Επιβεβαίωση συνθηματικού",
- "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από την πλευράς διακομιστή!",
+ "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από πλευράς διακομιστή!",
"Please contact your administrator." : "Παρακαλούμε επικοινωνήστε με τον διαχειριστή.",
"An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.",
"Please try again or contact your administrator." : "Παρακαλούμε δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή.",
@@ -266,14 +270,15 @@ OC.L10N.register(
"Wrong password." : "Λάθος συνθηματικό.",
"Log in" : "Είσοδος",
"Stay logged in" : "Μείνετε συνδεδεμένος",
- "Alternative Logins" : "Εναλλακτικές συνδέσεις",
+ "Alternative Logins" : "Εναλλακτικές είσοδοι",
+ "You are about to grant \"%s\" access to your %s account." : "Πρόκειται να δώσετε δικαίωμα πρόσβασης%sστον%sλογαριασμό.",
"App token" : "Διακριτικό εφαρμογής",
"Alternative login using app token" : "Εναλλακτική είσοδος με την χρήση του διακριτικού της εφαρμογής",
"Redirecting …" : "Γίνεται ανακατεύθυνση ...",
"New password" : "Νέο συνθηματικό",
- "New Password" : "Νέο συνθηματικό",
+ "New Password" : "Νέο Συνθηματικό",
"Reset password" : "Επαναφορά συνθηματικού",
- "Two-factor authentication" : "Πιστοποίηση με 2 παράγοντες",
+ "Two-factor authentication" : "Πιστοποίηση Δύο-Παραγόντων",
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Έχει ενεργοποιηθεί βελτιωμένη ασφάλεια για τον λογαριασμό σας. Παρακαλώ πιστοποιήστε με την χρήση δεύτερου παράγοντα",
"Cancel log in" : "Ακύρωση εισόδου",
"Use backup code" : "Χρήση εφεδρικών κωδικών",
@@ -294,14 +299,15 @@ OC.L10N.register(
"Update needed" : "Απαιτείται ενημέρωση",
"Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Για βοήθεια, δείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">τεκμηρίωση</a>.",
- "Upgrade via web on my own risk" : "Αναβάθμιση μέσω δικτύου με δικιά μου ευθύνη",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.",
+ "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη",
"This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε λειτουργία συντήρησης, η οποία μπορεί να διαρκέσει κάποιο χρόνο.",
"This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.",
"Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε να συνεχίσετε;",
- "Ok" : "Εντάξει",
+ "Ok" : "ΟΚ",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.",
"Error while unsharing" : "Σφάλμα κατά την αναίρεση του διαμοιρασμού",
"can reshare" : "δυνατότητα να διαμοιραστεί ξανά",
@@ -333,7 +339,7 @@ OC.L10N.register(
"Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επαναφέρετε το συνθηματικό: {link}",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Γεια χαρά,<br><br>απλά σας ενημερώνω πως ο %s μοιράστηκε το<strong>%s</strong> με εσάς.<br><a href=\"%s\">Δείτε το!</a><br><br>",
"This Nextcloud instance is currently in single user mode." : "Αυτή η εγκατάσταση Nextcloud είναι τώρα σε κατάσταση ενός χρήστη.",
- "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.",
+ "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο οι διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.",
"Please use the command line updater because you have a big instance." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μεγάλη εγκατάσταση."
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 0471af680fd..5e170a8e010 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -11,11 +11,11 @@
"No temporary profile picture available, try again" : "Δεν υπάρχει προσωρινή φωτογραφία προφίλ, δοκιμάστε ξανά",
"No crop data provided" : "Δεν δόθηκαν δεδομένα περικοπής",
"No valid crop data provided" : "Έχουν δοθεί μη έγκυρα δεδομένα περικοπής",
- "Crop is not square" : "Η περικοπή δεν εχει τετραγωνικό σχήμα",
+ "Crop is not square" : "Η περικοπή δεν έχει τετράγωνο σχήμα",
"State token does not match" : "Το αναγνωριστικό κατάστασης δεν ταιριάζει",
"Password reset is disabled" : "Η επαναφορά συνθηματικού είναι απενεργοποιημένη",
- "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου διακριτικού",
- "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το διακριτικό έχει λήξει",
+ "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου αναγνωριστικού",
+ "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το αναγνωριστικό έχει λήξει",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλεκτρονικού μηνύματος επαναφοράς διότι δεν υπάρχει διεύθυνση ηλεκτρινικής αλληλογραφίας για αυτόν τον χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή.",
"Password reset" : "Επαναφορά συνθηματικού",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Κάντε κλικ στο παρακάτω κουμπί για να επαναφέρετε το συνθηματικό σας. Εάν δεν αιτηθήκατε επαναφορά συνθηματικού, αγνοήστε αυτό το μήνυμα αλληλογραφίας.",
@@ -38,12 +38,13 @@
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)",
"Checked database schema update" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων",
"Checking updates of apps" : "Έλεγχος ενημερώσεων εφαρμογών",
- "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο κέτρο εφαρμογών",
- "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το κέντρο εφαρμογών",
+ "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο App Store",
+ "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το App Store",
+ "Checked for update of app \"%s\" in appstore" : "Έλεγχος ενημέρωσης εφαρμογής \" 1 %s \" στο App Store",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων για %s μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)",
"Checked database schema update for apps" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων για εφαρμογές",
"Updated \"%s\" to %s" : "Ενημερώθηκε \"%s\" σε %s",
- "Set log level to debug" : "Ορισμός επιπέδου ιστορικού για αποσφαλμάτωση",
+ "Set log level to debug" : "Ορισμός επιπέδου ιστορικού σε αποσφαλμάτωση",
"Reset log level" : "Επαναφορά επιπέδου ιστορικού",
"Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα",
"Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα",
@@ -51,6 +52,7 @@
"%s (incompatible)" : "%s (ασύμβατη)",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
+ "Search contacts …" : "Αναζήτηση επαφών ...",
"No contacts found" : "Δεν βρέθηκαν επαφές",
"Show all contacts …" : "Εμφάνιση όλων των επαφών ...",
"There was an error loading your contacts" : "Υπήρξε σφάλμα κατά την φόρτωση των επαφών σας",
@@ -72,7 +74,7 @@
"Failed to authenticate, try again" : "Αποτυχία πιστοποίησης, δοκιμάστε πάλι",
"seconds ago" : "δευτερόλεπτα πριν",
"Logging in …" : "Σύνδεση ...",
- "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη με ηλεκτρονικό ταχυδρομείο. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br> Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή.",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br> Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή σας.",
"Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Δεν θα υπάρξει κανένας τρόπος για να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού σας. <br /> Αν δεν είστε σίγουροι για το τι πρέπει να κάνετε, επικοινωνήστε με το διαχειριστή, πριν να συνεχίσετε. <br /> Θέλετε να συνεχίσετε;",
"I know what I'm doing" : "Γνωρίζω τι κάνω",
"Password can not be changed. Please contact your administrator." : "Το συνθηματικό σας δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή.",
@@ -80,8 +82,8 @@
"Yes" : "Ναι",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Choose" : "Επιλέξτε",
- "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}",
- "OK" : "Εντάξει",
+ "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου επιλογέα αρχείων: {error}",
+ "OK" : "ΟΚ",
"Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}",
"read-only" : "μόνο για ανάγνωση",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"],
@@ -107,8 +109,9 @@
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Η συσκευή /dev/urandom δεν είναι αναγνώσιμη από την PHP κάτι που θα έπρεπε να μπορεί για λόγους ασφάλειας. Περισσότερες πληροφορίες μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>.",
"You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Έχετε εγκατεστημένη έκδοση PHP {version}. Σας ενθαρρύνουμε να αναβαθμίσετε την έκδοση της PHP το συντομότερο δυνατόν που η διανομή σας το υποστηρίξει ώστε να εκμεταλλευτείτε τις <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">επιδόσεις και τις ενημερώσεις ασφάλειας που παρέχονται από την ομάδα PHP </a>.",
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή. Εάν δεν έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή, αυτό είναι ένα ζήτημα ασφαλείας και μπορείτε να επιτρέψετε σε κάποιον εισβολέα να παρουσιάσει την διεύθυνση IP του παραπλανητικά ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>.",
- "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένη το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki και για τα δύο αρθρώματα</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένο το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki και για τα δύο αρθρώματα</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Μερικά αρχεία δεν πέρασαν από τον έλεγχο της ακεραιότητας. Περισσότερες πληροφορίες για το πως να επιλύσετε πρόβλημα μπορείτε να βρείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">τεκμηρίωση</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Λίστα από μή έγκυρα αρχεία…</a> / <a href=\"{rescanEndpoint}\">Σάρωση ξανά…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "H PHP OPcache δεν είναι σωστά διαμορφωμένη. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Για καλύτερη απόδοση προτείνεται</a>να χρησιμοποιήσετε τις εξής ρυθμίσεις στο <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.",
"Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.",
@@ -123,6 +126,7 @@
"Expiration" : "Λήξη",
"Expiration date" : "Ημερομηνία λήξης",
"Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο",
+ "Choose a password for the public link or press the \"Enter\" key" : "Επιλέξτε ένα συνθηματικό για την δημόσια διεύθυνση ή πατήστε το \"Enter\" πλήκτρο",
"Copied!" : "Αντιγράφτηκε!",
"Copy" : "Αντιγραφή",
"Not supported!" : "Δεν υποστηρίζεται!",
@@ -132,11 +136,11 @@
"Share to {name}" : "Διαμοιρασμός με {name}",
"Share link" : "Διαμοιρασμός συνδέσμου",
"Link" : "Σύνδεσμος",
- "Password protect" : "Προστασία συνθηματικού",
- "Allow editing" : "Επιτρέπεται η επεξεργασία",
+ "Password protect" : "Προστασία με συνθηματικό",
+ "Allow editing" : "Επέτρεψε την επεξεργασία",
"Email link to person" : "Αποστολή συνδέσμου με email",
"Send" : "Αποστολή",
- "Allow upload and editing" : "Επιτρέπονται η μεταφόρτωση και η επεξεργασία",
+ "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία",
"Read only" : "Μόνο για ανάγνωση",
"File drop (upload only)" : "Απόθεση αρχείου (μόνο μεταφόρτωση)",
"Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}",
@@ -158,7 +162,7 @@
"Error while sharing" : "Σφάλμα κατά τον διαμοιρασμό",
"Share details could not be loaded for this item." : "Αδυναμία φόρτωσης λεπτομερειών διαμοιρασμού για αυτό το αντικείμενο.",
"_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Απαιτείται τουλάχιστο {count} χαρακτήρας για αυτόματη συμπλήρωση","Απαιτούνται τουλάχιστο {count} χαρακτήρες για αυτόματη συμπλήρωση"],
- "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα είναι ίσως περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.",
+ "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα ίσως να έχει περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.",
"No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}",
"No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα",
@@ -182,7 +186,7 @@
"({scope})" : "({scope})",
"Delete" : "Διαγραφή",
"Rename" : "Μετονομασία",
- "Collaborative tags" : "Συνεργατική ετικέτα",
+ "Collaborative tags" : "Συνεργατικές ετικέτες",
"No tags found" : "Δεν βρέθηκαν ετικέτες",
"unknown text" : "άγνωστο κείμενο",
"Hello world!" : "Γεια σου κόσμε!",
@@ -200,7 +204,7 @@
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Μη επιτυχημένη ενημέρωση. Παρακαλούμε αναφέρετε αυτό το πρόβλημα στην <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">κοινότητα Nextcloud</a>.",
"Continue to Nextcloud" : "Συνέχεια στον Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτο.","Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτα."],
- "Searching other places" : "Έρευνα σε άλλα σημεία.",
+ "Searching other places" : "Αναζήτηση σε άλλα σημεία.",
"No search results in other folders for {tag}{filter}{endtag}" : "Κανένα αποτέλεσμα αναζήτησης σε άλλους φακέλους για {tag}{filter}{endtag}",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"],
"Personal" : "Προσωπικά",
@@ -218,15 +222,15 @@
"More details can be found in the server log." : "Περισσότερες λεπτομέρειες μπορείτε να βρείτε στο αρχείο καταγραφής του διακομιστή.",
"Technical details" : "Τεχνικές λεπτομέρειες",
"Remote Address: %s" : "Απομακρυσμένη διεύθυνση: %s",
- "Request ID: %s" : "Ταυτότητα αιτήματος: %s",
+ "Request ID: %s" : "ID αιτήματος: %s",
"Type: %s" : "Τύπος: %s",
- "Code: %s" : "Κωδικός: %s",
+ "Code: %s" : "Κώδικας: %s",
"Message: %s" : "Μήνυμα: %s",
"File: %s" : "Αρχείο: %s",
"Line: %s" : "Γραμμή: %s",
"Trace" : "Ανίχνευση",
"Security warning" : "Προειδοποίηση ασφαλείας",
- "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό να είναι προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Για πληροφορίες πως μπορείτε να ρυθμίσετε σωστά τον διακομιστή, παρακαλούμε δείτε την <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">τεκμηρίωση</a>.",
"Create an <strong>admin account</strong>" : "Δημιουργήστε έναν <strong>λογαριασμό διαχειριστή</strong>",
"Username" : "Όνομα χρήστη",
@@ -234,18 +238,18 @@
"Data folder" : "Φάκελος δεδομένων",
"Configure the database" : "Ρύθμιση της βάσης δεδομένων",
"Only %s is available." : "Μόνο %s είναι διαθέσιμο.",
- "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.",
+ "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα της PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.",
"For more details check out the documentation." : "Για περισσότερες πληροφορίες ανατρέξτε στην τεκμηρίωση.",
"Database user" : "Χρήστης βάσης δεδομένων",
"Database password" : "Συνθηματικό βάσης δεδομένων",
"Database name" : "Όνομα βάσης δεδομένων",
"Database tablespace" : "Κενά πινάκων βάσης δεδομένων",
"Database host" : "Διακομιστής βάσης δεδομένων",
- "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα κεντρικού υπολογιστή (πχ localhost: 5432).",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα διακομιστή (πχ localhost: 5432).",
"Performance warning" : "Προειδοποίηση απόδοσης",
"SQLite will be used as database." : "Η SQLite θα χρησιμοποιηθεί ως βάση δεδομένων.",
"For larger installations we recommend to choose a different database backend." : "Για μεγαλύτερες εγκαταστάσεις συνιστούμε να επιλέξετε διαφορετικό σύστημα υποστήριξης βάσης δεδομένων.",
- "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε τον πελάτη για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε το λογισμικό για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.",
"Finish setup" : "Ολοκλήρωση ρύθμισης",
"Finishing …" : "Ολοκλήρωση...",
"Need help?" : "Θέλετε βοήθεια;",
@@ -255,7 +259,7 @@
"Search" : "Αναζήτηση",
"This action requires you to confirm your password:" : "Αυτή η ενέργεια απαιτεί επιβεβαίωση του συνθηματικού σας:",
"Confirm your password" : "Επιβεβαίωση συνθηματικού",
- "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από την πλευράς διακομιστή!",
+ "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από πλευράς διακομιστή!",
"Please contact your administrator." : "Παρακαλούμε επικοινωνήστε με τον διαχειριστή.",
"An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.",
"Please try again or contact your administrator." : "Παρακαλούμε δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή.",
@@ -264,14 +268,15 @@
"Wrong password." : "Λάθος συνθηματικό.",
"Log in" : "Είσοδος",
"Stay logged in" : "Μείνετε συνδεδεμένος",
- "Alternative Logins" : "Εναλλακτικές συνδέσεις",
+ "Alternative Logins" : "Εναλλακτικές είσοδοι",
+ "You are about to grant \"%s\" access to your %s account." : "Πρόκειται να δώσετε δικαίωμα πρόσβασης%sστον%sλογαριασμό.",
"App token" : "Διακριτικό εφαρμογής",
"Alternative login using app token" : "Εναλλακτική είσοδος με την χρήση του διακριτικού της εφαρμογής",
"Redirecting …" : "Γίνεται ανακατεύθυνση ...",
"New password" : "Νέο συνθηματικό",
- "New Password" : "Νέο συνθηματικό",
+ "New Password" : "Νέο Συνθηματικό",
"Reset password" : "Επαναφορά συνθηματικού",
- "Two-factor authentication" : "Πιστοποίηση με 2 παράγοντες",
+ "Two-factor authentication" : "Πιστοποίηση Δύο-Παραγόντων",
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Έχει ενεργοποιηθεί βελτιωμένη ασφάλεια για τον λογαριασμό σας. Παρακαλώ πιστοποιήστε με την χρήση δεύτερου παράγοντα",
"Cancel log in" : "Ακύρωση εισόδου",
"Use backup code" : "Χρήση εφεδρικών κωδικών",
@@ -292,14 +297,15 @@
"Update needed" : "Απαιτείται ενημέρωση",
"Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Για βοήθεια, δείτε στην <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">τεκμηρίωση</a>.",
- "Upgrade via web on my own risk" : "Αναβάθμιση μέσω δικτύου με δικιά μου ευθύνη",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.",
+ "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη",
"This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε λειτουργία συντήρησης, η οποία μπορεί να διαρκέσει κάποιο χρόνο.",
"This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.",
"Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε να συνεχίσετε;",
- "Ok" : "Εντάξει",
+ "Ok" : "ΟΚ",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.",
"Error while unsharing" : "Σφάλμα κατά την αναίρεση του διαμοιρασμού",
"can reshare" : "δυνατότητα να διαμοιραστεί ξανά",
@@ -331,7 +337,7 @@
"Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επαναφέρετε το συνθηματικό: {link}",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Γεια χαρά,<br><br>απλά σας ενημερώνω πως ο %s μοιράστηκε το<strong>%s</strong> με εσάς.<br><a href=\"%s\">Δείτε το!</a><br><br>",
"This Nextcloud instance is currently in single user mode." : "Αυτή η εγκατάσταση Nextcloud είναι τώρα σε κατάσταση ενός χρήστη.",
- "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.",
+ "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο οι διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.",
"Please use the command line updater because you have a big instance." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μεγάλη εγκατάσταση."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js
index 982f82d3b6d..1556777704b 100644
--- a/core/l10n/es_MX.js
+++ b/core/l10n/es_MX.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"core",
{
- "Please select a file." : "Por favor selecciona un archivo.un ",
+ "Please select a file." : "Por favor selecciona un archivo.",
"File is too big" : "El archivo es demasiado grande.",
"The selected file is not an image." : "El archivo seleccionado no es una imagen.",
"The selected file cannot be read." : "El archivo seleccionado no se puede leer.",
@@ -20,8 +20,8 @@ OC.L10N.register(
"Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Por favor contacta a tu adminsitrador. ",
"Password reset" : "Restablecer contraseña",
- "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ",
- "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ",
"Reset your password" : "Restablecer tu contraseña",
"%s password reset" : "%s restablecer la contraseña",
"Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Por favor contacta a tu adminsitrador. ",
@@ -148,7 +148,7 @@ OC.L10N.register(
"Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}",
"Shared with you by {owner}" : "Compartido contigo por {owner}",
"Choose a password for the mail share" : "Elige una contraseña para el elemento compartido por correo",
- "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
"group" : "grupo",
"remote" : "remoto",
"email" : "correo electrónico",
diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json
index 8bc080b1b36..7618554e209 100644
--- a/core/l10n/es_MX.json
+++ b/core/l10n/es_MX.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Please select a file." : "Por favor selecciona un archivo.un ",
+ "Please select a file." : "Por favor selecciona un archivo.",
"File is too big" : "El archivo es demasiado grande.",
"The selected file is not an image." : "El archivo seleccionado no es una imagen.",
"The selected file cannot be read." : "El archivo seleccionado no se puede leer.",
@@ -18,8 +18,8 @@
"Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Por favor contacta a tu adminsitrador. ",
"Password reset" : "Restablecer contraseña",
- "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ",
- "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ",
"Reset your password" : "Restablecer tu contraseña",
"%s password reset" : "%s restablecer la contraseña",
"Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Por favor contacta a tu adminsitrador. ",
@@ -146,7 +146,7 @@
"Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}",
"Shared with you by {owner}" : "Compartido contigo por {owner}",
"Choose a password for the mail share" : "Elige una contraseña para el elemento compartido por correo",
- "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
"group" : "grupo",
"remote" : "remoto",
"email" : "correo electrónico",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 628a3cbe578..5f0a2a61e17 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "いくつかのファイルでチェックサムが適合しませんでした。この問題を解決するためは、<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">ドキュメント</a>の詳細を見てください。(<a href=\"{codeIntegrityDownloadEndpoint}\">不適合ファイルのリスト…</a> / <a href=\"{rescanEndpoint}\">再チェック…</a>)",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "PHP 関数 \"set_time_limit\" は使用できません。これにより実行スクリプトが途中で停止されて、インストールを破壊する可能性があります。この機能を有効にすることを強くお勧めします。",
"Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : ".htaccess ファイルが機能していないため、インターネットからあなたのデータディレクトリとファイルにアクセスできる可能性があります。Webサーバの設定を変更してデータディレクトリにアクセス出来ないようにするか、データディレクトリをドキュメントルートの外側に移動することを強く推奨します。",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP ヘッダ の \"Strict-Transport-Security\" が少なくとも \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、<a href=\"{docUrl}\" rel=\"noreferrer\">セキュリティTips</a>を参照して、HSTS を有効にすることをおすすめします。",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP経由でアクセスしています。<a href=\"{docUrl}\">security tips</a>を参照して、代わりにHTTPSを使用するようサーバーを設定することを強くおすすめします。 instead as described in our .",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 995618d17e2..402d7b470ae 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -103,6 +103,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "いくつかのファイルでチェックサムが適合しませんでした。この問題を解決するためは、<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">ドキュメント</a>の詳細を見てください。(<a href=\"{codeIntegrityDownloadEndpoint}\">不適合ファイルのリスト…</a> / <a href=\"{rescanEndpoint}\">再チェック…</a>)",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "PHP 関数 \"set_time_limit\" は使用できません。これにより実行スクリプトが途中で停止されて、インストールを破壊する可能性があります。この機能を有効にすることを強くお勧めします。",
"Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : ".htaccess ファイルが機能していないため、インターネットからあなたのデータディレクトリとファイルにアクセスできる可能性があります。Webサーバの設定を変更してデータディレクトリにアクセス出来ないようにするか、データディレクトリをドキュメントルートの外側に移動することを強く推奨します。",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP ヘッダ の \"Strict-Transport-Security\" が少なくとも \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、<a href=\"{docUrl}\" rel=\"noreferrer\">セキュリティTips</a>を参照して、HSTS を有効にすることをおすすめします。",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP経由でアクセスしています。<a href=\"{docUrl}\">security tips</a>を参照して、代わりにHTTPSを使用するようサーバーを設定することを強くおすすめします。 instead as described in our .",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
new file mode 100644
index 00000000000..1c13e2e0b87
--- /dev/null
+++ b/core/l10n/lt_LT.js
@@ -0,0 +1,345 @@
+OC.L10N.register(
+ "core",
+ {
+ "Please select a file." : "Prašome pasirinkti failą.",
+ "File is too big" : "Failas yra per didelis",
+ "The selected file is not an image." : "Pasirinktas failas nėra paveikslas.",
+ "The selected file cannot be read." : "Nepavyksta perskaityti pasirinkto failo.",
+ "Invalid file provided" : "Pateiktas neteisingas failas",
+ "No image or file provided" : "Nenurodytas paveikslas ar failas",
+ "Unknown filetype" : "Nežinomas failo tipas",
+ "Invalid image" : "Netinkamas paveikslėlis",
+ "An error occurred. Please contact your admin." : "Įvyko klaida. Susisiekite su savo administratoriumi.",
+ "No temporary profile picture available, try again" : "Nėra laikino profilio paveikslo, bandykite dar kartą",
+ "No crop data provided" : "Nenurodyti apkirpimo duomenys",
+ "No valid crop data provided" : "Pateikti neteisingi apkirpimo duomenys",
+ "Crop is not square" : "Apkirpimo plotas nėra kvadratas",
+ "State token does not match" : "Išorinės sistemos leidimai nesutampa su turimais.",
+ "Password reset is disabled" : "Slaptažodžio atkūrimas išjungtas",
+ "Couldn't reset password because the token is invalid" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos raktas yra neteisingas",
+ "Couldn't reset password because the token is expired" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos rakto galiojimas yra pasibaigęs",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško dėl to, kad šiam naudotojo vardui nėra nustatytas joks el. pašto adresas. Prašome susisiekti su savo administratoriumi.",
+ "Password reset" : "Slaptažodžio atstatymas",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite mygtuką slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite nuorodą slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.",
+ "Reset your password" : "Atkurkite savo slaptažodį",
+ "%s password reset" : "%s slaptažodžio atkūrimas",
+ "Couldn't send reset email. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome susisiekti su savo administratoriumi.",
+ "Couldn't send reset email. Please make sure your username is correct." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome įsitikinti, kad jūsų naudotojo vardas yra teisingas.",
+ "Preparing update" : "Ruošiamas atnaujinimas",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair warning: " : "Pataisymo įspėjimas: ",
+ "Repair error: " : "Pataisymo klaida: ",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.",
+ "[%d / %d]: Checking table %s" : "[%d / %d]: Tikrinama lentelė %s",
+ "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena",
+ "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena",
+ "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi",
+ "Updating database schema" : "Atnaujinama duomenų bazės struktūra",
+ "Updated database" : "Atnaujinta duomenų bazė",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)",
+ "Checked database schema update" : "Tikrinama duomenų bazės struktūra",
+ "Checking updates of apps" : "Tikrinami programėlių atnaujinimai",
+ "Checking for update of app \"%s\" in appstore" : "Ieškomas įskiepio %s atnaujinimas programinės įrangos saugykloje",
+ "Update app \"%s\" from appstore" : "Atnaujinkite \"%s\" įskiepį iš programinės įrangos saugyklos",
+ "Checked for update of app \"%s\" in appstore" : "Atlikta atnaujinimų paieška įskiepiui \"%s\" programinės įrangos saugykloje",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra %s gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)",
+ "Checked database schema update for apps" : "Duomenų bazės struktūra paruošta įskiepių atnaujinimui",
+ "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s",
+ "Set log level to debug" : "Nustatyti žurnalo išvesties lygį į \"derinimas\"",
+ "Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį",
+ "Starting code integrity check" : "Pradedama kodo vientisumo patikra",
+ "Finished code integrity check" : "Kodo vientisumo patikra užbaigta",
+ "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
+ "%s (incompatible)" : "%s (nesuderinama programinė įranga)",
+ "Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s",
+ "Already up to date" : "Naudojama naujausia versija",
+ "Search contacts …" : "Pažįstamų asmenų paieška...",
+ "No contacts found" : "Pažįstamų asmenų nerasta",
+ "Show all contacts …" : "Rodyti visus pažįstamus asmenis...",
+ "There was an error loading your contacts" : "Įvyko klaida bandant parodyti pažįstamų asmenų informaciją",
+ "Loading your contacts …" : "Kraunami informacija apie pažįstamus asmenis",
+ "Looking for {term} …" : "Ieškoma {term} ...",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Buvo problemų su kodo vientisumo patikrinimu. Daugiau informacijos…</a>",
+ "No action available" : "Jokie veiksmai negalimi",
+ "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija",
+ "Settings" : "Nustatymai",
+ "Connection to server lost" : "Ryšys su serveriu nutrūko",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"],
+ "Saving..." : "Įrašoma...",
+ "Dismiss" : "Atmesti",
+ "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį",
+ "Authentication required" : "Reikalingas tapatybės nustatymas",
+ "Password" : "Slaptažodis",
+ "Cancel" : "Atsisakyti",
+ "Confirm" : "Patvirtinti",
+ "Failed to authenticate, try again" : "Nepavyko nustatyti tapatybės, bandykite dar kartą",
+ "seconds ago" : "prieš keletą sekundžių",
+ "Logging in …" : "Prisijungiama …",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Slaptažodžio atkūrimo nuoroda buvo išsiųsta nurodytu elektroninio pašto adresu. Jei greitu laiku negausite laiško, patikrinkite \"šlamšto\" skyrių elektroniniame pašte. <br> Jei laiško vis tiek nerandate, susiekite su sistemos administratoriumi.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra užšifruoti. Nepraraskite slaptažodžio, nes slaptažodžio atkūrimas neįmanomas ir nebus įmanoma toliau naudotis duomenimis. <br /> Jei nežinote, ką daryti, susisiekite sus sistemos administratoriumi prieš tęsdami darbą su sistema. <br /> Ar norite tęsti?",
+ "I know what I'm doing" : "Aš žinau ką darau",
+ "Password can not be changed. Please contact your administrator." : "Slaptažodis negali būti pakeistas, susisiekite su savo administratoriumi.",
+ "No" : "Ne",
+ "Yes" : "Taip",
+ "No files in here" : "Duomenų nėra",
+ "Choose" : "Pasirinkti",
+ "Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}",
+ "OK" : "Gerai",
+ "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}",
+ "read-only" : "tik skaitymui",
+ "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"],
+ "One file conflict" : "Nesuderinama rinkmena",
+ "New Files" : "Įkeliamos rinkmenos",
+ "Already existing files" : "Egzistuojančios rinkmenos saugykloje",
+ "Which files do you want to keep?" : "Kurias rinkmenas norite pasilikti?",
+ "If you select both versions, the copied file will have a number added to its name." : "Jei pasiliekate abi rinkmenų versijas, nukopijuota rinkmena turės papildomą numerį pavadinime.",
+ "Continue" : "Tęsti",
+ "(all selected)" : "(visi pažymėti)",
+ "({count} selected)" : "({count} pažymėtų)",
+ "Error loading file exists template" : "Klaida įkeliant saugykloje esančių rinkmenų ruošinį",
+ "Pending" : "Vykdoma",
+ "Very weak password" : "Labai silpnas slaptažodis",
+ "Weak password" : "Silpnas slaptažodis",
+ "So-so password" : "Neblogas slaptažodis",
+ "Good password" : "Geras slaptažodis",
+ "Strong password" : "Stiprus slaptažodis",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas duomenų sinchronizacijai, panašu, kad \"WebDAV\" sistemos prieiga yra neveikianti. ",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas atidaryti nuorodą \"{url}\". Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "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. We suggest to enable Internet connection for this server if you want to have all features." : "Tinklo kompiuteris neturi veikiančio interneto ryšio: negalima pasiekti atitinkamų prieigos taškų. Tai reiškia, kad tam tikras funkcionalumas, kaip tinklo laikmenos prijungimas, pranešimai apie atnaujinimus ir trečiųjų šalių programinės įrangos diegimas neveiks. Taip pat gali neveikti nuotolinė duomenų prieiga ir priminimų siuntimas elektroniniu paštu. Jei norite turėti šį funkcionalumą, mes siūlome prijungti interneto ryšį šiam tinklo kompiuteriui.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nėra spartinančiosios atminties konfigūracijos. Siekiant pagerinti sistemos efektyvumą reikia paruošti spartinančiosios atminties konfigūraciją, jei tokia konfigūracija yra įmanoma. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>. ",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP sistema negali skaityti \"/dev/urandom\" direktorijos, skaitymo leidimas yra rekomenduotinas saugumo sumetimais. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Naudojama {version} PHP versija. Rekomenduojame atnaujinti PHP versiją ir turėti <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\"> geresnį sistemos efektyvumą ir saugumą užtikrinančius atnaujinimus iš PHP Group </a>",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Tarpinio serverio antraščių konfigūracija neteisinga, nebent jūs bandote pasiekti NextCloud per patikimą tarpinį serverį. Jei jūs nebandote pasiekti NextCloud per patikimą tarpinį serverį, tai yra tikėtina, kad turite saugumo problemą, kuri leidžia įsilaužėliams šnipinėti prisijungiančius IP adresus. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Sukonfigūruota \"Memcached\" skirstoma spartinančiosios atminties sistema, tačiau neteisingas PHP modulis \"memcache\" yra įdiegtas. \\OC\\Memcache\\Memcached palaiko \"memcached\" sistemą, o ne \"memcache\". Dėl detalesnės informacijos žiūrėkite <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki pasakojimą apie abu modulius</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Kai kurie duomenys neįveikė integralumo patikrinimo. Detalesnę informaciją, kaip išspręsti šią problemą galima rasti mūsų <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Sugadintų rinkmenų sąrašas...</a> / <a href=\"{rescanEndpoint}\">Patikrinti iš naujo...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache yra neteisingai sukonfigūruotas. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Siekiant geresnio sistemos našumo rekomenduojame</a> įrašyti šiuos nustatymus <code>php.ini</code> byloje:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "PHP sistemos funkcija \"set_time_limit\" yra nepasiekiama. To pasekmėje, tikėtina, kad įdiegta sistema bus sugadinta. Primygtinai reikalaujame įjungti šią funkciją.",
+ "Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP antraštė \"{header}\" nesukonfigūruota atitikti antraštę \"{expected}\". Šitai yra saugumo ar privatumo problema ir mes rekomenduojame pataisyti nustatymą.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP antraštė turi būti nustatyta į bent \"{seconds}\" sekundes (-ių). Tam, kad saugumas būtų sustiprintas, rekomenduojame nustatyti HSTS palaikymą taip, kaip aprašyta <a href=\"{docUrl}\" rel=\"noreferrer\">saugumo patarimuose</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jūs bandote prieiti šį interneto puslapį per HTTP protokolą. Mes siūlome jūsų tinklo kompiuteryje palaikyti tik HTTPS protokolą, kaip yra apibūdinta mūsų <a href=\"{docUrl}\">saugumo patarimuose</a>.",
+ "Shared" : "Dalinamasi",
+ "Shared with {recipients}" : "Dalinamasi su {recipients}",
+ "Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką",
+ "The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo",
+ "Set expiration date" : "Nustatykite veikimo pabaigos datą",
+ "Expiration" : "Veikimo pabaiga",
+ "Expiration date" : "Veikimo pabaigos data",
+ "Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti",
+ "Choose a password for the public link or press the \"Enter\" key" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti arba paspauskite \"Enter\" klavišą",
+ "Copied!" : "Nukopijuota!",
+ "Copy" : "Kopijuoti",
+ "Not supported!" : "Nepalaikoma!",
+ "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.",
+ "Press Ctrl-C to copy." : "Norėdami nukopijuoti, paspauskite Ctrl-C.",
+ "Resharing is not allowed" : "Dalijinasis išnaujo negalimas",
+ "Share to {name}" : "Parodyti asmeniui vardu {name}",
+ "Share link" : "Dalintis nuoroda",
+ "Link" : "Nuoroda",
+ "Password protect" : "Apsaugotas slaptažodžiu",
+ "Allow editing" : "Leisti redaguoti",
+ "Email link to person" : "Nusiųsti nuorodą paštu",
+ "Send" : "Siųsti",
+ "Allow upload and editing" : "Leisti įkėlimą ir redagavimą",
+ "Read only" : "Leidžiama tik skaityti",
+ "File drop (upload only)" : "Tempti rinkmeną čia (veikia tik įkeliant)",
+ "Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe",
+ "Shared with you by {owner}" : "{owner} pasidalino su Jumis ",
+ "Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą",
+ "group" : "grupė",
+ "remote" : "nuotolinis",
+ "email" : "elektroninis paštas",
+ "shared by {sharer}" : "pasidalino {sharer}",
+ "Unshare" : "Nebesidalinti",
+ "Can reshare" : "Galima dalintis su kitais",
+ "Can edit" : "Galima redaguoti",
+ "Can create" : "Galima kurti nauja",
+ "Can change" : "Galima keisti",
+ "Can delete" : "Galima trinti",
+ "Access control" : "Prieigos valdymas",
+ "Could not unshare" : "Negalima nustoti dalintis",
+ "Error while sharing" : "Klaida, dalijimosi metu",
+ "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.",
+ "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}",
+ "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}",
+ "An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą",
+ "{sharee} (group)" : "{sharee} (grupė)",
+ "{sharee} (remote)" : "{sharee} (nuotolinis)",
+ "{sharee} (email)" : "{sharee} (elektroninis paštas)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Share" : "Dalintis",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.",
+ "Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.",
+ "Name or email address..." : "Vardas arba elektroninio pašto adresas...",
+ "Name or federated cloud ID..." : "Vardas arba NextCloud tinklo kompiuterio ID...",
+ "Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...",
+ "Name..." : "Vardas...",
+ "Error" : "Klaida",
+ "Error removing share" : "Klaida bandant sustabdyti dalinimąsi",
+ "Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}",
+ "restricted" : "apribota",
+ "invisible" : "nematoma",
+ "({scope})" : "({scope})",
+ "Delete" : "Ištrinti",
+ "Rename" : "Pervadinti",
+ "Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis",
+ "No tags found" : "Nerasta jokių žymių",
+ "unknown text" : "nežinomas tekstas",
+ "Hello world!" : "Sveikas pasauli!",
+ "sunny" : "saulėta",
+ "Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}",
+ "Hello {name}" : "Sveiki, {name},",
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Paieškos rezultatai:<script>alert(1)</script></strong>",
+ "new" : "Naujas",
+ "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.",
+ "Update to {version}" : "Atnaujinti į versiją {version}",
+ "An error occurred." : "Įvyko klaida.",
+ "Please reload the page." : "Prašome iš naujo įkelti puslapį.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite <a href=\"{url}\">forumo puslapyje</a>.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">NextCloud bendruomenei</a>.",
+ "Continue to Nextcloud" : "Eiti į NextCloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."],
+ "Searching other places" : "Ieškoma kitose vietose",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"],
+ "Personal" : "Asmeniniai",
+ "Users" : "Naudotojai",
+ "Apps" : "Programėlės",
+ "Admin" : "Administravimas",
+ "Help" : "Pagalba",
+ "Access forbidden" : "Prieiga uždrausta",
+ "File not found" : "Failas nerastas",
+ "The specified document has not been found on the server." : "Ieškotas dokumentas nerastas sistemoje.",
+ "You can click here to return to %s." : "Paspauskite čia norėdami grįžti į %s.",
+ "Internal Server Error" : "Vidinė serverio klaida",
+ "The server encountered an internal error and was unable to complete your request." : "Sistemoje įvyko klaida bandant įvykdyti jūsų užklausą.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Susisiekite su sistemos administratoriumi, jei klaida pasikartos. Prašome nupasakoti, kaip įvyko klaida žemiau esančioje ataskaitoje.",
+ "More details can be found in the server log." : "Detalesnė informacija yra sistemos žurnale.",
+ "Technical details" : "Techniniai duomenys",
+ "Remote Address: %s" : "Nuotolinis adresas: %s",
+ "Request ID: %s" : "Užklausos ID: %s",
+ "Type: %s" : "Tipas: %s",
+ "Code: %s" : "Kodas: %s",
+ "Message: %s" : "Žinutė: %s",
+ "File: %s" : "Failas: %s",
+ "Line: %s" : "Eilutė: %s",
+ "Trace" : "Sekti",
+ "Security warning" : "Saugumo įspėjimas",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome žiūrėti <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentaciją</a>.",
+ "Create an <strong>admin account</strong>" : "Sukurkite <strong>administratoriaus paskyrą</strong>",
+ "Username" : "Naudotojo vardas",
+ "Storage & database" : "Saugykla ir duomenų bazė",
+ "Data folder" : "Duomenų aplankas",
+ "Configure the database" : "Konfigūruokite duomenų bazę",
+ "Only %s is available." : "Yra prieinama tik %s.",
+ "Install and activate additional PHP modules to choose other database types." : "Įdiekite ir aktyvuokite papildomus PHP modulius, kad pasirinktumėte kitus duomenų bazės tipus.",
+ "For more details check out the documentation." : "Išsamesnei informacijai, žiūrėkite dokumentaciją.",
+ "Database user" : "Duomenų bazės naudotojas",
+ "Database password" : "Duomenų bazės slaptažodis",
+ "Database name" : "Duomenų bazės pavadinimas",
+ "Database tablespace" : "Duomenų bazės loginis saugojimas",
+ "Database host" : "Duomenų bazės serveris",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Prašome nurodyti domeno vardą ir protokolo numerį, pavyzdžiui: \"localhost:5432\".",
+ "Performance warning" : "Sistemos našumo problemos perspėjimas",
+ "SQLite will be used as database." : "SQLite bus naudojama kaip duomenų bazė.",
+ "For larger installations we recommend to choose a different database backend." : "Didesnei sistemai įdiegti rekomenduojame pasirinkti kitą duomenų bazę.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite naudojimas yra nerekomenduotinas, kai duomenų sinchronizacijai naudojamas darbalaukio klientas.",
+ "Finish setup" : "Užbaigti sąranką",
+ "Finishing …" : "Užbaigiama …",
+ "Need help?" : "Reikia pagalbos?",
+ "See the documentation" : "Žiūrėkite dokumentaciją",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Sistemos veikimui reikalingas JavaScript palaikymas. Prašome {linkstart}įjungti JavaScript palaikymą{linkend} ir atnaujinti puslapį.",
+ "More apps" : "Daugiau programinės įrangos",
+ "Search" : "Ieškoti",
+ "This action requires you to confirm your password:" : "Šis veiksmas reikalauja, kad patvirtintumėte savo slaptažodį:",
+ "Confirm your password" : "Patvirtinkite savo slaptažodį",
+ "Server side authentication failed!" : "Autentikacija serveryje nepavyko!",
+ "Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.",
+ "An internal error occurred." : "Įvyko vidinė klaida.",
+ "Please try again or contact your administrator." : "Pabandykite dar kartą arba susisiekite su sistemos administratoriumi.",
+ "Username or email" : "Naudotojo vardas ar el. paštas",
+ "Wrong password. Reset it?" : "Neteisingas slaptažodis. Atstatyti jį?",
+ "Wrong password." : "Neteisingas slaptažodis.",
+ "Log in" : "Prisijungti",
+ "Stay logged in" : "Likti prisijungus",
+ "Alternative Logins" : "Alternatyvūs prisijungimai",
+ "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą.",
+ "App token" : "Išorinės sistemos įskiepio kodas",
+ "Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą",
+ "Redirecting …" : "Nukreipiama...",
+ "New password" : "Naujas slaptažodis",
+ "New Password" : "Naujas slaptažodis",
+ "Reset password" : "Atstatyti slaptažodį",
+ "Two-factor authentication" : "Dviejų žingsnių prisijungimas",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Jūsų paskyros saugumas yra sustiprintas. Prašome prisijungti naudojant antrą prisijungimo variantą.",
+ "Cancel log in" : "Atšaukti prisijungimą",
+ "Use backup code" : "Naudoti atsarginį kodą",
+ "Error while validating your second factor" : "Klaida antrame prisijungimo žingsnyje",
+ "You are accessing the server from an untrusted domain." : "Jūs bandote prisijungti prie sistemos iš nepatikimo domeno.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Susisiekite su sistemos administratoriumi. Jei jūs esate administratorius, pridėkite \"trusted_domains\" nustatymą config/config.php byloje. Pavyzdinė konfigūracija pateikta config/config.sample.php byloje.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Priklausomai nuo sistemos konfigūracijos, administratorius gali naudoti mygtuką apačioje tam, kad pridėtų patikimą domeno vardą.",
+ "Add \"%s\" as trusted domain" : "Pridėti \"%s\" į patikimų domenų sąrašą",
+ "App update required" : "Reikalingas įskiepio atnaujinimas",
+ "%s will be updated to version %s" : "%s bus atnaujintas iki %s versijos",
+ "These apps will be updated:" : "Šie įskiepiai bus atnaujinti:",
+ "These incompatible apps will be disabled:" : "Šie nesuderinami įskiepiai bus išjungti:",
+ "The theme %s has been disabled." : "Spalvų tema %s buvo panaikinta.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Prie pradedant, užtikrinkite, kad duomenų bazė, konfigūracijos aplankas ir duomenų aplankas turi atsarginę kopiją.",
+ "Start update" : "Pradėti atnaujinimą",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Norėdami sutaupyti laiko, galite paleisti šią komandą diegimo aplanke:",
+ "Detailed logs" : "Tikslus žurnalas",
+ "Update needed" : "Reikalingas atnaujinimas",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandinę eilutę atnaujinimui, nes sistema turi daugiau nei 50 vartotojų.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Detalesnės informacijos ieškokite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacijoje</a>",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.",
+ "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s egzempliorius šiuo metu yra techninės priežiūros veiksenoje, kas savo ruožtu gali šiek tiek užtrukti.",
+ "This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.",
+ "Thank you for your patience." : "Dėkojame už jūsų kantrumą.",
+ "Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo. <br />Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi. <br />Ar norite tęsti?",
+ "Ok" : "Gerai",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.",
+ "Error while unsharing" : "Klaida, kai atšaukiamas dalijimasis",
+ "can reshare" : "gali pakartotinai dalintis",
+ "can edit" : "gali redaguoti",
+ "can create" : "gali kurti",
+ "can change" : "gali keisti",
+ "can delete" : "gali trinti",
+ "access control" : "prieigos valdymas",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "naudotojo vardasPasidalinti su asmenimis ekvivalenčiose sistemose, naudojantis Federated Cloud ID username@example.com/nextcloud",
+ "Share with users or by mail..." : "Pasidalinti su vartotojais arba per elektroninį paštą...",
+ "Share with users or remote users..." : "Pasidalinti su vartotojais arba vartotojais kitose sistemose...",
+ "Share with users, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...",
+ "Share with users or groups..." : "Pasidalinti su vartotojais ar jų grupe...",
+ "Share with users, groups or by mail..." : "Pasidalinti su vartotojais, grupėmis arba per elektroninį paštą...",
+ "Share with users, groups or remote users..." : "Pasidalinti su vartotojais, grupėmis ar kitų sistemų vartotojais...",
+ "Share with users, groups, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...",
+ "Share with users..." : "Pasidalinti su vartotojais...",
+ "The object type is not specified." : "Objekto tipas nenurodytas.",
+ "Enter new" : "Įveskite naują",
+ "Add" : "Pridėti",
+ "Edit tags" : "Redaguoti žymes",
+ "Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}",
+ "No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.",
+ "The update was successful. Redirecting you to Nextcloud now." : "Sėkmingai atnaujinta. Nukreipiama į NextCloud.",
+ "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n",
+ "The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
+ "Cheers!" : "Sveikinimai!",
+ "Log out" : "Atsijungti",
+ "Use the following link to reset your password: {link}" : "Naudokite šią nuorodą, kad atstatytumėte savo slaptažodį: {link}",
+ "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Labas, <br><br>tik norime pranešti, kad %s pasidalino <strong>%s</strong> su jumis. <br><a href=\"%s\">Peržiūrėti</a><br><br>",
+ "This Nextcloud instance is currently in single user mode." : "Šis Nextcloud egzempliorius šiuo metu yra vieno naudotojo veiksenoje.",
+ "This means only administrators can use the instance." : "Tai reiškia, kad tik administratorius gali naudotis sistema.",
+ "Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė."
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
new file mode 100644
index 00000000000..d01ba4b2e22
--- /dev/null
+++ b/core/l10n/lt_LT.json
@@ -0,0 +1,343 @@
+{ "translations": {
+ "Please select a file." : "Prašome pasirinkti failą.",
+ "File is too big" : "Failas yra per didelis",
+ "The selected file is not an image." : "Pasirinktas failas nėra paveikslas.",
+ "The selected file cannot be read." : "Nepavyksta perskaityti pasirinkto failo.",
+ "Invalid file provided" : "Pateiktas neteisingas failas",
+ "No image or file provided" : "Nenurodytas paveikslas ar failas",
+ "Unknown filetype" : "Nežinomas failo tipas",
+ "Invalid image" : "Netinkamas paveikslėlis",
+ "An error occurred. Please contact your admin." : "Įvyko klaida. Susisiekite su savo administratoriumi.",
+ "No temporary profile picture available, try again" : "Nėra laikino profilio paveikslo, bandykite dar kartą",
+ "No crop data provided" : "Nenurodyti apkirpimo duomenys",
+ "No valid crop data provided" : "Pateikti neteisingi apkirpimo duomenys",
+ "Crop is not square" : "Apkirpimo plotas nėra kvadratas",
+ "State token does not match" : "Išorinės sistemos leidimai nesutampa su turimais.",
+ "Password reset is disabled" : "Slaptažodžio atkūrimas išjungtas",
+ "Couldn't reset password because the token is invalid" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos raktas yra neteisingas",
+ "Couldn't reset password because the token is expired" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos rakto galiojimas yra pasibaigęs",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško dėl to, kad šiam naudotojo vardui nėra nustatytas joks el. pašto adresas. Prašome susisiekti su savo administratoriumi.",
+ "Password reset" : "Slaptažodžio atstatymas",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite mygtuką slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite nuorodą slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.",
+ "Reset your password" : "Atkurkite savo slaptažodį",
+ "%s password reset" : "%s slaptažodžio atkūrimas",
+ "Couldn't send reset email. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome susisiekti su savo administratoriumi.",
+ "Couldn't send reset email. Please make sure your username is correct." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome įsitikinti, kad jūsų naudotojo vardas yra teisingas.",
+ "Preparing update" : "Ruošiamas atnaujinimas",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair warning: " : "Pataisymo įspėjimas: ",
+ "Repair error: " : "Pataisymo klaida: ",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.",
+ "[%d / %d]: Checking table %s" : "[%d / %d]: Tikrinama lentelė %s",
+ "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena",
+ "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena",
+ "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi",
+ "Updating database schema" : "Atnaujinama duomenų bazės struktūra",
+ "Updated database" : "Atnaujinta duomenų bazė",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)",
+ "Checked database schema update" : "Tikrinama duomenų bazės struktūra",
+ "Checking updates of apps" : "Tikrinami programėlių atnaujinimai",
+ "Checking for update of app \"%s\" in appstore" : "Ieškomas įskiepio %s atnaujinimas programinės įrangos saugykloje",
+ "Update app \"%s\" from appstore" : "Atnaujinkite \"%s\" įskiepį iš programinės įrangos saugyklos",
+ "Checked for update of app \"%s\" in appstore" : "Atlikta atnaujinimų paieška įskiepiui \"%s\" programinės įrangos saugykloje",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra %s gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)",
+ "Checked database schema update for apps" : "Duomenų bazės struktūra paruošta įskiepių atnaujinimui",
+ "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s",
+ "Set log level to debug" : "Nustatyti žurnalo išvesties lygį į \"derinimas\"",
+ "Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį",
+ "Starting code integrity check" : "Pradedama kodo vientisumo patikra",
+ "Finished code integrity check" : "Kodo vientisumo patikra užbaigta",
+ "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
+ "%s (incompatible)" : "%s (nesuderinama programinė įranga)",
+ "Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s",
+ "Already up to date" : "Naudojama naujausia versija",
+ "Search contacts …" : "Pažįstamų asmenų paieška...",
+ "No contacts found" : "Pažįstamų asmenų nerasta",
+ "Show all contacts …" : "Rodyti visus pažįstamus asmenis...",
+ "There was an error loading your contacts" : "Įvyko klaida bandant parodyti pažįstamų asmenų informaciją",
+ "Loading your contacts …" : "Kraunami informacija apie pažįstamus asmenis",
+ "Looking for {term} …" : "Ieškoma {term} ...",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Buvo problemų su kodo vientisumo patikrinimu. Daugiau informacijos…</a>",
+ "No action available" : "Jokie veiksmai negalimi",
+ "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija",
+ "Settings" : "Nustatymai",
+ "Connection to server lost" : "Ryšys su serveriu nutrūko",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"],
+ "Saving..." : "Įrašoma...",
+ "Dismiss" : "Atmesti",
+ "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį",
+ "Authentication required" : "Reikalingas tapatybės nustatymas",
+ "Password" : "Slaptažodis",
+ "Cancel" : "Atsisakyti",
+ "Confirm" : "Patvirtinti",
+ "Failed to authenticate, try again" : "Nepavyko nustatyti tapatybės, bandykite dar kartą",
+ "seconds ago" : "prieš keletą sekundžių",
+ "Logging in …" : "Prisijungiama …",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Slaptažodžio atkūrimo nuoroda buvo išsiųsta nurodytu elektroninio pašto adresu. Jei greitu laiku negausite laiško, patikrinkite \"šlamšto\" skyrių elektroniniame pašte. <br> Jei laiško vis tiek nerandate, susiekite su sistemos administratoriumi.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra užšifruoti. Nepraraskite slaptažodžio, nes slaptažodžio atkūrimas neįmanomas ir nebus įmanoma toliau naudotis duomenimis. <br /> Jei nežinote, ką daryti, susisiekite sus sistemos administratoriumi prieš tęsdami darbą su sistema. <br /> Ar norite tęsti?",
+ "I know what I'm doing" : "Aš žinau ką darau",
+ "Password can not be changed. Please contact your administrator." : "Slaptažodis negali būti pakeistas, susisiekite su savo administratoriumi.",
+ "No" : "Ne",
+ "Yes" : "Taip",
+ "No files in here" : "Duomenų nėra",
+ "Choose" : "Pasirinkti",
+ "Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}",
+ "OK" : "Gerai",
+ "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}",
+ "read-only" : "tik skaitymui",
+ "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"],
+ "One file conflict" : "Nesuderinama rinkmena",
+ "New Files" : "Įkeliamos rinkmenos",
+ "Already existing files" : "Egzistuojančios rinkmenos saugykloje",
+ "Which files do you want to keep?" : "Kurias rinkmenas norite pasilikti?",
+ "If you select both versions, the copied file will have a number added to its name." : "Jei pasiliekate abi rinkmenų versijas, nukopijuota rinkmena turės papildomą numerį pavadinime.",
+ "Continue" : "Tęsti",
+ "(all selected)" : "(visi pažymėti)",
+ "({count} selected)" : "({count} pažymėtų)",
+ "Error loading file exists template" : "Klaida įkeliant saugykloje esančių rinkmenų ruošinį",
+ "Pending" : "Vykdoma",
+ "Very weak password" : "Labai silpnas slaptažodis",
+ "Weak password" : "Silpnas slaptažodis",
+ "So-so password" : "Neblogas slaptažodis",
+ "Good password" : "Geras slaptažodis",
+ "Strong password" : "Stiprus slaptažodis",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas duomenų sinchronizacijai, panašu, kad \"WebDAV\" sistemos prieiga yra neveikianti. ",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas atidaryti nuorodą \"{url}\". Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "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. We suggest to enable Internet connection for this server if you want to have all features." : "Tinklo kompiuteris neturi veikiančio interneto ryšio: negalima pasiekti atitinkamų prieigos taškų. Tai reiškia, kad tam tikras funkcionalumas, kaip tinklo laikmenos prijungimas, pranešimai apie atnaujinimus ir trečiųjų šalių programinės įrangos diegimas neveiks. Taip pat gali neveikti nuotolinė duomenų prieiga ir priminimų siuntimas elektroniniu paštu. Jei norite turėti šį funkcionalumą, mes siūlome prijungti interneto ryšį šiam tinklo kompiuteriui.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nėra spartinančiosios atminties konfigūracijos. Siekiant pagerinti sistemos efektyvumą reikia paruošti spartinančiosios atminties konfigūraciją, jei tokia konfigūracija yra įmanoma. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>. ",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP sistema negali skaityti \"/dev/urandom\" direktorijos, skaitymo leidimas yra rekomenduotinas saugumo sumetimais. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Naudojama {version} PHP versija. Rekomenduojame atnaujinti PHP versiją ir turėti <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\"> geresnį sistemos efektyvumą ir saugumą užtikrinančius atnaujinimus iš PHP Group </a>",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Tarpinio serverio antraščių konfigūracija neteisinga, nebent jūs bandote pasiekti NextCloud per patikimą tarpinį serverį. Jei jūs nebandote pasiekti NextCloud per patikimą tarpinį serverį, tai yra tikėtina, kad turite saugumo problemą, kuri leidžia įsilaužėliams šnipinėti prisijungiančius IP adresus. Detalesnę informaciją galima rasti <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>.",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Sukonfigūruota \"Memcached\" skirstoma spartinančiosios atminties sistema, tačiau neteisingas PHP modulis \"memcache\" yra įdiegtas. \\OC\\Memcache\\Memcached palaiko \"memcached\" sistemą, o ne \"memcache\". Dėl detalesnės informacijos žiūrėkite <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki pasakojimą apie abu modulius</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Kai kurie duomenys neįveikė integralumo patikrinimo. Detalesnę informaciją, kaip išspręsti šią problemą galima rasti mūsų <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacijoje</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Sugadintų rinkmenų sąrašas...</a> / <a href=\"{rescanEndpoint}\">Patikrinti iš naujo...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache yra neteisingai sukonfigūruotas. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Siekiant geresnio sistemos našumo rekomenduojame</a> įrašyti šiuos nustatymus <code>php.ini</code> byloje:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "PHP sistemos funkcija \"set_time_limit\" yra nepasiekiama. To pasekmėje, tikėtina, kad įdiegta sistema bus sugadinta. Primygtinai reikalaujame įjungti šią funkciją.",
+ "Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP antraštė \"{header}\" nesukonfigūruota atitikti antraštę \"{expected}\". Šitai yra saugumo ar privatumo problema ir mes rekomenduojame pataisyti nustatymą.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP antraštė turi būti nustatyta į bent \"{seconds}\" sekundes (-ių). Tam, kad saugumas būtų sustiprintas, rekomenduojame nustatyti HSTS palaikymą taip, kaip aprašyta <a href=\"{docUrl}\" rel=\"noreferrer\">saugumo patarimuose</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jūs bandote prieiti šį interneto puslapį per HTTP protokolą. Mes siūlome jūsų tinklo kompiuteryje palaikyti tik HTTPS protokolą, kaip yra apibūdinta mūsų <a href=\"{docUrl}\">saugumo patarimuose</a>.",
+ "Shared" : "Dalinamasi",
+ "Shared with {recipients}" : "Dalinamasi su {recipients}",
+ "Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką",
+ "The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo",
+ "Set expiration date" : "Nustatykite veikimo pabaigos datą",
+ "Expiration" : "Veikimo pabaiga",
+ "Expiration date" : "Veikimo pabaigos data",
+ "Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti",
+ "Choose a password for the public link or press the \"Enter\" key" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti arba paspauskite \"Enter\" klavišą",
+ "Copied!" : "Nukopijuota!",
+ "Copy" : "Kopijuoti",
+ "Not supported!" : "Nepalaikoma!",
+ "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.",
+ "Press Ctrl-C to copy." : "Norėdami nukopijuoti, paspauskite Ctrl-C.",
+ "Resharing is not allowed" : "Dalijinasis išnaujo negalimas",
+ "Share to {name}" : "Parodyti asmeniui vardu {name}",
+ "Share link" : "Dalintis nuoroda",
+ "Link" : "Nuoroda",
+ "Password protect" : "Apsaugotas slaptažodžiu",
+ "Allow editing" : "Leisti redaguoti",
+ "Email link to person" : "Nusiųsti nuorodą paštu",
+ "Send" : "Siųsti",
+ "Allow upload and editing" : "Leisti įkėlimą ir redagavimą",
+ "Read only" : "Leidžiama tik skaityti",
+ "File drop (upload only)" : "Tempti rinkmeną čia (veikia tik įkeliant)",
+ "Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe",
+ "Shared with you by {owner}" : "{owner} pasidalino su Jumis ",
+ "Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą",
+ "group" : "grupė",
+ "remote" : "nuotolinis",
+ "email" : "elektroninis paštas",
+ "shared by {sharer}" : "pasidalino {sharer}",
+ "Unshare" : "Nebesidalinti",
+ "Can reshare" : "Galima dalintis su kitais",
+ "Can edit" : "Galima redaguoti",
+ "Can create" : "Galima kurti nauja",
+ "Can change" : "Galima keisti",
+ "Can delete" : "Galima trinti",
+ "Access control" : "Prieigos valdymas",
+ "Could not unshare" : "Negalima nustoti dalintis",
+ "Error while sharing" : "Klaida, dalijimosi metu",
+ "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.",
+ "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}",
+ "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}",
+ "An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą",
+ "{sharee} (group)" : "{sharee} (grupė)",
+ "{sharee} (remote)" : "{sharee} (nuotolinis)",
+ "{sharee} (email)" : "{sharee} (elektroninis paštas)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Share" : "Dalintis",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.",
+ "Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.",
+ "Name or email address..." : "Vardas arba elektroninio pašto adresas...",
+ "Name or federated cloud ID..." : "Vardas arba NextCloud tinklo kompiuterio ID...",
+ "Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...",
+ "Name..." : "Vardas...",
+ "Error" : "Klaida",
+ "Error removing share" : "Klaida bandant sustabdyti dalinimąsi",
+ "Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}",
+ "restricted" : "apribota",
+ "invisible" : "nematoma",
+ "({scope})" : "({scope})",
+ "Delete" : "Ištrinti",
+ "Rename" : "Pervadinti",
+ "Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis",
+ "No tags found" : "Nerasta jokių žymių",
+ "unknown text" : "nežinomas tekstas",
+ "Hello world!" : "Sveikas pasauli!",
+ "sunny" : "saulėta",
+ "Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}",
+ "Hello {name}" : "Sveiki, {name},",
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Paieškos rezultatai:<script>alert(1)</script></strong>",
+ "new" : "Naujas",
+ "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.",
+ "Update to {version}" : "Atnaujinti į versiją {version}",
+ "An error occurred." : "Įvyko klaida.",
+ "Please reload the page." : "Prašome iš naujo įkelti puslapį.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite <a href=\"{url}\">forumo puslapyje</a>.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">NextCloud bendruomenei</a>.",
+ "Continue to Nextcloud" : "Eiti į NextCloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."],
+ "Searching other places" : "Ieškoma kitose vietose",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"],
+ "Personal" : "Asmeniniai",
+ "Users" : "Naudotojai",
+ "Apps" : "Programėlės",
+ "Admin" : "Administravimas",
+ "Help" : "Pagalba",
+ "Access forbidden" : "Prieiga uždrausta",
+ "File not found" : "Failas nerastas",
+ "The specified document has not been found on the server." : "Ieškotas dokumentas nerastas sistemoje.",
+ "You can click here to return to %s." : "Paspauskite čia norėdami grįžti į %s.",
+ "Internal Server Error" : "Vidinė serverio klaida",
+ "The server encountered an internal error and was unable to complete your request." : "Sistemoje įvyko klaida bandant įvykdyti jūsų užklausą.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Susisiekite su sistemos administratoriumi, jei klaida pasikartos. Prašome nupasakoti, kaip įvyko klaida žemiau esančioje ataskaitoje.",
+ "More details can be found in the server log." : "Detalesnė informacija yra sistemos žurnale.",
+ "Technical details" : "Techniniai duomenys",
+ "Remote Address: %s" : "Nuotolinis adresas: %s",
+ "Request ID: %s" : "Užklausos ID: %s",
+ "Type: %s" : "Tipas: %s",
+ "Code: %s" : "Kodas: %s",
+ "Message: %s" : "Žinutė: %s",
+ "File: %s" : "Failas: %s",
+ "Line: %s" : "Eilutė: %s",
+ "Trace" : "Sekti",
+ "Security warning" : "Saugumo įspėjimas",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome žiūrėti <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentaciją</a>.",
+ "Create an <strong>admin account</strong>" : "Sukurkite <strong>administratoriaus paskyrą</strong>",
+ "Username" : "Naudotojo vardas",
+ "Storage & database" : "Saugykla ir duomenų bazė",
+ "Data folder" : "Duomenų aplankas",
+ "Configure the database" : "Konfigūruokite duomenų bazę",
+ "Only %s is available." : "Yra prieinama tik %s.",
+ "Install and activate additional PHP modules to choose other database types." : "Įdiekite ir aktyvuokite papildomus PHP modulius, kad pasirinktumėte kitus duomenų bazės tipus.",
+ "For more details check out the documentation." : "Išsamesnei informacijai, žiūrėkite dokumentaciją.",
+ "Database user" : "Duomenų bazės naudotojas",
+ "Database password" : "Duomenų bazės slaptažodis",
+ "Database name" : "Duomenų bazės pavadinimas",
+ "Database tablespace" : "Duomenų bazės loginis saugojimas",
+ "Database host" : "Duomenų bazės serveris",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Prašome nurodyti domeno vardą ir protokolo numerį, pavyzdžiui: \"localhost:5432\".",
+ "Performance warning" : "Sistemos našumo problemos perspėjimas",
+ "SQLite will be used as database." : "SQLite bus naudojama kaip duomenų bazė.",
+ "For larger installations we recommend to choose a different database backend." : "Didesnei sistemai įdiegti rekomenduojame pasirinkti kitą duomenų bazę.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite naudojimas yra nerekomenduotinas, kai duomenų sinchronizacijai naudojamas darbalaukio klientas.",
+ "Finish setup" : "Užbaigti sąranką",
+ "Finishing …" : "Užbaigiama …",
+ "Need help?" : "Reikia pagalbos?",
+ "See the documentation" : "Žiūrėkite dokumentaciją",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Sistemos veikimui reikalingas JavaScript palaikymas. Prašome {linkstart}įjungti JavaScript palaikymą{linkend} ir atnaujinti puslapį.",
+ "More apps" : "Daugiau programinės įrangos",
+ "Search" : "Ieškoti",
+ "This action requires you to confirm your password:" : "Šis veiksmas reikalauja, kad patvirtintumėte savo slaptažodį:",
+ "Confirm your password" : "Patvirtinkite savo slaptažodį",
+ "Server side authentication failed!" : "Autentikacija serveryje nepavyko!",
+ "Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.",
+ "An internal error occurred." : "Įvyko vidinė klaida.",
+ "Please try again or contact your administrator." : "Pabandykite dar kartą arba susisiekite su sistemos administratoriumi.",
+ "Username or email" : "Naudotojo vardas ar el. paštas",
+ "Wrong password. Reset it?" : "Neteisingas slaptažodis. Atstatyti jį?",
+ "Wrong password." : "Neteisingas slaptažodis.",
+ "Log in" : "Prisijungti",
+ "Stay logged in" : "Likti prisijungus",
+ "Alternative Logins" : "Alternatyvūs prisijungimai",
+ "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą.",
+ "App token" : "Išorinės sistemos įskiepio kodas",
+ "Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą",
+ "Redirecting …" : "Nukreipiama...",
+ "New password" : "Naujas slaptažodis",
+ "New Password" : "Naujas slaptažodis",
+ "Reset password" : "Atstatyti slaptažodį",
+ "Two-factor authentication" : "Dviejų žingsnių prisijungimas",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Jūsų paskyros saugumas yra sustiprintas. Prašome prisijungti naudojant antrą prisijungimo variantą.",
+ "Cancel log in" : "Atšaukti prisijungimą",
+ "Use backup code" : "Naudoti atsarginį kodą",
+ "Error while validating your second factor" : "Klaida antrame prisijungimo žingsnyje",
+ "You are accessing the server from an untrusted domain." : "Jūs bandote prisijungti prie sistemos iš nepatikimo domeno.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Susisiekite su sistemos administratoriumi. Jei jūs esate administratorius, pridėkite \"trusted_domains\" nustatymą config/config.php byloje. Pavyzdinė konfigūracija pateikta config/config.sample.php byloje.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Priklausomai nuo sistemos konfigūracijos, administratorius gali naudoti mygtuką apačioje tam, kad pridėtų patikimą domeno vardą.",
+ "Add \"%s\" as trusted domain" : "Pridėti \"%s\" į patikimų domenų sąrašą",
+ "App update required" : "Reikalingas įskiepio atnaujinimas",
+ "%s will be updated to version %s" : "%s bus atnaujintas iki %s versijos",
+ "These apps will be updated:" : "Šie įskiepiai bus atnaujinti:",
+ "These incompatible apps will be disabled:" : "Šie nesuderinami įskiepiai bus išjungti:",
+ "The theme %s has been disabled." : "Spalvų tema %s buvo panaikinta.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Prie pradedant, užtikrinkite, kad duomenų bazė, konfigūracijos aplankas ir duomenų aplankas turi atsarginę kopiją.",
+ "Start update" : "Pradėti atnaujinimą",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Norėdami sutaupyti laiko, galite paleisti šią komandą diegimo aplanke:",
+ "Detailed logs" : "Tikslus žurnalas",
+ "Update needed" : "Reikalingas atnaujinimas",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandinę eilutę atnaujinimui, nes sistema turi daugiau nei 50 vartotojų.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Detalesnės informacijos ieškokite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacijoje</a>",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.",
+ "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s egzempliorius šiuo metu yra techninės priežiūros veiksenoje, kas savo ruožtu gali šiek tiek užtrukti.",
+ "This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.",
+ "Thank you for your patience." : "Dėkojame už jūsų kantrumą.",
+ "Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo. <br />Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi. <br />Ar norite tęsti?",
+ "Ok" : "Gerai",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.",
+ "Error while unsharing" : "Klaida, kai atšaukiamas dalijimasis",
+ "can reshare" : "gali pakartotinai dalintis",
+ "can edit" : "gali redaguoti",
+ "can create" : "gali kurti",
+ "can change" : "gali keisti",
+ "can delete" : "gali trinti",
+ "access control" : "prieigos valdymas",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "naudotojo vardasPasidalinti su asmenimis ekvivalenčiose sistemose, naudojantis Federated Cloud ID username@example.com/nextcloud",
+ "Share with users or by mail..." : "Pasidalinti su vartotojais arba per elektroninį paštą...",
+ "Share with users or remote users..." : "Pasidalinti su vartotojais arba vartotojais kitose sistemose...",
+ "Share with users, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...",
+ "Share with users or groups..." : "Pasidalinti su vartotojais ar jų grupe...",
+ "Share with users, groups or by mail..." : "Pasidalinti su vartotojais, grupėmis arba per elektroninį paštą...",
+ "Share with users, groups or remote users..." : "Pasidalinti su vartotojais, grupėmis ar kitų sistemų vartotojais...",
+ "Share with users, groups, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...",
+ "Share with users..." : "Pasidalinti su vartotojais...",
+ "The object type is not specified." : "Objekto tipas nenurodytas.",
+ "Enter new" : "Įveskite naują",
+ "Add" : "Pridėti",
+ "Edit tags" : "Redaguoti žymes",
+ "Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}",
+ "No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.",
+ "The update was successful. Redirecting you to Nextcloud now." : "Sėkmingai atnaujinta. Nukreipiama į NextCloud.",
+ "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n",
+ "The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
+ "Cheers!" : "Sveikinimai!",
+ "Log out" : "Atsijungti",
+ "Use the following link to reset your password: {link}" : "Naudokite šią nuorodą, kad atstatytumėte savo slaptažodį: {link}",
+ "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Labas, <br><br>tik norime pranešti, kad %s pasidalino <strong>%s</strong> su jumis. <br><a href=\"%s\">Peržiūrėti</a><br><br>",
+ "This Nextcloud instance is currently in single user mode." : "Šis Nextcloud egzempliorius šiuo metu yra vieno naudotojo veiksenoje.",
+ "This means only administrators can use the instance." : "Tai reiškia, kad tik administratorius gali naudotis sistema.",
+ "Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė."
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 7e23a0887e5..f1c3af371ce 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -54,6 +54,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (nesaderīgs)",
"Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s",
"Already up to date" : "Jau ir jaunākā",
+ "Search contacts …" : "Meklēt kontaktpersonu",
"No contacts found" : "Nav atrasta ne viena kontaktpersona",
"Show all contacts …" : "Rādīt visas kontaktpersonas",
"There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu",
@@ -96,11 +97,14 @@ OC.L10N.register(
"Continue" : "Turpināt",
"(all selected)" : "(visus iezīmētos)",
"({count} selected)" : "({count} iezīmēti)",
+ "Pending" : "Gaida",
"Very weak password" : "Ļoti vāja parole",
"Weak password" : "Vāja parole",
"So-so password" : "Normāla parole",
"Good password" : "Laba parole",
"Strong password" : "Lieliska parole",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.",
+ "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ",
"Shared" : "Koplietots",
"Shared with {recipients}" : "Koplietots ar {recipients}",
"Error setting expiration date" : "Kļūda, iestatot termiņa datumu",
@@ -108,12 +112,14 @@ OC.L10N.register(
"Expiration" : "Termiņš",
"Expiration date" : "Termiņa datums",
"Choose a password for the public link" : "Izvēlies paroli publiskai saitei",
+ "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu",
"Copied!" : "Nokopēts!",
"Copy" : "Kopēt",
"Not supported!" : "Nav atbalstīts!",
"Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.",
"Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.",
"Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta",
+ "Share to {name}" : "Dalīties ar {name}",
"Share link" : "Koplietot saiti",
"Link" : "Saite",
"Password protect" : "Aizsargāt ar paroli",
@@ -121,13 +127,20 @@ OC.L10N.register(
"Email link to person" : "Sūtīt saiti personai pa e-pastu",
"Send" : "Sūtīt",
"Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu",
+ "Read only" : "Tikai lasāms",
"Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}",
"Shared with you by {owner}" : "{owner} koplietoja ar jums",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti",
"group" : "grupa",
"remote" : "attālināti",
"email" : "e-pasts",
+ "shared by {sharer}" : "Koplietoja {sharer}",
"Unshare" : "Pārtraukt koplietošanu",
+ "Can edit" : "Var rediģēt",
+ "Can create" : "Var izveidot",
+ "Can change" : "Var mainīt",
+ "Can delete" : "Var dzēst",
+ "Access control" : "Piekļuves vadība",
"Could not unshare" : "Nevarēja pārtraukt koplietošanu",
"Error while sharing" : "Kļūda, daloties",
"Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.",
@@ -137,7 +150,15 @@ OC.L10N.register(
"{sharee} (group)" : "{sharee} (grupa)",
"{sharee} (remote)" : "{sharee} (attālināti)",
"{sharee} (email)" : "{sharee} (e-pasts)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Koplietot",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.",
+ "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.",
+ "Name or email address..." : "Vārds vai e-pasta adrese...",
+ "Name or federated cloud ID..." : "Vārds vai federated cloud ID",
+ "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...",
+ "Name..." : "Vārds...",
"Error" : "Kļūda",
"Error removing share" : "Kļūda, noņemot koplietošanu",
"restricted" : "ierobežots",
@@ -154,11 +175,16 @@ OC.L10N.register(
"Hello {name}" : "Sveiks {name}",
"new" : "jauns",
"_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.",
"Update to {version}" : "Atjaunināts uz {version}",
"An error occurred." : "Radās kļūda.",
"Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet <a href=\"{url}\">mūsu foruma rakstā</a> par šo problēmu.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud kopienā</a>.",
"Continue to Nextcloud" : "Turpināt ar Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."],
"Searching other places" : "Meklēt citās vietās",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"],
"Personal" : "Personīgi",
"Users" : "Lietotāji",
@@ -171,6 +197,7 @@ OC.L10N.register(
"You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.",
"Internal Server Error" : "Iekšēja servera kļūda",
"The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.",
"More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.",
"Technical details" : "Tehniskās detaļas",
"Remote Address: %s" : "Attālinātā adrese: %s",
@@ -183,12 +210,15 @@ OC.L10N.register(
"Trace" : "Izsekot",
"Security warning" : "Drošības brīdinājums",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentācijā</a>.",
"Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>",
"Username" : "Lietotājvārds",
"Storage & database" : "Krātuve & datubāze",
"Data folder" : "Datu mape",
"Configure the database" : "Konfigurēt datubāzi",
"Only %s is available." : "Tikai %s ir pieejams.",
+ "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.",
+ "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.",
"Database user" : "Datubāzes lietotājs",
"Database password" : "Datubāzes parole",
"Database name" : "Datubāzes nosaukums",
@@ -197,10 +227,14 @@ OC.L10N.register(
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).",
"Performance warning" : "Veiktspējas brīdinājums",
"SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.",
+ "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.",
"Finish setup" : "Pabeigt iestatīšanu",
"Finishing …" : "Pabeidz ...",
"Need help?" : "Vajadzīga palīdzība?",
"See the documentation" : "Skatiet dokumentāciju",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.",
+ "More apps" : "Vairāk programmu",
"Search" : "Meklēt",
"This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:",
"Confirm your password" : "Apstipriniet paroli",
@@ -214,29 +248,44 @@ OC.L10N.register(
"Log in" : "Ierakstīties",
"Stay logged in" : "Palikt ierakstītam",
"Alternative Logins" : "Alternatīvās pieteikšanās",
+ "App token" : "Programmas pilnvara",
+ "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.",
+ "Redirecting …" : "Novirzam ...",
"New password" : "Jauna parole",
"New Password" : "Jauna parole",
"Reset password" : "Mainīt paroli",
"Two-factor authentication" : "Divpakāpju autentifikācija",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.",
"Cancel log in" : "Atcelt pierakstīšanos",
"Use backup code" : "Izmantojiet dublēšanas kodu",
+ "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.",
"You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.",
"Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu",
"App update required" : "Programmai nepieciešama atjaunināšana",
"%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s",
"These apps will be updated:" : "Šīs programmas tiks atjauninātas:",
+ "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:",
"The theme %s has been disabled." : "Tēma %s ir atspējota.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.",
"Start update" : "Sākt atjaunināšanu",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:",
"Detailed logs" : "Detalizētas informācijas žurnālfaili",
"Update needed" : "Nepieciešama atjaunināšana",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.",
+ "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.",
"This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.",
+ "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"Ok" : "Labi",
"Error while unsharing" : "Kļūda, beidzot dalīties",
+ "can reshare" : "var atkārtoti kopīgot",
"can edit" : "var rediģēt",
"can create" : "var izveidot",
"can change" : "var mainīt",
@@ -249,11 +298,13 @@ OC.L10N.register(
"Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...",
"Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...",
"Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...",
+ "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...",
"Share with users..." : "Koplietots ar lietotājiem...",
"The object type is not specified." : "Nav norādīts objekta tips.",
"Enter new" : "Ievadīt jaunu",
"Add" : "Pievienot",
"Edit tags" : "Rediģēt atzīmes",
+ "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}",
"The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n",
"The share will expire on %s." : "Koplietošana beigsies %s.",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 9a56aa3a1f6..a40a9fa831b 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -52,6 +52,7 @@
"%s (incompatible)" : "%s (nesaderīgs)",
"Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s",
"Already up to date" : "Jau ir jaunākā",
+ "Search contacts …" : "Meklēt kontaktpersonu",
"No contacts found" : "Nav atrasta ne viena kontaktpersona",
"Show all contacts …" : "Rādīt visas kontaktpersonas",
"There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu",
@@ -94,11 +95,14 @@
"Continue" : "Turpināt",
"(all selected)" : "(visus iezīmētos)",
"({count} selected)" : "({count} iezīmēti)",
+ "Pending" : "Gaida",
"Very weak password" : "Ļoti vāja parole",
"Weak password" : "Vāja parole",
"So-so password" : "Normāla parole",
"Good password" : "Laba parole",
"Strong password" : "Lieliska parole",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.",
+ "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ",
"Shared" : "Koplietots",
"Shared with {recipients}" : "Koplietots ar {recipients}",
"Error setting expiration date" : "Kļūda, iestatot termiņa datumu",
@@ -106,12 +110,14 @@
"Expiration" : "Termiņš",
"Expiration date" : "Termiņa datums",
"Choose a password for the public link" : "Izvēlies paroli publiskai saitei",
+ "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu",
"Copied!" : "Nokopēts!",
"Copy" : "Kopēt",
"Not supported!" : "Nav atbalstīts!",
"Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.",
"Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.",
"Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta",
+ "Share to {name}" : "Dalīties ar {name}",
"Share link" : "Koplietot saiti",
"Link" : "Saite",
"Password protect" : "Aizsargāt ar paroli",
@@ -119,13 +125,20 @@
"Email link to person" : "Sūtīt saiti personai pa e-pastu",
"Send" : "Sūtīt",
"Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu",
+ "Read only" : "Tikai lasāms",
"Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}",
"Shared with you by {owner}" : "{owner} koplietoja ar jums",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti",
"group" : "grupa",
"remote" : "attālināti",
"email" : "e-pasts",
+ "shared by {sharer}" : "Koplietoja {sharer}",
"Unshare" : "Pārtraukt koplietošanu",
+ "Can edit" : "Var rediģēt",
+ "Can create" : "Var izveidot",
+ "Can change" : "Var mainīt",
+ "Can delete" : "Var dzēst",
+ "Access control" : "Piekļuves vadība",
"Could not unshare" : "Nevarēja pārtraukt koplietošanu",
"Error while sharing" : "Kļūda, daloties",
"Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.",
@@ -135,7 +148,15 @@
"{sharee} (group)" : "{sharee} (grupa)",
"{sharee} (remote)" : "{sharee} (attālināti)",
"{sharee} (email)" : "{sharee} (e-pasts)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Koplietot",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.",
+ "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.",
+ "Name or email address..." : "Vārds vai e-pasta adrese...",
+ "Name or federated cloud ID..." : "Vārds vai federated cloud ID",
+ "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...",
+ "Name..." : "Vārds...",
"Error" : "Kļūda",
"Error removing share" : "Kļūda, noņemot koplietošanu",
"restricted" : "ierobežots",
@@ -152,11 +173,16 @@
"Hello {name}" : "Sveiks {name}",
"new" : "jauns",
"_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.",
"Update to {version}" : "Atjaunināts uz {version}",
"An error occurred." : "Radās kļūda.",
"Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet <a href=\"{url}\">mūsu foruma rakstā</a> par šo problēmu.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud kopienā</a>.",
"Continue to Nextcloud" : "Turpināt ar Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."],
"Searching other places" : "Meklēt citās vietās",
+ "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"],
"Personal" : "Personīgi",
"Users" : "Lietotāji",
@@ -169,6 +195,7 @@
"You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.",
"Internal Server Error" : "Iekšēja servera kļūda",
"The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.",
"More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.",
"Technical details" : "Tehniskās detaļas",
"Remote Address: %s" : "Attālinātā adrese: %s",
@@ -181,12 +208,15 @@
"Trace" : "Izsekot",
"Security warning" : "Drošības brīdinājums",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentācijā</a>.",
"Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>",
"Username" : "Lietotājvārds",
"Storage & database" : "Krātuve & datubāze",
"Data folder" : "Datu mape",
"Configure the database" : "Konfigurēt datubāzi",
"Only %s is available." : "Tikai %s ir pieejams.",
+ "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.",
+ "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.",
"Database user" : "Datubāzes lietotājs",
"Database password" : "Datubāzes parole",
"Database name" : "Datubāzes nosaukums",
@@ -195,10 +225,14 @@
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).",
"Performance warning" : "Veiktspējas brīdinājums",
"SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.",
+ "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.",
"Finish setup" : "Pabeigt iestatīšanu",
"Finishing …" : "Pabeidz ...",
"Need help?" : "Vajadzīga palīdzība?",
"See the documentation" : "Skatiet dokumentāciju",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.",
+ "More apps" : "Vairāk programmu",
"Search" : "Meklēt",
"This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:",
"Confirm your password" : "Apstipriniet paroli",
@@ -212,29 +246,44 @@
"Log in" : "Ierakstīties",
"Stay logged in" : "Palikt ierakstītam",
"Alternative Logins" : "Alternatīvās pieteikšanās",
+ "App token" : "Programmas pilnvara",
+ "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.",
+ "Redirecting …" : "Novirzam ...",
"New password" : "Jauna parole",
"New Password" : "Jauna parole",
"Reset password" : "Mainīt paroli",
"Two-factor authentication" : "Divpakāpju autentifikācija",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.",
"Cancel log in" : "Atcelt pierakstīšanos",
"Use backup code" : "Izmantojiet dublēšanas kodu",
+ "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.",
"You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.",
"Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu",
"App update required" : "Programmai nepieciešama atjaunināšana",
"%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s",
"These apps will be updated:" : "Šīs programmas tiks atjauninātas:",
+ "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:",
"The theme %s has been disabled." : "Tēma %s ir atspējota.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.",
"Start update" : "Sākt atjaunināšanu",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:",
"Detailed logs" : "Detalizētas informācijas žurnālfaili",
"Update needed" : "Nepieciešama atjaunināšana",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.",
+ "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.",
"This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.",
+ "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"Ok" : "Labi",
"Error while unsharing" : "Kļūda, beidzot dalīties",
+ "can reshare" : "var atkārtoti kopīgot",
"can edit" : "var rediģēt",
"can create" : "var izveidot",
"can change" : "var mainīt",
@@ -247,11 +296,13 @@
"Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...",
"Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...",
"Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...",
+ "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...",
"Share with users..." : "Koplietots ar lietotājiem...",
"The object type is not specified." : "Nav norādīts objekta tips.",
"Enter new" : "Ievadīt jaunu",
"Add" : "Pievienot",
"Edit tags" : "Rediģēt atzīmes",
+ "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}",
"The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n",
"The share will expire on %s." : "Koplietošana beigsies %s.",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index 21e40359b2f..58258a8dac2 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"core",
{
- "Please select a file." : "Velg en fil.",
+ "Please select a file." : "Velg ei fil.",
"File is too big" : "Filen er for stor",
"The selected file is not an image." : "Den valgte filen er ikke et bilde.",
"The selected file cannot be read." : "Den valgte filen kan ikke leses.",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 77f036d1ee5..7ff847593fc 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Please select a file." : "Velg en fil.",
+ "Please select a file." : "Velg ei fil.",
"File is too big" : "Filen er for stor",
"The selected file is not an image." : "Den valgte filen er ikke et bilde.",
"The selected file cannot be read." : "Den valgte filen kan ikke leses.",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index 0c348180d69..6a347d4ce37 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -17,6 +17,7 @@ OC.L10N.register(
"Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid",
"Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-ți administratorul.",
+ "Password reset" : "Resetare parolă",
"%s password reset" : "%s resetare parola",
"Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eşuat. Vă rugăm să contactaţi administratorul dvs.",
"Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.",
@@ -45,6 +46,8 @@ OC.L10N.register(
"%s (incompatible)" : "%s (incompatibil)",
"Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s",
"Already up to date" : "Deja actualizat",
+ "Search contacts …" : "Cauta contacte ...",
+ "Show all contacts …" : "Arata toate contactele ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Au apărut probleme la verificarea integrității codului. Mai multe informații…</a>",
"Settings" : "Setări",
"Connection to server lost" : "S-a pierdut conexiunea la server",
@@ -127,7 +130,9 @@ OC.L10N.register(
"group" : "grup",
"remote" : "de la distanță",
"email" : "email",
+ "shared by {sharer}" : "partajat de {sharer}",
"Unshare" : "Anulare partajare",
+ "Access control" : "Control acces",
"Could not unshare" : "Nu s-a putut elimina partajarea",
"Error while sharing" : "Eroare la partajare",
"Share details could not be loaded for this item." : "Nu s-au putut încărca detaliile de partajare pentru acest element.",
@@ -140,6 +145,7 @@ OC.L10N.register(
"{sharee} (remote)" : "{sharee} (distanță)",
"{sharee} (email)" : "{sharee} (email)",
"Share" : "Partajează",
+ "Name..." : "Nume ...",
"Error" : "Eroare",
"Error removing share" : "Eroare la înlăturarea elementului partajat",
"Non-existing tag #{tag}" : "Etichetă inexistentă #{tag}",
@@ -214,6 +220,7 @@ OC.L10N.register(
"Need help?" : "Ai nevoie de ajutor?",
"See the documentation" : "Vezi documentația",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Această aplicație necesită JavaScript pentru a funcționa corect. {linkstart}Activează JavaScript{linkend} și reîncarcă pagina.",
+ "More apps" : "Mai multe aplicatii",
"Search" : "Căutare",
"This action requires you to confirm your password:" : "Această acțiune necesită confirmarea parolei tale:",
"Confirm your password" : "Confirmă parola:",
@@ -228,7 +235,7 @@ OC.L10N.register(
"Stay logged in" : "Rămâi autentificat",
"Alternative Logins" : "Conectări alternative",
"New password" : "Noua parolă",
- "New Password" : "Noua parolă",
+ "New Password" : "Noua Parolă",
"Reset password" : "Resetează parola",
"Two-factor authentication" : "Autentificare în doi-factori",
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Securitatea îmbunătățită este activată pentru contul tău. Autentifică-te utilizând un al doilea factor.",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index ec0daa559d7..3e9b393e5e4 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -15,6 +15,7 @@
"Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid",
"Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-ți administratorul.",
+ "Password reset" : "Resetare parolă",
"%s password reset" : "%s resetare parola",
"Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eşuat. Vă rugăm să contactaţi administratorul dvs.",
"Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.",
@@ -43,6 +44,8 @@
"%s (incompatible)" : "%s (incompatibil)",
"Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s",
"Already up to date" : "Deja actualizat",
+ "Search contacts …" : "Cauta contacte ...",
+ "Show all contacts …" : "Arata toate contactele ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Au apărut probleme la verificarea integrității codului. Mai multe informații…</a>",
"Settings" : "Setări",
"Connection to server lost" : "S-a pierdut conexiunea la server",
@@ -125,7 +128,9 @@
"group" : "grup",
"remote" : "de la distanță",
"email" : "email",
+ "shared by {sharer}" : "partajat de {sharer}",
"Unshare" : "Anulare partajare",
+ "Access control" : "Control acces",
"Could not unshare" : "Nu s-a putut elimina partajarea",
"Error while sharing" : "Eroare la partajare",
"Share details could not be loaded for this item." : "Nu s-au putut încărca detaliile de partajare pentru acest element.",
@@ -138,6 +143,7 @@
"{sharee} (remote)" : "{sharee} (distanță)",
"{sharee} (email)" : "{sharee} (email)",
"Share" : "Partajează",
+ "Name..." : "Nume ...",
"Error" : "Eroare",
"Error removing share" : "Eroare la înlăturarea elementului partajat",
"Non-existing tag #{tag}" : "Etichetă inexistentă #{tag}",
@@ -212,6 +218,7 @@
"Need help?" : "Ai nevoie de ajutor?",
"See the documentation" : "Vezi documentația",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Această aplicație necesită JavaScript pentru a funcționa corect. {linkstart}Activează JavaScript{linkend} și reîncarcă pagina.",
+ "More apps" : "Mai multe aplicatii",
"Search" : "Căutare",
"This action requires you to confirm your password:" : "Această acțiune necesită confirmarea parolei tale:",
"Confirm your password" : "Confirmă parola:",
@@ -226,7 +233,7 @@
"Stay logged in" : "Rămâi autentificat",
"Alternative Logins" : "Conectări alternative",
"New password" : "Noua parolă",
- "New Password" : "Noua parolă",
+ "New Password" : "Noua Parolă",
"Reset password" : "Resetează parola",
"Two-factor authentication" : "Autentificare în doi-factori",
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Securitatea îmbunătățită este activată pentru contul tău. Autentifică-te utilizând un al doilea factor.",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 48c411811d0..6d6899d58c1 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -198,7 +198,7 @@ OC.L10N.register(
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Эти результаты поиска<script>alert(1)</script></strong>",
"new" : "новый",
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
- "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Уход с этой страницы в некоторых случаях может прервать процесс.",
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Не уходите с этой страницы, т.к. в некоторых случаях может прервать процесс.",
"Update to {version}" : "Обновление до {version}",
"An error occurred." : "Произошла ошибка.",
"Please reload the page." : "Обновите страницу.",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 6de568a5bb1..9f73b5d37ca 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -196,7 +196,7 @@
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Эти результаты поиска<script>alert(1)</script></strong>",
"new" : "новый",
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
- "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Уход с этой страницы в некоторых случаях может прервать процесс.",
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Не уходите с этой страницы, т.к. в некоторых случаях может прервать процесс.",
"Update to {version}" : "Обновление до {version}",
"An error occurred." : "Произошла ошибка.",
"Please reload the page." : "Обновите страницу.",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index b8228adc73b..5da0e92c386 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"core",
{
"Please select a file." : "Ju lutem përzgjidhni një skedar.",
- "File is too big" : "Kartela është shumë e madhe",
+ "File is too big" : "Skedari është shumë i madh",
"The selected file is not an image." : "Skedari i zgjedhur nuk është një imazh",
"The selected file cannot be read." : "Skedari i zgjedhur nuk mund të lexohet",
"Invalid file provided" : "U dha kartelë e pavlefshme",
@@ -13,18 +13,20 @@ OC.L10N.register(
"No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni",
"No crop data provided" : "S’u dhanë të dhëna qethjeje",
"No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme",
- "Crop is not square" : "Qethja s’është katrore",
+ "Crop is not square" : "Prerja s’është katrore",
+ "State token does not match" : "Shenja shtetërore nuk përputhet",
"Password reset is disabled" : "Opsioni për rigjenerimin e fjalëkalimit është çaktivizuar",
"Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm",
"Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"Password reset" : "Fjalkalimi u rivendos",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni butonin më poshtë për të rivendosur fjalëkalimin tuaj. Nëse nuk keni kërkuar rivendosjen e fjalëkalimit, atëherë injorojeni këtë email.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni ne 'link-un' e rradhes per te rivendosur fjalekalimin tuaj.Nese nuk e keni vendosur akoma fjalekalimin atehere mos e merrni parasysh kete email.",
"Reset your password" : "Rivendosni nje fjalekalim te ri",
"%s password reset" : "U ricaktua fjalëkalimi për %s",
"Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.",
- "Preparing update" : "Po përgatitet përditësimi",
+ "Preparing update" : "Duke përgatitur përditësimin",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Sinjalizim ndreqjeje: ",
"Repair error: " : "Gabim ndreqjeje: ",
@@ -59,8 +61,11 @@ OC.L10N.register(
"Loading your contacts …" : "Kontaktet tuaja po ngarkohen ...",
"Looking for {term} …" : "Duke kërkuar {për] ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Pati probleme me kontrollin e integritetit të kodit. Më tepër të dhëna…</a>",
+ "No action available" : "Jo veprim i mundur",
+ "Error fetching contact actions" : "Gabim gjatë marrjes së veprimeve të kontaktit",
"Settings" : "Rregullime",
"Connection to server lost" : "Lidhja me serverin u shkëput",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda","Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda"],
"Saving..." : "Po ruhet …",
"Dismiss" : "Mos e merr parasysh",
"This action requires you to confirm your password" : "Ky veprim kërkon që të konfirmoni fjalëkalimin tuaj.",
@@ -80,6 +85,7 @@ OC.L10N.register(
"No files in here" : "Jo skedar këtu",
"Choose" : "Zgjidhni",
"Error loading file picker template: {error}" : "Gabim në ngarkimin e gjedhes së marrësit të kartelave: {error}",
+ "OK" : "OK",
"Error loading message template: {error}" : "Gabim gjatë ngarkimit të gjedhes së mesazheve: {error}",
"read-only" : "vetëm për lexim",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} përplasje kartelash","{count} përplasje kartelash"],
@@ -107,7 +113,10 @@ OC.L10N.register(
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "E anasjellta e konfigurimit të kryeve proxy është e pasaktë, ose ju po aksesoni Nextcloud nga një proxy i besuar. Nëse nuk jeni duke aksesuar Nextcloud nga një proxy i besuar, kjo është një çështje sigurie dhe mund të lejoj një sulmues të manipuloj adresën e tyre IP si të dukshme nga Nextcloud. Informacione të mëtejshme mund të gjendet në <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki-n mbi memcached rreth të dy moduleve</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa kartela s’e kaluan dot kontrollin e pacenueshmërisë. Më tepër të dhëna se si të zgjidhet ky problem mund të gjeni te <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentimi</a> ynë. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrollojini…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache nuk ësht konfiguruar siç duhet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Për performancë më të mirë ne rekomandojmë </a>të përdorni konfigurimet e mëposhtme në <code> php.ini </code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Funksioni i PHP \"set_time_limit\" nuk është i disponueshëm. Kjo mund të rezultoj që skriptet te ndalohen në mes të ekzekutimit dhe të ndërpresin instalimin tuaj. Ne ju rekomandojmë që ju ta bëni aktiv këtë funksion.",
"Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Parametri \"Strict-Transport-Security\" HTTP s’është formësuar të paktën \"{seconds}\" sekonda. Për siguri të thelluar, ju këshillojmë aktivizimin e HSTS-së, ashtu si përshkruhet në <a href=\"{docUrl}\" rel=\"noreferrer\">këshillat tona mbi sigurinë</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Po e përdorni këtë sajt përmes HTTP-je. Këshillojmë me forcë ta formësoni shërbyesin tuaj të kërkojë medoemos përdorimin e HTTPS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.",
@@ -119,40 +128,57 @@ OC.L10N.register(
"Expiration" : "Skadim",
"Expiration date" : "Datë skadimi",
"Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike",
+ "Choose a password for the public link or press the \"Enter\" key" : "Zgjidhni një fjalëkalim për lidhjen publike ose shtypni butonin \"Enter\"",
"Copied!" : "U kopjua!",
"Copy" : "Kopjo",
"Not supported!" : "Jo i përshtatshëm!",
"Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.",
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar.",
"Resharing is not allowed" : "Nuk lejohen rindarjet",
+ "Share to {name}" : "Ndaj tek {name}",
"Share link" : "Lidhje ndarjeje",
"Link" : "Lidhje",
"Password protect" : "Mbroje me fjalëkalim",
"Allow editing" : "Lejo përpunim",
"Email link to person" : "Dërgoja personit lidhjen me email",
- "Send" : "Dërgoje",
+ "Send" : "Dërgo",
"Allow upload and editing" : "Lejo ngarkim dhe editim",
"Read only" : "Vetëm i lexueshëm",
"File drop (upload only)" : "Lësho skedar (vetëm ngarkim)",
"Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}",
"Shared with you by {owner}" : "Ndarë me ju nga {owner}",
+ "Choose a password for the mail share" : "Zgjidh një fjalëkalim për shpërndarjen e mail-it",
"{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut",
"group" : "grup",
"remote" : "i largët",
"email" : "postë elektronike",
+ "shared by {sharer}" : "ndarë nga {ndarësi}",
"Unshare" : "Hiqe ndarjen",
+ "Can reshare" : "Mund të rishpërdajë",
+ "Can edit" : "Mund të editojë",
+ "Can create" : "Mund të krijoni",
+ "Can change" : "Mund të ndryshojë",
+ "Can delete" : "Mund të fshijë",
+ "Access control" : "Kontrolli i aksesit",
"Could not unshare" : "S’e shndau dot",
"Error while sharing" : "Gabim gjatë ndarjes",
"Share details could not be loaded for this item." : "Për këtë objekt s’u ngarkuan dot hollësi ndarjeje.",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje","Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Kjo listë ndoshta është e prerë - ju lutemi të përmirësoni termat e kërkimit tuaj për të parë më shumë rezultate.",
"No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}",
"No users found for {search}" : "S’u gjet përdorues për {search}",
"An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
"{sharee} (group)" : "{sharee} (grup)",
"{sharee} (remote)" : "{sharee} (i largët)",
- "{sharee} (email)" : "{shpërnda} (postë elektronike)",
+ "{sharee} (email)" : "{sharee} (email)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Ndaje",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.",
"Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili",
"Name or email address..." : "Emri ose adresa e email-it",
+ "Name or federated cloud ID..." : "Emri ose ID e resë të fedferuar",
+ "Name, federated cloud ID or email address..." : "Emri, ID e resë të federuar ose adresën e email-it...",
"Name..." : "Emër",
"Error" : "Gabim",
"Error removing share" : "Gabim në heqjen e ndarjes",
@@ -170,7 +196,7 @@ OC.L10N.register(
"Hello {name}, the weather is {weather}" : "Tungjatjeta {name}, koha është {weather}",
"Hello {name}" : "Tungjatjeta {name}",
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Këto janë rezultatet e juaj të kërkimit<script> alarm(1)",
- "new" : "re",
+ "new" : "i/e re",
"_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "Përditësimi është në zhvillim, largimi nga faqja mund të ndërpres procesin në disa mjedise.",
"Update to {version}" : "Përditëso në {version}",
@@ -179,7 +205,8 @@ OC.L10N.register(
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Përditësimi ishte i pasuksesshëm. Ju lutem raportoni këtë problem në <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.",
"Continue to Nextcloud" : "Vazhdoni tek Nextcloud",
- "Searching other places" : "Po kërkohet në vende të tjera",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda.","Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda."],
+ "Searching other places" : "Duke kërkuar në vende të tjera",
"No search results in other folders for {tag}{filter}{endtag}" : "Jo rezultate nga kërkimi në dosjet e tjera për '{etiketim}{filtrim}{përfundoetiketimin}'",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"],
"Personal" : "Personale",
@@ -244,6 +271,7 @@ OC.L10N.register(
"Log in" : "Hyni",
"Stay logged in" : "Qëndro i futur",
"Alternative Logins" : "Hyrje Alternative",
+ "You are about to grant \"%s\" access to your %s account." : "Ju jeni duke kërkuar \"%s\" akses për %s llogaritë tuaja.",
"App token" : "Çelës identifikues i API-t",
"Alternative login using app token" : "Hyrje alternative duke perdorur çelësin identifikues të API-t",
"Redirecting …" : "Duke ju lidhur...",
@@ -272,6 +300,7 @@ OC.L10N.register(
"Please use the command line updater because you have a big instance with more than 50 users." : "Ju lutemi,përdorni përditësuesin e rreshtit të urdhrave, sepse keni një instalim me mbi 50 përdorues",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Për ndihmë, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Në qofte se unë vazhdoj të kryej përditësimin nëpëmjet web UI ka rrezik, që kërkesa mund të ndaloj dhe shkakton humbje të të dhënave, por unë di si ti rikthej të dhënat ne rast dështimi.",
+ "Upgrade via web on my own risk" : "Përditëso me anë të internetit në rrezikun tim",
"This %s instance is currently in maintenance mode, which may take a while." : "Kjo instancë %s hëpërhë gjendet nën mënyrën mirëmbajtje, çka mund të zgjasë ca.",
"This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.",
@@ -292,7 +321,7 @@ OC.L10N.register(
"Share with users or remote users..." : "Shpërnda me përdoruesit ose me përdoruesit në distancë...",
"Share with users, remote users or by mail..." : "Shpërnda me përdoruesit, përdoruesit në distancë ose nga posta elektronike...",
"Share with users or groups..." : "Shpërnda me përdoruesit ose grupet...",
- "Share with users, groups or by mail..." : "Shpërnda me përdoruesit, grupet ose nga posta elektronike...",
+ "Share with users, groups or by mail..." : "Nda me përdoruesit, grupet ose nga posta elektronike...",
"Share with users, groups or remote users..." : "Shpërnda me përdoruesit, grupet ose përdoruesit në distancë...",
"Share with users, groups, remote users or by mail..." : "Shpërnda me përdoruesit, grupet, përdoruesit në distancë ose nga posta elektronike...",
"Share with users..." : "Shpërnda me përdoruesit...",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 7d5e1f90521..0b09482432d 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -1,6 +1,6 @@
{ "translations": {
"Please select a file." : "Ju lutem përzgjidhni një skedar.",
- "File is too big" : "Kartela është shumë e madhe",
+ "File is too big" : "Skedari është shumë i madh",
"The selected file is not an image." : "Skedari i zgjedhur nuk është një imazh",
"The selected file cannot be read." : "Skedari i zgjedhur nuk mund të lexohet",
"Invalid file provided" : "U dha kartelë e pavlefshme",
@@ -11,18 +11,20 @@
"No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni",
"No crop data provided" : "S’u dhanë të dhëna qethjeje",
"No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme",
- "Crop is not square" : "Qethja s’është katrore",
+ "Crop is not square" : "Prerja s’është katrore",
+ "State token does not match" : "Shenja shtetërore nuk përputhet",
"Password reset is disabled" : "Opsioni për rigjenerimin e fjalëkalimit është çaktivizuar",
"Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm",
"Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"Password reset" : "Fjalkalimi u rivendos",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni butonin më poshtë për të rivendosur fjalëkalimin tuaj. Nëse nuk keni kërkuar rivendosjen e fjalëkalimit, atëherë injorojeni këtë email.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni ne 'link-un' e rradhes per te rivendosur fjalekalimin tuaj.Nese nuk e keni vendosur akoma fjalekalimin atehere mos e merrni parasysh kete email.",
"Reset your password" : "Rivendosni nje fjalekalim te ri",
"%s password reset" : "U ricaktua fjalëkalimi për %s",
"Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.",
- "Preparing update" : "Po përgatitet përditësimi",
+ "Preparing update" : "Duke përgatitur përditësimin",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Sinjalizim ndreqjeje: ",
"Repair error: " : "Gabim ndreqjeje: ",
@@ -57,8 +59,11 @@
"Loading your contacts …" : "Kontaktet tuaja po ngarkohen ...",
"Looking for {term} …" : "Duke kërkuar {për] ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Pati probleme me kontrollin e integritetit të kodit. Më tepër të dhëna…</a>",
+ "No action available" : "Jo veprim i mundur",
+ "Error fetching contact actions" : "Gabim gjatë marrjes së veprimeve të kontaktit",
"Settings" : "Rregullime",
"Connection to server lost" : "Lidhja me serverin u shkëput",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda","Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda"],
"Saving..." : "Po ruhet …",
"Dismiss" : "Mos e merr parasysh",
"This action requires you to confirm your password" : "Ky veprim kërkon që të konfirmoni fjalëkalimin tuaj.",
@@ -78,6 +83,7 @@
"No files in here" : "Jo skedar këtu",
"Choose" : "Zgjidhni",
"Error loading file picker template: {error}" : "Gabim në ngarkimin e gjedhes së marrësit të kartelave: {error}",
+ "OK" : "OK",
"Error loading message template: {error}" : "Gabim gjatë ngarkimit të gjedhes së mesazheve: {error}",
"read-only" : "vetëm për lexim",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} përplasje kartelash","{count} përplasje kartelash"],
@@ -105,7 +111,10 @@
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "E anasjellta e konfigurimit të kryeve proxy është e pasaktë, ose ju po aksesoni Nextcloud nga një proxy i besuar. Nëse nuk jeni duke aksesuar Nextcloud nga një proxy i besuar, kjo është një çështje sigurie dhe mund të lejoj një sulmues të manipuloj adresën e tyre IP si të dukshme nga Nextcloud. Informacione të mëtejshme mund të gjendet në <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki-n mbi memcached rreth të dy moduleve</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa kartela s’e kaluan dot kontrollin e pacenueshmërisë. Më tepër të dhëna se si të zgjidhet ky problem mund të gjeni te <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentimi</a> ynë. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrollojini…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache nuk ësht konfiguruar siç duhet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Për performancë më të mirë ne rekomandojmë </a>të përdorni konfigurimet e mëposhtme në <code> php.ini </code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Funksioni i PHP \"set_time_limit\" nuk është i disponueshëm. Kjo mund të rezultoj që skriptet te ndalohen në mes të ekzekutimit dhe të ndërpresin instalimin tuaj. Ne ju rekomandojmë që ju ta bëni aktiv këtë funksion.",
"Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Parametri \"Strict-Transport-Security\" HTTP s’është formësuar të paktën \"{seconds}\" sekonda. Për siguri të thelluar, ju këshillojmë aktivizimin e HSTS-së, ashtu si përshkruhet në <a href=\"{docUrl}\" rel=\"noreferrer\">këshillat tona mbi sigurinë</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Po e përdorni këtë sajt përmes HTTP-je. Këshillojmë me forcë ta formësoni shërbyesin tuaj të kërkojë medoemos përdorimin e HTTPS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.",
@@ -117,40 +126,57 @@
"Expiration" : "Skadim",
"Expiration date" : "Datë skadimi",
"Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike",
+ "Choose a password for the public link or press the \"Enter\" key" : "Zgjidhni një fjalëkalim për lidhjen publike ose shtypni butonin \"Enter\"",
"Copied!" : "U kopjua!",
"Copy" : "Kopjo",
"Not supported!" : "Jo i përshtatshëm!",
"Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.",
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar.",
"Resharing is not allowed" : "Nuk lejohen rindarjet",
+ "Share to {name}" : "Ndaj tek {name}",
"Share link" : "Lidhje ndarjeje",
"Link" : "Lidhje",
"Password protect" : "Mbroje me fjalëkalim",
"Allow editing" : "Lejo përpunim",
"Email link to person" : "Dërgoja personit lidhjen me email",
- "Send" : "Dërgoje",
+ "Send" : "Dërgo",
"Allow upload and editing" : "Lejo ngarkim dhe editim",
"Read only" : "Vetëm i lexueshëm",
"File drop (upload only)" : "Lësho skedar (vetëm ngarkim)",
"Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}",
"Shared with you by {owner}" : "Ndarë me ju nga {owner}",
+ "Choose a password for the mail share" : "Zgjidh një fjalëkalim për shpërndarjen e mail-it",
"{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut",
"group" : "grup",
"remote" : "i largët",
"email" : "postë elektronike",
+ "shared by {sharer}" : "ndarë nga {ndarësi}",
"Unshare" : "Hiqe ndarjen",
+ "Can reshare" : "Mund të rishpërdajë",
+ "Can edit" : "Mund të editojë",
+ "Can create" : "Mund të krijoni",
+ "Can change" : "Mund të ndryshojë",
+ "Can delete" : "Mund të fshijë",
+ "Access control" : "Kontrolli i aksesit",
"Could not unshare" : "S’e shndau dot",
"Error while sharing" : "Gabim gjatë ndarjes",
"Share details could not be loaded for this item." : "Për këtë objekt s’u ngarkuan dot hollësi ndarjeje.",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje","Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje"],
+ "This list is maybe truncated - please refine your search term to see more results." : "Kjo listë ndoshta është e prerë - ju lutemi të përmirësoni termat e kërkimit tuaj për të parë më shumë rezultate.",
"No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}",
"No users found for {search}" : "S’u gjet përdorues për {search}",
"An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
"{sharee} (group)" : "{sharee} (grup)",
"{sharee} (remote)" : "{sharee} (i largët)",
- "{sharee} (email)" : "{shpërnda} (postë elektronike)",
+ "{sharee} (email)" : "{sharee} (email)",
+ "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Ndaje",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.",
"Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili",
"Name or email address..." : "Emri ose adresa e email-it",
+ "Name or federated cloud ID..." : "Emri ose ID e resë të fedferuar",
+ "Name, federated cloud ID or email address..." : "Emri, ID e resë të federuar ose adresën e email-it...",
"Name..." : "Emër",
"Error" : "Gabim",
"Error removing share" : "Gabim në heqjen e ndarjes",
@@ -168,7 +194,7 @@
"Hello {name}, the weather is {weather}" : "Tungjatjeta {name}, koha është {weather}",
"Hello {name}" : "Tungjatjeta {name}",
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Këto janë rezultatet e juaj të kërkimit<script> alarm(1)",
- "new" : "re",
+ "new" : "i/e re",
"_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "Përditësimi është në zhvillim, largimi nga faqja mund të ndërpres procesin në disa mjedise.",
"Update to {version}" : "Përditëso në {version}",
@@ -177,7 +203,8 @@
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Përditësimi ishte i pasuksesshëm. Ju lutem raportoni këtë problem në <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.",
"Continue to Nextcloud" : "Vazhdoni tek Nextcloud",
- "Searching other places" : "Po kërkohet në vende të tjera",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda.","Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda."],
+ "Searching other places" : "Duke kërkuar në vende të tjera",
"No search results in other folders for {tag}{filter}{endtag}" : "Jo rezultate nga kërkimi në dosjet e tjera për '{etiketim}{filtrim}{përfundoetiketimin}'",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"],
"Personal" : "Personale",
@@ -242,6 +269,7 @@
"Log in" : "Hyni",
"Stay logged in" : "Qëndro i futur",
"Alternative Logins" : "Hyrje Alternative",
+ "You are about to grant \"%s\" access to your %s account." : "Ju jeni duke kërkuar \"%s\" akses për %s llogaritë tuaja.",
"App token" : "Çelës identifikues i API-t",
"Alternative login using app token" : "Hyrje alternative duke perdorur çelësin identifikues të API-t",
"Redirecting …" : "Duke ju lidhur...",
@@ -270,6 +298,7 @@
"Please use the command line updater because you have a big instance with more than 50 users." : "Ju lutemi,përdorni përditësuesin e rreshtit të urdhrave, sepse keni një instalim me mbi 50 përdorues",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Për ndihmë, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Në qofte se unë vazhdoj të kryej përditësimin nëpëmjet web UI ka rrezik, që kërkesa mund të ndaloj dhe shkakton humbje të të dhënave, por unë di si ti rikthej të dhënat ne rast dështimi.",
+ "Upgrade via web on my own risk" : "Përditëso me anë të internetit në rrezikun tim",
"This %s instance is currently in maintenance mode, which may take a while." : "Kjo instancë %s hëpërhë gjendet nën mënyrën mirëmbajtje, çka mund të zgjasë ca.",
"This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.",
@@ -290,7 +319,7 @@
"Share with users or remote users..." : "Shpërnda me përdoruesit ose me përdoruesit në distancë...",
"Share with users, remote users or by mail..." : "Shpërnda me përdoruesit, përdoruesit në distancë ose nga posta elektronike...",
"Share with users or groups..." : "Shpërnda me përdoruesit ose grupet...",
- "Share with users, groups or by mail..." : "Shpërnda me përdoruesit, grupet ose nga posta elektronike...",
+ "Share with users, groups or by mail..." : "Nda me përdoruesit, grupet ose nga posta elektronike...",
"Share with users, groups or remote users..." : "Shpërnda me përdoruesit, grupet ose përdoruesit në distancë...",
"Share with users, groups, remote users or by mail..." : "Shpërnda me përdoruesit, grupet, përdoruesit në distancë ose nga posta elektronike...",
"Share with users..." : "Shpërnda me përdoruesit...",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index 5802f013815..693874cd2f3 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -53,6 +53,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (không tương thích)",
"Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s",
"Already up to date" : "Đã được cập nhật bản mới nhất",
+ "Search contacts …" : "Tìm liên hệ ...",
"No contacts found" : "Không tìm thấy liên hệ nào",
"Show all contacts …" : "Hiển thị tất cả liên hệ…",
"There was an error loading your contacts" : "Đã xảy ra lỗi khi tải liên hệ của bạn",
@@ -255,6 +256,7 @@ OC.L10N.register(
"Confirm your password" : "Xác nhận mật khẩu của bạn",
"Server side authentication failed!" : "Xác thực phía máy chủ không thành công!",
"Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.",
+ "An internal error occurred." : "Đã xảy ra một lỗi nội bộ.",
"Please try again or contact your administrator." : "Vui lòng thử lại hoặc liên hệ quản trị của bạn.",
"Username or email" : "Tên truy cập hoặc email",
"Wrong password. Reset it?" : "Sai mật khẩu. Gửi lại mật khẩu ?",
@@ -262,6 +264,7 @@ OC.L10N.register(
"Log in" : "Đăng nhập",
"Stay logged in" : "Lưu trạng thái đăng nhập",
"Alternative Logins" : "Đăng nhập khác",
+ "App token" : "Dấu hiệu ứng dụng",
"Redirecting …" : "Chuyển tiếp ...",
"New password" : "Mật khẩu mới",
"New Password" : "Mật khẩu mới",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index 8cf8822da71..faf8ced3f5a 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -51,6 +51,7 @@
"%s (incompatible)" : "%s (không tương thích)",
"Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s",
"Already up to date" : "Đã được cập nhật bản mới nhất",
+ "Search contacts …" : "Tìm liên hệ ...",
"No contacts found" : "Không tìm thấy liên hệ nào",
"Show all contacts …" : "Hiển thị tất cả liên hệ…",
"There was an error loading your contacts" : "Đã xảy ra lỗi khi tải liên hệ của bạn",
@@ -253,6 +254,7 @@
"Confirm your password" : "Xác nhận mật khẩu của bạn",
"Server side authentication failed!" : "Xác thực phía máy chủ không thành công!",
"Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.",
+ "An internal error occurred." : "Đã xảy ra một lỗi nội bộ.",
"Please try again or contact your administrator." : "Vui lòng thử lại hoặc liên hệ quản trị của bạn.",
"Username or email" : "Tên truy cập hoặc email",
"Wrong password. Reset it?" : "Sai mật khẩu. Gửi lại mật khẩu ?",
@@ -260,6 +262,7 @@
"Log in" : "Đăng nhập",
"Stay logged in" : "Lưu trạng thái đăng nhập",
"Alternative Logins" : "Đăng nhập khác",
+ "App token" : "Dấu hiệu ứng dụng",
"Redirecting …" : "Chuyển tiếp ...",
"New password" : "Mật khẩu mới",
"New Password" : "Mật khẩu mới",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index cd749c08950..d9616081f53 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -20,6 +20,8 @@ OC.L10N.register(
"Couldn't reset password because the token is expired" : "無法重設密碼,因為 token 過期",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "無法寄送重設 email ,因為這個帳號沒有設定 email 地址,請聯絡您的系統管理員。",
"Password reset" : "密碼重設",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的按鈕以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的連結以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。",
"Reset your password" : "重設您的密碼",
"%s password reset" : "%s 密碼重設",
"Couldn't send reset email. Please contact your administrator." : "無法寄送重設 email ,請聯絡系統管理員",
@@ -38,6 +40,9 @@ OC.L10N.register(
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "檢查是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update" : "已檢查資料庫格式更新",
"Checking updates of apps" : "檢查 app 更新",
+ "Checking for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
+ "Update app \"%s\" from appstore" : "從應用商店更新 \"%s\"",
+ "Checked for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "檢查 %s 是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update for apps" : "已檢查應用程式的資料庫格式更新",
"Updated \"%s\" to %s" : "已更新 %s 到 %s",
@@ -102,8 +107,18 @@ OC.L10N.register(
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面有問題",
"Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "您的網頁伺服器並未正確設定來解析 \"{url}\" ,請查看我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>以瞭解更多",
"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. We suggest to enable Internet connection for this server if you want to have all features." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "記憶體快取尚未設定。如果可以,請完成設定來提升效能。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom出於安全原因很遺憾的無法被PHP讀取,進一步訊息可參考我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">文件</a>",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你目前正運行PHP{version}。基於您的部屬的版本可支援與<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">PHP社群提供的性能與安全性更新</a>,我們很建議您更新您的PHP版本會更好",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "反向代理標頭設定不正確,或者您正透過可信任的代理伺服器存取Nextcloud。若您不是透過可信任的代理伺服器存取Nextcloud,此安全問題會允許攻擊者對Nextcloud假冒IP位址。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>。",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached是用於分散式緩存的設置,但是目前安裝了錯誤的PHP模組為「memcache」。\\OC\\Memcache\\Memcached僅支援「memcached」而不是「memcache」。請參閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki了解兩種模組資訊</a>",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "有些檔案並未通過完整性檢查。可參閱詳細資訊,如我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>(<a href=\"{codeIntegrityDownloadEndpoint}\">無效檔案列表</a>/<a href=\"{rescanEndpoint}\">重新檢查</a>)以解決這些問題。",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP的OPcache功能並未被妥善設定。<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">為了有更好的效能表現</a>我們建議在<code>php.ini檔案</code>中使用以下設定:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "無法取得PHP中的「set_time_limit」函式。這可能導致執行過程中被終止並造成不完整安裝。我們強烈建議啟用該函式。",
"Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "您的資料目錄和檔案看來可以被公開存取,這表示 .htaccess 檔案並未生效,我們強烈建議您設定您的網頁伺服器,拒絕資料目錄被公開存取,或者將您的資料目錄移出網頁伺服器根目錄。",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 標頭配置與 \"{expected}\"不一樣,這是一個潛在安全性或者隱私上的風險,因此我們建議您調整此設定",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "此HTTP「強制安全傳輸」標頭並未設定持續至少\"{seconds}\"秒。為了提高安全性,我們的在<a href=\"{docUrl}\" rel=\"noreferrer\">安全提示</a>中有詳述並建議啟用HSTS。",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在藉由 HTTP 訪問此網站,如我們的<a href=\"{docUrl}\">安全性提示</a>所述,我們強烈建議設定您的伺服器須要求使用 HTTPS",
"Shared" : "已分享",
"Shared with {recipients}" : "與 {recipients} 分享",
@@ -148,6 +163,8 @@ OC.L10N.register(
"Could not unshare" : "無法取消分享",
"Error while sharing" : "分享時發生錯誤",
"Share details could not be loaded for this item." : "無法載入分享細節",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["至少需要 {count} 字才能自動完成"],
+ "This list is maybe truncated - please refine your search term to see more results." : "這個列表有可能並不完全 - 請使用更好的搜尋字眼以查看更多的結果",
"No users or groups found for {search}" : "沒有群組或使用者符合 {search}",
"No users found for {search}" : "沒有使用者符合 {search}",
"An error occurred. Please try again" : "發生錯誤,請再試一次",
@@ -156,7 +173,11 @@ OC.L10N.register(
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "分享",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "透過輸入使用者、群組名稱,聯盟式雲端ID或e-mail信箱來分享給其他人。 ",
+ "Share with other people by entering a user or group or a federated cloud ID." : "透過輸入使用者、群組名稱,聯盟式雲端ID來分享給其他人。",
+ "Share with other people by entering a user or group or an email address." : "透過輸入使用者、群組名稱或email來分享給其他人。",
"Name or email address..." : "名字或電子郵件地址",
+ "Name or federated cloud ID..." : "名稱或者聯盟式雲端ID...",
"Name, federated cloud ID or email address..." : "名字、聯邦雲 ID 或是電子郵件地址",
"Name..." : "名字…",
"Error" : "錯誤",
@@ -174,6 +195,7 @@ OC.L10N.register(
"sunny" : "晴朗的",
"Hello {name}, the weather is {weather}" : "哈囉 {name}, 天氣是 {weather}",
"Hello {name}" : "哈囉 {name}",
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>以下是您的搜尋結果<script>警告(1)</script></strong>",
"new" : "新",
"_download %n file_::_download %n files_" : ["下載 %n 個檔案"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷",
@@ -181,8 +203,11 @@ OC.L10N.register(
"An error occurred." : "發生錯誤",
"Please reload the page." : "請重新整理頁面",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "更新不成功。請在<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud社群</a>回報此問題。",
"Continue to Nextcloud" : "繼續前往 Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["更新成功,將在 %n 秒後重導向至 Nextcloud"],
"Searching other places" : "搜尋其他位置",
+ "No search results in other folders for {tag}{filter}{endtag}" : "{tag}{filter}{endtag} 在其他資料夾中沒有比對結果",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"],
"Personal" : "個人",
"Users" : "使用者",
@@ -208,6 +233,7 @@ OC.L10N.register(
"Trace" : "追蹤",
"Security warning" : "安全性警告",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "關於如何有效設定您伺服器的資訊,請參閱此<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">說明文件</a>",
"Create an <strong>admin account</strong>" : "建立一個<strong>管理者帳號</strong>",
"Username" : "使用者名稱",
"Storage & database" : "儲存空間和資料庫",
@@ -221,6 +247,7 @@ OC.L10N.register(
"Database name" : "資料庫名稱",
"Database tablespace" : "資料庫 tablespace",
"Database host" : "資料庫主機",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "請將具體指定連接埠號與主機名稱。(例如:localhost:5432)",
"Performance warning" : "效能警告",
"SQLite will be used as database." : "將使用 SQLite 為資料庫",
"For larger installations we recommend to choose a different database backend." : "在大型安裝中建議使用其他種資料庫",
@@ -244,10 +271,15 @@ OC.L10N.register(
"Log in" : "登入",
"Stay logged in" : "保持登入狀態",
"Alternative Logins" : "其他登入方法",
+ "You are about to grant \"%s\" access to your %s account." : "您將授予「%s」存取您的%s帳戶",
+ "App token" : "App token",
+ "Alternative login using app token" : "透過應用程式憑證的方式登入",
+ "Redirecting …" : "重新導向…",
"New password" : "新密碼",
"New Password" : "新密碼",
"Reset password" : "重設密碼",
"Two-factor authentication" : "二階段認證",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "您的帳號已啟用進階安全機制,請使用第二階段來認證。",
"Cancel log in" : "取消登入",
"Use backup code" : "使用備用認證碼",
"Error while validating your second factor" : "驗證二階段因子發生錯誤",
@@ -265,6 +297,10 @@ OC.L10N.register(
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "在大型安裝上,為了避免升級請求逾時,你也可以在安裝目錄執行下列指令:",
"Detailed logs" : "詳細記錄檔",
"Update needed" : "需要更新",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名使用者,服務規模較大,請透過命令提示字元介面更新",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "請參閱<a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">說明文件</a>取得協助。",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁介面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。",
+ "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新",
"This %s instance is currently in maintenance mode, which may take a while." : "這個 %s 安裝目前處於維護模式,需要一段時間恢復。",
"This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理",
"Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員",
@@ -276,7 +312,19 @@ OC.L10N.register(
"Error while unsharing" : "取消分享時發生錯誤",
"can reshare" : "允許轉分享",
"can edit" : "可編輯",
+ "can create" : "允許新增",
+ "can change" : "允許更動",
+ "can delete" : "允許刪除",
"access control" : "存取控制",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "透過使用他人的聯盟式雲端ID如username@example.com/nextcloud,可以在別的伺服器上分享給其他人",
+ "Share with users or by mail..." : "與使用者或透過email分享...",
+ "Share with users or remote users..." : "與使用者或遠端使用者分享…",
+ "Share with users, remote users or by mail..." : "與用戶、遠端使用者或透過email分享 ...",
+ "Share with users or groups..." : "與使用者和群組分享...",
+ "Share with users, groups or by mail..." : "與用戶、群組或透過email分享 ...",
+ "Share with users, groups or remote users..." : "與用戶、群組或是遠端使用者分享 ...",
+ "Share with users, groups, remote users or by mail..." : "與用戶、群組、遠端使用者或是透過email分享 ...",
+ "Share with users..." : "分享給其他使用者…",
"The object type is not specified." : "未指定物件類型",
"Enter new" : "輸入新的",
"Add" : "增加",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 11121e9d580..c4a5b6eb603 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -18,6 +18,8 @@
"Couldn't reset password because the token is expired" : "無法重設密碼,因為 token 過期",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "無法寄送重設 email ,因為這個帳號沒有設定 email 地址,請聯絡您的系統管理員。",
"Password reset" : "密碼重設",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的按鈕以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的連結以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。",
"Reset your password" : "重設您的密碼",
"%s password reset" : "%s 密碼重設",
"Couldn't send reset email. Please contact your administrator." : "無法寄送重設 email ,請聯絡系統管理員",
@@ -36,6 +38,9 @@
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "檢查是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update" : "已檢查資料庫格式更新",
"Checking updates of apps" : "檢查 app 更新",
+ "Checking for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
+ "Update app \"%s\" from appstore" : "從應用商店更新 \"%s\"",
+ "Checked for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "檢查 %s 是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update for apps" : "已檢查應用程式的資料庫格式更新",
"Updated \"%s\" to %s" : "已更新 %s 到 %s",
@@ -100,8 +105,18 @@
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面有問題",
"Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "您的網頁伺服器並未正確設定來解析 \"{url}\" ,請查看我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>以瞭解更多",
"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. We suggest to enable Internet connection for this server if you want to have all features." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "記憶體快取尚未設定。如果可以,請完成設定來提升效能。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom出於安全原因很遺憾的無法被PHP讀取,進一步訊息可參考我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">文件</a>",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你目前正運行PHP{version}。基於您的部屬的版本可支援與<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">PHP社群提供的性能與安全性更新</a>,我們很建議您更新您的PHP版本會更好",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "反向代理標頭設定不正確,或者您正透過可信任的代理伺服器存取Nextcloud。若您不是透過可信任的代理伺服器存取Nextcloud,此安全問題會允許攻擊者對Nextcloud假冒IP位址。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>。",
+ "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached是用於分散式緩存的設置,但是目前安裝了錯誤的PHP模組為「memcache」。\\OC\\Memcache\\Memcached僅支援「memcached」而不是「memcache」。請參閱<a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki了解兩種模組資訊</a>",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "有些檔案並未通過完整性檢查。可參閱詳細資訊,如我們的<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">說明文件</a>(<a href=\"{codeIntegrityDownloadEndpoint}\">無效檔案列表</a>/<a href=\"{rescanEndpoint}\">重新檢查</a>)以解決這些問題。",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP的OPcache功能並未被妥善設定。<a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">為了有更好的效能表現</a>我們建議在<code>php.ini檔案</code>中使用以下設定:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "無法取得PHP中的「set_time_limit」函式。這可能導致執行過程中被終止並造成不完整安裝。我們強烈建議啟用該函式。",
"Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "您的資料目錄和檔案看來可以被公開存取,這表示 .htaccess 檔案並未生效,我們強烈建議您設定您的網頁伺服器,拒絕資料目錄被公開存取,或者將您的資料目錄移出網頁伺服器根目錄。",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 標頭配置與 \"{expected}\"不一樣,這是一個潛在安全性或者隱私上的風險,因此我們建議您調整此設定",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "此HTTP「強制安全傳輸」標頭並未設定持續至少\"{seconds}\"秒。為了提高安全性,我們的在<a href=\"{docUrl}\" rel=\"noreferrer\">安全提示</a>中有詳述並建議啟用HSTS。",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在藉由 HTTP 訪問此網站,如我們的<a href=\"{docUrl}\">安全性提示</a>所述,我們強烈建議設定您的伺服器須要求使用 HTTPS",
"Shared" : "已分享",
"Shared with {recipients}" : "與 {recipients} 分享",
@@ -146,6 +161,8 @@
"Could not unshare" : "無法取消分享",
"Error while sharing" : "分享時發生錯誤",
"Share details could not be loaded for this item." : "無法載入分享細節",
+ "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["至少需要 {count} 字才能自動完成"],
+ "This list is maybe truncated - please refine your search term to see more results." : "這個列表有可能並不完全 - 請使用更好的搜尋字眼以查看更多的結果",
"No users or groups found for {search}" : "沒有群組或使用者符合 {search}",
"No users found for {search}" : "沒有使用者符合 {search}",
"An error occurred. Please try again" : "發生錯誤,請再試一次",
@@ -154,7 +171,11 @@
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "分享",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "透過輸入使用者、群組名稱,聯盟式雲端ID或e-mail信箱來分享給其他人。 ",
+ "Share with other people by entering a user or group or a federated cloud ID." : "透過輸入使用者、群組名稱,聯盟式雲端ID來分享給其他人。",
+ "Share with other people by entering a user or group or an email address." : "透過輸入使用者、群組名稱或email來分享給其他人。",
"Name or email address..." : "名字或電子郵件地址",
+ "Name or federated cloud ID..." : "名稱或者聯盟式雲端ID...",
"Name, federated cloud ID or email address..." : "名字、聯邦雲 ID 或是電子郵件地址",
"Name..." : "名字…",
"Error" : "錯誤",
@@ -172,6 +193,7 @@
"sunny" : "晴朗的",
"Hello {name}, the weather is {weather}" : "哈囉 {name}, 天氣是 {weather}",
"Hello {name}" : "哈囉 {name}",
+ "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>以下是您的搜尋結果<script>警告(1)</script></strong>",
"new" : "新",
"_download %n file_::_download %n files_" : ["下載 %n 個檔案"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷",
@@ -179,8 +201,11 @@
"An error occurred." : "發生錯誤",
"Please reload the page." : "請重新整理頁面",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "更新不成功。請在<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud社群</a>回報此問題。",
"Continue to Nextcloud" : "繼續前往 Nextcloud",
+ "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["更新成功,將在 %n 秒後重導向至 Nextcloud"],
"Searching other places" : "搜尋其他位置",
+ "No search results in other folders for {tag}{filter}{endtag}" : "{tag}{filter}{endtag} 在其他資料夾中沒有比對結果",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"],
"Personal" : "個人",
"Users" : "使用者",
@@ -206,6 +231,7 @@
"Trace" : "追蹤",
"Security warning" : "安全性警告",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "關於如何有效設定您伺服器的資訊,請參閱此<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">說明文件</a>",
"Create an <strong>admin account</strong>" : "建立一個<strong>管理者帳號</strong>",
"Username" : "使用者名稱",
"Storage & database" : "儲存空間和資料庫",
@@ -219,6 +245,7 @@
"Database name" : "資料庫名稱",
"Database tablespace" : "資料庫 tablespace",
"Database host" : "資料庫主機",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "請將具體指定連接埠號與主機名稱。(例如:localhost:5432)",
"Performance warning" : "效能警告",
"SQLite will be used as database." : "將使用 SQLite 為資料庫",
"For larger installations we recommend to choose a different database backend." : "在大型安裝中建議使用其他種資料庫",
@@ -242,10 +269,15 @@
"Log in" : "登入",
"Stay logged in" : "保持登入狀態",
"Alternative Logins" : "其他登入方法",
+ "You are about to grant \"%s\" access to your %s account." : "您將授予「%s」存取您的%s帳戶",
+ "App token" : "App token",
+ "Alternative login using app token" : "透過應用程式憑證的方式登入",
+ "Redirecting …" : "重新導向…",
"New password" : "新密碼",
"New Password" : "新密碼",
"Reset password" : "重設密碼",
"Two-factor authentication" : "二階段認證",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "您的帳號已啟用進階安全機制,請使用第二階段來認證。",
"Cancel log in" : "取消登入",
"Use backup code" : "使用備用認證碼",
"Error while validating your second factor" : "驗證二階段因子發生錯誤",
@@ -263,6 +295,10 @@
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "在大型安裝上,為了避免升級請求逾時,你也可以在安裝目錄執行下列指令:",
"Detailed logs" : "詳細記錄檔",
"Update needed" : "需要更新",
+ "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名使用者,服務規模較大,請透過命令提示字元介面更新",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "請參閱<a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">說明文件</a>取得協助。",
+ "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "若我繼續透過網頁介面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。",
+ "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新",
"This %s instance is currently in maintenance mode, which may take a while." : "這個 %s 安裝目前處於維護模式,需要一段時間恢復。",
"This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理",
"Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員",
@@ -274,7 +310,19 @@
"Error while unsharing" : "取消分享時發生錯誤",
"can reshare" : "允許轉分享",
"can edit" : "可編輯",
+ "can create" : "允許新增",
+ "can change" : "允許更動",
+ "can delete" : "允許刪除",
"access control" : "存取控制",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "透過使用他人的聯盟式雲端ID如username@example.com/nextcloud,可以在別的伺服器上分享給其他人",
+ "Share with users or by mail..." : "與使用者或透過email分享...",
+ "Share with users or remote users..." : "與使用者或遠端使用者分享…",
+ "Share with users, remote users or by mail..." : "與用戶、遠端使用者或透過email分享 ...",
+ "Share with users or groups..." : "與使用者和群組分享...",
+ "Share with users, groups or by mail..." : "與用戶、群組或透過email分享 ...",
+ "Share with users, groups or remote users..." : "與用戶、群組或是遠端使用者分享 ...",
+ "Share with users, groups, remote users or by mail..." : "與用戶、群組、遠端使用者或是透過email分享 ...",
+ "Share with users..." : "分享給其他使用者…",
"The object type is not specified." : "未指定物件類型",
"Enter new" : "輸入新的",
"Add" : "增加",
diff --git a/core/register_command.php b/core/register_command.php
index bfb1138c5e3..02bdbedc6e0 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -59,9 +59,10 @@ $application->add(new \OC\Core\Command\Integrity\CheckCore(
if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\App\Disable(\OC::$server->getAppManager()));
$application->add(new OC\Core\Command\App\Enable(\OC::$server->getAppManager()));
+ $application->add(new OC\Core\Command\App\Install());
$application->add(new OC\Core\Command\App\GetPath());
$application->add(new OC\Core\Command\App\ListApps(\OC::$server->getAppManager()));
-
+
$application->add(new OC\Core\Command\TwoFactorAuth\Enable(
\OC::$server->getTwoFactorAuthManager(), \OC::$server->getUserManager()
));
@@ -82,12 +83,12 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\Config\System\GetConfig(\OC::$server->getSystemConfig()));
$application->add(new OC\Core\Command\Config\System\SetConfig(\OC::$server->getSystemConfig()));
- $application->add(new OC\Core\Command\Db\GenerateChangeScript());
$application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory(\OC::$server->getSystemConfig())));
$application->add(new OC\Core\Command\Db\ConvertMysqlToMB4(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection(), \OC::$server->getURLGenerator(), \OC::$server->getLogger()));
$application->add(new OC\Core\Command\Db\Migrations\StatusCommand(\OC::$server->getDatabaseConnection()));
$application->add(new OC\Core\Command\Db\Migrations\MigrateCommand(\OC::$server->getDatabaseConnection()));
$application->add(new OC\Core\Command\Db\Migrations\GenerateCommand(\OC::$server->getDatabaseConnection()));
+ $application->add(new OC\Core\Command\Db\Migrations\GenerateFromSchemaFileCommand(\OC::$server->getConfig(), \OC::$server->getAppManager(), \OC::$server->getDatabaseConnection()));
$application->add(new OC\Core\Command\Db\Migrations\ExecuteCommand(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()));
$application->add(new OC\Core\Command\Encryption\Disable(\OC::$server->getConfig()));
diff --git a/core/routes.php b/core/routes.php
index c167dad2f9f..a572c83d749 100644
--- a/core/routes.php
+++ b/core/routes.php
@@ -89,6 +89,10 @@ $this->create('files.viewcontroller.showFile', '/f/{fileid}')->action(function($
});
// Call routes
+/**
+ * @suppress PhanUndeclaredClassConstant
+ * @suppress PhanUndeclaredClassMethod
+ */
$this->create('spreed.pagecontroller.showCall', '/call/{token}')->action(function($urlParams) {
if (class_exists(\OCA\Spreed\AppInfo\Application::class, false)) {
$app = new \OCA\Spreed\AppInfo\Application($urlParams);
diff --git a/core/templates/403.php b/core/templates/403.php
index 7d07c72c873..e053fad764a 100644
--- a/core/templates/403.php
+++ b/core/templates/403.php
@@ -1,10 +1,10 @@
<?php
// @codeCoverageIgnoreStart
-if(!isset($_)) {//also provide standalone error page
+if(!isset($_)) {//standalone page is not supported anymore - redirect to /
require_once '../../lib/base.php';
-
- $tmpl = new OC_Template( '', '403', 'guest' );
- $tmpl->printPage();
+
+ $urlGenerator = \OC::$server->getURLGenerator();
+ header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
exit;
}
// @codeCoverageIgnoreEnd
diff --git a/core/templates/404.php b/core/templates/404.php
index cc45cbeaf5d..0f7318e937a 100644
--- a/core/templates/404.php
+++ b/core/templates/404.php
@@ -3,11 +3,11 @@
/** @var $l \OCP\IL10N */
/** @var $theme OCP\Defaults */
// @codeCoverageIgnoreStart
-if(!isset($_)) {//also provide standalone error page
+if(!isset($_)) {//standalone page is not supported anymore - redirect to /
require_once '../../lib/base.php';
-
- $tmpl = new OC_Template( '', '404', 'guest' );
- $tmpl->printPage();
+
+ $urlGenerator = \OC::$server->getURLGenerator();
+ header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
exit;
}
// @codeCoverageIgnoreEnd
diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php
index d97da109842..9a4f9c37198 100644
--- a/core/templates/layout.guest.php
+++ b/core/templates/layout.guest.php
@@ -33,7 +33,6 @@
<img src="<?php p($theme->getLogo()); ?>"/>
<?php endif; ?>
</div>
- <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div>
</div>
</header>
<?php endif; ?>
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 337032ab664..8dfd86731ce 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -31,7 +31,7 @@
<div id="notification"></div>
</div>
<header role="banner"><div id="header">
- <div id="header-left">
+ <div class="header-left">
<a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
id="nextcloud" tabindex="1">
<div class="logo logo-icon">
@@ -96,7 +96,7 @@
</div>
- <div id="header-right">
+ <div class="header-right">
<form class="searchbox" action="#" method="post" role="search" novalidate>
<label for="searchbox" class="hidden-visually">
<?php p($l->t('Search'));?>
@@ -107,7 +107,9 @@
<button class="icon-close-white" type="reset"></button>
</form>
<div id="contactsmenu">
- <div class="icon-contacts menutoggle"></div>
+ <div class="icon-contacts icon-white menutoggle">
+ <?php echo file_get_contents('core/img/places/contacts.svg'); ?>
+ </div>
<div class="menu"></div>
</div>
<div id="settings">
diff --git a/db_structure.xml b/db_structure.xml
deleted file mode 100644
index ac7f4b3c71b..00000000000
--- a/db_structure.xml
+++ /dev/null
@@ -1,2291 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<database>
-
- <name>*dbname*</name>
- <create>true</create>
- <overwrite>false</overwrite>
-
- <charset>utf8</charset>
-
- <table>
-
- <!--
- Namespaced Key-Value Store for Application Configuration.
- - Keys are namespaced per appid.
- - E.g. (core, global_cache_gc_lastrun) -> 1385463286
- -->
- <name>*dbprefix*appconfig</name>
-
- <declaration>
-
- <field>
- <name>appid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>32</length>
- </field>
-
- <field>
- <name>configkey</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>configvalue</name>
- <type>clob</type>
- <notnull>false</notnull>
- </field>
-
- <index>
- <name>appconfig_appid_key_index</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>appid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>configkey</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- <index>
- <name>appconfig_config_key_index</name>
- <field>
- <name>configkey</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- <index>
- <name>appconfig_appid_key</name>
- <field>
- <name>appid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Bidirectional Map for Storage Names and Storage Ids.
- - Assigns each storage name a unique storage id integer.
- - Long storage names are hashed.
- - E.g. local::/tmp/ <-> 2
- - E.g. b5db994aa8c6625100e418406c798269 <-> 27
- -->
- <name>*dbprefix*storages</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>numeric_id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <field>
- <name>available</name>
- <type>integer</type>
- <default>1</default>
- <notnull>true</notnull>
- </field>
-
- <field>
- <name>last_checked</name>
- <type>integer</type>
- </field>
-
- <index>
- <name>storages_id_index</name>
- <unique>true</unique>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <!-- a list of all mounted storage per user, populated on filesystem setup -->
- <table>
-
- <name>*dbprefix*mounts</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <field>
- <name>storage_id</name>
- <type>integer</type>
- <notnull>true</notnull>
- </field>
-
- <!-- fileid of the root of the mount, foreign key: oc_filecache.fileid -->
- <field>
- <name>root_id</name>
- <type>integer</type>
- <notnull>true</notnull>
- </field>
-
- <field>
- <name>user_id</name>
- <type>text</type>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>mount_point</name>
- <type>text</type>
- <notnull>true</notnull>
- <length>4000</length>
- </field>
-
- <field>
- <name>mount_id</name>
- <type>integer</type>
- </field>
-
- <index>
- <name>mounts_user_index</name>
- <unique>false</unique>
- <field>
- <name>user_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>mounts_storage_index</name>
- <unique>false</unique>
- <field>
- <name>storage_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>mounts_root_index</name>
- <unique>false</unique>
- <field>
- <name>root_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>mounts_mount_id_index</name>
- <unique>false</unique>
- <field>
- <name>mount_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>mounts_user_root_index</name>
- <unique>true</unique>
- <field>
- <name>user_id</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>root_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Bidirectional Map for Mimetypes and Mimetype Id
- - Assigns each mimetype (and supertype) a unique mimetype id integer.
- - E.g. application <-> 5
- - E.g. application/pdf <-> 6
- -->
- <name>*dbprefix*mimetypes</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <field>
- <name>mimetype</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <index>
- <name>mimetype_id_index</name>
- <unique>true</unique>
- <field>
- <name>mimetype</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Main file table containing one row for each directory and file.
- - Assigns a unique integer fileid to each file (and directory)
- - Assigns an etag to each file (and directory)
- - Caches various file/dir properties such as:
- - path (filename, e.g. files/combinatoricslib-2.0_doc.zip)
- - path_hash = md5(path)
- - name (basename, e.g. combinatoricslib-2.0_doc.zip)
- - size (for directories this is the sum of all contained file sizes)
- -->
- <name>*dbprefix*filecache</name>
-
- <declaration>
-
- <field>
- <name>fileid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <!-- Foreign Key storages::numeric_id -->
- <field>
- <name>storage</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>path</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>4000</length>
- </field>
-
- <field>
- <name>path_hash</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>32</length>
- </field>
-
- <!-- Foreign Key filecache::fileid -->
- <field>
- <name>parent</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>name</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>250</length>
- </field>
-
- <!-- Foreign Key mimetypes::id -->
- <field>
- <name>mimetype</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <!-- Foreign Key mimetypes::id -->
- <field>
- <name>mimepart</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>size</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>8</length>
- </field>
-
- <field>
- <name>mtime</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>storage_mtime</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>encrypted</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>unencrypted_size</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>8</length>
- </field>
-
- <field>
- <name>etag</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>40</length>
- </field>
-
- <field>
- <name>permissions</name>
- <type>integer</type>
- <default>0</default>
- <notnull>false</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>checksum</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>255</length>
- </field>
-
-
- <index>
- <name>fs_storage_path_hash</name>
- <unique>true</unique>
- <field>
- <name>storage</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>path_hash</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>fs_parent_name_hash</name>
- <field>
- <name>parent</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>name</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>fs_storage_mimetype</name>
- <field>
- <name>storage</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>mimetype</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>fs_storage_mimepart</name>
- <field>
- <name>storage</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>mimepart</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>fs_storage_size</name>
- <field>
- <name>storage</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>size</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>fileid</name>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Stores which groups have which users as members in an n:m relationship.
- - Maps group id (gid) to a set of users (uid)
- - Maps user id (uid) to a set of groups (gid) (but without index)
- -->
- <name>*dbprefix*group_user</name>
-
- <declaration>
-
- <!-- Foreign Key groups::gid -->
- <field>
- <name>gid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <index>
- <name>gu_gid_uid_index</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>gid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>gu_uid_index</name>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Stores which groups have which users as admins in an n:m relationship.
- - Maps group id (gid) to a set of users (uid)
- - Maps user id (uid) to a set of groups (gid)
-
- NOTE: This could (very likely) be reduced to a single bit in group_user
- instead of repeating varchars gid and uid here
- -->
- <name>*dbprefix*group_admin</name>
-
- <declaration>
-
- <!-- Foreign Key groups::gid -->
- <field>
- <name>gid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
- <index>
- <name>group_admin_uid</name>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>ga_gid_uid_index</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>gid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- A simple list of groups.
- -->
- <name>*dbprefix*groups</name>
-
- <declaration>
-
- <field>
- <name>gid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <index>
- <name>groups_pKey</name>
- <primary>true</primary>
- <field>
- <name>gid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Namespaced Key-Value Store for User Preferences
- - Keys are namespaced per userid and appid.
- - E.g. (admin, files, cache_version) -> 5
- -->
- <name>*dbprefix*preferences</name>
-
- <declaration>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>userid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>appid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>32</length>
- </field>
-
- <field>
- <name>configkey</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>configvalue</name>
- <type>clob</type>
- <notnull>false</notnull>
- </field>
-
- <index>
- <name>pref_userid_appid_key_index</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>userid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>appid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>configkey</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- WebDAV properties.
- -->
- <name>*dbprefix*properties</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <autoincrement>1</autoincrement>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>userid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>propertypath</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>propertyname</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>propertyvalue</name>
- <type>clob</type>
- <notnull>true</notnull>
- </field>
-
- <index>
- <name>property_index</name>
- <field>
- <name>userid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Shares of all types (user-to-user, external-via-link, etc.)
- -->
- <name>*dbprefix*share</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <autoincrement>1</autoincrement>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <!-- Constant OCP\Share::SHARE_TYPE_* -->
- <field>
- <name>share_type</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <!-- Foreign Key users::uid or NULL -->
- <field>
- <name>share_with</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>255</length>
- </field>
- <field>
- <name>password</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>255</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <!-- This is the owner of the share
- which does not have to be the initiator of the share -->
- <field>
- <name>uid_owner</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <!-- This is the initiator of the share -->
- <field>
- <name>uid_initiator</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
-
-
- <!-- Foreign Key share::id or NULL -->
- <field>
- <name>parent</name>
- <type>integer</type>
- <notnull>false</notnull>
- <length>4</length>
- </field>
-
- <!-- E.g. file or folder -->
- <field>
- <name>item_type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Foreign Key filecache::fileid -->
- <field>
- <name>item_source</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>item_target</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>255</length>
- </field>
-
- <!-- Foreign Key filecache::fileid -->
- <field>
- <name>file_source</name>
- <type>integer</type>
- <notnull>false</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>file_target</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>512</length>
- </field>
-
- <!-- Permission bitfield -->
- <field>
- <name>permissions</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <!-- Time of share creation -->
- <field>
- <name>stime</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>8</length>
- </field>
-
- <!-- Whether the receiver accepted the share, if share_with is set. -->
- <field>
- <name>accepted</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <!-- Time of share expiration -->
- <field>
- <name>expiration</name>
- <type>timestamp</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>token</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>32</length>
- </field>
-
- <field>
- <name>mail_send</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <field>
- <name>share_name</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <index>
- <name>item_share_type_index</name>
- <field>
- <name>item_type</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>share_type</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- <index>
- <name>file_source_index</name>
- <field>
- <name>file_source</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- <index>
- <name>token_index</name>
- <field>
- <name>token</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Scheduled background jobs.
- See OC\BackgroundJob\JobList.
- -->
- <name>*dbprefix*jobs</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>class</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>argument</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>4000</length>
- </field>
-
- <field>
- <!-- timestamp when the job was executed the last time -->
- <name>last_run</name>
- <type>integer</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <!-- timestamp when the job was checked if it needs execution the last time -->
- <name>last_checked</name>
- <type>integer</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <!-- timestamp when the job was reserved the last time, 1 day timeout -->
- <name>reserved_at</name>
- <type>integer</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <!-- time for execution of the job -->
- <name>execution_duration</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- </field>
-
- <index>
- <name>job_class_index</name>
- <field>
- <name>class</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- List of usernames, their display name and login password.
- -->
- <name>*dbprefix*users</name>
-
- <declaration>
-
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>displayname</name>
- <type>text</type>
- <default></default>
- <length>64</length>
- </field>
-
- <field>
- <name>password</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <index>
- <name>users_pKey</name>
- <primary>true</primary>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <name>*dbprefix*authtoken</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>login_name</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>password</name>
- <type>clob</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>name</name>
- <type>clob</type>
- <default></default>
- <notnull>true</notnull>
- </field>
-
- <field>
- <name>token</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>200</length>
- </field>
-
- <field>
- <name>type</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>2</length>
- </field>
-
- <field>
- <name>remember</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>1</length>
- </field>
-
- <field>
- <name>last_activity</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>last_check</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>scope</name>
- <type>clob</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <index>
- <name>authtoken_token_index</name>
- <unique>true</unique>
- <field>
- <name>token</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>authtoken_last_activity_index</name>
- <field>
- <name>last_activity</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
-
- <!--
- List of usernames, their display name and login password.
- -->
- <name>*dbprefix*bruteforce_attempts</name>
-
- <declaration>
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>action</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>occurred</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>ip</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>subnet</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>metadata</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <index>
- <name>bruteforce_attempts_ip</name>
- <field>
- <name>ip</name>
- <sorting>ascending</sorting>
- </field>
- </index>
- <index>
- <name>bruteforce_attempts_subnet</name>
- <field>
- <name>subnet</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- List of tags (category) + a unique tag id (id) per user (uid) and type.
- -->
- <name>*dbprefix*vcategory</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>category</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <index>
- <name>uid_index</name>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>type_index</name>
- <field>
- <name>type</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>category_index</name>
- <field>
- <name>category</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
-
- <!--
- Object-Tag associations per tag type.
- -->
- <name>*dbprefix*vcategory_to_object</name>
-
- <declaration>
-
- <field>
- <name>objid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <!-- Foreign Key vcategory::id -->
- <field>
- <name>categoryid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <index>
- <primary>true</primary>
- <unique>true</unique>
- <name>category_object_index</name>
- <field>
- <name>categoryid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>objid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>type</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>vcategory_objectd_index</name>
- <field>
- <name>objid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>type</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <!--
- List of system-wide tags
- -->
- <name>*dbprefix*systemtag</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <!-- Tag name -->
- <field>
- <name>name</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Visibility: 0 user-not-visible, 1 user-visible -->
- <field>
- <name>visibility</name>
- <type>integer</type>
- <default>1</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <!-- Editable: 0 user-not-editable, 1 user-editable -->
- <field>
- <name>editable</name>
- <type>integer</type>
- <default>1</default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <index>
- <name>tag_ident</name>
- <unique>true</unique>
- <field>
- <name>name</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>visibility</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>editable</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
-
- <!--
- System tag to object associations per object type.
- -->
- <name>*dbprefix*systemtag_object_mapping</name>
-
- <declaration>
-
- <!-- object id (ex: file id for files)-->
- <field>
- <name>objectid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- object type (ex: "files")-->
- <field>
- <name>objecttype</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <!-- Foreign Key systemtag::id -->
- <field>
- <name>systemtagid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <index>
- <unique>true</unique>
- <name>mapping</name>
- <field>
- <name>objecttype</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>objectid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>systemtagid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- System tag to group mapping
- -->
- <name>*dbprefix*systemtag_group</name>
-
- <declaration>
-
- <!-- Foreign Key systemtag::id -->
- <field>
- <name>systemtagid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>gid</name>
- <type>string</type>
- <notnull>true</notnull>
- </field>
-
- <index>
- <name>systemtag_group</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>gid</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>systemtagid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Namespaced Key-Value Store for arbitrary data.
- - Keys are namespaced per userid and appid.
- - E.g. (admin, files, foo) -> bar
- -->
- <name>*dbprefix*privatedata</name>
-
- <declaration>
-
- <field>
- <name>keyid</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- <autoincrement>1</autoincrement>
- </field>
-
- <!-- Foreign Key users::uid -->
- <field>
- <name>user</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>app</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>key</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>value</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <index>
- <primary>true</primary>
- <unique>true</unique>
- <name>keyid_index</name>
- <field>
- <name>keyid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
-
- <!--
- Table for storing transactional file locking
- -->
- <name>*dbprefix*file_locks</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- <autoincrement>1</autoincrement>
- </field>
-
- <field>
- <name>lock</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <field>
- <name>key</name>
- <type>text</type>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>ttl</name>
- <type>integer</type>
- <default>-1</default>
- <notnull>true</notnull>
- <length>4</length>
- </field>
-
- <index>
- <primary>true</primary>
- <unique>true</unique>
- <name>lock_id_index</name>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <unique>true</unique>
- <name>lock_key_index</name>
- <field>
- <name>key</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>lock_ttl_index</name>
- <field>
- <name>ttl</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <!--
- default place to store comment data
- -->
- <name>*dbprefix*comments</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- <autoincrement>1</autoincrement>
- </field>
-
- <field>
- <name>parent_id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>topmost_parent_id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>children_count</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <unsigned>true</unsigned>
- <length>4</length>
- </field>
-
- <field>
- <name>actor_type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>actor_id</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>message</name>
- <type>clob</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>verb</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>creation_timestamp</name>
- <type>timestamp</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>latest_child_timestamp</name>
- <type>timestamp</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>object_type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>object_id</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <index>
- <name>comments_parent_id_index</name>
- <unique>false</unique>
- <field>
- <name>parent_id</name>
- <sorting>descending</sorting>
- </field>
- </index>
-
- <index>
- <name>comments_topmost_parent_id_idx</name>
- <unique>false</unique>
- <field>
- <name>topmost_parent_id</name>
- <sorting>descending</sorting>
- </field>
- </index>
-
- <index>
- <name>comments_object_index</name>
- <unique>false</unique>
- <field>
- <name>object_type</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>object_id</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>creation_timestamp</name>
- <sorting>descending</sorting>
- </field>
- </index>
-
- <index>
- <name>comments_actor_index</name>
- <unique>false</unique>
- <field>
- <name>actor_type</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>actor_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <!--
- default place to store per user and object read markers
- -->
- <name>*dbprefix*comments_read_markers</name>
-
- <declaration>
-
- <field>
- <name>user_id</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>marker_datetime</name>
- <type>timestamp</type>
- <default></default>
- <notnull>false</notnull>
- </field>
-
- <field>
- <name>object_type</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>object_id</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <index>
- <name>comments_marker_object_index</name>
- <unique>false</unique>
- <field>
- <name>object_type</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>object_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>comments_marker_index</name>
- <unique>true</unique>
- <field>
- <name>user_id</name>
- <sorting>descending</sorting>
- </field>
- <field>
- <name>object_type</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>object_id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <!--
- Encrypted credentials storage
- -->
- <name>*dbprefix*credentials</name>
-
- <declaration>
-
- <field>
- <name>user</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>identifier</name>
- <type>text</type>
- <notnull>true</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>credentials</name>
- <type>clob</type>
- <notnull>false</notnull>
- </field>
-
- <index>
- <name>credentials_user_id</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>user</name>
- <sorting>ascending</sorting>
- </field>
- <field>
- <name>identifier</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>credentials_user</name>
- <unique>false</unique>
- <field>
- <name>user</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
-
- </table>
-
- <table>
- <!-- Extra admin settings sections -->
- <name>*dbprefix*admin_sections</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>class</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>priority</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <index>
- <name>admin_sections_id_index</name>
- <primary>true</primary>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>admin_sections_class</name>
- <unique>true</unique>
- <field>
- <name>class</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
- <!-- Extra admin settings -->
- <name>*dbprefix*admin_settings</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <field>
- <name>class</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <!-- id of the section, foreign key: admin_sections.id -->
- <field>
- <name>section</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>priority</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <index>
- <name>admin_settings_id_index</name>
- <primary>true</primary>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>admin_settings_class</name>
- <unique>true</unique>
- <field>
- <name>class</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>admin_settings_section</name>
- <unique>false</unique>
- <field>
- <name>section</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
- <!-- Extra personal settings sections -->
- <name>*dbprefix*personal_sections</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>class</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <field>
- <name>priority</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <index>
- <name>personal_sections_id_index</name>
- <primary>true</primary>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>personal_sections_class</name>
- <unique>true</unique>
- <field>
- <name>class</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
- <!-- Extra personal settings -->
- <name>*dbprefix*personal_settings</name>
-
- <declaration>
-
- <field>
- <name>id</name>
- <type>integer</type>
- <default>0</default>
- <notnull>true</notnull>
- <autoincrement>1</autoincrement>
- <length>4</length>
- </field>
-
- <field>
- <name>class</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>255</length>
- </field>
-
- <!-- id of the section, foreign key: admin_sections.id -->
- <field>
- <name>section</name>
- <type>text</type>
- <default></default>
- <notnull>false</notnull>
- <length>64</length>
- </field>
-
- <field>
- <name>priority</name>
- <type>integer</type>
- <default></default>
- <notnull>true</notnull>
- <length>1</length>
- </field>
-
- <index>
- <name>personal_settings_id_index</name>
- <primary>true</primary>
- <field>
- <name>id</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>personal_settings_class</name>
- <unique>true</unique>
- <field>
- <name>class</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- <index>
- <name>personal_settings_section</name>
- <unique>false</unique>
- <field>
- <name>section</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
- <table>
-
- <name>*dbprefix*accounts</name>
-
- <declaration>
- <field>
- <name>uid</name>
- <type>text</type>
- <default></default>
- <notnull>true</notnull>
- <length>64</length>
- </field>
- <field>
- <name>data</name>
- <type>clob</type>
- <default></default>
- <notnull>true</notnull>
- </field>
-
- <index>
- <name>uid_index</name>
- <primary>true</primary>
- <unique>true</unique>
- <field>
- <name>uid</name>
- <sorting>ascending</sorting>
- </field>
- </index>
-
- </declaration>
- </table>
-
-</database>
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 5bfabba2e01..2df64663d6f 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -326,6 +326,7 @@ return array(
'OC\\App\\AppStore\\Bundles\\Bundle' => $baseDir . '/lib/private/App/AppStore/Bundles/Bundle.php',
'OC\\App\\AppStore\\Bundles\\BundleFetcher' => $baseDir . '/lib/private/App/AppStore/Bundles/BundleFetcher.php',
'OC\\App\\AppStore\\Bundles\\CoreBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/CoreBundle.php',
+ 'OC\\App\\AppStore\\Bundles\\EducationBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EducationBundle.php',
'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
@@ -404,6 +405,7 @@ return array(
'OC\\Core\\Command\\App\\Disable' => $baseDir . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => $baseDir . '/core/Command/App/Enable.php',
'OC\\Core\\Command\\App\\GetPath' => $baseDir . '/core/Command/App/GetPath.php',
+ 'OC\\Core\\Command\\App\\Install' => $baseDir . '/core/Command/App/Install.php',
'OC\\Core\\Command\\App\\ListApps' => $baseDir . '/core/Command/App/ListApps.php',
'OC\\Core\\Command\\Background\\Ajax' => $baseDir . '/core/Command/Background/Ajax.php',
'OC\\Core\\Command\\Background\\Base' => $baseDir . '/core/Command/Background/Base.php',
@@ -423,9 +425,9 @@ return array(
'OC\\Core\\Command\\Config\\System\\SetConfig' => $baseDir . '/core/Command/Config/System/SetConfig.php',
'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => $baseDir . '/core/Command/Db/ConvertMysqlToMB4.php',
'OC\\Core\\Command\\Db\\ConvertType' => $baseDir . '/core/Command/Db/ConvertType.php',
- 'OC\\Core\\Command\\Db\\GenerateChangeScript' => $baseDir . '/core/Command/Db/GenerateChangeScript.php',
'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => $baseDir . '/core/Command/Db/Migrations/ExecuteCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateCommand.php',
+ 'OC\\Core\\Command\\Db\\Migrations\\GenerateFromSchemaFileCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => $baseDir . '/core/Command/Db/Migrations/MigrateCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => $baseDir . '/core/Command/Db/Migrations/StatusCommand.php',
'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => $baseDir . '/core/Command/Encryption/ChangeKeyStorageRoot.php',
@@ -489,6 +491,7 @@ return array(
'OC\\Core\\Controller\\UserController' => $baseDir . '/core/Controller/UserController.php',
'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php',
'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php',
+ 'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir . '/core/Migrations/Version13000Date20170718121200.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php',
@@ -664,6 +667,7 @@ return array(
'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
'OC\\L10N\\Factory' => $baseDir . '/lib/private/L10N/Factory.php',
'OC\\L10N\\L10N' => $baseDir . '/lib/private/L10N/L10N.php',
+ 'OC\\L10N\\L10NString' => $baseDir . '/lib/private/L10N/L10NString.php',
'OC\\L10N\\LanguageNotFoundException' => $baseDir . '/lib/private/L10N/LanguageNotFoundException.php',
'OC\\LargeFileHelper' => $baseDir . '/lib/private/LargeFileHelper.php',
'OC\\Lock\\AbstractLockingProvider' => $baseDir . '/lib/private/Lock/AbstractLockingProvider.php',
@@ -706,7 +710,6 @@ return array(
'OC\\OCS\\CoreCapabilities' => $baseDir . '/lib/private/OCS/CoreCapabilities.php',
'OC\\OCS\\DiscoveryService' => $baseDir . '/lib/private/OCS/DiscoveryService.php',
'OC\\OCS\\Exception' => $baseDir . '/lib/private/OCS/Exception.php',
- 'OC\\OCS\\PrivateData' => $baseDir . '/lib/private/OCS/PrivateData.php',
'OC\\OCS\\Provider' => $baseDir . '/lib/private/OCS/Provider.php',
'OC\\OCS\\Result' => $baseDir . '/lib/private/OCS/Result.php',
'OC\\PreviewManager' => $baseDir . '/lib/private/PreviewManager.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 2c7ffc420fd..9f87c1060a2 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -356,6 +356,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\App\\AppStore\\Bundles\\Bundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/Bundle.php',
'OC\\App\\AppStore\\Bundles\\BundleFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/BundleFetcher.php',
'OC\\App\\AppStore\\Bundles\\CoreBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/CoreBundle.php',
+ 'OC\\App\\AppStore\\Bundles\\EducationBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EducationBundle.php',
'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
@@ -434,6 +435,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Command\\App\\Disable' => __DIR__ . '/../../..' . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => __DIR__ . '/../../..' . '/core/Command/App/Enable.php',
'OC\\Core\\Command\\App\\GetPath' => __DIR__ . '/../../..' . '/core/Command/App/GetPath.php',
+ 'OC\\Core\\Command\\App\\Install' => __DIR__ . '/../../..' . '/core/Command/App/Install.php',
'OC\\Core\\Command\\App\\ListApps' => __DIR__ . '/../../..' . '/core/Command/App/ListApps.php',
'OC\\Core\\Command\\Background\\Ajax' => __DIR__ . '/../../..' . '/core/Command/Background/Ajax.php',
'OC\\Core\\Command\\Background\\Base' => __DIR__ . '/../../..' . '/core/Command/Background/Base.php',
@@ -453,9 +455,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Command\\Config\\System\\SetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/SetConfig.php',
'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertMysqlToMB4.php',
'OC\\Core\\Command\\Db\\ConvertType' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertType.php',
- 'OC\\Core\\Command\\Db\\GenerateChangeScript' => __DIR__ . '/../../..' . '/core/Command/Db/GenerateChangeScript.php',
'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/ExecuteCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateCommand.php',
+ 'OC\\Core\\Command\\Db\\Migrations\\GenerateFromSchemaFileCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/MigrateCommand.php',
'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/StatusCommand.php',
'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => __DIR__ . '/../../..' . '/core/Command/Encryption/ChangeKeyStorageRoot.php',
@@ -519,6 +521,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Controller\\UserController' => __DIR__ . '/../../..' . '/core/Controller/UserController.php',
'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php',
'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php',
+ 'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170718121200.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php',
@@ -694,6 +697,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
'OC\\L10N\\Factory' => __DIR__ . '/../../..' . '/lib/private/L10N/Factory.php',
'OC\\L10N\\L10N' => __DIR__ . '/../../..' . '/lib/private/L10N/L10N.php',
+ 'OC\\L10N\\L10NString' => __DIR__ . '/../../..' . '/lib/private/L10N/L10NString.php',
'OC\\L10N\\LanguageNotFoundException' => __DIR__ . '/../../..' . '/lib/private/L10N/LanguageNotFoundException.php',
'OC\\LargeFileHelper' => __DIR__ . '/../../..' . '/lib/private/LargeFileHelper.php',
'OC\\Lock\\AbstractLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/AbstractLockingProvider.php',
@@ -736,7 +740,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\OCS\\CoreCapabilities' => __DIR__ . '/../../..' . '/lib/private/OCS/CoreCapabilities.php',
'OC\\OCS\\DiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCS/DiscoveryService.php',
'OC\\OCS\\Exception' => __DIR__ . '/../../..' . '/lib/private/OCS/Exception.php',
- 'OC\\OCS\\PrivateData' => __DIR__ . '/../../..' . '/lib/private/OCS/PrivateData.php',
'OC\\OCS\\Provider' => __DIR__ . '/../../..' . '/lib/private/OCS/Provider.php',
'OC\\OCS\\Result' => __DIR__ . '/../../..' . '/lib/private/OCS/Result.php',
'OC\\PreviewManager' => __DIR__ . '/../../..' . '/lib/private/PreviewManager.php',
diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js
index ae1f84e3edd..806f011b473 100644
--- a/lib/l10n/ast.js
+++ b/lib/l10n/ast.js
@@ -90,6 +90,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe",
"Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru",
"Expiration date is in the past" : "La data de caducidá ta nel pasáu.",
+ "%s shared »%s« with you" : "%s compartió »%s« contigo",
+ "%s via %s" : "%s via %s",
"Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"",
"Sunday" : "Domingu",
"Monday" : "Llunes",
@@ -168,8 +170,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.",
"Server settings" : "Axustes del sirvidor",
"You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
- "%s shared »%s« with you" : "%s compartió »%s« contigo",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s",
"Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos",
"Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos",
diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json
index 13fcccab920..dee5d90f45d 100644
--- a/lib/l10n/ast.json
+++ b/lib/l10n/ast.json
@@ -88,6 +88,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe",
"Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru",
"Expiration date is in the past" : "La data de caducidá ta nel pasáu.",
+ "%s shared »%s« with you" : "%s compartió »%s« contigo",
+ "%s via %s" : "%s via %s",
"Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"",
"Sunday" : "Domingu",
"Monday" : "Llunes",
@@ -166,8 +168,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.",
"Server settings" : "Axustes del sirvidor",
"You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
- "%s shared »%s« with you" : "%s compartió »%s« contigo",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s",
"Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos",
"Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos",
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 7a09bd8bdbd..ac5dd783f57 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
+ "Education Edition" : "Edice pro výuku",
"Enterprise bundle" : "Enterprise balíček",
"Groupware bundle" : "Balíček groupware",
"Social sharing bundle" : "Balíček sociálního sdílení",
@@ -120,6 +121,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření",
"Expiration date is in the past" : "Datum vypršení je v minulosti",
"Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu",
+ "%s shared »%s« with you" : "%s s vámi sdílí »%s«",
+ "%s via %s" : "%s pomocí %s",
"The requested share does not exist anymore" : "Požadované sdílení již neexistuje",
"Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"",
"Sunday" : "Neděle",
@@ -224,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.",
"Server settings" : "Nastavení serveru",
"You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
- "%s shared »%s« with you" : "%s s vámi sdílí »%s«",
- "%s via %s" : "%s pomocí %s",
"Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s",
"Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání",
"Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními",
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index bd5275d2911..a94a24ce006 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
+ "Education Edition" : "Edice pro výuku",
"Enterprise bundle" : "Enterprise balíček",
"Groupware bundle" : "Balíček groupware",
"Social sharing bundle" : "Balíček sociálního sdílení",
@@ -118,6 +119,8 @@
"Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření",
"Expiration date is in the past" : "Datum vypršení je v minulosti",
"Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu",
+ "%s shared »%s« with you" : "%s s vámi sdílí »%s«",
+ "%s via %s" : "%s pomocí %s",
"The requested share does not exist anymore" : "Požadované sdílení již neexistuje",
"Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"",
"Sunday" : "Neděle",
@@ -222,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.",
"Server settings" : "Nastavení serveru",
"You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
- "%s shared »%s« with you" : "%s s vámi sdílí »%s«",
- "%s via %s" : "%s pomocí %s",
"Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s",
"Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání",
"Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními",
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 008e22b54bc..0bd0b7a242d 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s",
+ "Education Edition" : "Bildungsausgabe",
"Enterprise bundle" : "Firmen-Paket",
"Groupware bundle" : "Groupware-Paket",
"Social sharing bundle" : "Paket für das Teilen in sozialen Medien",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
+ "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.",
+ "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
+ "Open »%s«" : "»%s« öffnen",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.",
"Server settings" : "Servereinstellungen",
"You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
- "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen",
"Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden",
"Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index e40233aa06f..6727d60ce23 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s",
+ "Education Edition" : "Bildungsausgabe",
"Enterprise bundle" : "Firmen-Paket",
"Groupware bundle" : "Groupware-Paket",
"Social sharing bundle" : "Paket für das Teilen in sozialen Medien",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
+ "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.",
+ "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
+ "Open »%s«" : "»%s« öffnen",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.",
"Server settings" : "Servereinstellungen",
"You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
- "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen",
"Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden",
"Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index 4af618c62b9..db003503e05 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s",
+ "Education Edition" : "Bildungsausgabe",
"Enterprise bundle" : "Firmen-Paket",
"Groupware bundle" : "Groupware-Paket",
"Social sharing bundle" : "Paket für das Teilen in sozialen Medien",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
+ "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.",
+ "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
+ "Open »%s«" : "»%s« öffnen",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.",
"Server settings" : "Servereinstellungen",
"You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
- "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen",
"Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden",
"Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 6e65ac418fc..b842301074a 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s",
+ "Education Edition" : "Bildungsausgabe",
"Enterprise bundle" : "Firmen-Paket",
"Groupware bundle" : "Groupware-Paket",
"Social sharing bundle" : "Paket für das Teilen in sozialen Medien",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
+ "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.",
+ "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
+ "Open »%s«" : "»%s« öffnen",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.",
"Server settings" : "Servereinstellungen",
"You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
- "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen",
"Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden",
"Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index 6a34a25dc78..38d6f312be7 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -12,8 +12,10 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s και %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$s",
+ "Education Edition" : "Εκπαιδευτική Έκδοση",
"Enterprise bundle" : "Πακέτο επιχειρήσεων",
"Groupware bundle" : "Ομάδα δέσμης",
+ "Social sharing bundle" : "Πακέτο κοινωνικού διαμοιρασμού",
"PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.",
"PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.",
"%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
@@ -27,6 +29,7 @@ OC.L10N.register(
"Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
"Unknown filetype" : "Άγνωστος τύπος αρχείου",
"Invalid image" : "Μη έγκυρη εικόνα",
+ "Avatar image is not square" : "Η εικόνα του άβαταρ δεν είναι τετράγωνη",
"today" : "σήμερα",
"yesterday" : "χτες",
"_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"],
@@ -34,21 +37,39 @@ OC.L10N.register(
"_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"],
"last year" : "τελευταίο χρόνο",
"_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"],
+ "_%n hour ago_::_%n hours ago_" : ["%nώρα πριν","%nώρες πριν"],
+ "_%n minute ago_::_%n minutes ago_" : ["%nλεπτό πριν","%nλεπτά πριν"],
"seconds ago" : "δευτερόλεπτα πριν",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με ID: %sδεν υπάρχει. Παρακαλούμε ενεργοποιήστε το στις ρυθμίσεις των εφαρμογών σας ή επικοινωνήστε με τον διαχειριστή.",
"File name is a reserved word" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί",
"File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα",
"File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο",
"Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ",
"Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι δυνατή η ανάγνωση του αρχείου appinfo.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι συμβατή με την έκδοση του διακομιστή.",
+ "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.",
"Help" : "Βοήθεια",
"Apps" : "Εφαρμογές",
+ "Settings" : "Ρυθμίσεις",
"Log out" : "Έξοδος",
"Users" : "Χρήστες",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
+ "Security" : "Ασφάλεια",
"Encryption" : "Κρυπτογράφηση",
"Additional settings" : "Επιπρόσθετες ρυθμίσεις",
+ "Tips & tricks" : "Συμβουλές & κόλπα",
+ "Personal info" : "Προσωπικές πληροφορίες",
+ "Sync clients" : "Εφαρμογές συγχρονισμού",
+ "Unlimited" : "Απεριόριστα",
+ "__language_name__" : "__language_name__",
+ "Verifying" : "Γίνεται επαλήθευση",
+ "Verifying …" : "Γίνεται επαλήθευση ...",
+ "Verify" : "Επαλήθευση",
+ "%s enter the database username and name." : "%sπληκτρολογήστε όνομα χρήστη και όνομα βάσης δεδομένων.",
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
@@ -79,6 +100,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
"Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
+ "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
"Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
@@ -94,7 +116,14 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %s ",
"Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
+ "Can’t increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s",
+ "Files can’t be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής",
+ "Files can’t be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας",
"Expiration date is in the past" : "Η ημερομηνία λήξης είναι στο παρελθόν",
+ "Can’t set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον",
+ "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
+ "%s via %s" : "%s μέσω %s",
+ "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον",
"Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"",
"Sunday" : "Κυριακή",
"Monday" : "Δευτέρα",
@@ -141,14 +170,18 @@ OC.L10N.register(
"Oct." : "Οκτ.",
"Nov." : "Νοε.",
"Dec." : "Δεκ.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Μόνο οι ακόλουθοι χαρακτήρες επιτρέπονται στο όνομα χρήστη; \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
"A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
+ "Username contains whitespace at the beginning or at the end" : "Το όνομα χρήστη περιέχει κενό διάστημα στην αρχή ή στο τέλος",
"Username must not consist of dots only" : "Το όνομα χρήστη δεν πρέπει να περιέχει μόνο τελείες",
"A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
"The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο",
+ "User disabled" : "Ο χρήστης απενεργοποιήθηκε",
"Login canceled by app" : "Η είσοδος ακυρώθηκε από την εφαρμογή",
"No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής",
"App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s",
+ "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας",
"File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα",
"Can't read file" : "Αδυναμία ανάγνωσης αρχείου",
"Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή",
@@ -158,36 +191,51 @@ OC.L10N.register(
"No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
"Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
"Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s",
+ "Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.",
"Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε",
"Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.",
"Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.",
"PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
"PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Προσαρμόζοντας αυτήν τη ρύθμιση στο php.ini το Nextcloud θα εκτελεστεί ξανά",
"mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Απαιτείται τουλάχιστον το libxml2 2.7.0. Αυτή τη στιγμή είναι εγκατεστημένο το %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
- "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
+ "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;",
"Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
"PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9",
"Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.",
"Your data directory is readable by other users" : "Ο κατάλογος δεδομένων σας είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες",
+ "Your data directory must be an absolute path" : "Ο κατάλογος δεδομένων σας πρέπει να είναι απόλυτη διαδρομή",
"Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας",
"Your data directory is invalid" : "Ο κατάλογος δεδομένων σας δεν είναι έγκυρος",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Εξασφαλίστε ότι υπάρχει ένα αρχείο με όνομα \".ocdata\" στον βασικό κατάλογο του καταλόγου δεδομένων.",
"Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".",
+ "Storage unauthorized. %s" : "Αποθηκευτικός χώρος χωρίς εξουσιοδότηση. %s",
+ "Storage incomplete configuration. %s" : "Ελλιπής διαμόρφωση αποθηκευτικού χώρου. %s",
+ "Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
+ "Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %sπαρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου%s.",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με id: %s δεν υπάρχει. Παρακαλώ ενεργοποιήστε το από τις ρυθμίσεις των εφαρμογών ή επικοινωνήστε με τον διαχειριστή.",
"Server settings" : "Ρυθμίσεις διακομιστή",
"You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
- "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
- "%s via %s" : "%s μέσω %s",
+ "Cannot increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s",
+ "Files can't be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής",
+ "Files can't be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας",
+ "Cannot set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον",
"Personal" : "Προσωπικά",
"Admin" : "Διαχείριση",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
"Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Αυτό μπορεί συνήθως να διορθωθεί<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.",
"Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες",
"Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή",
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index 8490d43458b..30e95a12a18 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -10,8 +10,10 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s και %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$s",
+ "Education Edition" : "Εκπαιδευτική Έκδοση",
"Enterprise bundle" : "Πακέτο επιχειρήσεων",
"Groupware bundle" : "Ομάδα δέσμης",
+ "Social sharing bundle" : "Πακέτο κοινωνικού διαμοιρασμού",
"PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.",
"PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.",
"%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
@@ -25,6 +27,7 @@
"Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
"Unknown filetype" : "Άγνωστος τύπος αρχείου",
"Invalid image" : "Μη έγκυρη εικόνα",
+ "Avatar image is not square" : "Η εικόνα του άβαταρ δεν είναι τετράγωνη",
"today" : "σήμερα",
"yesterday" : "χτες",
"_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"],
@@ -32,21 +35,39 @@
"_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"],
"last year" : "τελευταίο χρόνο",
"_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"],
+ "_%n hour ago_::_%n hours ago_" : ["%nώρα πριν","%nώρες πριν"],
+ "_%n minute ago_::_%n minutes ago_" : ["%nλεπτό πριν","%nλεπτά πριν"],
"seconds ago" : "δευτερόλεπτα πριν",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με ID: %sδεν υπάρχει. Παρακαλούμε ενεργοποιήστε το στις ρυθμίσεις των εφαρμογών σας ή επικοινωνήστε με τον διαχειριστή.",
"File name is a reserved word" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί",
"File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα",
"File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο",
"Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ",
"Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι δυνατή η ανάγνωση του αρχείου appinfo.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι συμβατή με την έκδοση του διακομιστή.",
+ "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.",
"Help" : "Βοήθεια",
"Apps" : "Εφαρμογές",
+ "Settings" : "Ρυθμίσεις",
"Log out" : "Έξοδος",
"Users" : "Χρήστες",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
+ "Security" : "Ασφάλεια",
"Encryption" : "Κρυπτογράφηση",
"Additional settings" : "Επιπρόσθετες ρυθμίσεις",
+ "Tips & tricks" : "Συμβουλές & κόλπα",
+ "Personal info" : "Προσωπικές πληροφορίες",
+ "Sync clients" : "Εφαρμογές συγχρονισμού",
+ "Unlimited" : "Απεριόριστα",
+ "__language_name__" : "__language_name__",
+ "Verifying" : "Γίνεται επαλήθευση",
+ "Verifying …" : "Γίνεται επαλήθευση ...",
+ "Verify" : "Επαλήθευση",
+ "%s enter the database username and name." : "%sπληκτρολογήστε όνομα χρήστη και όνομα βάσης δεδομένων.",
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
@@ -77,6 +98,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
"Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
+ "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
"Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
@@ -92,7 +114,14 @@
"Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %s ",
"Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
+ "Can’t increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s",
+ "Files can’t be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής",
+ "Files can’t be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας",
"Expiration date is in the past" : "Η ημερομηνία λήξης είναι στο παρελθόν",
+ "Can’t set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον",
+ "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
+ "%s via %s" : "%s μέσω %s",
+ "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον",
"Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"",
"Sunday" : "Κυριακή",
"Monday" : "Δευτέρα",
@@ -139,14 +168,18 @@
"Oct." : "Οκτ.",
"Nov." : "Νοε.",
"Dec." : "Δεκ.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Μόνο οι ακόλουθοι χαρακτήρες επιτρέπονται στο όνομα χρήστη; \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
"A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
+ "Username contains whitespace at the beginning or at the end" : "Το όνομα χρήστη περιέχει κενό διάστημα στην αρχή ή στο τέλος",
"Username must not consist of dots only" : "Το όνομα χρήστη δεν πρέπει να περιέχει μόνο τελείες",
"A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
"The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο",
+ "User disabled" : "Ο χρήστης απενεργοποιήθηκε",
"Login canceled by app" : "Η είσοδος ακυρώθηκε από την εφαρμογή",
"No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής",
"App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s",
+ "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας",
"File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα",
"Can't read file" : "Αδυναμία ανάγνωσης αρχείου",
"Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή",
@@ -156,36 +189,51 @@
"No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
"Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
"Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s",
+ "Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.",
"Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε",
"Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.",
"Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.",
"PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
"PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Προσαρμόζοντας αυτήν τη ρύθμιση στο php.ini το Nextcloud θα εκτελεστεί ξανά",
"mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Απαιτείται τουλάχιστον το libxml2 2.7.0. Αυτή τη στιγμή είναι εγκατεστημένο το %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
- "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
+ "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;",
"Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
"PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9",
"Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.",
"Your data directory is readable by other users" : "Ο κατάλογος δεδομένων σας είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες",
+ "Your data directory must be an absolute path" : "Ο κατάλογος δεδομένων σας πρέπει να είναι απόλυτη διαδρομή",
"Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας",
"Your data directory is invalid" : "Ο κατάλογος δεδομένων σας δεν είναι έγκυρος",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Εξασφαλίστε ότι υπάρχει ένα αρχείο με όνομα \".ocdata\" στον βασικό κατάλογο του καταλόγου δεδομένων.",
"Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".",
+ "Storage unauthorized. %s" : "Αποθηκευτικός χώρος χωρίς εξουσιοδότηση. %s",
+ "Storage incomplete configuration. %s" : "Ελλιπής διαμόρφωση αποθηκευτικού χώρου. %s",
+ "Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
+ "Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %sπαρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου%s.",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με id: %s δεν υπάρχει. Παρακαλώ ενεργοποιήστε το από τις ρυθμίσεις των εφαρμογών ή επικοινωνήστε με τον διαχειριστή.",
"Server settings" : "Ρυθμίσεις διακομιστή",
"You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
- "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
- "%s via %s" : "%s μέσω %s",
+ "Cannot increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s",
+ "Files can't be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής",
+ "Files can't be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας",
+ "Cannot set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον",
"Personal" : "Προσωπικά",
"Admin" : "Διαχείριση",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
"Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Αυτό μπορεί συνήθως να διορθωθεί<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.",
"Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες",
"Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή",
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index 525dcaf4b8e..650fd184acc 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s",
+ "Education Edition" : "Education Edition",
"Enterprise bundle" : "Enterprise bundle",
"Groupware bundle" : "Groupware bundle",
"Social sharing bundle" : "Social sharing bundle",
@@ -120,6 +121,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Files can’t be shared with create permissions",
"Expiration date is in the past" : "Expiration date is in the past",
"Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future",
+ "%s shared »%s« with you" : "%s shared \"%s\" with you",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "The requested share does not exist anymore",
"Could not find category \"%s\"" : "Could not find category \"%s\"",
"Sunday" : "Sunday",
@@ -224,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.",
"Server settings" : "Server settings",
"You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
- "%s shared »%s« with you" : "%s shared \"%s\" with you",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Cannot increase permissions of %s",
"Files can't be shared with delete permissions" : "Files can't be shared with delete permissions",
"Files can't be shared with create permissions" : "Files can't be shared with create permissions",
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index 6ee6bde4a22..8ad0399e6b1 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s",
+ "Education Edition" : "Education Edition",
"Enterprise bundle" : "Enterprise bundle",
"Groupware bundle" : "Groupware bundle",
"Social sharing bundle" : "Social sharing bundle",
@@ -118,6 +119,8 @@
"Files can’t be shared with create permissions" : "Files can’t be shared with create permissions",
"Expiration date is in the past" : "Expiration date is in the past",
"Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future",
+ "%s shared »%s« with you" : "%s shared \"%s\" with you",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "The requested share does not exist anymore",
"Could not find category \"%s\"" : "Could not find category \"%s\"",
"Sunday" : "Sunday",
@@ -222,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.",
"Server settings" : "Server settings",
"You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
- "%s shared »%s« with you" : "%s shared \"%s\" with you",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Cannot increase permissions of %s",
"Files can't be shared with delete permissions" : "Files can't be shared with delete permissions",
"Files can't be shared with create permissions" : "Files can't be shared with create permissions",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index bd4fbae9ebd..66667c5a3d0 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educación",
"Enterprise bundle" : "Conjunto para empresas",
"Groupware bundle" : "Conjunto de groupware",
"Social sharing bundle" : "Conjunto para compartir en redes",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "Ha pasado la fecha de caducidad",
"Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s ha compartido »%s« contigo",
+ "Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
+ "Open »%s«" : "Abrir »%s« ",
+ "%s via %s" : "%s vía %s",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.",
"Server settings" : "Configuración del servidor",
"You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s vía %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado",
"Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index cff0f78bd8c..33956b8904d 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educación",
"Enterprise bundle" : "Conjunto para empresas",
"Groupware bundle" : "Conjunto de groupware",
"Social sharing bundle" : "Conjunto para compartir en redes",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "Ha pasado la fecha de caducidad",
"Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s ha compartido »%s« contigo",
+ "Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
+ "Open »%s«" : "Abrir »%s« ",
+ "%s via %s" : "%s vía %s",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.",
"Server settings" : "Configuración del servidor",
"You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s vía %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado",
"Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación",
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index 5c1c692a430..df848e72134 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -108,6 +108,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen",
"Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos",
"Expiration date is in the past" : "La fecha de expiración ya ha pasado",
+ "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
+ "%s via %s" : "%s por %s",
"Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -210,8 +212,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ",
"Server settings" : "Configuraciones del servidor",
"You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
- "%s via %s" : "%s por %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
"Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index c9738329caf..28b998e45db 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -106,6 +106,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen",
"Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos",
"Expiration date is in the past" : "La fecha de expiración ya ha pasado",
+ "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
+ "%s via %s" : "%s por %s",
"Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -208,8 +210,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ",
"Server settings" : "Configuraciones del servidor",
"You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
- "%s via %s" : "%s por %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
"Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js
index b55c5d349fa..2d613d49f09 100644
--- a/lib/l10n/es_MX.js
+++ b/lib/l10n/es_MX.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educativa",
"Enterprise bundle" : "Paquete empresarial",
"Groupware bundle" : "Paquete de Groupware",
"Social sharing bundle" : "Paquete para compartir en redes sociales",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado",
"Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s compartió contigo »%s«.",
+ "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s por %s",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
"Sunday" : "Domingo",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ",
"Server settings" : "Configuraciones del servidor",
"You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s por %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
"Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json
index 889a51bda26..15a02daec37 100644
--- a/lib/l10n/es_MX.json
+++ b/lib/l10n/es_MX.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educativa",
"Enterprise bundle" : "Paquete empresarial",
"Groupware bundle" : "Paquete de Groupware",
"Social sharing bundle" : "Paquete para compartir en redes sociales",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado",
"Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s compartió contigo »%s«.",
+ "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s por %s",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
"Sunday" : "Domingo",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ",
"Server settings" : "Configuraciones del servidor",
"You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s por %s",
"Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
"Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
"Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js
index 1abbed103c6..aa660a6a981 100644
--- a/lib/l10n/fi.js
+++ b/lib/l10n/fi.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu",
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
+ "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -198,7 +199,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.",
"Server settings" : "Palvelimen asetukset",
"You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu",
"Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla",
"Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla",
diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json
index a3aaada740b..715c34d8279 100644
--- a/lib/l10n/fi.json
+++ b/lib/l10n/fi.json
@@ -100,6 +100,7 @@
"Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu",
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
+ "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -196,7 +197,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.",
"Server settings" : "Palvelimen asetukset",
"You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu",
"Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla",
"Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 47f7df11555..d685b9615ee 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s et %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s et %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s et %5$s",
+ "Education Edition" : "Édition pour l'éducation ",
"Enterprise bundle" : "Pack pour entreprise",
"Groupware bundle" : "Pack pour travail collaboratif",
"Social sharing bundle" : "Pack pour partage social",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
"Expiration date is in the past" : "La date d'expiration est dans le passé",
"Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur",
+ "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
+ "%s shared »%s« with you." : "%s a partagé «%s» avec vous.",
+ "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
+ "Open »%s«" : "Ouvrir «%s»",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.",
"Server settings" : "Paramètres serveur",
"You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.",
- "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s",
"Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression",
"Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 502ed939f78..5638c44a97e 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s et %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s et %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s et %5$s",
+ "Education Edition" : "Édition pour l'éducation ",
"Enterprise bundle" : "Pack pour entreprise",
"Groupware bundle" : "Pack pour travail collaboratif",
"Social sharing bundle" : "Pack pour partage social",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
"Expiration date is in the past" : "La date d'expiration est dans le passé",
"Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur",
+ "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
+ "%s shared »%s« with you." : "%s a partagé «%s» avec vous.",
+ "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
+ "Open »%s«" : "Ouvrir «%s»",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.",
"Server settings" : "Paramètres serveur",
"You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.",
- "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s",
"Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression",
"Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
diff --git a/lib/l10n/he.js b/lib/l10n/he.js
index 8cbcee2ada2..932eedee7ea 100644
--- a/lib/l10n/he.js
+++ b/lib/l10n/he.js
@@ -82,6 +82,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו",
"Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
"Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
+ "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
+ "%s via %s" : "%s על בסיס %s",
"Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
"Sunday" : "יום ראשון",
"Monday" : "יום שני",
@@ -173,8 +175,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.",
"Server settings" : "הגדרות שרת",
"You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.",
- "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
- "%s via %s" : "%s על בסיס %s",
"Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s",
"Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות",
"Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות",
diff --git a/lib/l10n/he.json b/lib/l10n/he.json
index 9e24f4eeea3..ef1176d789b 100644
--- a/lib/l10n/he.json
+++ b/lib/l10n/he.json
@@ -80,6 +80,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו",
"Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
"Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
+ "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
+ "%s via %s" : "%s על בסיס %s",
"Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
"Sunday" : "יום ראשון",
"Monday" : "יום שני",
@@ -171,8 +173,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.",
"Server settings" : "הגדרות שרת",
"You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.",
- "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
- "%s via %s" : "%s על בסיס %s",
"Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s",
"Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות",
"Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות",
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 0a71f5f8bf1..f0d72cd3937 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -100,6 +100,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja",
"Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban",
"Expiration date is in the past" : "A lejárati dátum már elmúlt",
+ "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
+ "%s via %s" : "%s - %s",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -194,8 +196,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.",
"Server settings" : "Szerver beállítások",
"You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
- "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
- "%s via %s" : "%s - %s",
"Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni",
"Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal",
"Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal",
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index 6c7b3085502..3039b4979d6 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -98,6 +98,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja",
"Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban",
"Expiration date is in the past" : "A lejárati dátum már elmúlt",
+ "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
+ "%s via %s" : "%s - %s",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -192,8 +194,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.",
"Server settings" : "Szerver beállítások",
"You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
- "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
- "%s via %s" : "%s - %s",
"Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni",
"Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal",
"Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal",
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
index 8daa0140b19..e2c2abd773a 100644
--- a/lib/l10n/is.js
+++ b/lib/l10n/is.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "Education Edition" : "Kennsluútgáfa",
"Enterprise bundle" : "Fyrirtækjavöndull",
"Groupware bundle" : "Hópvinnsluvöndull",
"Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla",
@@ -50,6 +51,7 @@ OC.L10N.register(
"This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.",
"Help" : "Hjálp",
"Apps" : "Forrit",
+ "Settings" : "Stillingar",
"Log out" : "Skrá út",
"Users" : "Notendur",
"APCu" : "APCu",
@@ -60,6 +62,13 @@ OC.L10N.register(
"Encryption" : "Dulritun",
"Additional settings" : "Valfrjálsar stillingar",
"Tips & tricks" : "Ábendingar og góð ráð",
+ "Personal info" : "Persónulegar upplýsingar",
+ "Sync clients" : "Samstilla biðlara",
+ "Unlimited" : "Ótakmarkað",
+ "__language_name__" : "Íslenska",
+ "Verifying" : "Sannreyni",
+ "Verifying …" : "Sannreyni …",
+ "Verify" : "Sannreyna",
"%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.",
"%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.",
"%s enter the database name." : "%s settu inn nafn á gagnagrunni.",
@@ -107,7 +116,13 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess",
"Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa",
+ "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
+ "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum",
+ "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum",
"Expiration date is in the past" : "Gildistíminn er þegar runninn út",
+ "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann",
+ "%s shared »%s« with you" : "%s deildi »%s« með þér",
+ "%s via %s" : "%s með %s",
"The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til",
"Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
"Sunday" : "Sunnudagur",
@@ -212,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.",
"Server settings" : "Stillingar þjóns",
"You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.",
- "%s shared »%s« with you" : "%s deildi »%s« með þér",
- "%s via %s" : "%s með %s",
"Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
"Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum",
"Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum",
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
index 59159d10396..9957d7f8089 100644
--- a/lib/l10n/is.json
+++ b/lib/l10n/is.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "Education Edition" : "Kennsluútgáfa",
"Enterprise bundle" : "Fyrirtækjavöndull",
"Groupware bundle" : "Hópvinnsluvöndull",
"Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla",
@@ -48,6 +49,7 @@
"This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.",
"Help" : "Hjálp",
"Apps" : "Forrit",
+ "Settings" : "Stillingar",
"Log out" : "Skrá út",
"Users" : "Notendur",
"APCu" : "APCu",
@@ -58,6 +60,13 @@
"Encryption" : "Dulritun",
"Additional settings" : "Valfrjálsar stillingar",
"Tips & tricks" : "Ábendingar og góð ráð",
+ "Personal info" : "Persónulegar upplýsingar",
+ "Sync clients" : "Samstilla biðlara",
+ "Unlimited" : "Ótakmarkað",
+ "__language_name__" : "Íslenska",
+ "Verifying" : "Sannreyni",
+ "Verifying …" : "Sannreyni …",
+ "Verify" : "Sannreyna",
"%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.",
"%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.",
"%s enter the database name." : "%s settu inn nafn á gagnagrunni.",
@@ -105,7 +114,13 @@
"Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess",
"Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa",
+ "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
+ "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum",
+ "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum",
"Expiration date is in the past" : "Gildistíminn er þegar runninn út",
+ "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann",
+ "%s shared »%s« with you" : "%s deildi »%s« með þér",
+ "%s via %s" : "%s með %s",
"The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til",
"Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
"Sunday" : "Sunnudagur",
@@ -210,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.",
"Server settings" : "Stillingar þjóns",
"You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.",
- "%s shared »%s« with you" : "%s deildi »%s« með þér",
- "%s via %s" : "%s með %s",
"Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
"Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum",
"Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum",
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index cb1d91e6d6b..fb74583dbe8 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -47,6 +47,7 @@ OC.L10N.register(
"This is an automatically sent email, please do not reply." : "Questo è un messaggio di posta inviato automaticamente, non rispondere.",
"Help" : "Aiuto",
"Apps" : "Applicazioni",
+ "Settings" : "Impostazioni",
"Log out" : "Esci",
"Users" : "Utenti",
"APCu" : "APCu",
@@ -57,6 +58,13 @@ OC.L10N.register(
"Encryption" : "Cifratura",
"Additional settings" : "Impostazioni aggiuntive",
"Tips & tricks" : "Suggerimenti e trucchi",
+ "Personal info" : "Informazioni personali",
+ "Sync clients" : "Client di sincronizzazione",
+ "Unlimited" : "Illimitato",
+ "__language_name__" : "Italiano",
+ "Verifying" : "Verifica",
+ "Verifying …" : "Verifica in corso...",
+ "Verify" : "Verifica",
"%s enter the database username and name." : "%s digita il nome utente e il nome del database.",
"%s enter the database username." : "%s digita il nome utente del database.",
"%s enter the database name." : "%s digita il nome del database.",
@@ -104,7 +112,14 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Condivisione di %s non riuscita, poiché il motore di condivisione per %s non riesce a trovare la sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache",
+ "Can’t increase permissions of %s" : "Impossibile aumentare i permessi di %s",
+ "Files can’t be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione",
+ "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
"Expiration date is in the past" : "La data di scadenza è nel passato",
+ "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro",
+ "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
+ "%s via %s" : "%s tramite %s",
+ "The requested share does not exist anymore" : "La condivisione richiesta non esiste più",
"Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"",
"Sunday" : "Domenica",
"Monday" : "Lunedì",
@@ -197,6 +212,7 @@ OC.L10N.register(
"Your data directory must be an absolute path" : "La cartella dei dati deve essere un percorso assoluto",
"Check the value of \"datadirectory\" in your configuration" : "Controlla il valore di \"datadirectory\" nella tua configurazione",
"Your data directory is invalid" : "La cartella dei dati non è valida",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assicurati che ci sia un file \".ocdata\" nella radice della cartella data.",
"Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".",
"Storage unauthorized. %s" : "Archiviazione non autorizzata. %s",
"Storage incomplete configuration. %s" : "Configurazione dell'archiviazione incompleta.%s",
@@ -207,8 +223,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.",
"Server settings" : "Impostazioni server",
"You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
- "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
- "%s via %s" : "%s tramite %s",
"Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s",
"Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione",
"Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 8cd429ba9c1..bd3a35cdef1 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -45,6 +45,7 @@
"This is an automatically sent email, please do not reply." : "Questo è un messaggio di posta inviato automaticamente, non rispondere.",
"Help" : "Aiuto",
"Apps" : "Applicazioni",
+ "Settings" : "Impostazioni",
"Log out" : "Esci",
"Users" : "Utenti",
"APCu" : "APCu",
@@ -55,6 +56,13 @@
"Encryption" : "Cifratura",
"Additional settings" : "Impostazioni aggiuntive",
"Tips & tricks" : "Suggerimenti e trucchi",
+ "Personal info" : "Informazioni personali",
+ "Sync clients" : "Client di sincronizzazione",
+ "Unlimited" : "Illimitato",
+ "__language_name__" : "Italiano",
+ "Verifying" : "Verifica",
+ "Verifying …" : "Verifica in corso...",
+ "Verify" : "Verifica",
"%s enter the database username and name." : "%s digita il nome utente e il nome del database.",
"%s enter the database username." : "%s digita il nome utente del database.",
"%s enter the database name." : "%s digita il nome del database.",
@@ -102,7 +110,14 @@
"Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Condivisione di %s non riuscita, poiché il motore di condivisione per %s non riesce a trovare la sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache",
+ "Can’t increase permissions of %s" : "Impossibile aumentare i permessi di %s",
+ "Files can’t be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione",
+ "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
"Expiration date is in the past" : "La data di scadenza è nel passato",
+ "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro",
+ "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
+ "%s via %s" : "%s tramite %s",
+ "The requested share does not exist anymore" : "La condivisione richiesta non esiste più",
"Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"",
"Sunday" : "Domenica",
"Monday" : "Lunedì",
@@ -195,6 +210,7 @@
"Your data directory must be an absolute path" : "La cartella dei dati deve essere un percorso assoluto",
"Check the value of \"datadirectory\" in your configuration" : "Controlla il valore di \"datadirectory\" nella tua configurazione",
"Your data directory is invalid" : "La cartella dei dati non è valida",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assicurati che ci sia un file \".ocdata\" nella radice della cartella data.",
"Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".",
"Storage unauthorized. %s" : "Archiviazione non autorizzata. %s",
"Storage incomplete configuration. %s" : "Configurazione dell'archiviazione incompleta.%s",
@@ -205,8 +221,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.",
"Server settings" : "Impostazioni server",
"You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
- "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
- "%s via %s" : "%s tramite %s",
"Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s",
"Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione",
"Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index 89edf9ddab9..70f61ce0c8d 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -44,10 +44,12 @@ OC.L10N.register(
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" アプリは、このバージョンのサーバーと互換性がないためインストールされませんでした。",
"Help" : "ヘルプ",
"Apps" : "アプリ",
+ "Settings" : "設定",
"Log out" : "ログアウト",
"Users" : "ユーザー",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "基本設定",
"Sharing" : "共有",
"Security" : "セキュリティ",
"Encryption" : "暗号化",
@@ -100,6 +102,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。",
"Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。",
"Expiration date is in the past" : "有効期限が切れています",
+ "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
+ "%s via %s" : "%s に %s から",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -197,8 +201,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。",
"Server settings" : "サーバー設定",
"You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
- "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
- "%s via %s" : "%s に %s から",
"Cannot increase permissions of %s" : "%s の権限を強化できません",
"Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。",
"Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。",
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index d1f96e17731..f1cbdb72f70 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -42,10 +42,12 @@
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" アプリは、このバージョンのサーバーと互換性がないためインストールされませんでした。",
"Help" : "ヘルプ",
"Apps" : "アプリ",
+ "Settings" : "設定",
"Log out" : "ログアウト",
"Users" : "ユーザー",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "基本設定",
"Sharing" : "共有",
"Security" : "セキュリティ",
"Encryption" : "暗号化",
@@ -98,6 +100,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。",
"Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。",
"Expiration date is in the past" : "有効期限が切れています",
+ "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
+ "%s via %s" : "%s に %s から",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -195,8 +199,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。",
"Server settings" : "サーバー設定",
"You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
- "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
- "%s via %s" : "%s に %s から",
"Cannot increase permissions of %s" : "%s の権限を強化できません",
"Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。",
"Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。",
diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js
index 66ca7aab6b4..a56411b6bf4 100644
--- a/lib/l10n/ko.js
+++ b/lib/l10n/ko.js
@@ -107,6 +107,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다",
"Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
"Expiration date is in the past" : "만료 날짜가 과거입니다",
+ "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
+ "%s via %s" : "%s(%s 경유)",
"Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다",
"Sunday" : "일요일",
"Monday" : "월요일",
@@ -206,8 +208,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.",
"Server settings" : "서버 설정",
"You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
- "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
- "%s via %s" : "%s(%s 경유)",
"Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다",
"Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다",
"Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다",
diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json
index 1a1a4d1b7ea..21602cf109f 100644
--- a/lib/l10n/ko.json
+++ b/lib/l10n/ko.json
@@ -105,6 +105,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다",
"Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
"Expiration date is in the past" : "만료 날짜가 과거입니다",
+ "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
+ "%s via %s" : "%s(%s 경유)",
"Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다",
"Sunday" : "일요일",
"Monday" : "월요일",
@@ -204,8 +206,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.",
"Server settings" : "서버 설정",
"You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
- "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
- "%s via %s" : "%s(%s 경유)",
"Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다",
"Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다",
"Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다",
diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js
index ec86a04be47..9e1a5ec5766 100644
--- a/lib/l10n/nb.js
+++ b/lib/l10n/nb.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "Education Edition" : "Utdanningsversjon",
"Enterprise bundle" : "Bedrifts-pakke",
"Groupware bundle" : "Gruppevare-pakke",
"Social sharing bundle" : "Sosialdelings-pakke",
@@ -120,6 +121,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse",
"Expiration date is in the past" : "Utløpsdato er i fortid",
"Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden",
+ "%s shared »%s« with you" : "%s delte »%s« med deg",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger",
"Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"",
"Sunday" : "Søndag",
@@ -224,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.",
"Server settings" : "Tjenerinnstillinger",
"You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
- "%s shared »%s« with you" : "%s delte »%s« med deg",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s",
"Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting",
"Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette",
diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json
index 06f17fbd8ff..5471aa887ab 100644
--- a/lib/l10n/nb.json
+++ b/lib/l10n/nb.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "Education Edition" : "Utdanningsversjon",
"Enterprise bundle" : "Bedrifts-pakke",
"Groupware bundle" : "Gruppevare-pakke",
"Social sharing bundle" : "Sosialdelings-pakke",
@@ -118,6 +119,8 @@
"Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse",
"Expiration date is in the past" : "Utløpsdato er i fortid",
"Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden",
+ "%s shared »%s« with you" : "%s delte »%s« med deg",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger",
"Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"",
"Sunday" : "Søndag",
@@ -222,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.",
"Server settings" : "Tjenerinnstillinger",
"You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
- "%s shared »%s« with you" : "%s delte »%s« med deg",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s",
"Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting",
"Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette",
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index 9ccea90667a..88d88563f63 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -120,6 +120,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies",
"Expiration date is in the past" : "De vervaldatum ligt in het verleden",
"Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen",
+ "%s shared »%s« with you" : "%s deelde »%s« met jou",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "De vezochte share bestaat niet meer",
"Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden",
"Sunday" : "Zondag",
@@ -224,8 +226,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.",
"Server settings" : "Serverinstellingen",
"You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.",
- "%s shared »%s« with you" : "%s deelde »%s« met jou",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen",
"Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten",
"Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten",
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index 48bb43d4704..55e7f71d6c6 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -118,6 +118,8 @@
"Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies",
"Expiration date is in the past" : "De vervaldatum ligt in het verleden",
"Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen",
+ "%s shared »%s« with you" : "%s deelde »%s« met jou",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "De vezochte share bestaat niet meer",
"Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden",
"Sunday" : "Zondag",
@@ -222,8 +224,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.",
"Server settings" : "Serverinstellingen",
"You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.",
- "%s shared »%s« with you" : "%s deelde »%s« met jou",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen",
"Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten",
"Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 01a2d5f7012..f359bbd4052 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -119,6 +119,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia",
"Expiration date is in the past" : "Data ważności jest przeszła",
"Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni",
+ "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
+ "%s via %s" : "%s przez %s",
"The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje",
"Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
@@ -223,8 +225,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.",
"Server settings" : "Ustawienia serwera",
"You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
- "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
- "%s via %s" : "%s przez %s",
"Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s",
"Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania",
"Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index fa0ac561c5a..e089c1c710c 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -117,6 +117,8 @@
"Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia",
"Expiration date is in the past" : "Data ważności jest przeszła",
"Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni",
+ "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
+ "%s via %s" : "%s przez %s",
"The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje",
"Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
@@ -221,8 +223,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.",
"Server settings" : "Ustawienia serwera",
"You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
- "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
- "%s via %s" : "%s przez %s",
"Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s",
"Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania",
"Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index e98cc71c4fa..a7e6a2a0738 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s",
+ "Education Edition" : "Edição Educativa",
"Enterprise bundle" : "Pacote Enterprise",
"Groupware bundle" : "Pacote Groupware",
"Social sharing bundle" : "Pacote de compartilhamento social",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
"Expiration date is in the past" : "Data de expiração está no passado",
"Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro",
+ "%s shared »%s« with you" : "%s compartilhou »%s« com você",
+ "%s shared »%s« with you." : "%s compartilhou »%s« com você.",
+ "Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.",
"Server settings" : "Configurações do servidor",
"You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.",
- "%s shared »%s« with you" : "%s compartilhou »%s« com você",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s",
"Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão",
"Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index a7fb31d8f9c..4f5c8d84aa4 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s",
+ "Education Edition" : "Edição Educativa",
"Enterprise bundle" : "Pacote Enterprise",
"Groupware bundle" : "Pacote Groupware",
"Social sharing bundle" : "Pacote de compartilhamento social",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
"Expiration date is in the past" : "Data de expiração está no passado",
"Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro",
+ "%s shared »%s« with you" : "%s compartilhou »%s« com você",
+ "%s shared »%s« with you." : "%s compartilhou »%s« com você.",
+ "Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s via %s",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.",
"Server settings" : "Configurações do servidor",
"You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.",
- "%s shared »%s« with you" : "%s compartilhou »%s« com você",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s",
"Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão",
"Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index d17439fa17c..e5f3ec70d99 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s",
+ "Education Edition" : "Образовательная редакция",
"Enterprise bundle" : "Корпоративный пакет",
"Groupware bundle" : "Пакет для групп",
"Social sharing bundle" : "Пакет для соц. сетей",
@@ -120,6 +121,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
"Expiration date is in the past" : "Дата окончания срока действия уже прошла",
"Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
+ "%s shared »%s« with you" : "%s поделился »%s« с вами",
+ "%s via %s" : "%s через %s",
"The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.",
"Could not find category \"%s\"" : "Категория «%s» не найдена",
"Sunday" : "Воскресенье",
@@ -224,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.",
"Server settings" : "Настройки сервера",
"You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
- "%s shared »%s« with you" : "%s поделился »%s« с вами",
- "%s via %s" : "%s через %s",
"Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s",
"Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление",
"Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index 039cf8b6c1b..92348342feb 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s",
+ "Education Edition" : "Образовательная редакция",
"Enterprise bundle" : "Корпоративный пакет",
"Groupware bundle" : "Пакет для групп",
"Social sharing bundle" : "Пакет для соц. сетей",
@@ -118,6 +119,8 @@
"Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
"Expiration date is in the past" : "Дата окончания срока действия уже прошла",
"Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
+ "%s shared »%s« with you" : "%s поделился »%s« с вами",
+ "%s via %s" : "%s через %s",
"The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.",
"Could not find category \"%s\"" : "Категория «%s» не найдена",
"Sunday" : "Воскресенье",
@@ -222,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.",
"Server settings" : "Настройки сервера",
"You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
- "%s shared »%s« with you" : "%s поделился »%s« с вами",
- "%s via %s" : "%s через %s",
"Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s",
"Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление",
"Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index d0817e42409..0a7e397b569 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -97,6 +97,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s",
"Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov",
"Expiration date is in the past" : "Dátum konca platnosti je v minulosti",
+ "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
+ "%s via %s" : "%s cez %s",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -188,8 +190,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.",
"Server settings" : "Nastavenia servera",
"You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
- "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
- "%s via %s" : "%s cez %s",
"Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti",
"Personal" : "Osobné",
"Admin" : "Administrátor",
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index b7c9acf31db..a7c5a331614 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -95,6 +95,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s",
"Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov",
"Expiration date is in the past" : "Dátum konca platnosti je v minulosti",
+ "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
+ "%s via %s" : "%s cez %s",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -186,8 +188,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.",
"Server settings" : "Nastavenia servera",
"You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
- "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
- "%s via %s" : "%s cez %s",
"Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti",
"Personal" : "Osobné",
"Admin" : "Administrátor",
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 72df40ab6bc..6f48e402653 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -4,6 +4,7 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve",
"See %s" : "Shihni %s",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Skedarët e aplikacionit %$1s nuk u zëvëndësuan në mënyrë korrekte. Sigurohuni që është një version që përputhet me serverin.",
"Sample configuration detected" : "U gjet formësim shembull",
"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" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php",
@@ -11,6 +12,10 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s dhe %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s dhe %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s dhe %5$s",
+ "Education Edition" : "Variant Edukativ",
+ "Enterprise bundle" : "Pakoja e ndërmarrjeve",
+ "Groupware bundle" : "Pako groupware",
+ "Social sharing bundle" : "Pakoja e ndarjes sociale",
"PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.",
"PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.",
"%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.",
@@ -35,6 +40,7 @@ OC.L10N.register(
"_%n hour ago_::_%n hours ago_" : ["%n orë më parë","%n orë më parë"],
"_%n minute ago_::_%n minutes ago_" : ["%n minutë më parë","%n minuta më parë"],
"seconds ago" : "sekonda më parë",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduli me ID: %s nuk ekziston. Ju lutem aktivizojeni atë në konfigurimet e aplikacionit tuaj ose kontaktoni administratorin tuaj.",
"File name is a reserved word" : "Emri i kartelës është një emër i rezervuar",
"File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme",
"File name is too long" : "Emri i kartelës është shumë i gjatë",
@@ -45,17 +51,21 @@ OC.L10N.register(
"This is an automatically sent email, please do not reply." : "Ky është një email i dërguar automatikisht, ju lutem mos u përgjigjni.",
"Help" : "Ndihmë",
"Apps" : "Aplikacione",
+ "Settings" : "Konfigurime",
"Log out" : "Shkyçu",
"Users" : "Përdorues",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarja",
"Security" : "Siguria",
"Encryption" : "Enkriptimi",
"Additional settings" : "Konfigurime shtesë",
"Tips & tricks" : "Këshilla dhe rrengje",
"Personal info" : "Informacion personal",
- "Unlimited" : "E pa limituar",
+ "Sync clients" : "Klientë të sikronizuar",
+ "Unlimited" : "E palimituar",
+ "__language_name__" : "_emri_i_gjuhës__",
"Verifying" : "Duke e verifikuar",
"Verifying …" : "Duke e verifikuar ...",
"Verify" : "Verifiko",
@@ -66,7 +76,8 @@ OC.L10N.register(
"Oracle connection could not be established" : "S’u vendos dot lidhje me Oracle",
"Oracle username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim Oracle-i i pavlefshëm",
"DB Error: \"%s\"" : "Gabim DB-je: \"%s\"",
- "Offending command was: \"%s\"" : "Urdhri shkaktar qe: \"%s\"",
+ "Offending command was: \"%s\"" : "Urdhëri shkaktar ishte: \"%s\"",
+ "You need to enter details of an existing account." : "Duhet të futni detajet e një llogarie ekzistuese.",
"Offending command was: \"%s\", name: %s, password: %s" : "Urdhri shkaktar qe: \"%s\", emër: %s, fjalëkalim: %s",
"PostgreSQL username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim PostgreSQL jo të vlefshëm",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk mbulohet dhe %s s’do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj! ",
@@ -105,15 +116,25 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të",
"Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave",
+ "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s",
+ "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira",
+ "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara",
"Expiration date is in the past" : "Data e skadimit bie në të kaluarën",
+ "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen",
+ "%s shared »%s« with you" : "%s ndau me ju »%s«",
+ "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.",
+ "Click the button below to open it." : "Kliko butonin më poshtë për të hapur atë.",
+ "Open »%s«" : "Hap»1 %s«",
+ "%s via %s" : "%s përmes %s",
+ "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më",
"Could not find category \"%s\"" : "S’u gjet kategori \"%s\"",
- "Sunday" : "E diel",
- "Monday" : "E hënë",
- "Tuesday" : "E martë",
- "Wednesday" : "E mërkurë",
- "Thursday" : "E enjte",
- "Friday" : "E premte",
- "Saturday" : "E shtunë",
+ "Sunday" : "E Dielë",
+ "Monday" : "E Hënë",
+ "Tuesday" : "E Martë",
+ "Wednesday" : "E Mërkurë",
+ "Thursday" : "E Enjte",
+ "Friday" : "E Premte",
+ "Saturday" : "E Shtunë",
"Sun." : "Die.",
"Mon." : "Hën.",
"Tue." : "Mar.",
@@ -124,7 +145,7 @@ OC.L10N.register(
"Su" : "Di",
"Mo" : "Hë",
"Tu" : "Ma",
- "We" : "Më",
+ "We" : "Ne",
"Th" : "En",
"Fr" : "Pr",
"Sa" : "Sh",
@@ -155,6 +176,7 @@ OC.L10N.register(
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Në një emër përdoruesi lejohen vetëm shenjat vijuese: \"a-z\", \"A-Z\", \"0-9\", dhe \"_.@-\"",
"A valid username must be provided" : "Duhet dhënë një emër i vlefshëm përdoruesi",
"Username contains whitespace at the beginning or at the end" : "Emri i përdoruesit përmban hapësirë në fillim ose në fund",
+ "Username must not consist of dots only" : "Emri i përdoruesit nuk duhet të përbëhet vetëm nga pika",
"A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
"The username is already being used" : "Emri i përdoruesit është tashmë i përdorur",
"User disabled" : "Përdorues i çaktivizuar",
@@ -167,11 +189,15 @@ OC.L10N.register(
"Can't read file" : "S'lexohet dot kartela",
"Application is not enabled" : "Aplikacioni s’është aktivizuar",
"Authentication error" : "Gabim mirëfilltësimi",
- "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.",
+ "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.",
"Unknown user" : "Përdorues i panjohur",
"No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.",
"Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"",
"Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s",
+ "Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.",
"Setting locale to %s failed" : "Caktimi i gjuhës si %s dështoi",
"Please install one of these locales on your system and restart your webserver." : "Ju lutemi, instaloni te sistemi juaj një prej këtyre vendoreve dhe rinisni shërbyesin tuaj web.",
"Please ask your server administrator to install the module." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit ta instalojë modulin.",
@@ -189,7 +215,11 @@ OC.L10N.register(
"PostgreSQL >= 9 required" : "Lypset PostgreSQL >= 9",
"Please upgrade your database version" : "Ju lutemi, përmirësoni bazën tuaj të të dhënave me një version më të ri.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Ju lutemi, kalojani lejet në 0770, që kështu atë drejtori të mos mund ta shfaqin përdorues të tjerë.",
+ "Your data directory is readable by other users" : "Direktoria juaj e të dhënave është e lexueshme nga përdorues të tjerë",
+ "Your data directory must be an absolute path" : "Direktoria juaj e të dhënave duhet të jetë një path absolut",
"Check the value of \"datadirectory\" in your configuration" : "Kontrolloni vlerën e \"datadirectory\" te formësimi juaj",
+ "Your data directory is invalid" : "Direktoria juaj e të dhënave është i pavlefshëm",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Sigurohu që ekziston një skedar i quajtur \".ocdata\" në rrënjën e direktorisë së të dhënave.",
"Could not obtain lock type %d on \"%s\"." : "S’u mor dot lloj kyçjeje %d në \"%s\".",
"Storage unauthorized. %s" : "Depozitë e paautorizuar. %s",
"Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s",
@@ -200,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.",
"Server settings" : "Konfigurimi i serverit",
"You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.",
- "%s shared »%s« with you" : "%s ndau me ju »%s«",
- "%s via %s" : "%s përmes %s",
"Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s",
"Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje",
"Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi",
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 4ca0cb1c20a..3e75292b981 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -2,6 +2,7 @@
"Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve",
"See %s" : "Shihni %s",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Skedarët e aplikacionit %$1s nuk u zëvëndësuan në mënyrë korrekte. Sigurohuni që është një version që përputhet me serverin.",
"Sample configuration detected" : "U gjet formësim shembull",
"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" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php",
@@ -9,6 +10,10 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s dhe %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s dhe %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s dhe %5$s",
+ "Education Edition" : "Variant Edukativ",
+ "Enterprise bundle" : "Pakoja e ndërmarrjeve",
+ "Groupware bundle" : "Pako groupware",
+ "Social sharing bundle" : "Pakoja e ndarjes sociale",
"PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.",
"PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.",
"%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.",
@@ -33,6 +38,7 @@
"_%n hour ago_::_%n hours ago_" : ["%n orë më parë","%n orë më parë"],
"_%n minute ago_::_%n minutes ago_" : ["%n minutë më parë","%n minuta më parë"],
"seconds ago" : "sekonda më parë",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduli me ID: %s nuk ekziston. Ju lutem aktivizojeni atë në konfigurimet e aplikacionit tuaj ose kontaktoni administratorin tuaj.",
"File name is a reserved word" : "Emri i kartelës është një emër i rezervuar",
"File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme",
"File name is too long" : "Emri i kartelës është shumë i gjatë",
@@ -43,17 +49,21 @@
"This is an automatically sent email, please do not reply." : "Ky është një email i dërguar automatikisht, ju lutem mos u përgjigjni.",
"Help" : "Ndihmë",
"Apps" : "Aplikacione",
+ "Settings" : "Konfigurime",
"Log out" : "Shkyçu",
"Users" : "Përdorues",
"APCu" : "APCu",
"Redis" : "Redis",
+ "Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarja",
"Security" : "Siguria",
"Encryption" : "Enkriptimi",
"Additional settings" : "Konfigurime shtesë",
"Tips & tricks" : "Këshilla dhe rrengje",
"Personal info" : "Informacion personal",
- "Unlimited" : "E pa limituar",
+ "Sync clients" : "Klientë të sikronizuar",
+ "Unlimited" : "E palimituar",
+ "__language_name__" : "_emri_i_gjuhës__",
"Verifying" : "Duke e verifikuar",
"Verifying …" : "Duke e verifikuar ...",
"Verify" : "Verifiko",
@@ -64,7 +74,8 @@
"Oracle connection could not be established" : "S’u vendos dot lidhje me Oracle",
"Oracle username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim Oracle-i i pavlefshëm",
"DB Error: \"%s\"" : "Gabim DB-je: \"%s\"",
- "Offending command was: \"%s\"" : "Urdhri shkaktar qe: \"%s\"",
+ "Offending command was: \"%s\"" : "Urdhëri shkaktar ishte: \"%s\"",
+ "You need to enter details of an existing account." : "Duhet të futni detajet e një llogarie ekzistuese.",
"Offending command was: \"%s\", name: %s, password: %s" : "Urdhri shkaktar qe: \"%s\", emër: %s, fjalëkalim: %s",
"PostgreSQL username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim PostgreSQL jo të vlefshëm",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk mbulohet dhe %s s’do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj! ",
@@ -103,15 +114,25 @@
"Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të",
"Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave",
+ "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s",
+ "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira",
+ "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara",
"Expiration date is in the past" : "Data e skadimit bie në të kaluarën",
+ "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen",
+ "%s shared »%s« with you" : "%s ndau me ju »%s«",
+ "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.",
+ "Click the button below to open it." : "Kliko butonin më poshtë për të hapur atë.",
+ "Open »%s«" : "Hap»1 %s«",
+ "%s via %s" : "%s përmes %s",
+ "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më",
"Could not find category \"%s\"" : "S’u gjet kategori \"%s\"",
- "Sunday" : "E diel",
- "Monday" : "E hënë",
- "Tuesday" : "E martë",
- "Wednesday" : "E mërkurë",
- "Thursday" : "E enjte",
- "Friday" : "E premte",
- "Saturday" : "E shtunë",
+ "Sunday" : "E Dielë",
+ "Monday" : "E Hënë",
+ "Tuesday" : "E Martë",
+ "Wednesday" : "E Mërkurë",
+ "Thursday" : "E Enjte",
+ "Friday" : "E Premte",
+ "Saturday" : "E Shtunë",
"Sun." : "Die.",
"Mon." : "Hën.",
"Tue." : "Mar.",
@@ -122,7 +143,7 @@
"Su" : "Di",
"Mo" : "Hë",
"Tu" : "Ma",
- "We" : "Më",
+ "We" : "Ne",
"Th" : "En",
"Fr" : "Pr",
"Sa" : "Sh",
@@ -153,6 +174,7 @@
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Në një emër përdoruesi lejohen vetëm shenjat vijuese: \"a-z\", \"A-Z\", \"0-9\", dhe \"_.@-\"",
"A valid username must be provided" : "Duhet dhënë një emër i vlefshëm përdoruesi",
"Username contains whitespace at the beginning or at the end" : "Emri i përdoruesit përmban hapësirë në fillim ose në fund",
+ "Username must not consist of dots only" : "Emri i përdoruesit nuk duhet të përbëhet vetëm nga pika",
"A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
"The username is already being used" : "Emri i përdoruesit është tashmë i përdorur",
"User disabled" : "Përdorues i çaktivizuar",
@@ -165,11 +187,15 @@
"Can't read file" : "S'lexohet dot kartela",
"Application is not enabled" : "Aplikacioni s’është aktivizuar",
"Authentication error" : "Gabim mirëfilltësimi",
- "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.",
+ "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.",
"Unknown user" : "Përdorues i panjohur",
"No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.",
"Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"",
"Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s",
+ "Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.",
"Setting locale to %s failed" : "Caktimi i gjuhës si %s dështoi",
"Please install one of these locales on your system and restart your webserver." : "Ju lutemi, instaloni te sistemi juaj një prej këtyre vendoreve dhe rinisni shërbyesin tuaj web.",
"Please ask your server administrator to install the module." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit ta instalojë modulin.",
@@ -187,7 +213,11 @@
"PostgreSQL >= 9 required" : "Lypset PostgreSQL >= 9",
"Please upgrade your database version" : "Ju lutemi, përmirësoni bazën tuaj të të dhënave me një version më të ri.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Ju lutemi, kalojani lejet në 0770, që kështu atë drejtori të mos mund ta shfaqin përdorues të tjerë.",
+ "Your data directory is readable by other users" : "Direktoria juaj e të dhënave është e lexueshme nga përdorues të tjerë",
+ "Your data directory must be an absolute path" : "Direktoria juaj e të dhënave duhet të jetë një path absolut",
"Check the value of \"datadirectory\" in your configuration" : "Kontrolloni vlerën e \"datadirectory\" te formësimi juaj",
+ "Your data directory is invalid" : "Direktoria juaj e të dhënave është i pavlefshëm",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Sigurohu që ekziston një skedar i quajtur \".ocdata\" në rrënjën e direktorisë së të dhënave.",
"Could not obtain lock type %d on \"%s\"." : "S’u mor dot lloj kyçjeje %d në \"%s\".",
"Storage unauthorized. %s" : "Depozitë e paautorizuar. %s",
"Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s",
@@ -198,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.",
"Server settings" : "Konfigurimi i serverit",
"You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.",
- "%s shared »%s« with you" : "%s ndau me ju »%s«",
- "%s via %s" : "%s përmes %s",
"Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s",
"Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje",
"Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi",
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index 29e0611f950..b9fc016f631 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -103,6 +103,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa",
"Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen",
"Expiration date is in the past" : "Utgångsdatum är i det förflutna",
+ "%s shared »%s« with you" : "%s delade »%s« med dig",
+ "%s via %s" : "%s via %s",
"Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"",
"Sunday" : "Söndag",
"Monday" : "Måndag",
@@ -202,8 +204,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.",
"Server settings" : "Serverinställningar",
"You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
- "%s shared »%s« with you" : "%s delade »%s« med dig",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s",
"Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"",
"Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"",
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index f5dc6cd86fb..0ff89c129e0 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -101,6 +101,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa",
"Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen",
"Expiration date is in the past" : "Utgångsdatum är i det förflutna",
+ "%s shared »%s« with you" : "%s delade »%s« med dig",
+ "%s via %s" : "%s via %s",
"Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"",
"Sunday" : "Söndag",
"Monday" : "Måndag",
@@ -200,8 +202,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.",
"Server settings" : "Serverinställningar",
"You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
- "%s shared »%s« with you" : "%s delade »%s« med dig",
- "%s via %s" : "%s via %s",
"Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s",
"Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"",
"Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"",
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 0b1b5a8bff2..5ad3ad4f179 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ve %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ve %5$s",
+ "Education Edition" : "Eğitim Sürümü",
"Enterprise bundle" : "Kurumsal paket",
"Groupware bundle" : "Grup paketi",
"Social sharing bundle" : "Sosyal ağ paketi",
@@ -120,6 +121,11 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz",
"Expiration date is in the past" : "Son kullanma tarihi geçmişte",
"Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz",
+ "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
+ "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.",
+ "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
+ "Open »%s«" : "»%s« Aç",
+ "%s via %s" : "%s, %s aracılığıyla",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
@@ -224,8 +230,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.",
"Server settings" : "Sunucu ayarları",
"You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.",
- "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
- "%s via %s" : "%s, %s aracılığıyla",
"Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor",
"Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz",
"Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 498e75ffb08..5001fe51933 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ve %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ve %5$s",
+ "Education Edition" : "Eğitim Sürümü",
"Enterprise bundle" : "Kurumsal paket",
"Groupware bundle" : "Grup paketi",
"Social sharing bundle" : "Sosyal ağ paketi",
@@ -118,6 +119,11 @@
"Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz",
"Expiration date is in the past" : "Son kullanma tarihi geçmişte",
"Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz",
+ "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
+ "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.",
+ "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
+ "Open »%s«" : "»%s« Aç",
+ "%s via %s" : "%s, %s aracılığıyla",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
@@ -222,8 +228,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.",
"Server settings" : "Sunucu ayarları",
"You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.",
- "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
- "%s via %s" : "%s, %s aracılığıyla",
"Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor",
"Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz",
"Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz",
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index aee9d512d9a..0402c802a46 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s",
+ "Education Edition" : "教育版",
"Enterprise bundle" : "企业捆绑包",
"Groupware bundle" : "群组捆绑包",
"Social sharing bundle" : "社交分享捆绑包",
@@ -120,6 +121,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "无法分享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过.",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
+ "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s via %s" : "%s 通过 %s",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
@@ -224,8 +227,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.",
"Server settings" : "服务器设置",
"You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
- "%s shared »%s« with you" : "%s 向您分享了 »%s«",
- "%s via %s" : "%s 通过 %s",
"Cannot increase permissions of %s" : "无法提升 %s 的权限",
"Files can't be shared with delete permissions" : "无法分享有删除权限的文件",
"Files can't be shared with create permissions" : "无法分享有创建权限的文件",
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 40af580cd2d..de4f91d70d1 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -10,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s",
+ "Education Edition" : "教育版",
"Enterprise bundle" : "企业捆绑包",
"Groupware bundle" : "群组捆绑包",
"Social sharing bundle" : "社交分享捆绑包",
@@ -118,6 +119,8 @@
"Files can’t be shared with create permissions" : "无法分享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过.",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
+ "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s via %s" : "%s 通过 %s",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
@@ -222,8 +225,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.",
"Server settings" : "服务器设置",
"You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
- "%s shared »%s« with you" : "%s 向您分享了 »%s«",
- "%s via %s" : "%s 通过 %s",
"Cannot increase permissions of %s" : "无法提升 %s 的权限",
"Files can't be shared with delete permissions" : "无法分享有删除权限的文件",
"Files can't be shared with create permissions" : "无法分享有创建权限的文件",
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index fcde5a9016a..dc33fd82ac4 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -92,6 +92,8 @@ OC.L10N.register(
"Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源",
"Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案",
"Expiration date is in the past" : "到期日是之前的時間",
+ "%s shared »%s« with you" : "%s 與您分享了 %s",
+ "%s via %s" : "%s 經由 %s",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -185,8 +187,6 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員",
"Server settings" : "伺服器設定",
"You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
- "%s shared »%s« with you" : "%s 與您分享了 %s",
- "%s via %s" : "%s 經由 %s",
"Cannot increase permissions of %s" : "無法增加%s的權限",
"Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案",
"Files can't be shared with create permissions" : "無法分享具有新建權限的檔案",
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 40c0a83ffcc..130d64680eb 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -90,6 +90,8 @@
"Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源",
"Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案",
"Expiration date is in the past" : "到期日是之前的時間",
+ "%s shared »%s« with you" : "%s 與您分享了 %s",
+ "%s via %s" : "%s 經由 %s",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -183,8 +185,6 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員",
"Server settings" : "伺服器設定",
"You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
- "%s shared »%s« with you" : "%s 與您分享了 %s",
- "%s via %s" : "%s 經由 %s",
"Cannot increase permissions of %s" : "無法增加%s的權限",
"Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案",
"Files can't be shared with create permissions" : "無法分享具有新建權限的檔案",
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index bbb6f694156..7640a367e74 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -588,7 +588,7 @@ class Manager implements IManager {
$users = $this->config->getUsersForUserValue('activity', 'rsstoken', $token);
- if (sizeof($users) !== 1) {
+ if (count($users) !== 1) {
// No unique user found
throw new \UnexpectedValueException('The token is invalid');
}
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index 1f59e677a54..52b0679bb20 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -409,7 +409,7 @@ class AllConfig implements \OCP\IConfig {
array_unshift($queryParams, $key);
array_unshift($queryParams, $appName);
- $placeholders = (sizeof($chunk) == 50) ? $placeholders50 : implode(',', array_fill(0, sizeof($chunk), '?'));
+ $placeholders = (count($chunk) === 50) ? $placeholders50 : implode(',', array_fill(0, count($chunk), '?'));
$query = 'SELECT `userid`, `configvalue` ' .
'FROM `*PREFIX*preferences` ' .
diff --git a/lib/private/App/AppStore/Bundles/BundleFetcher.php b/lib/private/App/AppStore/Bundles/BundleFetcher.php
index 01cd4d6a518..3fbdf65cd4f 100644
--- a/lib/private/App/AppStore/Bundles/BundleFetcher.php
+++ b/lib/private/App/AppStore/Bundles/BundleFetcher.php
@@ -42,6 +42,7 @@ class BundleFetcher {
new EnterpriseBundle($this->l10n),
new GroupwareBundle($this->l10n),
new SocialSharingBundle($this->l10n),
+ new EducationBundle($this->l10n),
];
}
diff --git a/lib/private/App/AppStore/Bundles/EducationBundle.php b/lib/private/App/AppStore/Bundles/EducationBundle.php
new file mode 100644
index 00000000000..c3885f5e250
--- /dev/null
+++ b/lib/private/App/AppStore/Bundles/EducationBundle.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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 OC\App\AppStore\Bundles;
+
+class EducationBundle extends Bundle {
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getName() {
+ return (string)$this->l10n->t('Education Edition');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAppIdentifiers() {
+ return [
+ 'zenodo',
+ 'dashboard',
+ 'circles',
+ 'groupfolders',
+ 'announcementcenter',
+ 'admin_notifications',
+ 'quota_warning',
+ 'orcid',
+ 'user_saml',
+ ];
+ }
+
+}
diff --git a/lib/private/App/CodeChecker/MigrationSchemaChecker.php b/lib/private/App/CodeChecker/MigrationSchemaChecker.php
index 9dee358327d..ea403ad7758 100644
--- a/lib/private/App/CodeChecker/MigrationSchemaChecker.php
+++ b/lib/private/App/CodeChecker/MigrationSchemaChecker.php
@@ -36,6 +36,12 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
/** @var array */
public $errors = [];
+ /**
+ * @param Node $node
+ * @return void
+ *
+ * @suppress PhanUndeclaredProperty
+ */
public function enterNode(Node $node) {
/**
* Check tables
diff --git a/lib/private/App/DependencyAnalyzer.php b/lib/private/App/DependencyAnalyzer.php
index 84d87efa3d3..4e998c71f32 100644
--- a/lib/private/App/DependencyAnalyzer.php
+++ b/lib/private/App/DependencyAnalyzer.php
@@ -43,7 +43,7 @@ class DependencyAnalyzer {
* @param Platform $platform
* @param \OCP\IL10N $l
*/
- function __construct(Platform $platform, IL10N $l) {
+ public function __construct(Platform $platform, IL10N $l) {
$this->platform = $platform;
$this->l = $l;
}
@@ -179,7 +179,7 @@ class DependencyAnalyzer {
}, $supportedDatabases);
$currentDatabase = $this->platform->getDatabase();
if (!in_array($currentDatabase, $supportedDatabases)) {
- $missing[] = (string)$this->l->t('Following databases are supported: %s', join(', ', $supportedDatabases));
+ $missing[] = (string)$this->l->t('Following databases are supported: %s', [implode(', ', $supportedDatabases)]);
}
return $missing;
}
@@ -282,7 +282,7 @@ class DependencyAnalyzer {
}
$currentOS = $this->platform->getOS();
if (!in_array($currentOS, $oss)) {
- $missing[] = (string)$this->l->t('Following platforms are supported: %s', join(', ', $oss));
+ $missing[] = (string)$this->l->t('Following platforms are supported: %s', [implode(', ', $oss)]);
}
return $missing;
}
@@ -315,12 +315,12 @@ class DependencyAnalyzer {
if (!is_null($minVersion)) {
if ($this->compareSmaller($this->platform->getOcVersion(), $minVersion)) {
- $missing[] = (string)$this->l->t('Server version %s or higher is required.', $this->toVisibleVersion($minVersion));
+ $missing[] = (string)$this->l->t('Server version %s or higher is required.', [$this->toVisibleVersion($minVersion)]);
}
}
if (!is_null($maxVersion)) {
if ($this->compareBigger($this->platform->getOcVersion(), $maxVersion)) {
- $missing[] = (string)$this->l->t('Server version %s or lower is required.', $this->toVisibleVersion($maxVersion));
+ $missing[] = (string)$this->l->t('Server version %s or lower is required.', [$this->toVisibleVersion($maxVersion)]);
}
}
return $missing;
@@ -349,8 +349,9 @@ class DependencyAnalyzer {
* @return mixed
*/
private function getValue($element) {
- if (isset($element['@value']))
+ if (isset($element['@value'])) {
return $element['@value'];
+ }
return (string)$element;
}
}
diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php
index 47ce28e6e98..fef8ab7a1e8 100644
--- a/lib/private/App/InfoParser.php
+++ b/lib/private/App/InfoParser.php
@@ -176,7 +176,7 @@ class InfoParser {
* @param \SimpleXMLElement $xml
* @return array
*/
- function xmlToArray($xml) {
+ public function xmlToArray($xml) {
if (!$xml->children()) {
return (string)$xml;
}
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 86d14a2f330..d0c69c3bf32 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -75,7 +75,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* Put your class dependencies in here
* @param string $appName the name of the app
* @param array $urlParams
- * @param ServerContainer $server
+ * @param ServerContainer|null $server
*/
public function __construct($appName, $urlParams = array(), ServerContainer $server = null){
parent::__construct();
@@ -315,7 +315,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @deprecated implements only deprecated methods
* @return IApi
*/
- function getCoreApi()
+ public function getCoreApi()
{
return $this->query('API');
}
@@ -323,7 +323,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
/**
* @return \OCP\IServerContainer
*/
- function getServer()
+ public function getServer()
{
return $this->server;
}
@@ -332,7 +332,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @param string $middleWare
* @return boolean|null
*/
- function registerMiddleWare($middleWare) {
+ public function registerMiddleWare($middleWare) {
array_push($this->middleWares, $middleWare);
}
@@ -340,7 +340,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* used to return the appname of the set application
* @return string the name of your application
*/
- function getAppName() {
+ public function getAppName() {
return $this->query('AppName');
}
@@ -348,7 +348,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @deprecated use IUserSession->isLoggedIn()
* @return boolean
*/
- function isLoggedIn() {
+ public function isLoggedIn() {
return \OC::$server->getUserSession()->isLoggedIn();
}
@@ -356,7 +356,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @deprecated use IGroupManager->isAdmin($userId)
* @return boolean
*/
- function isAdminUser() {
+ public function isAdminUser() {
$uid = $this->getUserId();
return \OC_User::isAdminUser($uid);
}
@@ -371,7 +371,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @param string $level
* @return mixed
*/
- function log($message, $level) {
+ public function log($message, $level) {
switch($level){
case 'debug':
$level = \OCP\Util::DEBUG;
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index 09e18f74177..956744e5d5e 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -721,7 +721,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
// strip off the script name's dir and file name
// FIXME: Sabre does not really belong here
- list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($scriptName);
+ list($path, $name) = \Sabre\Uri\split($scriptName);
if (!empty($path)) {
if($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) {
$pathInfo = substr($pathInfo, strlen($path));
diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php
index 0fc7bb0f0ec..46f2881b076 100644
--- a/lib/private/AppFramework/Middleware/OCSMiddleware.php
+++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php
@@ -52,7 +52,7 @@ class OCSMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
*/
public function beforeController($controller, $methodName) {
@@ -67,7 +67,7 @@ class OCSMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param \Exception $exception
* @throws \Exception
@@ -87,7 +87,7 @@ class OCSMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param Response $response
* @return \OCP\AppFramework\Http\Response
@@ -120,7 +120,7 @@ class OCSMiddleware extends Middleware {
* @param string $message
* @return V1Response|V2Response
*/
- private function buildNewResponse($controller, $code, $message) {
+ private function buildNewResponse(Controller $controller, $code, $message) {
$format = $this->getFormat($controller);
$data = new DataResponse();
@@ -135,10 +135,10 @@ class OCSMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @return string
*/
- private function getFormat($controller) {
+ private function getFormat(Controller $controller) {
// get format from the url format or request format parameter
$format = $this->request->getParam('format');
diff --git a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
index b361f453bdb..e349960115d 100644
--- a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
@@ -23,6 +23,7 @@ namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\Security\Bruteforce\Throttler;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
use OCP\IRequest;
@@ -75,7 +76,7 @@ class BruteForceMiddleware extends Middleware {
$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
$ip = $this->request->getRemoteAddress();
$this->throttler->sleepDelay($ip, $action);
- $this->throttler->registerAttempt($action, $ip);
+ $this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata());
}
return parent::afterController($controller, $methodName, $response);
diff --git a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
index e9fcc1fdea5..28ef8b43ffc 100644
--- a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
@@ -24,6 +24,7 @@ namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\Security\RateLimiting\Exception\RateLimitExceededException;
use OC\Security\RateLimiting\Limiter;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Middleware;
diff --git a/lib/private/AppFramework/Middleware/SessionMiddleware.php b/lib/private/AppFramework/Middleware/SessionMiddleware.php
index c5fefa77fc4..dd2029bf053 100644
--- a/lib/private/AppFramework/Middleware/SessionMiddleware.php
+++ b/lib/private/AppFramework/Middleware/SessionMiddleware.php
@@ -24,6 +24,7 @@
namespace OC\AppFramework\Middleware;
use OC\AppFramework\Utility\ControllerMethodReflector;
+use OCP\AppFramework\Controller;
use OCP\IRequest;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
@@ -55,7 +56,7 @@ class SessionMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
*/
public function beforeController($controller, $methodName) {
@@ -66,7 +67,7 @@ class SessionMiddleware extends Middleware {
}
/**
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param Response $response
* @return Response
diff --git a/lib/private/Archive/Archive.php b/lib/private/Archive/Archive.php
index fadc12d2a24..15ec3e1fe56 100644
--- a/lib/private/Archive/Archive.php
+++ b/lib/private/Archive/Archive.php
@@ -36,100 +36,100 @@ abstract class Archive {
/**
* @param $source
*/
- abstract function __construct($source);
+ public abstract function __construct($source);
/**
* add an empty folder to the archive
* @param string $path
* @return bool
*/
- abstract function addFolder($path);
+ public abstract function addFolder($path);
/**
* add a file to the archive
* @param string $path
* @param string $source either a local file or string data
* @return bool
*/
- abstract function addFile($path, $source='');
+ public abstract function addFile($path, $source='');
/**
* rename a file or folder in the archive
* @param string $source
* @param string $dest
* @return bool
*/
- abstract function rename($source, $dest);
+ public abstract function rename($source, $dest);
/**
* get the uncompressed size of a file in the archive
* @param string $path
* @return int
*/
- abstract function filesize($path);
+ public abstract function filesize($path);
/**
* get the last modified time of a file in the archive
* @param string $path
* @return int
*/
- abstract function mtime($path);
+ public abstract function mtime($path);
/**
* get the files in a folder
* @param string $path
* @return array
*/
- abstract function getFolder($path);
+ public abstract function getFolder($path);
/**
* get all files in the archive
* @return array
*/
- abstract function getFiles();
+ public abstract function getFiles();
/**
* get the content of a file
* @param string $path
* @return string
*/
- abstract function getFile($path);
+ public abstract function getFile($path);
/**
* extract a single file from the archive
* @param string $path
* @param string $dest
* @return bool
*/
- abstract function extractFile($path, $dest);
+ public abstract function extractFile($path, $dest);
/**
* extract the archive
* @param string $dest
* @return bool
*/
- abstract function extract($dest);
+ public abstract function extract($dest);
/**
* check if a file or folder exists in the archive
* @param string $path
* @return bool
*/
- abstract function fileExists($path);
+ public abstract function fileExists($path);
/**
* remove a file or folder from the archive
* @param string $path
* @return bool
*/
- abstract function remove($path);
+ public abstract function remove($path);
/**
* get a file handler
* @param string $path
* @param string $mode
* @return resource
*/
- abstract function getStream($path, $mode);
+ public abstract function getStream($path, $mode);
/**
* add a folder and all its content
* @param string $path
* @param string $source
* @return boolean|null
*/
- function addRecursive($path, $source) {
+ public function addRecursive($path, $source) {
$dh = opendir($source);
if(is_resource($dh)) {
$this->addFolder($path);
while (($file = readdir($dh)) !== false) {
- if($file=='.' or $file=='..') {
+ if($file === '.' || $file === '..') {
continue;
}
if(is_dir($source.'/'.$file)) {
diff --git a/lib/private/Archive/TAR.php b/lib/private/Archive/TAR.php
index 07ccd09f399..e6f7ad2b998 100644
--- a/lib/private/Archive/TAR.php
+++ b/lib/private/Archive/TAR.php
@@ -52,7 +52,7 @@ class TAR extends Archive {
/**
* @param string $source
*/
- function __construct($source) {
+ public function __construct($source) {
$types = array(null, 'gz', 'bz2');
$this->path = $source;
$this->tar = new \Archive_Tar($source, $types[self::getTarType($source)]);
@@ -90,7 +90,7 @@ class TAR extends Archive {
* @param string $path
* @return bool
*/
- function addFolder($path) {
+ public function addFolder($path) {
$tmpBase = \OC::$server->getTempManager()->getTemporaryFolder();
if (substr($path, -1, 1) != '/') {
$path .= '/';
@@ -120,7 +120,7 @@ class TAR extends Archive {
* @param string $source either a local file or string data
* @return bool
*/
- function addFile($path, $source = '') {
+ public function addFile($path, $source = '') {
if ($this->fileExists($path)) {
$this->remove($path);
}
@@ -140,7 +140,7 @@ class TAR extends Archive {
* @param string $dest
* @return bool
*/
- function rename($source, $dest) {
+ public function rename($source, $dest) {
//no proper way to delete, rename entire archive, rename file and remake archive
$tmp = \OCP\Files::tmpFolder();
$this->tar->extract($tmp);
@@ -180,7 +180,7 @@ class TAR extends Archive {
* @param string $path
* @return int
*/
- function filesize($path) {
+ public function filesize($path) {
$stat = $this->getHeader($path);
return $stat['size'];
}
@@ -191,7 +191,7 @@ class TAR extends Archive {
* @param string $path
* @return int
*/
- function mtime($path) {
+ public function mtime($path) {
$stat = $this->getHeader($path);
return $stat['mtime'];
}
@@ -202,7 +202,7 @@ class TAR extends Archive {
* @param string $path
* @return array
*/
- function getFolder($path) {
+ public function getFolder($path) {
$files = $this->getFiles();
$folderContent = array();
$pathLength = strlen($path);
@@ -228,7 +228,7 @@ class TAR extends Archive {
*
* @return array
*/
- function getFiles() {
+ public function getFiles() {
if ($this->fileList) {
return $this->fileList;
}
@@ -249,7 +249,7 @@ class TAR extends Archive {
* @param string $path
* @return string
*/
- function getFile($path) {
+ public function getFile($path) {
return $this->tar->extractInString($path);
}
@@ -260,7 +260,7 @@ class TAR extends Archive {
* @param string $dest
* @return bool
*/
- function extractFile($path, $dest) {
+ public function extractFile($path, $dest) {
$tmp = \OCP\Files::tmpFolder();
if (!$this->fileExists($path)) {
return false;
@@ -283,7 +283,7 @@ class TAR extends Archive {
* @param string $dest
* @return bool
*/
- function extract($dest) {
+ public function extract($dest) {
return $this->tar->extract($dest);
}
@@ -293,7 +293,7 @@ class TAR extends Archive {
* @param string $path
* @return bool
*/
- function fileExists($path) {
+ public function fileExists($path) {
$files = $this->getFiles();
if ((array_search($path, $files) !== false) or (array_search($path . '/', $files) !== false)) {
return true;
@@ -322,7 +322,7 @@ class TAR extends Archive {
* @param string $path
* @return bool
*/
- function remove($path) {
+ public function remove($path) {
if (!$this->fileExists($path)) {
return false;
}
@@ -346,7 +346,7 @@ class TAR extends Archive {
* @param string $mode
* @return resource
*/
- function getStream($path, $mode) {
+ public function getStream($path, $mode) {
if (strrpos($path, '.') !== false) {
$ext = substr($path, strrpos($path, '.'));
} else {
@@ -371,7 +371,7 @@ class TAR extends Archive {
/**
* write back temporary files
*/
- function writeBack($tmpFile, $path) {
+ public function writeBack($tmpFile, $path) {
$this->addFile($path, $tmpFile);
unlink($tmpFile);
}
diff --git a/lib/private/Archive/ZIP.php b/lib/private/Archive/ZIP.php
index 0ed0f48acc4..8d616a7ef9a 100644
--- a/lib/private/Archive/ZIP.php
+++ b/lib/private/Archive/ZIP.php
@@ -43,7 +43,7 @@ class ZIP extends Archive{
/**
* @param string $source
*/
- function __construct($source) {
+ public function __construct($source) {
$this->path=$source;
$this->zip=new \ZipArchive();
if($this->zip->open($source, \ZipArchive::CREATE)) {
@@ -56,7 +56,7 @@ class ZIP extends Archive{
* @param string $path
* @return bool
*/
- function addFolder($path) {
+ public function addFolder($path) {
return $this->zip->addEmptyDir($path);
}
/**
@@ -65,7 +65,7 @@ class ZIP extends Archive{
* @param string $source either a local file or string data
* @return bool
*/
- function addFile($path, $source='') {
+ public function addFile($path, $source='') {
if($source and $source[0]=='/' and file_exists($source)) {
$result=$this->zip->addFile($source, $path);
}else{
@@ -83,7 +83,7 @@ class ZIP extends Archive{
* @param string $dest
* @return boolean|null
*/
- function rename($source, $dest) {
+ public function rename($source, $dest) {
$source=$this->stripPath($source);
$dest=$this->stripPath($dest);
$this->zip->renameName($source, $dest);
@@ -93,7 +93,7 @@ class ZIP extends Archive{
* @param string $path
* @return int
*/
- function filesize($path) {
+ public function filesize($path) {
$stat=$this->zip->statName($path);
return $stat['size'];
}
@@ -102,7 +102,7 @@ class ZIP extends Archive{
* @param string $path
* @return int
*/
- function mtime($path) {
+ public function mtime($path) {
return filemtime($this->path);
}
/**
@@ -110,7 +110,7 @@ class ZIP extends Archive{
* @param string $path
* @return array
*/
- function getFolder($path) {
+ public function getFolder($path) {
$files=$this->getFiles();
$folderContent=array();
$pathLength=strlen($path);
@@ -127,7 +127,7 @@ class ZIP extends Archive{
* get all files in the archive
* @return array
*/
- function getFiles() {
+ public function getFiles() {
$fileCount=$this->zip->numFiles;
$files=array();
for($i=0;$i<$fileCount;$i++) {
@@ -140,7 +140,7 @@ class ZIP extends Archive{
* @param string $path
* @return string
*/
- function getFile($path) {
+ public function getFile($path) {
return $this->zip->getFromName($path);
}
/**
@@ -149,7 +149,7 @@ class ZIP extends Archive{
* @param string $dest
* @return boolean|null
*/
- function extractFile($path, $dest) {
+ public function extractFile($path, $dest) {
$fp = $this->zip->getStream($path);
file_put_contents($dest, $fp);
}
@@ -158,7 +158,7 @@ class ZIP extends Archive{
* @param string $dest
* @return bool
*/
- function extract($dest) {
+ public function extract($dest) {
return $this->zip->extractTo($dest);
}
/**
@@ -166,7 +166,7 @@ class ZIP extends Archive{
* @param string $path
* @return bool
*/
- function fileExists($path) {
+ public function fileExists($path) {
return ($this->zip->locateName($path)!==false) or ($this->zip->locateName($path.'/')!==false);
}
/**
@@ -174,7 +174,7 @@ class ZIP extends Archive{
* @param string $path
* @return bool
*/
- function remove($path) {
+ public function remove($path) {
if($this->fileExists($path.'/')) {
return $this->zip->deleteName($path.'/');
}else{
@@ -187,7 +187,7 @@ class ZIP extends Archive{
* @param string $mode
* @return resource
*/
- function getStream($path, $mode) {
+ public function getStream($path, $mode) {
if($mode=='r' or $mode=='rb') {
return $this->zip->getStream($path);
} else {
@@ -213,7 +213,7 @@ class ZIP extends Archive{
/**
* write back temporary files
*/
- function writeBack($tmpFile, $path) {
+ public function writeBack($tmpFile, $path) {
$this->addFile($path, $tmpFile);
unlink($tmpFile);
}
diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php
index 44bc553a92e..35bb83b85f4 100644
--- a/lib/private/Authentication/Token/DefaultTokenMapper.php
+++ b/lib/private/Authentication/Token/DefaultTokenMapper.php
@@ -82,7 +82,6 @@ class DefaultTokenMapper extends Mapper {
if ($data === false) {
throw new DoesNotExistException('token does not exist');
}
-;
return DefaultToken::fromRow($data);
}
@@ -105,12 +104,12 @@ class DefaultTokenMapper extends Mapper {
$result->closeCursor();
if ($data === false) {
throw new DoesNotExistException('token does not exist');
- };
+ }
return DefaultToken::fromRow($data);
}
/**
- * Get all token of a user
+ * Get all tokens of a user
*
* The provider may limit the number of result rows in case of an abuse
* where a high number of (session) tokens is generated
@@ -157,7 +156,7 @@ class DefaultTokenMapper extends Mapper {
public function deleteByName($name) {
$qb = $this->db->getQueryBuilder();
$qb->delete('authtoken')
- ->where($qb->expr()->eq('name', $qb->createNamedParameter($name)));
+ ->where($qb->expr()->eq('name', $qb->createNamedParameter($name), IQueryBuilder::PARAM_STR));
$qb->execute();
}
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index 6fd85295e03..a1a7e83ea21 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -132,7 +132,7 @@ class DefaultTokenProvider implements IProvider {
}
/**
- * Get all token of a user
+ * Get all tokens of a user
*
* The provider may limit the number of result rows in case of an abuse
* where a high number of (session) tokens is generated
diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php
index 9f280263d76..8ec1d9b8d6c 100644
--- a/lib/private/Authentication/Token/IProvider.php
+++ b/lib/private/Authentication/Token/IProvider.php
@@ -105,7 +105,7 @@ interface IProvider {
public function updateTokenActivity(IToken $token);
/**
- * Get all token of a user
+ * Get all tokens of a user
*
* The provider may limit the number of result rows in case of an abuse
* where a high number of (session) tokens is generated
diff --git a/lib/private/BackgroundJob/Job.php b/lib/private/BackgroundJob/Job.php
index cb9328f01b9..bf0195b0a1f 100644
--- a/lib/private/BackgroundJob/Job.php
+++ b/lib/private/BackgroundJob/Job.php
@@ -45,7 +45,7 @@ abstract class Job implements IJob {
/**
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
$jobList->setLastRun($this);
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php
index b0c580290ed..366fe8aac03 100644
--- a/lib/private/BackgroundJob/JobList.php
+++ b/lib/private/BackgroundJob/JobList.php
@@ -284,6 +284,7 @@ class JobList implements IJobList {
* Remove the reservation for a job
*
* @param IJob $job
+ * @suppress SqlInjectionChecker
*/
public function unlockJob(IJob $job) {
$query = $this->connection->getQueryBuilder();
diff --git a/lib/private/BackgroundJob/QueuedJob.php b/lib/private/BackgroundJob/QueuedJob.php
index e5afc792331..2abfd257a4c 100644
--- a/lib/private/BackgroundJob/QueuedJob.php
+++ b/lib/private/BackgroundJob/QueuedJob.php
@@ -36,7 +36,7 @@ abstract class QueuedJob extends Job {
* run the job, then remove it from the joblist
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
$jobList->remove($this, $this->argument);
diff --git a/lib/private/BackgroundJob/TimedJob.php b/lib/private/BackgroundJob/TimedJob.php
index 22b48a80371..9179cf258e2 100644
--- a/lib/private/BackgroundJob/TimedJob.php
+++ b/lib/private/BackgroundJob/TimedJob.php
@@ -47,7 +47,7 @@ abstract class TimedJob extends Job {
* run the job if
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
if ((time() - $this->lastRun) > $this->interval) {
diff --git a/lib/private/Command/AsyncBus.php b/lib/private/Command/AsyncBus.php
index 3c1f67da0cb..fb3cbee7240 100644
--- a/lib/private/Command/AsyncBus.php
+++ b/lib/private/Command/AsyncBus.php
@@ -45,7 +45,7 @@ class AsyncBus implements IBus {
/**
* @param \OCP\BackgroundJob\IJobList $jobList
*/
- function __construct($jobList) {
+ public function __construct($jobList) {
$this->jobList = $jobList;
}
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php
index f1c5b7dca50..078e1eef4d3 100644
--- a/lib/private/Comments/Manager.php
+++ b/lib/private/Comments/Manager.php
@@ -411,9 +411,12 @@ class Manager implements ICommentsManager {
*/
public function getNumberOfUnreadCommentsForFolder($folderId, IUser $user) {
$qb = $this->dbConn->getQueryBuilder();
- $query = $qb->select('fileid', $qb->createFunction(
- 'COUNT(' . $qb->getColumnName('c.id') . ')')
- )->from('comments', 'c')
+ $query = $qb->select('f.fileid')
+ ->selectAlias(
+ $qb->createFunction('COUNT(' . $qb->getColumnName('c.id') . ')'),
+ 'num_ids'
+ )
+ ->from('comments', 'c')
->innerJoin('c', 'filecache', 'f', $qb->expr()->andX(
$qb->expr()->eq('c.object_type', $qb->createNamedParameter('files')),
$qb->expr()->eq('f.fileid', $qb->expr()->castColumn('c.object_id', IQueryBuilder::PARAM_INT))
@@ -431,9 +434,13 @@ class Manager implements ICommentsManager {
->groupBy('f.fileid');
$resultStatement = $query->execute();
- return array_map(function ($count) {
- return (int)$count;
- }, $resultStatement->fetchAll(\PDO::FETCH_KEY_PAIR));
+
+ $results = [];
+ while ($row = $resultStatement->fetch()) {
+ $results[$row['fileid']] = (int) $row['num_ids'];
+ }
+ $resultStatement->closeCursor();
+ return $results;
}
/**
@@ -691,6 +698,7 @@ class Manager implements ICommentsManager {
* @param \DateTime $dateTime
* @param IUser $user
* @since 9.0.0
+ * @suppress SqlInjectionChecker
*/
public function setReadMark($objectType, $objectId, \DateTime $dateTime, IUser $user) {
$this->checkRoleParameters('Object', $objectType, $objectId);
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 563c077b04a..4f042e403f1 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -272,6 +272,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
* @return int number of new rows
* @throws \Doctrine\DBAL\DBALException
* @throws PreConditionNotMetException
+ * @suppress SqlInjectionChecker
*/
public function setValues($table, array $keys, array $values, array $updatePreconditionValues = []) {
try {
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index 92041b5e324..45f6aee83f6 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -284,7 +284,8 @@ class MigrationService {
case 'latest':
$this->ensureMigrationsAreLoaded();
- return @end($this->getAvailableVersions());
+ $migrations = $this->getAvailableVersions();
+ return @end($migrations);
}
return '0';
}
@@ -316,7 +317,8 @@ class MigrationService {
if (count($m) === 0) {
return '0';
}
- return @end(array_values($m));
+ $migrations = array_values($m);
+ return @end($migrations);
}
/**
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
index f172260df79..a32ae4a1827 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
@@ -31,6 +31,7 @@ use OC\DB\QueryBuilder\QueryFunction;
use OC\DB\QueryBuilder\QuoteHelper;
use OCP\DB\QueryBuilder\IExpressionBuilder;
use OCP\DB\QueryBuilder\ILiteral;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\DB\QueryBuilder\IQueryFunction;
use OCP\IDBConnection;
@@ -351,6 +352,28 @@ class ExpressionBuilder implements IExpressionBuilder {
}
/**
+ * Creates a $x = '' statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function emptyString($x) {
+ return $this->eq($x, $this->literal('', IQueryBuilder::PARAM_STR));
+ }
+
+ /**
+ * Creates a `$x <> ''` statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function nonEmptyString($x) {
+ return $this->neq($x, $this->literal('', IQueryBuilder::PARAM_STR));
+ }
+
+ /**
* Binary AND Operator copies a bit to the result if it exists in both operands.
*
* @param string|ILiteral $x The field or value to check
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
index 179ce72e8e1..693d2faecff 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
@@ -138,6 +138,28 @@ class OCIExpressionBuilder extends ExpressionBuilder {
}
/**
+ * Creates a $x = '' statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function emptyString($x) {
+ return $this->isNull($x);
+ }
+
+ /**
+ * Creates a `$x <> ''` statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function nonEmptyString($x) {
+ return $this->isNotNull($x);
+ }
+
+ /**
* Returns a IQueryFunction that casts the column to the given type
*
* @param string $column
@@ -166,6 +188,6 @@ class OCIExpressionBuilder extends ExpressionBuilder {
public function iLike($x, $y, $type = null) {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
- return new QueryFunction('REGEXP_LIKE('.$x.', \'^\' || REPLACE('.$y.', \'%\', \'.*\') || \'$\', \'i\')');
+ return new QueryFunction('REGEXP_LIKE(' . $x . ', \'^\' || REPLACE(REPLACE(' . $y . ', \'%\', \'.*\'), \'_\', \'.\') || \'$\', \'i\')');
}
}
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
index 27ebf1a04f9..26aedb9a8bb 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
@@ -25,6 +25,6 @@ use OC\DB\QueryBuilder\QueryFunction;
class PgSqlFunctionBuilder extends FunctionBuilder {
public function concat($x, $y) {
- return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y));
+ return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
}
}
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
index e985b7306a4..f38445a6d36 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
@@ -25,6 +25,6 @@ use OC\DB\QueryBuilder\QueryFunction;
class SqliteFunctionBuilder extends FunctionBuilder {
public function concat($x, $y) {
- return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y));
+ return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
}
}
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index eac13b452ac..3fc827c9680 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -242,7 +242,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param string|integer $key The parameter position or name.
* @param mixed $value The parameter value.
- * @param string|null $type One of the IQueryBuilder::PARAM_* constants.
+ * @param string|null|int $type One of the IQueryBuilder::PARAM_* constants.
*
* @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
*/
@@ -560,7 +560,7 @@ class QueryBuilder implements IQueryBuilder {
public function from($from, $alias = null) {
$this->queryBuilder->from(
$this->getTableName($from),
- $alias
+ $this->quoteAlias($alias)
);
return $this;
@@ -585,9 +585,9 @@ class QueryBuilder implements IQueryBuilder {
*/
public function join($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->join(
- $fromAlias,
+ $this->quoteAlias($fromAlias),
$this->getTableName($join),
- $alias,
+ $this->quoteAlias($alias),
$condition
);
@@ -613,9 +613,9 @@ class QueryBuilder implements IQueryBuilder {
*/
public function innerJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->innerJoin(
- $fromAlias,
+ $this->quoteAlias($fromAlias),
$this->getTableName($join),
- $alias,
+ $this->quoteAlias($alias),
$condition
);
@@ -641,9 +641,9 @@ class QueryBuilder implements IQueryBuilder {
*/
public function leftJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->leftJoin(
- $fromAlias,
+ $this->quoteAlias($fromAlias),
$this->getTableName($join),
- $alias,
+ $this->quoteAlias($alias),
$condition
);
@@ -669,9 +669,9 @@ class QueryBuilder implements IQueryBuilder {
*/
public function rightJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->rightJoin(
- $fromAlias,
+ $this->quoteAlias($fromAlias),
$this->getTableName($join),
- $alias,
+ $this->quoteAlias($alias),
$condition
);
@@ -1193,4 +1193,18 @@ class QueryBuilder implements IQueryBuilder {
return $this->helper->quoteColumnName($tableAlias . $column);
}
+
+ /**
+ * Returns the column name quoted and with table alias prefix as needed by the implementation
+ *
+ * @param string $alias
+ * @return string
+ */
+ public function quoteAlias($alias) {
+ if ($alias === '' || $alias === null) {
+ return $alias;
+ }
+
+ return $this->helper->quoteColumnName($alias);
+ }
}
diff --git a/lib/private/DB/QueryBuilder/QuoteHelper.php b/lib/private/DB/QueryBuilder/QuoteHelper.php
index 705c3a89712..8821863ed07 100644
--- a/lib/private/DB/QueryBuilder/QuoteHelper.php
+++ b/lib/private/DB/QueryBuilder/QuoteHelper.php
@@ -70,7 +70,7 @@ class QuoteHelper {
list($alias, $columnName) = explode('.', $string, 2);
if ($columnName === '*') {
- return $string;
+ return '`' . $alias . '`.*';
}
return '`' . $alias . '`.`' . $columnName . '`';
diff --git a/lib/private/DB/SchemaWrapper.php b/lib/private/DB/SchemaWrapper.php
index 0be45d8d3f7..d686d7e63e5 100644
--- a/lib/private/DB/SchemaWrapper.php
+++ b/lib/private/DB/SchemaWrapper.php
@@ -34,7 +34,7 @@ class SchemaWrapper {
protected $schema;
/** @var array */
- protected $tablesToDelete;
+ protected $tablesToDelete = [];
/**
* @param IDBConnection $connection
diff --git a/lib/private/DatabaseException.php b/lib/private/DatabaseException.php
index 7ca7435c028..68b617e4c75 100644
--- a/lib/private/DatabaseException.php
+++ b/lib/private/DatabaseException.php
@@ -24,15 +24,4 @@
namespace OC;
class DatabaseException extends \Exception {
- private $query;
-
- //FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous
- public function __construct($message, $query = null){
- parent::__construct($message);
- $this->query = $query;
- }
-
- public function getQuery() {
- return $this->query;
- }
}
diff --git a/lib/private/Diagnostics/QueryLogger.php b/lib/private/Diagnostics/QueryLogger.php
index 875d25e9be3..2b007b4f044 100644
--- a/lib/private/Diagnostics/QueryLogger.php
+++ b/lib/private/Diagnostics/QueryLogger.php
@@ -35,7 +35,7 @@ class QueryLogger implements IQueryLogger {
protected $activeQuery;
/**
- * @var \OC\Diagnostics\Query[]
+ * @var CappedMemoryCache
*/
protected $queries;
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index 1f3f2433e45..e0a4d8da106 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -332,7 +332,7 @@ class Cache implements ICache {
protected function buildParts(array $data) {
$fields = array(
'path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted',
- 'etag', 'permissions', 'checksum');
+ 'etag', 'permissions', 'checksum', 'storage');
$doNotCopyStorageMTime = false;
if (array_key_exists('mtime', $data) && $data['mtime'] === null) {
@@ -502,6 +502,7 @@ class Cache implements ICache {
* @param string $targetPath
* @throws \OC\DatabaseException
* @throws \Exception if the given storages have an invalid id
+ * @suppress SqlInjectionChecker
*/
public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
if ($sourceCache instanceof Cache) {
@@ -526,7 +527,7 @@ class Cache implements ICache {
$this->connection->beginTransaction();
if ($sourceData['mimetype'] === 'httpd/unix-directory') {
//update all child entries
- $sourceLength = strlen($sourcePath);
+ $sourceLength = mb_strlen($sourcePath);
$query = $this->connection->getQueryBuilder();
$fun = $query->func();
diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php
index d597a479f54..be69d174a0d 100644
--- a/lib/private/Files/Cache/Propagator.php
+++ b/lib/private/Files/Cache/Propagator.php
@@ -58,6 +58,7 @@ class Propagator implements IPropagator {
* @param string $internalPath
* @param int $time
* @param int $sizeDifference number of bytes the file has grown
+ * @suppress SqlInjectionChecker
*/
public function propagateChange($internalPath, $time, $sizeDifference = 0) {
$storageId = (int)$this->storage->getStorageCache()->getNumericId();
@@ -140,6 +141,7 @@ class Propagator implements IPropagator {
/**
* Commit the active propagation batch
+ * @suppress SqlInjectionChecker
*/
public function commitBatch() {
if (!$this->inBatch) {
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php
index 229c6fc7d66..a81c34c31fa 100644
--- a/lib/private/Files/Cache/Scanner.php
+++ b/lib/private/Files/Cache/Scanner.php
@@ -88,7 +88,7 @@ class Scanner extends BasicEmitter implements IScanner {
$this->storage = $storage;
$this->storageId = $this->storage->getId();
$this->cache = $storage->getCache();
- $this->cacheActive = !Config::getSystemValue('filesystem_cache_readonly', false);
+ $this->cacheActive = !\OC::$server->getConfig()->getSystemValue('filesystem_cache_readonly', false);
$this->lockingProvider = \OC::$server->getLockingProvider();
}
diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php
index 80cedfa1ccd..9466aaf6c89 100644
--- a/lib/private/Files/Config/UserMountCache.php
+++ b/lib/private/Files/Config/UserMountCache.php
@@ -334,6 +334,11 @@ class UserMountCache implements IUserMountCache {
$query->execute();
}
+ /**
+ * @param array $users
+ * @return array
+ * @suppress SqlInjectionChecker
+ */
public function getUsedSpaceForUsers(array $users) {
$builder = $this->connection->getQueryBuilder();
@@ -360,6 +365,11 @@ class UserMountCache implements IUserMountCache {
$result = $query->execute();
- return $result->fetchAll(\PDO::FETCH_KEY_PAIR);
+ $results = [];
+ while ($row = $result->fetch()) {
+ $results[$row['user_id']] = $row['size'];
+ }
+ $result->closeCursor();
+ return $results;
}
}
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index e1b5bf983ce..f5a44ba02ea 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -193,7 +193,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
*/
public function getSize() {
$this->updateEntryfromSubMounts();
- return isset($this->data['size']) ? (int) $this->data['size'] : 0;
+ return isset($this->data['size']) ? 0 + $this->data['size'] : 0;
}
/**
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index 0ebf23818b4..caf23afba11 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -646,14 +646,6 @@ class Filesystem {
return self::$defaultInstance->rmdir($path);
}
- static public function opendir($path) {
- return self::$defaultInstance->opendir($path);
- }
-
- static public function readdir($path) {
- return self::$defaultInstance->readdir($path);
- }
-
static public function is_dir($path) {
return self::$defaultInstance->is_dir($path);
}
diff --git a/lib/private/Files/ObjectStore/S3.php b/lib/private/Files/ObjectStore/S3.php
index 5251b473bdf..6f37492271c 100644
--- a/lib/private/Files/ObjectStore/S3.php
+++ b/lib/private/Files/ObjectStore/S3.php
@@ -39,7 +39,7 @@ class S3 implements IObjectStore {
* @return string the container or bucket name where objects are stored
* @since 7.0.0
*/
- function getStorageId() {
+ public function getStorageId() {
return $this->id;
}
@@ -49,7 +49,7 @@ class S3 implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function readObject($urn) {
+ public function readObject($urn) {
// Create the command and serialize the request
$request = $this->getConnection()->getCommand('GetObject', [
'Bucket' => $this->bucket,
@@ -83,7 +83,7 @@ class S3 implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function writeObject($urn, $stream) {
+ public function writeObject($urn, $stream) {
$this->getConnection()->putObject([
'Bucket' => $this->bucket,
'Key' => $urn,
@@ -97,7 +97,7 @@ class S3 implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function deleteObject($urn) {
+ public function deleteObject($urn) {
$this->getConnection()->deleteObject([
'Bucket' => $this->bucket,
'Key' => $urn
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index 5a57532f71c..b842d86f6a7 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -52,6 +52,7 @@ use OCP\Files\InvalidDirectoryException;
use OCP\Files\InvalidPathException;
use OCP\Files\ReservedWordException;
use OCP\Files\Storage\ILockingStorage;
+use OCP\Files\Storage\IStorage;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
@@ -578,13 +579,13 @@ abstract class Common implements Storage, ILockingStorage {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @param bool $preserveMtime
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) {
if ($sourceStorage === $this) {
return $this->copy($sourceInternalPath, $targetInternalPath);
}
@@ -625,12 +626,12 @@ abstract class Common implements Storage, ILockingStorage {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->rename($sourceInternalPath, $targetInternalPath);
}
diff --git a/lib/private/Files/Storage/FailedStorage.php b/lib/private/Files/Storage/FailedStorage.php
index f717c798c5a..d2aae33bb21 100644
--- a/lib/private/Files/Storage/FailedStorage.php
+++ b/lib/private/Files/Storage/FailedStorage.php
@@ -25,6 +25,7 @@
namespace OC\Files\Storage;
use OC\Files\Cache\FailedCache;
+use OCP\Files\Storage\IStorage;
use \OCP\Lock\ILockingProvider;
use \OCP\Files\StorageNotAvailableException;
@@ -183,11 +184,11 @@ class FailedStorage extends Common {
return true;
}
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
throw new StorageNotAvailableException($this->e->getMessage(), $this->e->getCode(), $this->e);
}
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
throw new StorageNotAvailableException($this->e->getMessage(), $this->e->getCode(), $this->e);
}
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 70cb2e0ccc4..c19427e5f9b 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -37,6 +37,7 @@ namespace OC\Files\Storage;
use OC\Files\Storage\Wrapper\Jail;
use OCP\Files\ForbiddenException;
+use OCP\Files\Storage\IStorage;
/**
* for local filestore, we only have to map the paths
@@ -404,12 +405,12 @@ class Local extends \OC\Files\Storage\Common {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) {
if ($sourceStorage->instanceOfStorage('\OC\Files\Storage\Local')) {
/**
* @var \OC\Files\Storage\Local $sourceStorage
@@ -422,12 +423,12 @@ class Local extends \OC\Files\Storage\Common {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage->instanceOfStorage(Local::class)) {
if ($sourceStorage->instanceOfStorage(Jail::class)) {
/**
diff --git a/lib/private/Files/Storage/Wrapper/Availability.php b/lib/private/Files/Storage/Wrapper/Availability.php
index 2a44a3a17d5..1fd38b5d6b7 100644
--- a/lib/private/Files/Storage/Wrapper/Availability.php
+++ b/lib/private/Files/Storage/Wrapper/Availability.php
@@ -22,6 +22,8 @@
*/
namespace OC\Files\Storage\Wrapper;
+use OCP\Files\Storage\IStorage;
+
/**
* Availability checker for storages
*
@@ -432,7 +434,7 @@ class Availability extends Wrapper {
}
/** {@inheritdoc} */
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
$this->checkAvailability();
try {
return parent::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
@@ -443,7 +445,7 @@ class Availability extends Wrapper {
}
/** {@inheritdoc} */
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
$this->checkAvailability();
try {
return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php
index 389da06f7b7..240a1f3e049 100644
--- a/lib/private/Files/Storage/Wrapper/Encoding.php
+++ b/lib/private/Files/Storage/Wrapper/Encoding.php
@@ -22,6 +22,7 @@
namespace OC\Files\Storage\Wrapper;
+use OCP\Files\Storage\IStorage;
use OCP\ICache;
use OC\Cache\CappedMemoryCache;
@@ -483,12 +484,12 @@ class Encoding extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->copy($sourceInternalPath, $this->findPathToUse($targetInternalPath));
}
@@ -501,12 +502,12 @@ class Encoding extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
$result = $this->rename($sourceInternalPath, $this->findPathToUse($targetInternalPath));
if ($result) {
diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php
index 793849914d7..e359e86319c 100644
--- a/lib/private/Files/Storage/Wrapper/Encryption.php
+++ b/lib/private/Files/Storage/Wrapper/Encryption.php
@@ -590,13 +590,13 @@ class Encryption extends Wrapper {
}
/**
- * @param Storage $sourceStorage
+ * @param Storage\IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @param bool $preserveMtime
* @return bool
*/
- public function moveFromStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = true) {
+ public function moveFromStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = true) {
if ($sourceStorage === $this) {
return $this->rename($sourceInternalPath, $targetInternalPath);
}
@@ -624,14 +624,14 @@ class Encryption extends Wrapper {
/**
- * @param Storage $sourceStorage
+ * @param Storage\IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @param bool $preserveMtime
* @param bool $isRename
* @return bool
*/
- public function copyFromStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false, $isRename = false) {
+ public function copyFromStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false, $isRename = false) {
// TODO clean this up once the underlying moveFromStorage in OC\Files\Storage\Wrapper\Common is fixed:
// - call $this->storage->copyFromStorage() instead of $this->copyBetweenStorage
@@ -645,12 +645,12 @@ class Encryption extends Wrapper {
/**
* Update the encrypted cache version in the database
*
- * @param Storage $sourceStorage
+ * @param Storage\IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @param bool $isRename
*/
- private function updateEncryptedVersion(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename) {
+ private function updateEncryptedVersion(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename) {
$isEncrypted = $this->encryptionManager->isEnabled() && $this->shouldEncrypt($targetInternalPath) ? 1 : 0;
$cacheInformation = [
'encrypted' => (bool)$isEncrypted,
@@ -682,7 +682,7 @@ class Encryption extends Wrapper {
/**
* copy file between two storages
*
- * @param Storage $sourceStorage
+ * @param Storage\IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @param bool $preserveMtime
@@ -690,7 +690,7 @@ class Encryption extends Wrapper {
* @return bool
* @throws \Exception
*/
- private function copyBetweenStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename) {
+ private function copyBetweenStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename) {
// for versions we have nothing to do, because versions should always use the
// key from the original file. Just create a 1:1 copy and done
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index 4fa2428c968..d30563341cb 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -26,6 +26,7 @@ namespace OC\Files\Storage\Wrapper;
use OC\Files\Cache\Wrapper\CacheJail;
use OC\Files\Cache\Wrapper\JailPropagator;
+use OCP\Files\Storage\IStorage;
use OCP\Lock\ILockingProvider;
/**
@@ -465,12 +466,12 @@ class Jail extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->copy($sourceInternalPath, $targetInternalPath);
}
@@ -478,12 +479,12 @@ class Jail extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->rename($sourceInternalPath, $targetInternalPath);
}
diff --git a/lib/private/Files/Storage/Wrapper/Quota.php b/lib/private/Files/Storage/Wrapper/Quota.php
index 7312ed61dcc..e89a8d08de7 100644
--- a/lib/private/Files/Storage/Wrapper/Quota.php
+++ b/lib/private/Files/Storage/Wrapper/Quota.php
@@ -27,6 +27,7 @@
namespace OC\Files\Storage\Wrapper;
use OCP\Files\Cache\ICacheEntry;
+use OCP\Files\Storage\IStorage;
class Quota extends Wrapper {
@@ -170,12 +171,12 @@ class Quota extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
$free = $this->free_space('');
if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) {
return $this->storage->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
@@ -185,12 +186,12 @@ class Quota extends Wrapper {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
$free = $this->free_space('');
if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) {
return $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
diff --git a/lib/private/Files/Storage/Wrapper/Wrapper.php b/lib/private/Files/Storage/Wrapper/Wrapper.php
index d7cd4b729db..847a714f7dd 100644
--- a/lib/private/Files/Storage/Wrapper/Wrapper.php
+++ b/lib/private/Files/Storage/Wrapper/Wrapper.php
@@ -28,6 +28,7 @@ namespace OC\Files\Storage\Wrapper;
use OCP\Files\InvalidPathException;
use OCP\Files\Storage\ILockingStorage;
+use OCP\Files\Storage\IStorage;
use OCP\Lock\ILockingProvider;
class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage {
@@ -542,12 +543,12 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->copy($sourceInternalPath, $targetInternalPath);
}
@@ -556,12 +557,12 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage {
}
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
if ($sourceStorage === $this) {
return $this->rename($sourceInternalPath, $targetInternalPath);
}
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 0e22415e6f7..71b453d299a 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -367,15 +367,6 @@ class View {
}
/**
- * @param $handle
- * @return mixed
- */
- public function readdir($handle) {
- $fsLocal = new Storage\Local(array('datadir' => '/'));
- return $fsLocal->readdir($handle);
- }
-
- /**
* @param string $path
* @return bool|mixed
*/
@@ -779,14 +770,18 @@ class View {
$this->changeLock($path1, ILockingProvider::LOCK_EXCLUSIVE, true);
$this->changeLock($path2, ILockingProvider::LOCK_EXCLUSIVE, true);
- if ($internalPath1 === '' and $mount1 instanceof MoveableMount) {
- if ($this->isTargetAllowed($absolutePath2)) {
- /**
- * @var \OC\Files\Mount\MountPoint | \OC\Files\Mount\MoveableMount $mount1
- */
- $sourceMountPoint = $mount1->getMountPoint();
- $result = $mount1->moveMount($absolutePath2);
- $manager->moveMount($sourceMountPoint, $mount1->getMountPoint());
+ if ($internalPath1 === '') {
+ if ($mount1 instanceof MoveableMount) {
+ if ($this->isTargetAllowed($absolutePath2)) {
+ /**
+ * @var \OC\Files\Mount\MountPoint | \OC\Files\Mount\MoveableMount $mount1
+ */
+ $sourceMountPoint = $mount1->getMountPoint();
+ $result = $mount1->moveMount($absolutePath2);
+ $manager->moveMount($sourceMountPoint, $mount1->getMountPoint());
+ } else {
+ $result = false;
+ }
} else {
$result = false;
}
@@ -1292,7 +1287,7 @@ class View {
* @param \OC\Files\Storage\Storage $storage
* @param string $internalPath
* @param string $relativePath
- * @return array|bool
+ * @return ICacheEntry|bool
*/
private function getCacheEntry($storage, $internalPath, $relativePath) {
$cache = $storage->getCache($internalPath);
diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php
index 69dce215694..32ab79adab3 100644
--- a/lib/private/Group/Group.php
+++ b/lib/private/Group/Group.php
@@ -29,6 +29,7 @@
namespace OC\Group;
use OCP\IGroup;
+use OCP\IUser;
class Group implements IGroup {
/** @var null|string */
@@ -119,10 +120,10 @@ class Group implements IGroup {
/**
* check if a user is in the group
*
- * @param \OC\User\User $user
+ * @param IUser $user
* @return bool
*/
- public function inGroup($user) {
+ public function inGroup(IUser $user) {
if (isset($this->users[$user->getUID()])) {
return true;
}
@@ -138,9 +139,9 @@ class Group implements IGroup {
/**
* add a user to the group
*
- * @param \OC\User\User $user
+ * @param IUser $user
*/
- public function addUser($user) {
+ public function addUser(IUser $user) {
if ($this->inGroup($user)) {
return;
}
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 61b47fdd448..6d4f5a091c6 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -246,10 +246,10 @@ class Manager extends PublicEmitter implements IGroupManager {
}
/**
- * @param \OC\User\User|null $user
+ * @param IUser|null $user
* @return \OC\Group\Group[]
*/
- public function getUserGroups($user) {
+ public function getUserGroups(IUser $user= null) {
if (!$user instanceof IUser) {
return [];
}
@@ -303,10 +303,10 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* get a list of group ids for a user
- * @param \OC\User\User $user
+ * @param IUser $user
* @return array with group ids
*/
- public function getUserGroupIds($user) {
+ public function getUserGroupIds(IUser $user) {
return array_map(function($value) {
return (string) $value;
}, array_keys($this->getUserGroups($user)));
diff --git a/lib/private/Hooks/LegacyEmitter.php b/lib/private/Hooks/LegacyEmitter.php
index 4f936e8aab5..d18bb88eae6 100644
--- a/lib/private/Hooks/LegacyEmitter.php
+++ b/lib/private/Hooks/LegacyEmitter.php
@@ -24,6 +24,13 @@
namespace OC\Hooks;
abstract class LegacyEmitter extends BasicEmitter {
+ /**
+ * @param string $scope
+ * @param string $method
+ * @param array $arguments
+ *
+ * @suppress PhanAccessMethodProtected
+ */
protected function emit($scope, $method, array $arguments = array()) {
\OC_Hook::emit($scope, $method, $arguments);
parent::emit($scope, $method, $arguments);
diff --git a/lib/private/Hooks/PublicEmitter.php b/lib/private/Hooks/PublicEmitter.php
index 4bdaeec3b49..b34769d9b09 100644
--- a/lib/private/Hooks/PublicEmitter.php
+++ b/lib/private/Hooks/PublicEmitter.php
@@ -28,6 +28,8 @@ class PublicEmitter extends BasicEmitter {
* @param string $scope
* @param string $method
* @param array $arguments optional
+ *
+ * @suppress PhanAccessMethodProtected
*/
public function emit($scope, $method, array $arguments = array()) {
parent::emit($scope, $method, $arguments);
diff --git a/lib/private/L10N/L10N.php b/lib/private/L10N/L10N.php
index c83b6ea3960..b933048982f 100644
--- a/lib/private/L10N/L10N.php
+++ b/lib/private/L10N/L10N.php
@@ -82,7 +82,7 @@ class L10N implements IL10N {
* returned.
*/
public function t($text, $parameters = array()) {
- return (string) new \OC_L10N_String($this, $text, $parameters);
+ return (string) new L10NString($this, $text, $parameters);
}
/**
@@ -103,12 +103,12 @@ class L10N implements IL10N {
public function n($text_singular, $text_plural, $count, $parameters = array()) {
$identifier = "_${text_singular}_::_${text_plural}_";
if (isset($this->translations[$identifier])) {
- return (string) new \OC_L10N_String($this, $identifier, $parameters, $count);
+ return (string) new L10NString($this, $identifier, $parameters, $count);
} else {
if ($count === 1) {
- return (string) new \OC_L10N_String($this, $text_singular, $parameters, $count);
+ return (string) new L10NString($this, $text_singular, $parameters, $count);
} else {
- return (string) new \OC_L10N_String($this, $text_plural, $parameters, $count);
+ return (string) new L10NString($this, $text_plural, $parameters, $count);
}
}
}
diff --git a/lib/private/legacy/l10n/string.php b/lib/private/L10N/L10NString.php
index 1410db6d730..75fcd7f5e44 100644
--- a/lib/private/legacy/l10n/string.php
+++ b/lib/private/L10N/L10NString.php
@@ -26,7 +26,9 @@
*
*/
-class OC_L10N_String implements JsonSerializable {
+namespace OC\L10N;
+
+class L10NString implements \JsonSerializable {
/** @var \OC\L10N\L10N */
protected $l10n;
@@ -52,6 +54,9 @@ class OC_L10N_String implements JsonSerializable {
$this->count = $count;
}
+ /**
+ * @return string
+ */
public function __toString() {
$translations = $this->l10n->getTranslations();
@@ -68,11 +73,14 @@ class OC_L10N_String implements JsonSerializable {
}
// Replace %n first (won't interfere with vsprintf)
- $text = str_replace('%n', $this->count, $text);
+ $text = str_replace('%n', (string)$this->count, $text);
return vsprintf($text, $this->parameters);
}
+ /**
+ * @return string
+ */
public function jsonSerialize() {
return $this->__toString();
}
diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php
index c521bcf548b..f4778a35fa8 100644
--- a/lib/private/Lock/DBLockingProvider.php
+++ b/lib/private/Lock/DBLockingProvider.php
@@ -255,6 +255,7 @@ class DBLockingProvider extends AbstractLockingProvider {
/**
* release all lock acquired by this instance which were marked using the mark* methods
+ * @suppress SqlInjectionChecker
*/
public function releaseAll() {
parent::releaseAll();
diff --git a/lib/private/Lockdown/Filesystem/NullStorage.php b/lib/private/Lockdown/Filesystem/NullStorage.php
index ea911b90064..831d8a8b2a0 100644
--- a/lib/private/Lockdown/Filesystem/NullStorage.php
+++ b/lib/private/Lockdown/Filesystem/NullStorage.php
@@ -22,6 +22,7 @@ namespace OC\Lockdown\Filesystem;
use Icewind\Streams\IteratorDirectory;
use OC\Files\FileInfo;
use OC\Files\Storage\Common;
+use OCP\Files\Storage\IStorage;
class NullStorage extends Common {
public function __construct($parameters) {
@@ -156,11 +157,11 @@ class NullStorage extends Common {
return false;
}
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
throw new \OC\ForbiddenException('This request is not allowed to access the filesystem');
}
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
throw new \OC\ForbiddenException('This request is not allowed to access the filesystem');
}
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index 0ae79345e4c..a55e6f9e5b5 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -100,7 +100,7 @@ EOF;
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%%">
- <img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
@@ -365,7 +365,7 @@ EOF;
* Adds a heading to the email
*
* @param string $title
- * @param string $plainTitle|bool Title that is used in the plain text email
+ * @param string|bool $plainTitle Title that is used in the plain text email
* if empty the $title is used, if false none will be used
*/
public function addHeading($title, $plainTitle = '') {
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index b24f72316ba..e438f75d2ce 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -120,7 +120,7 @@ class Mailer implements IMailer {
public function send(Message $message) {
$debugMode = $this->config->getSystemValue('mail_smtpdebug', false);
- if (sizeof($message->getFrom()) === 0) {
+ if (empty($message->getFrom())) {
$message->setFrom([\OCP\Util::getDefaultEmailAddress($this->defaults->getName()) => $this->defaults->getName()]);
}
@@ -186,7 +186,7 @@ class Mailer implements IMailer {
switch ($this->config->getSystemValue('mail_smtpmode', 'php')) {
case 'smtp':
- $this->instance = $this->getSMTPInstance();
+ $this->instance = $this->getSmtpInstance();
break;
case 'sendmail':
// FIXME: Move into the return statement but requires proper testing
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index 3184f26848b..5ffc050360a 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -37,7 +37,7 @@ class Message {
/**
* @param Swift_Message $swiftMessage
*/
- function __construct(Swift_Message $swiftMessage) {
+ public function __construct(Swift_Message $swiftMessage) {
$this->swiftMessage = $swiftMessage;
}
diff --git a/lib/private/Memcache/Memcached.php b/lib/private/Memcache/Memcached.php
index bf07fd0e6e7..4347fc99e54 100644
--- a/lib/private/Memcache/Memcached.php
+++ b/lib/private/Memcache/Memcached.php
@@ -97,7 +97,7 @@ class Memcached extends Cache implements IMemcache {
}
public function get($key) {
- $result = self::$cache->get($this->getNamespace() . $key);
+ $result = self::$cache->get($this->getNameSpace() . $key);
if ($result === false and self::$cache->getResultCode() == \Memcached::RES_NOTFOUND) {
return null;
} else {
@@ -107,9 +107,9 @@ class Memcached extends Cache implements IMemcache {
public function set($key, $value, $ttl = 0) {
if ($ttl > 0) {
- $result = self::$cache->set($this->getNamespace() . $key, $value, $ttl);
+ $result = self::$cache->set($this->getNameSpace() . $key, $value, $ttl);
} else {
- $result = self::$cache->set($this->getNamespace() . $key, $value);
+ $result = self::$cache->set($this->getNameSpace() . $key, $value);
}
if ($result !== true) {
$this->verifyReturnCode();
@@ -118,12 +118,12 @@ class Memcached extends Cache implements IMemcache {
}
public function hasKey($key) {
- self::$cache->get($this->getNamespace() . $key);
+ self::$cache->get($this->getNameSpace() . $key);
return self::$cache->getResultCode() === \Memcached::RES_SUCCESS;
}
public function remove($key) {
- $result= self::$cache->delete($this->getNamespace() . $key);
+ $result= self::$cache->delete($this->getNameSpace() . $key);
if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) {
$this->verifyReturnCode();
}
@@ -131,7 +131,7 @@ class Memcached extends Cache implements IMemcache {
}
public function clear($prefix = '') {
- $prefix = $this->getNamespace() . $prefix;
+ $prefix = $this->getNameSpace() . $prefix;
$allKeys = self::$cache->getAllKeys();
if ($allKeys === false) {
// newer Memcached doesn't like getAllKeys(), flush everything
diff --git a/lib/private/Memcache/XCache.php b/lib/private/Memcache/XCache.php
index 7eb7a138d1f..549896e6c6b 100644
--- a/lib/private/Memcache/XCache.php
+++ b/lib/private/Memcache/XCache.php
@@ -47,28 +47,28 @@ class XCache extends Cache implements IMemcache {
}
public function get($key) {
- return xcache_get($this->getNamespace() . $key);
+ return xcache_get($this->getNameSpace() . $key);
}
public function set($key, $value, $ttl = 0) {
if ($ttl > 0) {
- return xcache_set($this->getNamespace() . $key, $value, $ttl);
+ return xcache_set($this->getNameSpace() . $key, $value, $ttl);
} else {
- return xcache_set($this->getNamespace() . $key, $value);
+ return xcache_set($this->getNameSpace() . $key, $value);
}
}
public function hasKey($key) {
- return xcache_isset($this->getNamespace() . $key);
+ return xcache_isset($this->getNameSpace() . $key);
}
public function remove($key) {
- return xcache_unset($this->getNamespace() . $key);
+ return xcache_unset($this->getNameSpace() . $key);
}
public function clear($prefix = '') {
if (function_exists('xcache_unset_by_prefix')) {
- return xcache_unset_by_prefix($this->getNamespace() . $prefix);
+ return xcache_unset_by_prefix($this->getNameSpace() . $prefix);
} else {
// Since we can not clear by prefix, we just clear the whole cache.
xcache_clear_cache(\XC_TYPE_VAR, 0);
diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php
index 495b868607c..cf4abbce15e 100644
--- a/lib/private/Migration/BackgroundRepair.php
+++ b/lib/private/Migration/BackgroundRepair.php
@@ -53,7 +53,7 @@ class BackgroundRepair extends TimedJob {
* run the job, then remove it from the job list
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
// add an interval of 15 mins
diff --git a/lib/private/Notification/Manager.php b/lib/private/Notification/Manager.php
index c5cad7f2db3..1d139167552 100644
--- a/lib/private/Notification/Manager.php
+++ b/lib/private/Notification/Manager.php
@@ -142,7 +142,7 @@ class Manager implements IManager {
$this->notifiersInfo = [];
foreach ($this->notifiersInfoClosures as $closure) {
$notifier = $closure();
- if (!is_array($notifier) || sizeof($notifier) !== 2 || !isset($notifier['id']) || !isset($notifier['name'])) {
+ if (!is_array($notifier) || count($notifier) !== 2 || !isset($notifier['id']) || !isset($notifier['name'])) {
throw new \InvalidArgumentException('The given notifier information is invalid');
}
if (isset($this->notifiersInfo[$notifier['id']])) {
diff --git a/lib/private/OCS/Exception.php b/lib/private/OCS/Exception.php
index 58b13f52df9..485c5c4d40f 100644
--- a/lib/private/OCS/Exception.php
+++ b/lib/private/OCS/Exception.php
@@ -25,7 +25,11 @@ namespace OC\OCS;
class Exception extends \Exception {
+ /** @var Result */
+ private $result;
+
public function __construct(Result $result) {
+ parent::__construct();
$this->result = $result;
}
diff --git a/lib/private/OCS/PrivateData.php b/lib/private/OCS/PrivateData.php
deleted file mode 100644
index 0f5c48b1218..00000000000
--- a/lib/private/OCS/PrivateData.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Andreas Fischer <bantu@owncloud.com>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@karlitschek.de>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Tom Needham <tom@owncloud.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OC\OCS;
-
-class PrivateData {
-
- /**
- * read keys
- * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/getattribute/testy/123
- * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/getattribute/testy
- * @param array $parameters The OCS parameter
- * @return \OC_OCS_Result
- */
- public static function get($parameters) {
- $user = \OC_User::getUser();
- $app = addslashes(strip_tags($parameters['app']));
- $key = isset($parameters['key']) ? addslashes(strip_tags($parameters['key'])) : null;
-
- if(empty($key)) {
- $query = \OCP\DB::prepare('SELECT `key`, `app`, `value` FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? ');
- $result = $query->execute(array($user, $app));
- } else {
- $query = \OCP\DB::prepare('SELECT `key`, `app`, `value` FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? AND `key` = ? ');
- $result = $query->execute(array($user, $app, $key));
- }
-
- $xml = array();
- while ($row = $result->fetchRow()) {
- $data=array();
- $data['key']=$row['key'];
- $data['app']=$row['app'];
- $data['value']=$row['value'];
- $xml[] = $data;
- }
-
- return new Result($xml);
- }
-
- /**
- * set a key
- * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/setattribute/testy/123 --data "value=foobar"
- * @param array $parameters The OCS parameter
- * @return \OC_OCS_Result
- */
- public static function set($parameters) {
- $user = \OC_User::getUser();
- $app = addslashes(strip_tags($parameters['app']));
- $key = addslashes(strip_tags($parameters['key']));
- $value = (string)$_POST['value'];
-
- // update in DB
- $query = \OCP\DB::prepare('UPDATE `*PREFIX*privatedata` SET `value` = ? WHERE `user` = ? AND `app` = ? AND `key` = ?');
- $numRows = $query->execute(array($value, $user, $app, $key));
-
- if ($numRows === false || $numRows === 0) {
- // store in DB
- $query = \OCP\DB::prepare('INSERT INTO `*PREFIX*privatedata` (`user`, `app`, `key`, `value`)' . ' VALUES(?, ?, ?, ?)');
- $query->execute(array($user, $app, $key, $value));
- }
-
- return new Result(null, 100);
- }
-
- /**
- * delete a key
- * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/deleteattribute/testy/123 --data "post=1"
- * @param array $parameters The OCS parameter
- * @return \OC_OCS_Result
- */
- public static function delete($parameters) {
- $user = \OC_User::getUser();
- if (!isset($parameters['app']) or !isset($parameters['key'])) {
- //key and app are NOT optional here
- return new Result(null, 101);
- }
-
- $app = addslashes(strip_tags($parameters['app']));
- $key = addslashes(strip_tags($parameters['key']));
-
- // delete in DB
- $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? AND `key` = ? ');
- $query->execute(array($user, $app, $key ));
-
- return new Result(null, 100);
- }
-}
-
diff --git a/lib/private/Preview/Bitmap.php b/lib/private/Preview/Bitmap.php
index d3f75b4a205..e9fd6cc7c03 100644
--- a/lib/private/Preview/Bitmap.php
+++ b/lib/private/Preview/Bitmap.php
@@ -48,7 +48,7 @@ abstract class Bitmap extends Provider {
try {
$bp = $this->getResizedPreview($tmpPath, $maxX, $maxY);
} catch (\Exception $e) {
- \OCP\Util::writeLog('core', 'ImageMagick says: ' . $e->getmessage(), \OCP\Util::ERROR);
+ \OCP\Util::writeLog('core', 'ImageMagick says: ' . $e->getMessage(), \OCP\Util::ERROR);
return false;
}
diff --git a/lib/private/Preview/Office.php b/lib/private/Preview/Office.php
index 9b445a2bbee..322b254e38e 100644
--- a/lib/private/Preview/Office.php
+++ b/lib/private/Preview/Office.php
@@ -42,7 +42,7 @@ abstract class Office extends Provider {
$tmpDir = \OC::$server->getTempManager()->getTempBaseDir();
$defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId() . '/') . ' --headless --nologo --nofirststartwizard --invisible --norestore --convert-to pdf --outdir ';
- $clParameters = \OCP\Config::getSystemValue('preview_office_cl_parameters', $defaultParameters);
+ $clParameters = \OC::$server->getConfig()->getSystemValue('preview_office_cl_parameters', $defaultParameters);
$exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath);
@@ -59,7 +59,7 @@ abstract class Office extends Provider {
} catch (\Exception $e) {
unlink($absPath);
unlink($pdfPreview);
- \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::ERROR);
+ \OCP\Util::writeLog('core', $e->getMessage(), \OCP\Util::ERROR);
return false;
}
diff --git a/lib/private/Preview/SVG.php b/lib/private/Preview/SVG.php
index 4ad274c893b..fb06faf9c23 100644
--- a/lib/private/Preview/SVG.php
+++ b/lib/private/Preview/SVG.php
@@ -53,7 +53,7 @@ class SVG extends Provider {
$svg->readImageBlob($content);
$svg->setImageFormat('png32');
} catch (\Exception $e) {
- \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::ERROR);
+ \OCP\Util::writeLog('core', $e->getMessage(), \OCP\Util::ERROR);
return false;
}
diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php
index 0b87bcda86e..8d091b84b0e 100644
--- a/lib/private/Preview/Watcher.php
+++ b/lib/private/Preview/Watcher.php
@@ -77,10 +77,16 @@ class Watcher {
}
/** @var Folder $node */
- $nodes = $node->search('');
+ $this->deleteFolder($node);
+ }
+
+ private function deleteFolder(Folder $folder) {
+ $nodes = $folder->getDirectoryListing();
foreach ($nodes as $node) {
if ($node instanceof File) {
$this->toDelete[] = $node->getId();
+ } else if ($node instanceof Folder) {
+ $this->deleteFolder($node);
}
}
}
diff --git a/lib/private/Repair/CleanTags.php b/lib/private/Repair/CleanTags.php
index 9b44fb1e671..de46d039229 100644
--- a/lib/private/Repair/CleanTags.php
+++ b/lib/private/Repair/CleanTags.php
@@ -167,6 +167,7 @@ class CleanTags implements IRepairStep {
* @param string $sourceId
* @param string $sourceNullColumn If this column is null in the source table,
* the entry is deleted in the $deleteTable
+ * @suppress SqlInjectionChecker
*/
protected function deleteOrphanEntries(IOutput $output, $repairInfo, $deleteTable, $deleteId, $sourceTable, $sourceId, $sourceNullColumn) {
$qb = $this->connection->getQueryBuilder();
@@ -201,7 +202,7 @@ class CleanTags implements IRepairStep {
}
if ($repairInfo) {
- $output->info(sprintf($repairInfo, sizeof($orphanItems)));
+ $output->info(sprintf($repairInfo, count($orphanItems)));
}
}
}
diff --git a/lib/private/Repair/NC12/UpdateLanguageCodes.php b/lib/private/Repair/NC12/UpdateLanguageCodes.php
index 891473f51a7..f4a1204543b 100644
--- a/lib/private/Repair/NC12/UpdateLanguageCodes.php
+++ b/lib/private/Repair/NC12/UpdateLanguageCodes.php
@@ -23,6 +23,7 @@
namespace OC\Repair\NC12;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
@@ -80,7 +81,7 @@ class UpdateLanguageCodes implements IRepairStep {
->set('configvalue', $qb->createNamedParameter($newCode))
->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode)))
+ ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode), IQueryBuilder::PARAM_STR))
->execute();
$output->info('Changed ' . $affectedRows . ' setting(s) from "' . $oldCode . '" to "' . $newCode . '" in preferences table.');
diff --git a/lib/private/Repair/NC13/RepairInvalidPaths.php b/lib/private/Repair/NC13/RepairInvalidPaths.php
index cf0b9e7783e..29a0e1ed157 100644
--- a/lib/private/Repair/NC13/RepairInvalidPaths.php
+++ b/lib/private/Repair/NC13/RepairInvalidPaths.php
@@ -51,6 +51,10 @@ class RepairInvalidPaths implements IRepairStep {
return 'Repair invalid paths in file cache';
}
+ /**
+ * @return \Generator
+ * @suppress SqlInjectionChecker
+ */
private function getInvalidEntries() {
$builder = $this->connection->getQueryBuilder();
@@ -60,23 +64,25 @@ class RepairInvalidPaths implements IRepairStep {
);
//select f.path, f.parent,p.path from oc_filecache f inner join oc_filecache p on f.parent=p.fileid and p.path!='' where f.path != p.path || '/' || f.name;
- $query = $builder->select('f.fileid', 'f.path', 'p.path AS parent_path', 'f.name', 'f.parent', 'f.storage')
+ $builder->select('f.fileid', 'f.path', 'f.name', 'f.parent', 'f.storage')
+ ->selectAlias('p.path', 'parent_path')
+ ->selectAlias('p.storage', 'parent_storage')
->from('filecache', 'f')
->innerJoin('f', 'filecache', 'p', $builder->expr()->andX(
$builder->expr()->eq('f.parent', 'p.fileid'),
- $builder->expr()->neq('p.name', $builder->createNamedParameter(''))
+ $builder->expr()->nonEmptyString('p.name')
))
->where($builder->expr()->neq('f.path', $computedPath))
->setMaxResults(self::MAX_ROWS);
do {
- $result = $query->execute();
+ $result = $builder->execute();
$rows = $result->fetchAll();
foreach ($rows as $row) {
yield $row;
}
$result->closeCursor();
- } while (count($rows) >= self::MAX_ROWS);
+ } while (count($rows) > 0);
}
private function getId($storage, $path) {
@@ -95,17 +101,25 @@ class RepairInvalidPaths implements IRepairStep {
return $this->getIdQuery->execute()->fetchColumn();
}
- private function update($fileid, $newPath) {
+ /**
+ * @param string $fileid
+ * @param string $newPath
+ * @param string $newStorage
+ * @suppress SqlInjectionChecker
+ */
+ private function update($fileid, $newPath, $newStorage) {
if (!$this->updateQuery) {
$builder = $this->connection->getQueryBuilder();
$this->updateQuery = $builder->update('filecache')
->set('path', $builder->createParameter('newpath'))
->set('path_hash', $builder->func()->md5($builder->createParameter('newpath')))
+ ->set('storage', $builder->createParameter('newstorage'))
->where($builder->expr()->eq('fileid', $builder->createParameter('fileid')));
}
$this->updateQuery->setParameter('newpath', $newPath);
+ $this->updateQuery->setParameter('newstorage', $newStorage);
$this->updateQuery->setParameter('fileid', $fileid, IQueryBuilder::PARAM_INT);
$this->updateQuery->execute();
@@ -146,12 +160,12 @@ class RepairInvalidPaths implements IRepairStep {
foreach ($entries as $entry) {
$count++;
$calculatedPath = $entry['parent_path'] . '/' . $entry['name'];
- if ($newId = $this->getId($entry['storage'], $calculatedPath)) {
+ if ($newId = $this->getId($entry['parent_storage'], $calculatedPath)) {
// a new entry with the correct path has already been created, reuse that one and delete the incorrect entry
$this->reparent($entry['fileid'], $newId);
$this->delete($entry['fileid']);
} else {
- $this->update($entry['fileid'], $calculatedPath);
+ $this->update($entry['fileid'], $calculatedPath, $entry['parent_storage']);
}
}
$this->connection->commit();
diff --git a/lib/private/Repair/OldGroupMembershipShares.php b/lib/private/Repair/OldGroupMembershipShares.php
index ea0256f64b8..5b941d1fcbd 100644
--- a/lib/private/Repair/OldGroupMembershipShares.php
+++ b/lib/private/Repair/OldGroupMembershipShares.php
@@ -65,6 +65,7 @@ class OldGroupMembershipShares implements IRepairStep {
* Must throw exception on error.
*
* @throws \Exception in case of failure
+ * @suppress SqlInjectionChecker
*/
public function run(IOutput $output) {
$deletedEntries = 0;
diff --git a/lib/private/Repair/RepairInvalidShares.php b/lib/private/Repair/RepairInvalidShares.php
index 78884ca9cde..92423165541 100644
--- a/lib/private/Repair/RepairInvalidShares.php
+++ b/lib/private/Repair/RepairInvalidShares.php
@@ -56,6 +56,7 @@ class RepairInvalidShares implements IRepairStep {
/**
* Adjust file share permissions
+ * @suppress SqlInjectionChecker
*/
private function adjustFileSharePermissions(IOutput $out) {
$mask = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE;
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index 71aabe15c51..34ffd244eb7 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -171,8 +171,6 @@ class Router implements IRouter {
$this->root->addCollection($collection);
}
if ($this->loaded) {
- // include ocs routes, must be loaded last for /ocs prefix
- require_once __DIR__ . '/../../../ocs/routes.php';
$collection = $this->getCollection('ocs');
$collection->addPrefix('/ocs');
$this->root->addCollection($collection);
diff --git a/lib/private/Search/Provider/File.php b/lib/private/Search/Provider/File.php
index ddb05c759ea..787725ab87b 100644
--- a/lib/private/Search/Provider/File.php
+++ b/lib/private/Search/Provider/File.php
@@ -37,7 +37,7 @@ class File extends \OCP\Search\Provider {
* @param string $query
* @return \OCP\Search\Result
*/
- function search($query) {
+ public function search($query) {
$files = Filesystem::search($query);
$results = array();
// edit results
diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php
index eb4750d8de3..98ebef8753a 100644
--- a/lib/private/Search/Result/File.php
+++ b/lib/private/Search/Result/File.php
@@ -91,7 +91,7 @@ class File extends \OCP\Search\Result {
$this->path = $path;
$this->size = $data->getSize();
$this->modified = $data->getMtime();
- $this->mime = $data->getMimetype();
+ $this->mime_type = $data->getMimetype();
}
/**
diff --git a/lib/private/Security/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php
index ee02bc5a1c4..f495baf1924 100644
--- a/lib/private/Security/Bruteforce/Throttler.php
+++ b/lib/private/Security/Bruteforce/Throttler.php
@@ -89,6 +89,7 @@ class Throttler {
* @param string $action
* @param string $ip
* @param array $metadata Optional metadata logged to the database
+ * @suppress SqlInjectionChecker
*/
public function registerAttempt($action,
$ip,
diff --git a/lib/private/Security/CSRF/CsrfToken.php b/lib/private/Security/CSRF/CsrfToken.php
index e9bdf5b5204..09195fcc3b7 100644
--- a/lib/private/Security/CSRF/CsrfToken.php
+++ b/lib/private/Security/CSRF/CsrfToken.php
@@ -62,7 +62,7 @@ class CsrfToken {
* The unencrypted value of the token. Used for decrypting an already
* encrypted token.
*
- * @return int
+ * @return string
*/
public function getDecryptedValue() {
$token = explode(':', $this->value);
diff --git a/lib/private/Security/CertificateManager.php b/lib/private/Security/CertificateManager.php
index 58c44b88ba6..ea7b045c205 100644
--- a/lib/private/Security/CertificateManager.php
+++ b/lib/private/Security/CertificateManager.php
@@ -209,7 +209,7 @@ class CertificateManager implements ICertificateManager {
/**
* Get the path to the certificate bundle for this user
*
- * @param string $uid (optional) user to get the certificate bundle for, use `null` to get the system bundle
+ * @param string|null $uid (optional) user to get the certificate bundle for, use `null` to get the system bundle
* @return string
*/
public function getCertificateBundle($uid = '') {
@@ -241,7 +241,7 @@ class CertificateManager implements ICertificateManager {
}
/**
- * @param string $uid (optional) user to get the certificate path for, use `null` to get the system path
+ * @param string|null $uid (optional) user to get the certificate path for, use `null` to get the system path
* @return string
*/
private function getPathToCertificates($uid = '') {
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index 176faf68e2d..1dd680ea13f 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -56,7 +56,7 @@ class Crypto implements ICrypto {
* @param IConfig $config
* @param ISecureRandom $random
*/
- function __construct(IConfig $config, ISecureRandom $random) {
+ public function __construct(IConfig $config, ISecureRandom $random) {
$this->cipher = new AES();
$this->config = $config;
$this->random = $random;
@@ -115,7 +115,7 @@ class Crypto implements ICrypto {
$this->cipher->setPassword($password);
$parts = explode('|', $authenticatedCiphertext);
- if(sizeof($parts) !== 3) {
+ if(count($parts) !== 3) {
throw new \Exception('Authenticated ciphertext could not be decoded.');
}
diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php
index 3bc546fa0a2..ddba82fec43 100644
--- a/lib/private/Security/Hasher.php
+++ b/lib/private/Security/Hasher.php
@@ -58,7 +58,7 @@ class Hasher implements IHasher {
/**
* @param IConfig $config
*/
- function __construct(IConfig $config) {
+ public function __construct(IConfig $config) {
$this->config = $config;
$hashingCost = $this->config->getSystemValue('hashingCost', null);
@@ -86,7 +86,7 @@ class Hasher implements IHasher {
*/
protected function splitHash($prefixedHash) {
$explodedString = explode('|', $prefixedHash, 2);
- if(sizeof($explodedString) === 2) {
+ if(count($explodedString) === 2) {
if((int)$explodedString[0] > 0) {
return array('version' => (int)$explodedString[0], 'hash' => $explodedString[1]);
}
diff --git a/lib/private/Security/TrustedDomainHelper.php b/lib/private/Security/TrustedDomainHelper.php
index a8cbdb6ee6c..221d21fb6a4 100644
--- a/lib/private/Security/TrustedDomainHelper.php
+++ b/lib/private/Security/TrustedDomainHelper.php
@@ -38,7 +38,7 @@ class TrustedDomainHelper {
/**
* @param IConfig $config
*/
- function __construct(IConfig $config) {
+ public function __construct(IConfig $config) {
$this->config = $config;
}
@@ -89,7 +89,7 @@ class TrustedDomainHelper {
if (gettype($trusted) !== 'string') {
break;
}
- $regex = '/^' . join('[-\.a-zA-Z0-9]*', array_map(function($v) { return preg_quote($v, '/'); }, explode('*', $trusted))) . '$/';
+ $regex = '/^' . implode('[-\.a-zA-Z0-9]*', array_map(function($v) { return preg_quote($v, '/'); }, explode('*', $trusted))) . '$/';
if (preg_match($regex, $domain) || preg_match($regex, $domainWithPort)) {
return true;
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index be432c0cf28..60a5de97bbf 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -113,6 +113,7 @@ use OCP\IServerContainer;
use OCP\ITempManager;
use OCP\Contacts\ContactsMenu\IActionFactory;
use OCP\IURLGenerator;
+use OCP\Lock\ILockingProvider;
use OCP\RichObjectStrings\IValidator;
use OCP\Security\IContentSecurityPolicyManager;
use OCP\Share\IShareHelper;
@@ -785,7 +786,7 @@ class Server extends ServerContainer implements IServerContainer {
$factory = new $factoryClass($this);
return $factory->getLDAPProvider();
});
- $this->registerService('LockingProvider', function (Server $c) {
+ $this->registerService(ILockingProvider::class, function (Server $c) {
$ini = $c->getIniWrapper();
$config = $c->getConfig();
$ttl = $config->getSystemValue('filelocking.ttl', max(3600, $ini->getNumeric('max_execution_time')));
@@ -800,6 +801,7 @@ class Server extends ServerContainer implements IServerContainer {
}
return new NoopLockingProvider();
});
+ $this->registerAlias('LockingProvider', ILockingProvider::class);
$this->registerService(\OCP\Files\Mount\IMountManager::class, function () {
return new \OC\Files\Mount\Manager();
@@ -866,7 +868,7 @@ class Server extends ServerContainer implements IServerContainer {
$classExists = false;
}
- if ($classExists && $c->getConfig()->getSystemValue('installed', false) && $c->getAppManager()->isInstalled('theming')) {
+ if ($classExists && $c->getConfig()->getSystemValue('installed', false) && $c->getAppManager()->isInstalled('theming') && $c->getTrustedDomainHelper()->isTrustedDomain($c->getRequest()->getInsecureServerHost())) {
return new ThemingDefaults(
$c->getConfig(),
$c->getL10N('theming'),
@@ -962,7 +964,10 @@ class Server extends ServerContainer implements IServerContainer {
$factory,
$c->getUserManager(),
$c->getLazyRootFolder(),
- $c->getEventDispatcher()
+ $c->getEventDispatcher(),
+ $c->getMailer(),
+ $c->getURLGenerator(),
+ $c->getThemingDefaults()
);
return $manager;
@@ -1247,7 +1252,6 @@ class Server extends ServerContainer implements IServerContainer {
}
/**
- * @internal For internal use only
* @return \OC\SystemConfig
*/
public function getSystemConfig() {
diff --git a/lib/private/Session/CryptoWrapper.php b/lib/private/Session/CryptoWrapper.php
index 67a673cb309..1cec2670650 100644
--- a/lib/private/Session/CryptoWrapper.php
+++ b/lib/private/Session/CryptoWrapper.php
@@ -50,14 +50,16 @@ use OCP\Security\ISecureRandom;
class CryptoWrapper {
const COOKIE_NAME = 'oc_sessionPassphrase';
+ /** @var IConfig */
+ protected $config;
/** @var ISession */
protected $session;
-
- /** @var \OCP\Security\ICrypto */
+ /** @var ICrypto */
protected $crypto;
-
/** @var ISecureRandom */
protected $random;
+ /** @var string */
+ protected $passphrase;
/**
* @param IConfig $config
diff --git a/lib/private/Settings/Mapper.php b/lib/private/Settings/Mapper.php
index 3219a812cd5..ceb68c9eebf 100644
--- a/lib/private/Settings/Mapper.php
+++ b/lib/private/Settings/Mapper.php
@@ -198,6 +198,7 @@ class Mapper {
* @param string $idCol
* @param string $id
* @param array $values
+ * @suppress SqlInjectionChecker
*/
public function update($table, $idCol, $id, $values) {
$query = $this->dbc->getQueryBuilder();
diff --git a/lib/private/Settings/Personal/PersonalInfo.php b/lib/private/Settings/Personal/PersonalInfo.php
index fb1f388c599..e92541c0010 100644
--- a/lib/private/Settings/Personal/PersonalInfo.php
+++ b/lib/private/Settings/Personal/PersonalInfo.php
@@ -118,10 +118,10 @@ class PersonalInfo implements ISettings {
'usage' => \OC_Helper::humanFileSize($storageInfo['used']),
'usage_relative' => $storageInfo['relative'],
'quota' => $storageInfo['quota'],
- 'avatarChangeSupported' => \OC_User::canUserChangeAvatar($uid),
+ 'avatarChangeSupported' => $user->canChangeAvatar(),
'lookupServerUploadEnabled' => $lookupServerUploadEnabled,
'avatarScope' => $userData[AccountManager::PROPERTY_AVATAR]['scope'],
- 'displayNameChangeSupported' => \OC_User::canUserChangeDisplayName($uid),
+ 'displayNameChangeSupported' => $user->canChangeDisplayName(),
'displayName' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['value'],
'displayNameScope' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['scope'],
'email' => $userData[AccountManager::PROPERTY_EMAIL]['value'],
@@ -138,7 +138,7 @@ class PersonalInfo implements ISettings {
'twitterScope' => $userData[AccountManager::PROPERTY_TWITTER]['scope'],
'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'],
'groups' => $this->getGroups($user),
- 'passwordChangeSupported' => \OC_User::canUserChangePassword($uid),
+ 'passwordChangeSupported' => $user->canChangePassword(),
] + $messageParameters + $languageParameters;
diff --git a/lib/private/Settings/RemoveOrphaned.php b/lib/private/Settings/RemoveOrphaned.php
index fbee95c8879..29c7cf212b5 100644
--- a/lib/private/Settings/RemoveOrphaned.php
+++ b/lib/private/Settings/RemoveOrphaned.php
@@ -58,7 +58,7 @@ class RemoveOrphaned extends TimedJob {
* run the job, then remove it from the job list
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
// add an interval of 15 mins
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 5cd3c84ce92..521a8f75f8e 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -223,7 +223,7 @@ class Setup {
'error' => $this->l10n->t(
'Mac OS X is not supported and %s will not work properly on this platform. ' .
'Use it at your own risk! ',
- $this->defaults->getName()
+ [$this->defaults->getName()]
),
'hint' => $this->l10n->t('For the best results, please consider using a GNU/Linux server instead.')
);
@@ -234,7 +234,7 @@ class Setup {
'error' => $this->l10n->t(
'It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. ' .
'This will lead to problems with files over 4 GB and is highly discouraged.',
- $this->defaults->getName()
+ [$this->defaults->getName()]
),
'hint' => $this->l10n->t('Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.')
);
@@ -282,8 +282,7 @@ class Setup {
$class = self::$dbSetupClasses[$dbType];
/** @var \OC\Setup\AbstractDatabase $dbSetup */
- $dbSetup = new $class($l, 'db_structure.xml', $this->config,
- $this->logger, $this->random);
+ $dbSetup = new $class($l, $this->config, $this->logger, $this->random);
$error = array_merge($error, $dbSetup->validate($options));
// validate the data directory
@@ -450,10 +449,10 @@ class Setup {
$htaccessContent = explode($content, $htaccessContent, 2)[0];
//custom 403 error page
- $content.= "\nErrorDocument 403 ".$webRoot."/core/templates/403.php";
+ $content.= "\nErrorDocument 403 ".$webRoot."/";
//custom 404 error page
- $content.= "\nErrorDocument 404 ".$webRoot."/core/templates/404.php";
+ $content.= "\nErrorDocument 404 ".$webRoot."/";
// Add rewrite rules if the RewriteBase is configured
$rewriteBase = $config->getValue('htaccess.RewriteBase', '');
diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php
index 2fbec326a5d..0e0981e0771 100644
--- a/lib/private/Setup/AbstractDatabase.php
+++ b/lib/private/Setup/AbstractDatabase.php
@@ -38,8 +38,6 @@ abstract class AbstractDatabase {
/** @var IL10N */
protected $trans;
/** @var string */
- protected $dbDefinitionFile;
- /** @var string */
protected $dbUser;
/** @var string */
protected $dbPassword;
@@ -58,9 +56,8 @@ abstract class AbstractDatabase {
/** @var ISecureRandom */
protected $random;
- public function __construct(IL10N $trans, $dbDefinitionFile, SystemConfig $config, ILogger $logger, ISecureRandom $random) {
+ public function __construct(IL10N $trans, SystemConfig $config, ILogger $logger, ISecureRandom $random) {
$this->trans = $trans;
- $this->dbDefinitionFile = $dbDefinitionFile;
$this->config = $config;
$this->logger = $logger;
$this->random = $random;
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
index b4ca02d2e84..d03e4858b61 100644
--- a/lib/private/Setup/MySQL.php
+++ b/lib/private/Setup/MySQL.php
@@ -51,11 +51,7 @@ class MySQL extends AbstractDatabase {
//fill the database if needed
$query='select count(*) from information_schema.tables where table_schema=? AND table_name = ?';
- $result = $connection->executeQuery($query, [$this->dbName, $this->tablePrefix.'users']);
- $row = $result->fetch();
- if (!$row or $row['count(*)'] === '0') {
- \OC_DB::createDbFromStructure($this->dbDefinitionFile);
- }
+ $connection->executeQuery($query, [$this->dbName, $this->tablePrefix.'users']);
}
/**
diff --git a/lib/private/Setup/OCI.php b/lib/private/Setup/OCI.php
index 1bc6b08117f..3051987917c 100644
--- a/lib/private/Setup/OCI.php
+++ b/lib/private/Setup/OCI.php
@@ -165,14 +165,7 @@ class OCI extends AbstractDatabase {
$entry .= $this->trans->t('Offending command was: "%s"', array($query)) . '<br />';
$this->logger->warning( $entry, ['app' => 'setup.oci']);
}
- $result = oci_execute($stmt);
-
- if($result) {
- $row = oci_fetch_row($stmt);
- }
- if(!$result or $row[0]==0) {
- \OC_DB::createDbFromStructure($this->dbDefinitionFile);
- }
+ oci_execute($stmt);
}
/**
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index 18ed9fcdef6..dbcb94d6d7f 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -34,6 +34,11 @@ use OCP\IDBConnection;
class PostgreSQL extends AbstractDatabase {
public $dbprettyname = 'PostgreSQL';
+ /**
+ * @param string $username
+ * @throws \OC\DatabaseSetupException
+ * @suppress SqlInjectionChecker
+ */
public function setupDatabase($username) {
try {
$connection = $this->connect([
@@ -100,11 +105,6 @@ class PostgreSQL extends AbstractDatabase {
throw new \OC\DatabaseSetupException($this->trans->t('PostgreSQL username and/or password not valid'),
$this->trans->t('You need to enter details of an existing account.'));
}
-
-
- if (!$tablesSetup) {
- \OC_DB::createDbFromStructure($this->dbDefinitionFile);
- }
}
private function createDatabase(IDBConnection $connection) {
diff --git a/lib/private/Setup/Sqlite.php b/lib/private/Setup/Sqlite.php
index 87c0b82682f..d95e70c8b0c 100644
--- a/lib/private/Setup/Sqlite.php
+++ b/lib/private/Setup/Sqlite.php
@@ -41,6 +41,5 @@ class Sqlite extends AbstractDatabase {
}
//in case of sqlite, we can always fill the database
error_log("creating sqlite db");
- \OC_DB::createDbFromStructure($this->dbDefinitionFile);
}
}
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index dc96d856ba6..93117bf3c7e 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -338,6 +338,7 @@ class Share extends Constants {
}
}
}
+ $result->closeCursor();
}
}
@@ -913,8 +914,7 @@ class Share extends Constants {
$token = $oldToken;
} else {
$token = \OC::$server->getSecureRandom()->generate(self::TOKEN_LENGTH,
- \OCP\Security\ISecureRandom::CHAR_LOWER.\OCP\Security\ISecureRandom::CHAR_UPPER.
- \OCP\Security\ISecureRandom::CHAR_DIGITS
+ \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE
);
}
$result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions,
@@ -1461,8 +1461,9 @@ class Share extends Constants {
->from('share')
->where($qb->expr()->eq('id', $qb->createParameter('shareId')))
->setParameter(':shareId', $shareId);
- $result = $qb->execute();
- $result = $result->fetch();
+ $dbResult = $qb->execute();
+ $result = $dbResult->fetch();
+ $dbResult->closeCursor();
if (empty($result)) {
throw new \Exception('Share not found');
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index 6f3741f5ae7..6503e67a8f9 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -860,7 +860,7 @@ class DefaultShareProvider implements IShareProvider {
if (isset($data['f_permissions'])) {
$entryData = $data;
$entryData['permissions'] = $entryData['f_permissions'];
- $entryData['parent'] = $entryData['f_parent'];;
+ $entryData['parent'] = $entryData['f_parent'];
$share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData,
\OC::$server->getMimeTypeLoader()));
}
diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php
index 728ea78a8a6..e7fbe7336b8 100644
--- a/lib/private/Share20/LegacyHooks.php
+++ b/lib/private/Share20/LegacyHooks.php
@@ -40,6 +40,7 @@ class LegacyHooks {
$this->eventDispatcher->addListener('OCP\Share::preUnshare', [$this, 'preUnshare']);
$this->eventDispatcher->addListener('OCP\Share::postUnshare', [$this, 'postUnshare']);
+ $this->eventDispatcher->addListener('OCP\Share::postUnshareFromSelf', [$this, 'postUnshareFromSelf']);
}
/**
@@ -71,7 +72,21 @@ class LegacyHooks {
$formatted['deletedShares'] = $formattedDeletedShares;
- \OC_Hook::emit('OCP\Share', 'pre_unshare', $formatted);
+ \OC_Hook::emit('OCP\Share', 'post_unshare', $formatted);
+ }
+
+ /**
+ * @param GenericEvent $e
+ */
+ public function postUnshareFromSelf(GenericEvent $e) {
+ /** @var IShare $share */
+ $share = $e->getSubject();
+
+ $formatted = $this->formatHookParams($share);
+ $formatted['itemTarget'] = $formatted['fileTarget'];
+ $formatted['unsharedItems'] = [$formatted];
+
+ \OC_Hook::emit('OCP\Share', 'post_unshareFromSelf', $formatted);
}
private function formatHookParams(IShare $share) {
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 798ea937038..9eee9a505ee 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -31,6 +31,7 @@ use OC\Cache\CappedMemoryCache;
use OC\Files\Mount\MoveableMount;
use OC\HintException;
use OC\Share20\Exception\ProviderException;
+use OCP\Defaults;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
@@ -40,7 +41,10 @@ use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\IUser;
use OCP\IUserManager;
+use OCP\Mail\IMailer;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
use OCP\Share\Exceptions\GenericShareException;
@@ -82,6 +86,12 @@ class Manager implements IManager {
private $eventDispatcher;
/** @var LegacyHooks */
private $legacyHooks;
+ /** @var IMailer */
+ private $mailer;
+ /** @var IURLGenerator */
+ private $urlGenerator;
+ /** @var \OC_Defaults */
+ private $defaults;
/**
@@ -98,6 +108,9 @@ class Manager implements IManager {
* @param IUserManager $userManager
* @param IRootFolder $rootFolder
* @param EventDispatcher $eventDispatcher
+ * @param IMailer $mailer
+ * @param IURLGenerator $urlGenerator
+ * @param \OC_Defaults $defaults
*/
public function __construct(
ILogger $logger,
@@ -110,7 +123,10 @@ class Manager implements IManager {
IProviderFactory $factory,
IUserManager $userManager,
IRootFolder $rootFolder,
- EventDispatcher $eventDispatcher
+ EventDispatcher $eventDispatcher,
+ IMailer $mailer,
+ IURLGenerator $urlGenerator,
+ \OC_Defaults $defaults
) {
$this->logger = $logger;
$this->config = $config;
@@ -125,6 +141,9 @@ class Manager implements IManager {
$this->eventDispatcher = $eventDispatcher;
$this->sharingDisabledForUsersCache = new CappedMemoryCache();
$this->legacyHooks = new LegacyHooks($this->eventDispatcher);
+ $this->mailer = $mailer;
+ $this->urlGenerator = $urlGenerator;
+ $this->defaults = $defaults;
}
/**
@@ -168,6 +187,8 @@ class Manager implements IManager {
* @param \OCP\Share\IShare $share
* @throws \InvalidArgumentException
* @throws GenericShareException
+ *
+ * @suppress PhanUndeclaredClassMethod
*/
protected function generalCreateChecks(\OCP\Share\IShare $share) {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
@@ -581,9 +602,7 @@ class Manager implements IManager {
$share->setToken(
$this->secureRandom->generate(
\OC\Share\Constants::TOKEN_LENGTH,
- \OCP\Security\ISecureRandom::CHAR_LOWER.
- \OCP\Security\ISecureRandom::CHAR_UPPER.
- \OCP\Security\ISecureRandom::CHAR_DIGITS
+ \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE
)
);
@@ -601,9 +620,7 @@ class Manager implements IManager {
$share->setToken(
$this->secureRandom->generate(
\OC\Share\Constants::TOKEN_LENGTH,
- \OCP\Security\ISecureRandom::CHAR_LOWER.
- \OCP\Security\ISecureRandom::CHAR_UPPER.
- \OCP\Security\ISecureRandom::CHAR_DIGITS
+ \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE
)
);
}
@@ -666,10 +683,91 @@ class Manager implements IManager {
\OC_Hook::emit('OCP\Share', 'post_shared', $postHookData);
+ if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
+ $user = $this->userManager->get($share->getSharedWith());
+ if ($user !== null) {
+ $emailAddress = $user->getEMailAddress();
+ if ($emailAddress !== null && $emailAddress !== '') {
+ $this->sendMailNotification(
+ $share->getNode()->getName(),
+ $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', [ 'fileid' => $share->getNode()->getId() ]),
+ $share->getSharedBy(),
+ $emailAddress
+ );
+ $this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']);
+ } else {
+ $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']);
+ }
+ } else {
+ $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']);
+ }
+ }
+
return $share;
}
/**
+ * @param string $filename file/folder name
+ * @param string $link link to the file/folder
+ * @param string $initiator user ID of share sender
+ * @param string $shareWith email address of share receiver
+ * @throws \Exception If mail couldn't be sent
+ */
+ protected function sendMailNotification($filename,
+ $link,
+ $initiator,
+ $shareWith) {
+ $initiatorUser = $this->userManager->get($initiator);
+ $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
+ $subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename));
+
+ $message = $this->mailer->createMessage();
+
+ $emailTemplate = $this->mailer->createEMailTemplate();
+
+ $emailTemplate->addHeader();
+ $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false);
+ $text = $this->l->t('%s shared »%s« with you.', [$initiatorDisplayName, $filename]);
+
+ $emailTemplate->addBodyText(
+ $text . ' ' . $this->l->t('Click the button below to open it.'),
+ $text
+ );
+ $emailTemplate->addBodyButton(
+ $this->l->t('Open »%s«', [$filename]),
+ $link
+ );
+
+ $message->setTo([$shareWith]);
+
+ // The "From" contains the sharers name
+ $instanceName = $this->defaults->getName();
+ $senderName = $this->l->t(
+ '%s via %s',
+ [
+ $initiatorDisplayName,
+ $instanceName
+ ]
+ );
+ $message->setFrom([\OCP\Util::getDefaultEmailAddress($instanceName) => $senderName]);
+
+ // The "Reply-To" is set to the sharer if an mail address is configured
+ // also the default footer contains a "Do not reply" which needs to be adjusted.
+ $initiatorEmail = $initiatorUser->getEMailAddress();
+ if($initiatorEmail !== null) {
+ $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
+ $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan());
+ } else {
+ $emailTemplate->addFooter();
+ }
+
+ $message->setSubject($subject);
+ $message->setPlainBody($emailTemplate->renderText());
+ $message->setHtmlBody($emailTemplate->renderHtml());
+ $this->mailer->send($message);
+ }
+
+ /**
* Update a share
*
* @param \OCP\Share\IShare $share
@@ -873,6 +971,8 @@ class Manager implements IManager {
$provider = $this->factory->getProvider($providerId);
$provider->deleteFromSelf($share, $recipientId);
+ $event = new GenericEvent($share);
+ $this->eventDispatcher->dispatch('OCP\Share::postUnshareFromSelf', $event);
}
/**
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index aedad6a32a7..2b7d0e78c52 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -177,6 +177,8 @@ class ProviderFactory implements IProviderFactory {
* Create the circle share provider
*
* @return FederatedShareProvider
+ *
+ * @suppress PhanUndeclaredClassMethod
*/
protected function getShareByCircleProvider() {
diff --git a/lib/private/SystemTag/SystemTagManager.php b/lib/private/SystemTag/SystemTagManager.php
index ab0deba0360..08f9b6bc4af 100644
--- a/lib/private/SystemTag/SystemTagManager.php
+++ b/lib/private/SystemTag/SystemTagManager.php
@@ -408,7 +408,7 @@ class SystemTagManager implements ISystemTagManager {
$this->connection->commit();
} catch (\Exception $e) {
- $this->connection->rollback();
+ $this->connection->rollBack();
throw $e;
}
}
diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php
index e562a2dfd4b..4a6ffdeddfb 100644
--- a/lib/private/SystemTag/SystemTagObjectMapper.php
+++ b/lib/private/SystemTag/SystemTagObjectMapper.php
@@ -112,7 +112,7 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper {
->andWhere($query->expr()->eq('objecttype', $query->createNamedParameter($objectType)));
if ($limit) {
- if (sizeof($tagIds) !== 1) {
+ if (count($tagIds) !== 1) {
throw new \InvalidArgumentException('Limit is only allowed with a single tag');
}
diff --git a/lib/private/Tags.php b/lib/private/Tags.php
index 3ec1af00e3f..b63435ff838 100644
--- a/lib/private/Tags.php
+++ b/lib/private/Tags.php
@@ -274,7 +274,7 @@ class Tags implements \OCP\ITags {
if($tagId === false) {
$l10n = \OC::$server->getL10N('core');
throw new \Exception(
- $l10n->t('Could not find category "%s"', $tag)
+ $l10n->t('Could not find category "%s"', [$tag])
);
}
diff --git a/lib/private/TempManager.php b/lib/private/TempManager.php
index 4dfcbe7f523..dc6dad15d3c 100644
--- a/lib/private/TempManager.php
+++ b/lib/private/TempManager.php
@@ -256,7 +256,7 @@ class TempManager implements ITempManager {
// suppress any possible errors caused by is_writable
// checks missing or invalid path or characters, wrong permissions etc
try {
- if (is_writeable($directory)) {
+ if (is_writable($directory)) {
return true;
}
} catch (\Exception $e) {
diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php
index 8254174bfc0..8a9e7e747e0 100644
--- a/lib/private/Template/JSCombiner.php
+++ b/lib/private/Template/JSCombiner.php
@@ -28,6 +28,7 @@ use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFolder;
+use OCP\ILogger;
use OCP\IURLGenerator;
class JSCombiner {
@@ -44,20 +45,26 @@ class JSCombiner {
/** @var SystemConfig */
protected $config;
+ /** @var ILogger */
+ protected $logger;
+
/**
* @param IAppData $appData
* @param IURLGenerator $urlGenerator
* @param ICache $depsCache
* @param SystemConfig $config
+ * @param ILogger $logger
*/
public function __construct(IAppData $appData,
IURLGenerator $urlGenerator,
ICache $depsCache,
- SystemConfig $config) {
+ SystemConfig $config,
+ ILogger $logger) {
$this->appData = $appData;
$this->urlGenerator = $urlGenerator;
$this->depsCache = $depsCache;
$this->config = $config;
+ $this->logger = $logger;
}
/**
@@ -102,6 +109,12 @@ class JSCombiner {
$depFile = $folder->getFile($fileName);
$deps = $depFile->getContent();
}
+ // check again
+ if ($deps === null || $deps === '') {
+ $this->logger->info('JSCombiner: deps file empty: ' . $fileName);
+ return false;
+ }
+
$deps = json_decode($deps, true);
foreach ($deps as $file=>$mtime) {
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index 9a11e84f8d9..fb9b27f0765 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -238,7 +238,7 @@ class JSConfigHelper {
'docBaseUrl' => $this->defaults->getDocBaseUrl(),
'docPlaceholderUrl' => $this->defaults->buildDocLinkToKey('PLACEHOLDER'),
'slogan' => $this->defaults->getSlogan(),
- 'logoClaim' => $this->defaults->getLogoClaim(),
+ 'logoClaim' => '',
'shortFooter' => $this->defaults->getShortFooter(),
'longFooter' => $this->defaults->getLongFooter(),
'folder' => \OC_Util::getTheme(),
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index f7bb23cd3de..9e9ec709cf5 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -243,7 +243,8 @@ class TemplateLayout extends \OC_Template {
\OC::$server->getAppDataDir('js'),
\OC::$server->getURLGenerator(),
\OC::$server->getMemCacheFactory()->create('JS'),
- \OC::$server->getSystemConfig()
+ \OC::$server->getSystemConfig(),
+ \OC::$server->getLogger()
)
);
$locator->find($scripts);
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 6c23a43c354..902d22f6679 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -315,10 +315,11 @@ class Updater extends BasicEmitter {
$apps = \OC_App::getEnabledApps();
$this->emit('\OC\Updater', 'appUpgradeCheckBefore');
+ $appManager = \OC::$server->getAppManager();
foreach ($apps as $appId) {
$info = \OC_App::getAppInfo($appId);
$compatible = \OC_App::isAppCompatible($version, $info);
- $isShipped = \OC_App::isShipped($appId);
+ $isShipped = $appManager->isShipped($appId);
if ($compatible && $isShipped && \OC_App::shouldUpgrade($appId)) {
/**
@@ -407,11 +408,12 @@ class Updater extends BasicEmitter {
$apps = OC_App::getEnabledApps();
$version = Util::getVersion();
$disabledApps = [];
+ $appManager = \OC::$server->getAppManager();
foreach ($apps as $app) {
// check if the app is compatible with this version of ownCloud
$info = OC_App::getAppInfo($app);
if(!OC_App::isAppCompatible($version, $info)) {
- if (OC_App::isShipped($app)) {
+ if ($appManager->isShipped($app)) {
throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update');
}
OC_App::disable($app);
@@ -422,7 +424,7 @@ class Updater extends BasicEmitter {
continue;
}
// shipped apps will remain enabled
- if (OC_App::isShipped($app)) {
+ if ($appManager->isShipped($app)) {
continue;
}
// authentication and session apps will remain enabled as well
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index c04f426c2cf..8f3c98d4b5e 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -34,6 +34,7 @@
namespace OC\User;
use OC\Hooks\PublicEmitter;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IUser;
use OCP\IUserBackend;
use OCP\IUserManager;
@@ -126,6 +127,9 @@ class Manager extends PublicEmitter implements IUserManager {
* @return \OC\User\User|null Either the user or null if the specified user does not exist
*/
public function get($uid) {
+ if (is_null($uid) || $uid === '' || $uid === false) {
+ return null;
+ }
if (isset($this->cachedUsers[$uid])) { //check the cache first to prevent having to loop over the backends
return $this->cachedUsers[$uid];
}
@@ -433,7 +437,7 @@ class Manager extends PublicEmitter implements IUserManager {
->from('preferences')
->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('core')))
->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('enabled')))
- ->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false')));
+ ->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'), IQueryBuilder::PARAM_STR));
$query = $queryBuilder->execute();
diff --git a/lib/private/legacy/api.php b/lib/private/legacy/api.php
index 894aee28560..f65275bf1da 100644
--- a/lib/private/legacy/api.php
+++ b/lib/private/legacy/api.php
@@ -123,13 +123,14 @@ class OC_API {
$name = $parameters['_route'];
// Foreach registered action
$responses = array();
+ $appManager = \OC::$server->getAppManager();
foreach(self::$actions[$name] as $action) {
// Check authentication and availability
if(!self::isAuthorised($action)) {
$responses[] = array(
'app' => $action['app'],
'response' => new OC_OCS_Result(null, API::RESPOND_UNAUTHORISED, 'Unauthorised'),
- 'shipped' => OC_App::isShipped($action['app']),
+ 'shipped' => $appManager->isShipped($action['app']),
);
continue;
}
@@ -137,7 +138,7 @@ class OC_API {
$responses[] = array(
'app' => $action['app'],
'response' => new OC_OCS_Result(null, API::RESPOND_NOT_FOUND, 'Api method not found'),
- 'shipped' => OC_App::isShipped($action['app']),
+ 'shipped' => $appManager->isShipped($action['app']),
);
continue;
}
@@ -145,7 +146,7 @@ class OC_API {
$responses[] = array(
'app' => $action['app'],
'response' => call_user_func($action['action'], $parameters),
- 'shipped' => OC_App::isShipped($action['app']),
+ 'shipped' => $appManager->isShipped($action['app']),
);
}
$response = self::mergeResponses($responses);
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index 463e13da915..872c1c120ac 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -283,18 +283,6 @@ class OC_App {
}
/**
- * check if app is shipped
- *
- * @param string $appId the id of the app to check
- * @return bool
- *
- * Check if an app that is installed is a shipped app or installed from the appstore.
- */
- public static function isShipped($appId) {
- return \OC::$server->getAppManager()->isShipped($appId);
- }
-
- /**
* get all enabled apps
*/
protected static $enabledAppsCache = array();
@@ -396,7 +384,7 @@ class OC_App {
* @return bool
*/
public static function removeApp($app) {
- if (self::isShipped($app)) {
+ if (\OC::$server->getAppManager()->isShipped($app)) {
return false;
}
@@ -777,8 +765,9 @@ class OC_App {
public function listAllApps() {
$installedApps = OC_App::getAllApps();
+ $appManager = \OC::$server->getAppManager();
//we don't want to show configuration for these
- $blacklist = \OC::$server->getAppManager()->getAlwaysEnabledApps();
+ $blacklist = $appManager->getAlwaysEnabledApps();
$appList = array();
$langCode = \OC::$server->getL10N('core')->getLanguageCode();
$urlGenerator = \OC::$server->getURLGenerator();
@@ -810,7 +799,7 @@ class OC_App {
$info['active'] = $active;
- if (self::isShipped($app)) {
+ if ($appManager->isShipped($app)) {
$info['internal'] = true;
$info['level'] = self::officialApp;
$info['removable'] = false;
@@ -823,12 +812,12 @@ class OC_App {
if($appPath !== false) {
$appIcon = $appPath . '/img/' . $app . '.svg';
if (file_exists($appIcon)) {
- $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, $app . '.svg');
+ $info['preview'] = $urlGenerator->imagePath($app, $app . '.svg');
$info['previewAsIcon'] = true;
} else {
$appIcon = $appPath . '/img/app.svg';
if (file_exists($appIcon)) {
- $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, 'app.svg');
+ $info['preview'] = $urlGenerator->imagePath($app, 'app.svg');
$info['previewAsIcon'] = true;
}
}
@@ -1244,7 +1233,7 @@ class OC_App {
$dependencyAnalyzer = new DependencyAnalyzer(new Platform($config), $l);
$missing = $dependencyAnalyzer->analyze($info);
if (!empty($missing)) {
- $missingMsg = join(PHP_EOL, $missing);
+ $missingMsg = implode(PHP_EOL, $missing);
throw new \Exception(
$l->t('App "%s" cannot be installed because the following dependencies are not fulfilled: %s',
[$info['name'], $missingMsg]
diff --git a/lib/private/legacy/db.php b/lib/private/legacy/db.php
index 415701d4024..843970d7d53 100644
--- a/lib/private/legacy/db.php
+++ b/lib/private/legacy/db.php
@@ -45,9 +45,9 @@ class OC_DB {
/**
* Prepare a SQL query
* @param string $query Query string
- * @param int $limit
- * @param int $offset
- * @param bool $isManipulation
+ * @param int|null $limit
+ * @param int|null $offset
+ * @param bool|null $isManipulation
* @throws \OC\DatabaseException
* @return OC_DB_StatementWrapper prepared SQL query
*
@@ -65,7 +65,7 @@ class OC_DB {
try {
$result =$connection->prepare($query, $limit, $offset);
} catch (\Doctrine\DBAL\DBALException $e) {
- throw new \OC\DatabaseException($e->getMessage(), $query);
+ throw new \OC\DatabaseException($e->getMessage());
}
// differentiate between query and manipulation
$result = new OC_DB_StatementWrapper($result, $isManipulation);
@@ -104,7 +104,7 @@ class OC_DB {
* @param mixed $stmt OC_DB_StatementWrapper,
* an array with 'sql' and optionally 'limit' and 'offset' keys
* .. or a simple sql query string
- * @param array $parameters
+ * @param array|null $parameters
* @return OC_DB_StatementWrapper
* @throws \OC\DatabaseException
*/
@@ -151,7 +151,6 @@ class OC_DB {
/**
* saves database schema to xml file
* @param string $file name of file
- * @param int $mode
* @return bool
*
* TODO: write more documentation
@@ -179,6 +178,7 @@ class OC_DB {
* @param string $file file to read structure from
* @throws Exception
* @return string|boolean
+ * @suppress PhanDeprecatedFunction
*/
public static function updateDbFromStructure($file) {
$schemaManager = self::getMDB2SchemaManager();
@@ -214,7 +214,7 @@ class OC_DB {
} else {
$message .= ', Root cause:' . self::getErrorMessage();
}
- throw new \OC\DatabaseException($message, \OC::$server->getDatabaseConnection()->errorCode());
+ throw new \OC\DatabaseException($message);
}
}
diff --git a/lib/private/legacy/db/statementwrapper.php b/lib/private/legacy/db/statementwrapper.php
index 53f7b484d04..cac4598e650 100644
--- a/lib/private/legacy/db/statementwrapper.php
+++ b/lib/private/legacy/db/statementwrapper.php
@@ -62,7 +62,7 @@ class OC_DB_StatementWrapper {
* make execute return the result instead of a bool
*
* @param array $input
- * @return \OC_DB_StatementWrapper|int
+ * @return \OC_DB_StatementWrapper|int|bool
*/
public function execute($input= []) {
$this->lastArguments = $input;
diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/defaults.php
index f6d72d9776d..adfbe71377d 100644
--- a/lib/private/legacy/defaults.php
+++ b/lib/private/legacy/defaults.php
@@ -45,7 +45,6 @@ class OC_Defaults {
private $defaultDocBaseUrl;
private $defaultDocVersion;
private $defaultSlogan;
- private $defaultLogoClaim;
private $defaultColorPrimary;
public function __construct() {
@@ -62,7 +61,6 @@ class OC_Defaults {
$this->defaultDocBaseUrl = 'https://docs.nextcloud.com';
$this->defaultDocVersion = '12'; // used to generate doc links
$this->defaultSlogan = $this->l->t('a safe home for all your data');
- $this->defaultLogoClaim = '';
$this->defaultColorPrimary = '#0082c9';
$themePath = OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php';
@@ -222,13 +220,10 @@ class OC_Defaults {
/**
* Returns logo claim
* @return string logo claim
+ * @deprecated 13.0.0
*/
public function getLogoClaim() {
- if ($this->themeExist('getLogoClaim')) {
- return $this->theme->getLogoClaim();
- } else {
- return $this->defaultLogoClaim;
- }
+ return '';
}
/**
diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php
index 6211d851426..74beb157e18 100644
--- a/lib/private/legacy/eventsource.php
+++ b/lib/private/legacy/eventsource.php
@@ -97,6 +97,7 @@ class OC_EventSource implements \OCP\IEventSource {
*
* @throws \BadMethodCallException
* if only one parameter is given, a typeless message will be send with that parameter as data
+ * @suppress PhanDeprecatedFunction
*/
public function send($type, $data = null) {
if ($data and !preg_match('/^[A-Za-z0-9_]+$/', $type)) {
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php
index 6775fe99dcd..48b7d037c58 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/helper.php
@@ -131,7 +131,7 @@ class OC_Helper {
/**
* Make a computer file size
* @param string $str file size in human readable format
- * @return float a file size in bytes
+ * @return float|bool a file size in bytes
*
* Makes 2kB to 2048.
*
@@ -395,7 +395,7 @@ class OC_Helper {
* performs a search in a nested array
* @param array $haystack the array to be searched
* @param string $needle the search string
- * @param string $index optional, only search this key name
+ * @param mixed $index optional, only search this key name
* @return mixed the key of the matching field, otherwise false
*
* performs a search in a nested array
diff --git a/lib/private/legacy/json.php b/lib/private/legacy/json.php
index 0e598a68ee1..180dd7c448d 100644
--- a/lib/private/legacy/json.php
+++ b/lib/private/legacy/json.php
@@ -52,6 +52,7 @@ class OC_JSON{
* Check if the app is enabled, send json error msg if not
* @param string $app
* @deprecated Use the AppFramework instead. It will automatically check if the app is enabled.
+ * @suppress PhanDeprecatedFunction
*/
public static function checkAppEnabled($app) {
if( !OC_App::isEnabled($app)) {
@@ -64,6 +65,7 @@ class OC_JSON{
/**
* Check if the user is logged in, send json error msg if not
* @deprecated Use annotation based ACLs from the AppFramework instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkLoggedIn() {
$twoFactorAuthManger = \OC::$server->getTwoFactorAuthManager();
@@ -79,6 +81,7 @@ class OC_JSON{
/**
* Check an ajax get/post call if the request token is valid, send json error msg if not.
* @deprecated Use annotation based CSRF checks from the AppFramework instead
+ * @suppress PhanDeprecatedFunction
*/
public static function callCheck() {
if(!\OC::$server->getRequest()->passesStrictCookieCheck()) {
@@ -96,6 +99,7 @@ class OC_JSON{
/**
* Check if the user is a admin, send json error msg if not.
* @deprecated Use annotation based ACLs from the AppFramework instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkAdminUser() {
if( !OC_User::isAdminUser(OC_User::getUser())) {
@@ -109,6 +113,7 @@ class OC_JSON{
* Check is a given user exists - send json error msg if not
* @param string $user
* @deprecated Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkUserExists($user) {
if (!OCP\User::userExists($user)) {
@@ -122,6 +127,7 @@ class OC_JSON{
/**
* Check if the user is a subadmin, send json error msg if not
* @deprecated Use annotation based ACLs from the AppFramework instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkSubAdminUser() {
$userObject = \OC::$server->getUserSession()->getUser();
@@ -140,6 +146,7 @@ class OC_JSON{
/**
* Send json error msg
* @deprecated Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function error($data = array()) {
$data['status'] = 'error';
@@ -149,6 +156,7 @@ class OC_JSON{
/**
* Send json success msg
* @deprecated Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function success($data = array()) {
$data['status'] = 'success';
@@ -159,7 +167,7 @@ class OC_JSON{
* Convert OC_L10N_String to string, for use in json encodings
*/
protected static function to_string(&$value) {
- if ($value instanceof OC_L10N_String) {
+ if ($value instanceof \OC\L10N\L10NString) {
$value = (string)$value;
}
}
@@ -167,6 +175,7 @@ class OC_JSON{
/**
* Encode and print $data in json format
* @deprecated Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function encodedPrint($data, $setContentType=true) {
if($setContentType) {
diff --git a/lib/private/legacy/ocs/privatedata.php b/lib/private/legacy/ocs/privatedata.php
deleted file mode 100644
index 3571c842b9f..00000000000
--- a/lib/private/legacy/ocs/privatedata.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-/**
- * @deprecated Since 9.1.0 use \OC\OCS\PrivateData
- */
-class OC_OCS_Privatedata extends \OC\OCS\PrivateData {
-}
diff --git a/lib/private/legacy/response.php b/lib/private/legacy/response.php
index fa73f3d6d0d..e45fe616e49 100644
--- a/lib/private/legacy/response.php
+++ b/lib/private/legacy/response.php
@@ -116,11 +116,11 @@ class OC_Response {
}
/**
- * Set response expire time
- * @param string|DateTime $expires date-time when the response expires
- * string for DateInterval from now
- * DateTime object when to expire response
- */
+ * Set response expire time
+ * @param string|DateTime|int $expires date-time when the response expires
+ * string for DateInterval from now
+ * DateTime object when to expire response
+ */
static public function setExpiresHeader($expires) {
if (is_string($expires) && $expires[0] == 'P') {
$interval = $expires;
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php
index 4f7c11d0b64..8c6185cd556 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/template.php
@@ -108,9 +108,9 @@ class OC_Template extends \OC\Template\Base {
}
}
+ OC_Util::addStyle('server', null, true);
OC_Util::addStyle('jquery-ui-fixes',null,true);
OC_Util::addVendorStyle('jquery-ui/themes/base/jquery-ui',null,true);
- OC_Util::addStyle('server', null, true);
OC_Util::addVendorStyle('select2/select2', null, true);
OC_Util::addStyle('jquery.ocdialog');
OC_Util::addTranslations("core", null, true);
@@ -291,10 +291,11 @@ class OC_Template extends \OC\Template\Base {
}
/**
- * Print a fatal error page and terminates the script
- * @param string $error_msg The error message to show
- * @param string $hint An optional hint message - needs to be properly escaped
- */
+ * Print a fatal error page and terminates the script
+ * @param string $error_msg The error message to show
+ * @param string $hint An optional hint message - needs to be properly escape
+ * @suppress PhanAccessMethodInternal
+ */
public static function printErrorPage( $error_msg, $hint = '' ) {
if (\OC_App::isEnabled('theming') && !\OC_App::isAppLoaded('theming')) {
\OC_App::loadApp('theming');
@@ -325,7 +326,10 @@ class OC_Template extends \OC\Template\Base {
/**
* print error page using Exception details
- * @param Exception | Throwable $exception
+ * @param Exception|Throwable $exception
+ * @param bool $fetchPage
+ * @return bool|string
+ * @suppress PhanAccessMethodInternal
*/
public static function printExceptionErrorPage($exception, $fetchPage = false) {
try {
diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php
index 65179a94108..bca16b48c1a 100644
--- a/lib/private/legacy/template/functions.php
+++ b/lib/private/legacy/template/functions.php
@@ -57,7 +57,7 @@ function emit_css_tag($href, $opts = '') {
/**
* Prints all tags for CSS loading
- * @param hash $obj all the script information from template
+ * @param array $obj all the script information from template
*/
function emit_css_loading_tags($obj) {
foreach($obj['cssfiles'] as $css) {
@@ -72,7 +72,6 @@ function emit_css_loading_tags($obj) {
* Prints a <script> tag with nonce and defer depending on config
* @param string $src the source URL, ignored when empty
* @param string $script_content the inline script content, ignored when empty
- * @param bool $defer_flag deferred loading or not
*/
function emit_script_tag($src, $script_content='') {
$defer_str=' defer';
@@ -93,7 +92,7 @@ function emit_script_tag($src, $script_content='') {
/**
* Print all <script> tags for loading JS
- * @param hash $obj all the script information from template
+ * @param array $obj all the script information from template
*/
function emit_script_loading_tags($obj) {
foreach($obj['jsfiles'] as $jsfile) {
@@ -250,7 +249,7 @@ function mimetype_icon( $mimetype ) {
* make preview_icon available as a simple function
* Returns the path to the preview of the image.
* @param string $path path of file
- * @return link to the preview
+ * @return string link to the preview
*/
function preview_icon( $path ) {
return \OC::$server->getURLGenerator()->linkToRoute('core.Preview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path]);
@@ -258,6 +257,8 @@ function preview_icon( $path ) {
/**
* @param string $path
+ * @param string $token
+ * @return string
*/
function publicPreview_icon ( $path, $token ) {
return \OC::$server->getURLGenerator()->linkToRoute('files_sharing.PublicPreview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path, 't' => $token]);
@@ -289,8 +290,8 @@ function strip_time($timestamp){
* Formats timestamp relatively to the current time using
* a human-friendly format like "x minutes ago" or "yesterday"
* @param int $timestamp timestamp to format
- * @param int $fromTime timestamp to compare from, defaults to current time
- * @param bool $dateOnly whether to strip time information
+ * @param int|null $fromTime timestamp to compare from, defaults to current time
+ * @param bool|null $dateOnly whether to strip time information
* @return string timestamp
*/
function relative_modified_date($timestamp, $fromTime = null, $dateOnly = false) {
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php
index 7e7cbab3bce..210e428a2e0 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/user.php
@@ -78,6 +78,7 @@ class OC_User {
* @return bool
*
* Set the User Authentication Module
+ * @suppress PhanDeprecatedFunction
*/
public static function useBackend($backend = 'database') {
if ($backend instanceof \OCP\UserInterface) {
@@ -123,6 +124,7 @@ class OC_User {
/**
* setup the configured backends in config.php
+ * @suppress PhanDeprecatedFunction
*/
public static function setupBackends() {
OC_App::loadApps(['prelogin']);
@@ -156,20 +158,6 @@ class OC_User {
}
/**
-
- * Try to login a user using the magic cookie (remember login)
- *
- * @deprecated use \OCP\IUserSession::loginWithCookie()
- * @param string $uid The username of the user to log in
- * @param string $token
- * @param string $oldSessionId
- * @return bool
- */
- public static function loginWithCookie($uid, $token, $oldSessionId) {
- return self::getUserSession()->loginWithCookie($uid, $token, $oldSessionId);
- }
-
- /**
* Try to login a user, assuming authentication
* has already happened (e.g. via Single Sign On).
*
@@ -187,18 +175,6 @@ class OC_User {
if ($uid) {
if (self::getUser() !== $uid) {
self::setUserId($uid);
- $setUidAsDisplayName = true;
- if($backend instanceof \OCP\UserInterface
- && $backend->implementsActions(OC_User_Backend::GET_DISPLAYNAME)) {
-
- $backendDisplayName = $backend->getDisplayName($uid);
- if(is_string($backendDisplayName) && trim($backendDisplayName) !== '') {
- $setUidAsDisplayName = false;
- }
- }
- if($setUidAsDisplayName) {
- self::setDisplayName($uid);
- }
$userSession = self::getUserSession();
$userSession->setLoginName($uid);
$request = OC::$server->getRequest();
@@ -233,7 +209,7 @@ class OC_User {
//setup extra user backends
self::setupBackends();
- self::unsetMagicInCookie();
+ self::getUserSession()->unsetMagicInCookie();
return self::loginWithApache($backend);
}
@@ -361,7 +337,7 @@ class OC_User {
* get the display name of the user currently logged in.
*
* @param string $uid
- * @return string uid or false
+ * @return string|bool uid or false
*/
public static function getDisplayName($uid = null) {
if ($uid) {
@@ -382,17 +358,6 @@ class OC_User {
}
/**
- * Autogenerate a password
- *
- * @return string
- *
- * generates a password
- */
- public static function generatePassword() {
- return \OC::$server->getSecureRandom()->generate(30);
- }
-
- /**
* Set password
*
* @param string $uid The username
@@ -412,57 +377,6 @@ class OC_User {
}
/**
- * Check whether user can change his avatar
- *
- * @param string $uid The username
- * @return bool
- *
- * Check whether a specified user can change his avatar
- */
- public static function canUserChangeAvatar($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- return $user->canChangeAvatar();
- } else {
- return false;
- }
- }
-
- /**
- * Check whether user can change his password
- *
- * @param string $uid The username
- * @return bool
- *
- * Check whether a specified user can change his password
- */
- public static function canUserChangePassword($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- return $user->canChangePassword();
- } else {
- return false;
- }
- }
-
- /**
- * Check whether user can change his display name
- *
- * @param string $uid The username
- * @return bool
- *
- * Check whether a specified user can change his display name
- */
- public static function canUserChangeDisplayName($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- return $user->canChangeDisplayName();
- } else {
- return false;
- }
- }
-
- /**
* Check if the password is correct
*
* @param string $uid The username
@@ -547,30 +461,6 @@ class OC_User {
}
/**
- * disables a user
- *
- * @param string $uid the user to disable
- */
- public static function disableUser($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- $user->setEnabled(false);
- }
- }
-
- /**
- * enable a user
- *
- * @param string $uid
- */
- public static function enableUser($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- $user->setEnabled(true);
- }
- }
-
- /**
* checks if a user is enabled
*
* @param string $uid
@@ -586,23 +476,6 @@ class OC_User {
}
/**
- * Set cookie value to use in next page load
- *
- * @param string $username username to be set
- * @param string $token
- */
- public static function setMagicInCookie($username, $token) {
- self::getUserSession()->setMagicInCookie($username, $token);
- }
-
- /**
- * Remove cookie for "remember username"
- */
- public static function unsetMagicInCookie() {
- self::getUserSession()->unsetMagicInCookie();
- }
-
- /**
* Returns the first active backend from self::$_usedBackends.
*
* @return OCP\Authentication\IApacheBackend|null if no backend active, otherwise OCP\Authentication\IApacheBackend
diff --git a/lib/private/legacy/user/backend.php b/lib/private/legacy/user/backend.php
deleted file mode 100644
index 86909c1438a..00000000000
--- a/lib/private/legacy/user/backend.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Aldo "xoen" Giambelluca <xoen@xoen.org>
- * @author Dominik Schmidt <dev@dominik-schmidt.de>
- * @author Jakob Sack <mail@jakobsack.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Sam Tuke <mail@samtuke.com>
- * @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-/**
- * error code for functions not provided by the user backend
- * @deprecated Use \OC_User_Backend::NOT_IMPLEMENTED instead
- */
-define('OC_USER_BACKEND_NOT_IMPLEMENTED', -501);
-
-/**
- * actions that user backends can define
- */
-/** @deprecated Use \OC_User_Backend::CREATE_USER instead */
-define('OC_USER_BACKEND_CREATE_USER', 1 << 0);
-/** @deprecated Use \OC_User_Backend::SET_PASSWORD instead */
-define('OC_USER_BACKEND_SET_PASSWORD', 1 << 4);
-/** @deprecated Use \OC_User_Backend::CHECK_PASSWORD instead */
-define('OC_USER_BACKEND_CHECK_PASSWORD', 1 << 8);
-/** @deprecated Use \OC_User_Backend::GET_HOME instead */
-define('OC_USER_BACKEND_GET_HOME', 1 << 12);
-/** @deprecated Use \OC_User_Backend::GET_DISPLAYNAME instead */
-define('OC_USER_BACKEND_GET_DISPLAYNAME', 1 << 16);
-/** @deprecated Use \OC_User_Backend::SET_DISPLAYNAME instead */
-define('OC_USER_BACKEND_SET_DISPLAYNAME', 1 << 20);
-/** @deprecated Use \OC_User_Backend::PROVIDE_AVATAR instead */
-define('OC_USER_BACKEND_PROVIDE_AVATAR', 1 << 24);
-/** @deprecated Use \OC_User_Backend::COUNT_USERS instead */
-define('OC_USER_BACKEND_COUNT_USERS', 1 << 28);
-
-/**
- * Abstract base class for user management. Provides methods for querying backend
- * capabilities.
- */
-abstract class OC_User_Backend extends \OC\User\Backend implements \OCP\UserInterface {
-
-}
diff --git a/lib/private/legacy/user/interface.php b/lib/private/legacy/user/interface.php
deleted file mode 100644
index e178d9c6f68..00000000000
--- a/lib/private/legacy/user/interface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-/**
- * Interface OC_User_Interface
- * @deprecated use the public \OCP\UserInterface instead
- */
-interface OC_User_Interface extends \OCP\UserInterface {}
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 18ba44ac204..f0fef027ec2 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -91,6 +91,7 @@ class OC_Util {
* TODO make home storage aware of this and use the object storage instead of local disk access
*
* @param array $config containing 'class' and optional 'arguments'
+ * @suppress PhanDeprecatedFunction
*/
private static function initObjectStoreRootFS($config) {
// check misconfiguration
@@ -124,6 +125,7 @@ class OC_Util {
* necessity of a data folder being present.
*
* @param array $config containing 'class' and optional 'arguments'
+ * @suppress PhanDeprecatedFunction
*/
private static function initObjectStoreMultibucketRootFS($config) {
// check misconfiguration
@@ -165,6 +167,8 @@ class OC_Util {
* @param string $user
* @return boolean
* @description configure the initial filesystem based on the configuration
+ * @suppress PhanDeprecatedFunction
+ * @suppress PhanAccessMethodInternal
*/
public static function setupFS($user = '') {
//setting up the filesystem twice can only lead to trouble
@@ -202,7 +206,7 @@ class OC_Util {
return $storage;
});
- \OC\Files\Filesystem::addStorageWrapper('enable_sharing', function ($mountPoint, \OCP\Files\Storage $storage, \OCP\Files\Mount\IMountPoint $mount) {
+ \OC\Files\Filesystem::addStorageWrapper('enable_sharing', function ($mountPoint, \OCP\Files\Storage\IStorage $storage, \OCP\Files\Mount\IMountPoint $mount) {
if (!$mount->getOption('enable_sharing', true)) {
return new \OC\Files\Storage\Wrapper\PermissionsMask([
'storage' => $storage,
@@ -213,7 +217,7 @@ class OC_Util {
});
// install storage availability wrapper, before most other wrappers
- \OC\Files\Filesystem::addStorageWrapper('oc_availability', function ($mountPoint, $storage) {
+ \OC\Files\Filesystem::addStorageWrapper('oc_availability', function ($mountPoint, \OCP\Files\Storage\IStorage $storage) {
if (!$storage->instanceOfStorage('\OCA\Files_Sharing\SharedStorage') && !$storage->isLocal()) {
return new \OC\Files\Storage\Wrapper\Availability(['storage' => $storage]);
}
@@ -289,6 +293,7 @@ class OC_Util {
* check if a password is required for each public link
*
* @return boolean
+ * @suppress PhanDeprecatedFunction
*/
public static function isPublicLinkPasswordRequired() {
$appConfig = \OC::$server->getAppConfig();
@@ -329,6 +334,7 @@ class OC_Util {
* check if share API enforces a default expire date
*
* @return boolean
+ * @suppress PhanDeprecatedFunction
*/
public static function isDefaultExpireDateEnforced() {
$isDefaultExpireDateEnabled = \OCP\Config::getAppValue('core', 'shareapi_default_expire_date', 'no');
@@ -345,7 +351,7 @@ class OC_Util {
* Get the quota of a user
*
* @param string $userId
- * @return int Quota bytes
+ * @return float Quota bytes
*/
public static function getUserQuota($userId) {
$user = \OC::$server->getUserManager()->get($userId);
@@ -365,6 +371,7 @@ class OC_Util {
* @param String $userId
* @param \OCP\Files\Folder $userDirectory
* @throws \RuntimeException
+ * @suppress PhanDeprecatedFunction
*/
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
@@ -431,6 +438,7 @@ class OC_Util {
/**
* @return void
+ * @suppress PhanUndeclaredMethod
*/
public static function tearDownFS() {
\OC\Files\Filesystem::tearDown();
@@ -487,6 +495,7 @@ class OC_Util {
/**
* @description load the version.php into the session as cache
+ * @suppress PhanUndeclaredVariable
*/
private static function loadVersion() {
if (self::$versionCache !== null) {
@@ -563,8 +572,8 @@ class OC_Util {
* add a translation JS file
*
* @param string $application application id
- * @param string $languageCode language code, defaults to the current language
- * @param bool $prepend prepend the Script to the beginning of the list
+ * @param string|null $languageCode language code, defaults to the current language
+ * @param bool|null $prepend prepend the Script to the beginning of the list
*/
public static function addTranslations($application, $languageCode = null, $prepend = false) {
if (is_null($languageCode)) {
@@ -1068,6 +1077,7 @@ class OC_Util {
* the apps visible for the current user
*
* @return string URL
+ * @suppress PhanDeprecatedFunction
*/
public static function getDefaultPageUrl() {
$urlGenerator = \OC::$server->getURLGenerator();
@@ -1081,7 +1091,8 @@ class OC_Util {
$location = $urlGenerator->getAbsoluteURL($defaultPage);
} else {
$appId = 'files';
- $defaultApps = explode(',', \OCP\Config::getSystemValue('defaultapp', 'files'));
+ $config = \OC::$server->getConfig();
+ $defaultApps = explode(',', $config->getSystemValue('defaultapp', 'files'));
// find the first app that is enabled for the current user
foreach ($defaultApps as $defaultApp) {
$defaultApp = OC_App::cleanAppId(strip_tags($defaultApp));
@@ -1091,7 +1102,7 @@ class OC_Util {
}
}
- if(\OC::$server->getConfig()->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') {
+ if($config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') {
$location = $urlGenerator->getAbsoluteURL('/apps/' . $appId . '/');
} else {
$location = $urlGenerator->getAbsoluteURL('/index.php/apps/' . $appId . '/');
@@ -1346,6 +1357,8 @@ class OC_Util {
* in case the opcode cache does not re-validate files
*
* @return void
+ * @suppress PhanDeprecatedFunction
+ * @suppress PhanUndeclaredConstant
*/
public static function clearOpcodeCache() {
// APC
diff --git a/lib/public/App/ManagerEvent.php b/lib/public/App/ManagerEvent.php
index b25ea55aee6..c983114fe75 100644
--- a/lib/public/App/ManagerEvent.php
+++ b/lib/public/App/ManagerEvent.php
@@ -45,7 +45,7 @@ class ManagerEvent extends Event {
protected $event;
/** @var string */
protected $appID;
- /** @var \OCP\IGroup[] */
+ /** @var \OCP\IGroup[]|null */
protected $groups;
/**
@@ -53,7 +53,7 @@ class ManagerEvent extends Event {
*
* @param string $event
* @param $appID
- * @param \OCP\IGroup[] $groups
+ * @param \OCP\IGroup[]|null $groups
* @since 9.0.0
*/
public function __construct($event, $appID, array $groups = null) {
diff --git a/lib/public/AppFramework/ApiController.php b/lib/public/AppFramework/ApiController.php
index 857cb19101a..243ab1846ba 100644
--- a/lib/public/AppFramework/ApiController.php
+++ b/lib/public/AppFramework/ApiController.php
@@ -88,7 +88,7 @@ abstract class ApiController extends Controller {
$response = new Response();
$response->addHeader('Access-Control-Allow-Origin', $origin);
$response->addHeader('Access-Control-Allow-Methods', $this->corsMethods);
- $response->addHeader('Access-Control-Max-Age', $this->corsMaxAge);
+ $response->addHeader('Access-Control-Max-Age', (string)$this->corsMaxAge);
$response->addHeader('Access-Control-Allow-Headers', $this->corsAllowedHeaders);
$response->addHeader('Access-Control-Allow-Credentials', 'false');
return $response;
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index 313f1e490a1..e5cd832563d 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -95,6 +95,7 @@ class App {
* @param \OCP\Route\IRouter $router
* @param array $routes
* @since 6.0.0
+ * @suppress PhanAccessMethodInternal
*/
public function registerRoutes($router, $routes) {
$routeConfig = new RouteConfig($this->container, $router, $routes);
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index 9fb7646e1ae..bec8296490e 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -32,7 +32,6 @@
namespace OCP\AppFramework;
-use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\Response;
@@ -102,6 +101,7 @@ abstract class Controller {
/**
* Parses an HTTP accept header and returns the supported responder type
* @param string $acceptHeader
+ * @param string $default
* @return string the responder type
* @since 7.0.0
* @since 9.1.0 Added default parameter
@@ -156,108 +156,4 @@ abstract class Controller {
throw new \DomainException('No responder registered for format '.
$format . '!');
}
-
-
- /**
- * Lets you access post and get parameters by the index
- * @deprecated 7.0.0 write your parameters as method arguments instead
- * @param string $key the key which you want to access in the URL Parameter
- * placeholder, $_POST or $_GET array.
- * The priority how they're returned is the following:
- * 1. URL parameters
- * 2. POST parameters
- * 3. GET parameters
- * @param string $default If the key is not found, this value will be returned
- * @return mixed the content of the array
- * @since 6.0.0
- */
- public function params($key, $default=null){
- return $this->request->getParam($key, $default);
- }
-
-
- /**
- * Returns all params that were received, be it from the request
- * (as GET or POST) or through the URL by the route
- * @deprecated 7.0.0 use $this->request instead
- * @return array the array with all parameters
- * @since 6.0.0
- */
- public function getParams() {
- return $this->request->getParams();
- }
-
-
- /**
- * Returns the method of the request
- * @deprecated 7.0.0 use $this->request instead
- * @return string the method of the request (POST, GET, etc)
- * @since 6.0.0
- */
- public function method() {
- return $this->request->getMethod();
- }
-
-
- /**
- * Shortcut for accessing an uploaded file through the $_FILES array
- * @deprecated 7.0.0 use $this->request instead
- * @param string $key the key that will be taken from the $_FILES array
- * @return array the file in the $_FILES element
- * @since 6.0.0
- */
- public function getUploadedFile($key) {
- return $this->request->getUploadedFile($key);
- }
-
-
- /**
- * Shortcut for getting env variables
- * @deprecated 7.0.0 use $this->request instead
- * @param string $key the key that will be taken from the $_ENV array
- * @return array the value in the $_ENV element
- * @since 6.0.0
- */
- public function env($key) {
- return $this->request->getEnv($key);
- }
-
-
- /**
- * Shortcut for getting cookie variables
- * @deprecated 7.0.0 use $this->request instead
- * @param string $key the key that will be taken from the $_COOKIE array
- * @return array the value in the $_COOKIE element
- * @since 6.0.0
- */
- public function cookie($key) {
- return $this->request->getCookie($key);
- }
-
-
- /**
- * Shortcut for rendering a template
- * @deprecated 7.0.0 return a template response instead
- * @param string $templateName the name of the template
- * @param array $params the template parameters in key => value structure
- * @param string $renderAs user renders a full page, blank only your template
- * admin an entry in the admin settings
- * @param string[] $headers set additional headers in name/value pairs
- * @return \OCP\AppFramework\Http\TemplateResponse containing the page
- * @since 6.0.0
- */
- public function render($templateName, array $params=array(),
- $renderAs='user', array $headers=array()){
- $response = new TemplateResponse($this->appName, $templateName);
- $response->setParams($params);
- $response->renderAs($renderAs);
-
- foreach($headers as $name => $value){
- $response->addHeader($name, $value);
- }
-
- return $response;
- }
-
-
}
diff --git a/lib/public/AppFramework/Http/DataDisplayResponse.php b/lib/public/AppFramework/Http/DataDisplayResponse.php
index 0fc10129b8a..820e00ff963 100644
--- a/lib/public/AppFramework/Http/DataDisplayResponse.php
+++ b/lib/public/AppFramework/Http/DataDisplayResponse.php
@@ -46,7 +46,7 @@ class DataDisplayResponse extends Response {
* @param array $headers additional key value based headers
* @since 8.1.0
*/
- public function __construct($data="", $statusCode=Http::STATUS_OK,
+ public function __construct($data='', $statusCode=Http::STATUS_OK,
$headers=[]) {
$this->data = $data;
$this->setStatus($statusCode);
diff --git a/lib/public/AppFramework/Http/ICallbackResponse.php b/lib/public/AppFramework/Http/ICallbackResponse.php
index 4bf5ce36f7e..2e23946112e 100644
--- a/lib/public/AppFramework/Http/ICallbackResponse.php
+++ b/lib/public/AppFramework/Http/ICallbackResponse.php
@@ -39,6 +39,6 @@ interface ICallbackResponse {
* @param IOutput $output a small wrapper that handles output
* @since 8.1.0
*/
- function callback(IOutput $output);
+ public function callback(IOutput $output);
}
diff --git a/lib/public/AppFramework/Http/OCSResponse.php b/lib/public/AppFramework/Http/OCSResponse.php
index cfda8ea4f75..8614e76805f 100644
--- a/lib/public/AppFramework/Http/OCSResponse.php
+++ b/lib/public/AppFramework/Http/OCSResponse.php
@@ -80,6 +80,7 @@ class OCSResponse extends Response {
* @return string
* @since 8.1.0
* @deprecated 9.2.0 To implement an OCS endpoint extend the OCSController
+ * @suppress PhanDeprecatedClass
*/
public function render() {
$r = new \OC_OCS_Result($this->data, $this->statuscode, $this->message);
diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php
index 087522386be..94f09a55737 100644
--- a/lib/public/AppFramework/Http/Response.php
+++ b/lib/public/AppFramework/Http/Response.php
@@ -83,6 +83,8 @@ class Response {
/** @var bool */
private $throttled = false;
+ /** @var array */
+ private $throttleMetadata = [];
/**
* Caches the response
@@ -228,7 +230,7 @@ class Response {
/**
* By default renders no output
- * @return null
+ * @return string|null
* @since 6.0.0
*/
public function render() {
@@ -328,10 +330,22 @@ class Response {
* Marks the response as to throttle. Will be throttled when the
* @BruteForceProtection annotation is added.
*
+ * @param array $metadata
* @since 12.0.0
*/
- public function throttle() {
+ public function throttle(array $metadata = []) {
$this->throttled = true;
+ $this->throttleMetadata = $metadata;
+ }
+
+ /**
+ * Returns the throttle metadata, defaults to empty array
+ *
+ * @return array
+ * @since 13.0.0
+ */
+ public function getThrottleMetadata() {
+ return $this->throttleMetadata;
}
/**
diff --git a/lib/public/AppFramework/IApi.php b/lib/public/AppFramework/IApi.php
index 419e1782686..1c3f9419ccd 100644
--- a/lib/public/AppFramework/IApi.php
+++ b/lib/public/AppFramework/IApi.php
@@ -43,7 +43,7 @@ interface IApi {
* @return string the user id of the current user
* @deprecated 8.0.0 Use \OC::$server->getUserSession()->getUser()->getUID()
*/
- function getUserId();
+ public function getUserId();
/**
@@ -53,7 +53,7 @@ interface IApi {
* @param string $appName the name of the app, defaults to the current one
* @return void
*/
- function addScript($scriptName, $appName = null);
+ public function addScript($scriptName, $appName = null);
/**
@@ -63,7 +63,7 @@ interface IApi {
* @param string $appName the name of the app, defaults to the current one
* @return void
*/
- function addStyle($styleName, $appName = null);
+ public function addStyle($styleName, $appName = null);
/**
@@ -72,7 +72,7 @@ interface IApi {
* @param string $name the name of the file without the suffix
* @return void
*/
- function add3rdPartyScript($name);
+ public function add3rdPartyScript($name);
/**
@@ -81,7 +81,7 @@ interface IApi {
* @param string $name the name of the file without the suffix
* @return void
*/
- function add3rdPartyStyle($name);
+ public function add3rdPartyStyle($name);
/**
diff --git a/lib/public/AppFramework/IAppContainer.php b/lib/public/AppFramework/IAppContainer.php
index f26afbdcd17..4aac6085d63 100644
--- a/lib/public/AppFramework/IAppContainer.php
+++ b/lib/public/AppFramework/IAppContainer.php
@@ -42,41 +42,41 @@ interface IAppContainer extends IContainer {
* @return string the name of your application
* @since 6.0.0
*/
- function getAppName();
+ public function getAppName();
/**
* @deprecated 8.0.0 implements only deprecated methods
* @return IApi
* @since 6.0.0
*/
- function getCoreApi();
+ public function getCoreApi();
/**
* @return \OCP\IServerContainer
* @since 6.0.0
*/
- function getServer();
+ public function getServer();
/**
* @param string $middleWare
* @return boolean
* @since 6.0.0
*/
- function registerMiddleWare($middleWare);
+ public function registerMiddleWare($middleWare);
/**
* @deprecated 8.0.0 use IUserSession->isLoggedIn()
* @return boolean
* @since 6.0.0
*/
- function isLoggedIn();
+ public function isLoggedIn();
/**
* @deprecated 8.0.0 use IGroupManager->isAdmin($userId)
* @return boolean
* @since 6.0.0
*/
- function isAdminUser();
+ public function isAdminUser();
/**
* @deprecated 8.0.0 use the ILogger instead
@@ -85,7 +85,7 @@ interface IAppContainer extends IContainer {
* @return mixed
* @since 6.0.0
*/
- function log($message, $level);
+ public function log($message, $level);
/**
* Register a capability
diff --git a/lib/public/BackgroundJob/IJob.php b/lib/public/BackgroundJob/IJob.php
index 05927989b64..0b14257075a 100644
--- a/lib/public/BackgroundJob/IJob.php
+++ b/lib/public/BackgroundJob/IJob.php
@@ -36,7 +36,7 @@ interface IJob {
* Run the background job with the registered argument
*
* @param \OCP\BackgroundJob\IJobList $jobList The job list that manages the state of this job
- * @param ILogger $logger
+ * @param ILogger|null $logger
* @since 7.0.0
*/
public function execute($jobList, ILogger $logger = null);
diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php
index f088ad9f70d..61633af95cd 100644
--- a/lib/public/Comments/ICommentsManager.php
+++ b/lib/public/Comments/ICommentsManager.php
@@ -104,7 +104,7 @@ interface ICommentsManager {
* @param int $limit optional, number of maximum comments to be returned. if
* not specified, all comments are returned.
* @param int $offset optional, starting point
- * @param \DateTime $notOlderThan optional, timestamp of the oldest comments
+ * @param \DateTime|null $notOlderThan optional, timestamp of the oldest comments
* that may be returned
* @return IComment[]
* @since 9.0.0
@@ -120,7 +120,7 @@ interface ICommentsManager {
/**
* @param $objectType string the object type, e.g. 'files'
* @param $objectId string the id of the object
- * @param \DateTime $notOlderThan optional, timestamp of the oldest comments
+ * @param \DateTime|null $notOlderThan optional, timestamp of the oldest comments
* that may be returned
* @return Int
* @since 9.0.0
diff --git a/lib/public/Contacts/IManager.php b/lib/public/Contacts/IManager.php
index 328b40931d7..117d28525fb 100644
--- a/lib/public/Contacts/IManager.php
+++ b/lib/public/Contacts/IManager.php
@@ -32,140 +32,139 @@
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
-namespace OCP\Contacts {
+namespace OCP\Contacts;
+
+/**
+ * This class provides access to the contacts app. Use this class exclusively if you want to access contacts.
+ *
+ * Contacts in general will be expressed as an array of key-value-pairs.
+ * The keys will match the property names defined in https://tools.ietf.org/html/rfc2426#section-1
+ *
+ * Proposed workflow for working with contacts:
+ * - search for the contacts
+ * - manipulate the results array
+ * - createOrUpdate will save the given contacts overwriting the existing data
+ *
+ * For updating it is mandatory to keep the id.
+ * Without an id a new contact will be created.
+ *
+ * @since 6.0.0
+ */
+interface IManager {
/**
- * This class provides access to the contacts app. Use this class exclusively if you want to access contacts.
+ * This function is used to search and find contacts within the users address books.
+ * In case $pattern is empty all contacts will be returned.
+ *
+ * Example:
+ * Following function shows how to search for contacts for the name and the email address.
+ *
+ * public static function getMatchingRecipient($term) {
+ * $cm = \OC::$server->getContactsManager();
+ * // The API is not active -> nothing to do
+ * if (!$cm->isEnabled()) {
+ * return array();
+ * }
*
- * Contacts in general will be expressed as an array of key-value-pairs.
- * The keys will match the property names defined in https://tools.ietf.org/html/rfc2426#section-1
+ * $result = $cm->search($term, array('FN', 'EMAIL'));
+ * $receivers = array();
+ * foreach ($result as $r) {
+ * $id = $r['id'];
+ * $fn = $r['FN'];
+ * $email = $r['EMAIL'];
+ * if (!is_array($email)) {
+ * $email = array($email);
+ * }
*
- * Proposed workflow for working with contacts:
- * - search for the contacts
- * - manipulate the results array
- * - createOrUpdate will save the given contacts overwriting the existing data
+ * // loop through all email addresses of this contact
+ * foreach ($email as $e) {
+ * $displayName = $fn . " <$e>";
+ * $receivers[] = array(
+ * 'id' => $id,
+ * 'label' => $displayName,
+ * 'value' => $displayName);
+ * }
+ * }
*
- * For updating it is mandatory to keep the id.
- * Without an id a new contact will be created.
+ * return $receivers;
+ * }
*
+ *
+ * @param string $pattern which should match within the $searchProperties
+ * @param array $searchProperties defines the properties within the query pattern should match
+ * @param array $options - for future use. One should always have options!
+ * @return array an array of contacts which are arrays of key-value-pairs
* @since 6.0.0
*/
- interface IManager {
-
- /**
- * This function is used to search and find contacts within the users address books.
- * In case $pattern is empty all contacts will be returned.
- *
- * Example:
- * Following function shows how to search for contacts for the name and the email address.
- *
- * public static function getMatchingRecipient($term) {
- * $cm = \OC::$server->getContactsManager();
- * // The API is not active -> nothing to do
- * if (!$cm->isEnabled()) {
- * return array();
- * }
- *
- * $result = $cm->search($term, array('FN', 'EMAIL'));
- * $receivers = array();
- * foreach ($result as $r) {
- * $id = $r['id'];
- * $fn = $r['FN'];
- * $email = $r['EMAIL'];
- * if (!is_array($email)) {
- * $email = array($email);
- * }
- *
- * // loop through all email addresses of this contact
- * foreach ($email as $e) {
- * $displayName = $fn . " <$e>";
- * $receivers[] = array(
- * 'id' => $id,
- * 'label' => $displayName,
- * 'value' => $displayName);
- * }
- * }
- *
- * return $receivers;
- * }
- *
- *
- * @param string $pattern which should match within the $searchProperties
- * @param array $searchProperties defines the properties within the query pattern should match
- * @param array $options - for future use. One should always have options!
- * @return array an array of contacts which are arrays of key-value-pairs
- * @since 6.0.0
- */
- function search($pattern, $searchProperties = array(), $options = array());
+ public function search($pattern, $searchProperties = array(), $options = array());
- /**
- * This function can be used to delete the contact identified by the given id
- *
- * @param object $id the unique identifier to a contact
- * @param string $address_book_key identifier of the address book in which the contact shall be deleted
- * @return bool successful or not
- * @since 6.0.0
- */
- function delete($id, $address_book_key);
+ /**
+ * This function can be used to delete the contact identified by the given id
+ *
+ * @param object $id the unique identifier to a contact
+ * @param string $address_book_key identifier of the address book in which the contact shall be deleted
+ * @return bool successful or not
+ * @since 6.0.0
+ */
+ public function delete($id, $address_book_key);
- /**
- * This function is used to create a new contact if 'id' is not given or not present.
- * Otherwise the contact will be updated by replacing the entire data set.
- *
- * @param array $properties this array if key-value-pairs defines a contact
- * @param string $address_book_key identifier of the address book in which the contact shall be created or updated
- * @return array an array representing the contact just created or updated
- * @since 6.0.0
- */
- function createOrUpdate($properties, $address_book_key);
+ /**
+ * This function is used to create a new contact if 'id' is not given or not present.
+ * Otherwise the contact will be updated by replacing the entire data set.
+ *
+ * @param array $properties this array if key-value-pairs defines a contact
+ * @param string $address_book_key identifier of the address book in which the contact shall be created or updated
+ * @return array an array representing the contact just created or updated
+ * @since 6.0.0
+ */
+ public function createOrUpdate($properties, $address_book_key);
- /**
- * Check if contacts are available (e.g. contacts app enabled)
- *
- * @return bool true if enabled, false if not
- * @since 6.0.0
- */
- function isEnabled();
+ /**
+ * Check if contacts are available (e.g. contacts app enabled)
+ *
+ * @return bool true if enabled, false if not
+ * @since 6.0.0
+ */
+ public function isEnabled();
- /**
- * Registers an address book
- *
- * @param \OCP\IAddressBook $address_book
- * @return void
- * @since 6.0.0
- */
- function registerAddressBook(\OCP\IAddressBook $address_book);
+ /**
+ * Registers an address book
+ *
+ * @param \OCP\IAddressBook $address_book
+ * @return void
+ * @since 6.0.0
+ */
+ public function registerAddressBook(\OCP\IAddressBook $address_book);
- /**
- * Unregisters an address book
- *
- * @param \OCP\IAddressBook $address_book
- * @return void
- * @since 6.0.0
- */
- function unregisterAddressBook(\OCP\IAddressBook $address_book);
+ /**
+ * Unregisters an address book
+ *
+ * @param \OCP\IAddressBook $address_book
+ * @return void
+ * @since 6.0.0
+ */
+ public function unregisterAddressBook(\OCP\IAddressBook $address_book);
- /**
- * In order to improve lazy loading a closure can be registered which will be called in case
- * address books are actually requested
- *
- * @param \Closure $callable
- * @return void
- * @since 6.0.0
- */
- function register(\Closure $callable);
+ /**
+ * In order to improve lazy loading a closure can be registered which will be called in case
+ * address books are actually requested
+ *
+ * @param \Closure $callable
+ * @return void
+ * @since 6.0.0
+ */
+ public function register(\Closure $callable);
- /**
- * @return array
- * @since 6.0.0
- */
- function getAddressBooks();
+ /**
+ * @return array
+ * @since 6.0.0
+ */
+ public function getAddressBooks();
- /**
- * removes all registered address book instances
- * @return void
- * @since 6.0.0
- */
- function clear();
- }
+ /**
+ * removes all registered address book instances
+ * @return void
+ * @since 6.0.0
+ */
+ public function clear();
}
diff --git a/lib/public/DB.php b/lib/public/DB.php
index d22da39d9c2..645f77076db 100644
--- a/lib/public/DB.php
+++ b/lib/public/DB.php
@@ -57,7 +57,7 @@ class DB {
* @since 4.5.0
*/
static public function prepare( $query, $limit=null, $offset=null ) {
- return(\OC_DB::prepare($query, $limit, $offset));
+ return \OC_DB::prepare($query, $limit, $offset);
}
/**
@@ -90,7 +90,7 @@ class DB {
* @since 4.5.0
*/
public static function insertid($table=null) {
- return \OC::$server->getDatabaseConnection()->lastInsertId($table);
+ return (string)\OC::$server->getDatabaseConnection()->lastInsertId($table);
}
/**
@@ -117,7 +117,7 @@ class DB {
* @since 8.0.0
*/
public static function rollback() {
- \OC::$server->getDatabaseConnection()->rollback();
+ \OC::$server->getDatabaseConnection()->rollBack();
}
/**
diff --git a/lib/public/DB/QueryBuilder/IExpressionBuilder.php b/lib/public/DB/QueryBuilder/IExpressionBuilder.php
index c123875b803..eab93b52f8a 100644
--- a/lib/public/DB/QueryBuilder/IExpressionBuilder.php
+++ b/lib/public/DB/QueryBuilder/IExpressionBuilder.php
@@ -305,6 +305,24 @@ interface IExpressionBuilder {
*/
public function notIn($x, $y, $type = null);
+ /**
+ * Creates a $x = '' statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function emptyString($x);
+
+ /**
+ * Creates a `$x <> ''` statement, because Oracle needs a different check
+ *
+ * @param string $x The field in string format to be inspected by the comparison.
+ * @return string
+ * @since 13.0.0
+ */
+ public function nonEmptyString($x);
+
/**
* Creates a bitwise AND comparison
diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php
index a176bb917a3..59ec4fd3ba5 100644
--- a/lib/public/DB/QueryBuilder/IQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php
@@ -176,7 +176,7 @@ interface IQueryBuilder {
*
* @param string|integer $key The parameter position or name.
* @param mixed $value The parameter value.
- * @param string|null $type One of the IQueryBuilder::PARAM_* constants.
+ * @param string|null|int $type One of the IQueryBuilder::PARAM_* constants.
*
* @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
* @since 8.2.0
diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php
index 543657694c5..4bf638fda9f 100644
--- a/lib/public/Defaults.php
+++ b/lib/public/Defaults.php
@@ -143,9 +143,10 @@ class Defaults {
* logo claim
* @return string
* @since 6.0.0
+ * @deprecated 13.0.0
*/
public function getLogoClaim() {
- return $this->defaults->getLogoClaim();
+ return '';
}
/**
diff --git a/lib/public/Diagnostics/IQueryLogger.php b/lib/public/Diagnostics/IQueryLogger.php
index 32723a56cb9..4e45fa33d9d 100644
--- a/lib/public/Diagnostics/IQueryLogger.php
+++ b/lib/public/Diagnostics/IQueryLogger.php
@@ -39,8 +39,8 @@ interface IQueryLogger extends SQLLogger {
* query is finished finalized with stopQuery() method.
*
* @param string $sql
- * @param array $params
- * @param array $types
+ * @param array|null $params
+ * @param array|null $types
* @since 8.0.0
*/
public function startQuery($sql, array $params = null, array $types = null);
diff --git a/lib/public/Encryption/Exceptions/GenericEncryptionException.php b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
index ac880c43067..7515d9c368d 100644
--- a/lib/public/Encryption/Exceptions/GenericEncryptionException.php
+++ b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
@@ -39,7 +39,7 @@ class GenericEncryptionException extends HintException {
* @param string $message
* @param string $hint
* @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 8.1.0
*/
public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
diff --git a/lib/public/Files.php b/lib/public/Files.php
index 08fcbe0bbeb..3b924ea6a29 100644
--- a/lib/public/Files.php
+++ b/lib/public/Files.php
@@ -50,7 +50,7 @@ class Files {
* @return bool
* @since 5.0.0
*/
- static function rmdirr( $dir ) {
+ static public function rmdirr( $dir ) {
return \OC_Helper::rmdirr( $dir );
}
@@ -61,7 +61,7 @@ class Files {
* does NOT work for ownClouds filesystem, use OC_FileSystem::getMimeType instead
* @since 5.0.0
*/
- static function getMimeType( $path ) {
+ static public function getMimeType( $path ) {
return \OC::$server->getMimeTypeDetector()->detect($path);
}
@@ -71,8 +71,8 @@ class Files {
* @return array
* @since 6.0.0
*/
- static public function searchByMime( $mimetype ) {
- return(\OC\Files\Filesystem::searchByMime( $mimetype ));
+ static public function searchByMime($mimetype) {
+ return \OC\Files\Filesystem::searchByMime($mimetype);
}
/**
@@ -119,8 +119,8 @@ class Files {
* @return string
* @since 5.0.0
*/
- public static function buildNotExistingFileName( $path, $filename ) {
- return(\OC_Helper::buildNotExistingFileName( $path, $filename ));
+ public static function buildNotExistingFileName($path, $filename) {
+ return \OC_Helper::buildNotExistingFileName($path, $filename);
}
/**
@@ -130,7 +130,7 @@ class Files {
* @return \OC\Files\View
* @since 5.0.0
*/
- public static function getStorage( $app ) {
+ public static function getStorage($app) {
return \OC_App::getStorage( $app );
}
}
diff --git a/lib/public/Files/ForbiddenException.php b/lib/public/Files/ForbiddenException.php
index 5492b8538b4..7a7c011691b 100644
--- a/lib/public/Files/ForbiddenException.php
+++ b/lib/public/Files/ForbiddenException.php
@@ -38,7 +38,7 @@ class ForbiddenException extends \Exception {
/**
* @param string $message
* @param bool $retry
- * @param \Exception $previous previous exception for cascading
+ * @param \Exception|null $previous previous exception for cascading
* @since 9.0.0
*/
public function __construct($message, $retry, \Exception $previous = null) {
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
index bf612996c53..fd0d0649810 100644
--- a/lib/public/Files/IAppData.php
+++ b/lib/public/Files/IAppData.php
@@ -29,7 +29,6 @@ use OCP\Files\SimpleFS\ISimpleRoot;
*
* @package OCP\Files
* @since 11.0.0
- * @internal This interface is experimental and might change for NC12
*/
interface IAppData extends ISimpleRoot {
diff --git a/lib/public/Files/ObjectStore/IObjectStore.php b/lib/public/Files/ObjectStore/IObjectStore.php
index 7ae34ce1bc0..3126791d873 100644
--- a/lib/public/Files/ObjectStore/IObjectStore.php
+++ b/lib/public/Files/ObjectStore/IObjectStore.php
@@ -34,7 +34,7 @@ interface IObjectStore {
* @return string the container or bucket name where objects are stored
* @since 7.0.0
*/
- function getStorageId();
+ public function getStorageId();
/**
* @param string $urn the unified resource name used to identify the object
@@ -42,7 +42,7 @@ interface IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function readObject($urn);
+ public function readObject($urn);
/**
* @param string $urn the unified resource name used to identify the object
@@ -50,7 +50,7 @@ interface IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function writeObject($urn, $stream);
+ public function writeObject($urn, $stream);
/**
* @param string $urn the unified resource name used to identify the object
@@ -58,6 +58,5 @@ interface IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function deleteObject($urn);
-
+ public function deleteObject($urn);
}
diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php
index 660580ae464..e9182377cb5 100644
--- a/lib/public/Files/SimpleFS/ISimpleFile.php
+++ b/lib/public/Files/SimpleFS/ISimpleFile.php
@@ -29,7 +29,6 @@ use OCP\Files\NotPermittedException;
*
* @package OCP\Files\SimpleFS
* @since 11.0.0
- * @internal This interface is experimental and might change for NC12
*/
interface ISimpleFile {
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
index 66f80816216..54fbd466e46 100644
--- a/lib/public/Files/SimpleFS/ISimpleFolder.php
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -30,7 +30,6 @@ use OCP\Files\NotPermittedException;
*
* @package OCP\Files\SimpleFS
* @since 11.0.0
- * @internal This interface is experimental and might change for NC12
*/
interface ISimpleFolder {
/**
diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php
index 3bfea656965..35b97f665a7 100644
--- a/lib/public/Files/SimpleFS/ISimpleRoot.php
+++ b/lib/public/Files/SimpleFS/ISimpleRoot.php
@@ -30,7 +30,6 @@ use OCP\Files\NotPermittedException;
*
* @package OCP\Files\SimpleFS
* @since 11.0.0
- * @internal This interface is experimental and might change for NC12
*/
interface ISimpleRoot {
/**
diff --git a/lib/public/Files/Storage.php b/lib/public/Files/Storage.php
index 213bbc0e549..ee89b9fd205 100644
--- a/lib/public/Files/Storage.php
+++ b/lib/public/Files/Storage.php
@@ -395,22 +395,22 @@ interface Storage extends IStorage {
public function verifyPath($path, $fileName);
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
* @since 8.1.0
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath);
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
/**
- * @param \OCP\Files\Storage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
* @since 8.1.0
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath);
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
/**
* @param string $path The path of the file to acquire the lock for
diff --git a/lib/public/Files/Storage/IStorage.php b/lib/public/Files/Storage/IStorage.php
index 27b8f1d0697..d5176aab463 100644
--- a/lib/public/Files/Storage/IStorage.php
+++ b/lib/public/Files/Storage/IStorage.php
@@ -383,22 +383,22 @@ interface IStorage {
public function verifyPath($path, $fileName);
/**
- * @param \OCP\Files\Storage|\OCP\Files\Storage\IStorage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
* @since 9.0.0
*/
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath);
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
/**
- * @param \OCP\Files\Storage|\OCP\Files\Storage\IStorage $sourceStorage
+ * @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
* @since 9.0.0
*/
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath);
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
/**
* Test a storage for availability
diff --git a/lib/public/Files/StorageAuthException.php b/lib/public/Files/StorageAuthException.php
index f73915df9d9..8a04a2c70f4 100644
--- a/lib/public/Files/StorageAuthException.php
+++ b/lib/public/Files/StorageAuthException.php
@@ -31,12 +31,11 @@ class StorageAuthException extends StorageNotAvailableException {
* StorageAuthException constructor.
*
* @param string $message
- * @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 9.0.0
*/
public function __construct($message = '', \Exception $previous = null) {
$l = \OC::$server->getL10N('core');
- parent::__construct($l->t('Storage unauthorized. %s', $message), self::STATUS_UNAUTHORIZED, $previous);
+ parent::__construct($l->t('Storage unauthorized. %s', [$message]), self::STATUS_UNAUTHORIZED, $previous);
}
}
diff --git a/lib/public/Files/StorageBadConfigException.php b/lib/public/Files/StorageBadConfigException.php
index a3a96a80dc1..d6ee6a267e7 100644
--- a/lib/public/Files/StorageBadConfigException.php
+++ b/lib/public/Files/StorageBadConfigException.php
@@ -31,13 +31,12 @@ class StorageBadConfigException extends StorageNotAvailableException {
* ExtStorageBadConfigException constructor.
*
* @param string $message
- * @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 9.0.0
*/
public function __construct($message = '', \Exception $previous = null) {
$l = \OC::$server->getL10N('core');
- parent::__construct($l->t('Storage incomplete configuration. %s', $message), self::STATUS_INCOMPLETE_CONF, $previous);
+ parent::__construct($l->t('Storage incomplete configuration. %s', [$message]), self::STATUS_INCOMPLETE_CONF, $previous);
}
}
diff --git a/lib/public/Files/StorageConnectionException.php b/lib/public/Files/StorageConnectionException.php
index 7a5381aef73..f12c84653b7 100644
--- a/lib/public/Files/StorageConnectionException.php
+++ b/lib/public/Files/StorageConnectionException.php
@@ -31,12 +31,11 @@ class StorageConnectionException extends StorageNotAvailableException {
* StorageConnectionException constructor.
*
* @param string $message
- * @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 9.0.0
*/
public function __construct($message = '', \Exception $previous = null) {
$l = \OC::$server->getL10N('core');
- parent::__construct($l->t('Storage connection error. %s', $message), self::STATUS_NETWORK_ERROR, $previous);
+ parent::__construct($l->t('Storage connection error. %s', [$message]), self::STATUS_NETWORK_ERROR, $previous);
}
}
diff --git a/lib/public/Files/StorageNotAvailableException.php b/lib/public/Files/StorageNotAvailableException.php
index b6a5a70718a..b3f6e1a6b76 100644
--- a/lib/public/Files/StorageNotAvailableException.php
+++ b/lib/public/Files/StorageNotAvailableException.php
@@ -53,7 +53,7 @@ class StorageNotAvailableException extends HintException {
*
* @param string $message
* @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 6.0.0
*/
public function __construct($message = '', $code = self::STATUS_ERROR, \Exception $previous = null) {
diff --git a/lib/public/Files/StorageTimeoutException.php b/lib/public/Files/StorageTimeoutException.php
index 16675710dff..b5566ada9b5 100644
--- a/lib/public/Files/StorageTimeoutException.php
+++ b/lib/public/Files/StorageTimeoutException.php
@@ -31,12 +31,11 @@ class StorageTimeoutException extends StorageNotAvailableException {
* StorageTimeoutException constructor.
*
* @param string $message
- * @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 9.0.0
*/
public function __construct($message = '', \Exception $previous = null) {
$l = \OC::$server->getL10N('core');
- parent::__construct($l->t('Storage connection timeout. %s', $message), self::STATUS_TIMEOUT, $previous);
+ parent::__construct($l->t('Storage connection timeout. %s', [$message]), self::STATUS_TIMEOUT, $previous);
}
}
diff --git a/lib/public/IDateTimeFormatter.php b/lib/public/IDateTimeFormatter.php
index 20b01467e29..a97eca2860e 100644
--- a/lib/public/IDateTimeFormatter.php
+++ b/lib/public/IDateTimeFormatter.php
@@ -40,8 +40,8 @@ interface IDateTimeFormatter {
* medium: e.g. 'MMM d, y' => 'Aug 20, 2014'
* short: e.g. 'M/d/yy' => '8/20/14'
* The exact format is dependent on the language
- * @param \DateTimeZone $timeZone The timezone to use
- * @param \OCP\IL10N $l The locale to use
+ * @param \DateTimeZone|null $timeZone The timezone to use
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Formatted date string
* @since 8.0.0
*/
@@ -58,8 +58,8 @@ interface IDateTimeFormatter {
* short: e.g. 'M/d/yy' => '8/20/14'
* The exact format is dependent on the language
* Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
- * @param \DateTimeZone $timeZone The timezone to use
- * @param \OCP\IL10N $l The locale to use
+ * @param \DateTimeZone|null $timeZone The timezone to use
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Formatted relative date string
* @since 8.0.0
*/
@@ -70,13 +70,12 @@ interface IDateTimeFormatter {
* Only works for past dates
*
* @param int|\DateTime $timestamp
- * @param int|\DateTime $baseTimestamp Timestamp to compare $timestamp against, defaults to current time
+ * @param int|\DateTime|null $baseTimestamp Timestamp to compare $timestamp against, defaults to current time
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Dates returned are:
* < 1 month => Today, Yesterday, n days ago
* < 13 month => last month, n months ago
* >= 13 month => last year, n years ago
- * @param \OCP\IL10N $l The locale to use
- * @return string Formatted date span
* @since 8.0.0
*/
public function formatDateSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
@@ -91,8 +90,8 @@ interface IDateTimeFormatter {
* medium: e.g. 'h:mm:ss a' => '11:42:13 AM'
* short: e.g. 'h:mm a' => '11:42 AM'
* The exact format is dependent on the language
- * @param \DateTimeZone $timeZone The timezone to use
- * @param \OCP\IL10N $l The locale to use
+ * @param \DateTimeZone|null $timeZone The timezone to use
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Formatted time string
* @since 8.0.0
*/
@@ -102,7 +101,8 @@ interface IDateTimeFormatter {
* Gives the relative past time of the timestamp
*
* @param int|\DateTime $timestamp
- * @param int|\DateTime $baseTimestamp Timestamp to compare $timestamp against, defaults to current time
+ * @param int|\DateTime|null $baseTimestamp Timestamp to compare $timestamp against, defaults to current time
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Dates returned are:
* < 60 sec => seconds ago
* < 1 hour => n minutes ago
@@ -110,8 +110,6 @@ interface IDateTimeFormatter {
* < 1 month => Yesterday, n days ago
* < 13 month => last month, n months ago
* >= 13 month => last year, n years ago
- * @param \OCP\IL10N $l The locale to use
- * @return string Formatted time span
* @since 8.0.0
*/
public function formatTimeSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
@@ -122,8 +120,8 @@ interface IDateTimeFormatter {
* @param int|\DateTime $timestamp
* @param string $formatDate See formatDate() for description
* @param string $formatTime See formatTime() for description
- * @param \DateTimeZone $timeZone The timezone to use
- * @param \OCP\IL10N $l The locale to use
+ * @param \DateTimeZone|null $timeZone The timezone to use
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Formatted date and time string
* @since 8.0.0
*/
@@ -136,8 +134,8 @@ interface IDateTimeFormatter {
* @param string $formatDate See formatDate() for description
* Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
* @param string $formatTime See formatTime() for description
- * @param \DateTimeZone $timeZone The timezone to use
- * @param \OCP\IL10N $l The locale to use
+ * @param \DateTimeZone|null $timeZone The timezone to use
+ * @param \OCP\IL10N|null $l The locale to use
* @return string Formatted relative date and time string
* @since 8.0.0
*/
diff --git a/lib/public/IGroup.php b/lib/public/IGroup.php
index aa51e51046c..788287b4f86 100644
--- a/lib/public/IGroup.php
+++ b/lib/public/IGroup.php
@@ -60,7 +60,7 @@ interface IGroup {
* @return bool
* @since 8.0.0
*/
- public function inGroup($user);
+ public function inGroup(IUser $user);
/**
* add a user to the group
@@ -68,7 +68,7 @@ interface IGroup {
* @param \OCP\IUser $user
* @since 8.0.0
*/
- public function addUser($user);
+ public function addUser(IUser $user);
/**
* remove a user from the group
diff --git a/lib/public/IGroupManager.php b/lib/public/IGroupManager.php
index 4d76fa76fb3..be322b64325 100644
--- a/lib/public/IGroupManager.php
+++ b/lib/public/IGroupManager.php
@@ -100,14 +100,14 @@ interface IGroupManager {
* @return \OCP\IGroup[]
* @since 8.0.0
*/
- public function getUserGroups($user);
+ public function getUserGroups(IUser $user = null);
/**
* @param \OCP\IUser $user
* @return array with group names
* @since 8.0.0
*/
- public function getUserGroupIds($user);
+ public function getUserGroupIds(IUser $user);
/**
* get a list of all display names in a group
diff --git a/lib/public/IL10N.php b/lib/public/IL10N.php
index 0dfe28c2ce8..7856a74219d 100644
--- a/lib/public/IL10N.php
+++ b/lib/public/IL10N.php
@@ -47,7 +47,7 @@ interface IL10N {
* Translating
* @param string $text The text we need a translation for
* @param array $parameters default:array() Parameters for sprintf
- * @return \OC_L10N_String Translation or the same text
+ * @return string Translation or the same text
*
* Returns the translation. If no translation is found, $text will be
* returned.
@@ -61,7 +61,7 @@ interface IL10N {
* @param string $text_plural the string to translate for n objects
* @param integer $count Number of objects
* @param array $parameters default:array() Parameters for sprintf
- * @return \OC_L10N_String Translation or the same text
+ * @return string Translation or the same text
*
* Returns the translation. If no translation is found, $text will be
* returned. %n will be replaced with the number of objects.
diff --git a/lib/public/ILogger.php b/lib/public/ILogger.php
index 2d1bf4b804d..28cc3b1433f 100644
--- a/lib/public/ILogger.php
+++ b/lib/public/ILogger.php
@@ -136,7 +136,7 @@ interface ILogger {
* ]);
* </code>
*
- * @param \Exception | \Throwable $exception
+ * @param \Exception|\Throwable $exception
* @param array $context
* @return void
* @since 8.2.0
diff --git a/lib/public/JSON.php b/lib/public/JSON.php
index 02c515e863e..b289c2038a1 100644
--- a/lib/public/JSON.php
+++ b/lib/public/JSON.php
@@ -45,6 +45,8 @@ class JSON {
* @param array $data The data to use
* @param bool $setContentType the optional content type
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ *
+ * @suppress PhanDeprecatedFunction
*/
public static function encodedPrint( $data, $setContentType=true ) {
\OC_JSON::encodedPrint($data, $setContentType);
@@ -63,6 +65,8 @@ class JSON {
* Add this call to the start of all ajax method files that requires
* an authenticated user.
* @deprecated 8.1.0 Use annotation based ACLs from the AppFramework instead
+ *
+ * @suppress PhanDeprecatedFunction
*/
public static function checkLoggedIn() {
\OC_JSON::checkLoggedIn();
@@ -86,6 +90,8 @@ class JSON {
* parameter to the ajax call, then assign it to the template and finally
* add a hidden input field also named 'requesttoken' containing the value.
* @deprecated 8.1.0 Use annotation based CSRF checks from the AppFramework instead
+ *
+ * @suppress PhanDeprecatedFunction
*/
public static function callCheck() {
\OC_JSON::callCheck();
@@ -95,11 +101,11 @@ class JSON {
* Send json success msg
*
* Return a json success message with optional extra data.
- * @see OCP\JSON::error() for the format to use.
+ * @see \OCP\JSON::error() for the format to use.
*
* @param array $data The data to use
- * @return string json formatted string.
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function success( $data = array() ) {
\OC_JSON::success($data);
@@ -121,17 +127,18 @@ class JSON {
* {"status":"error","data":{"message":"An error happened", "id":[some value]}}
*
* @param array $data The data to use
- * @return string json formatted error string.
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function error( $data = array() ) {
- \OC_JSON::error( $data );
+ \OC_JSON::error($data);
}
/**
* Set Content-Type header to jsonrequest
* @param string $type The content type header
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function setContentTypeHeader( $type='application/json' ) {
\OC_JSON::setContentTypeHeader($type);
@@ -152,6 +159,7 @@ class JSON {
*
* @param string $app The app to check
* @deprecated 8.1.0 Use the AppFramework instead. It will automatically check if the app is enabled.
+ * @suppress PhanDeprecatedFunction
*/
public static function checkAppEnabled( $app ) {
\OC_JSON::checkAppEnabled($app);
@@ -171,6 +179,7 @@ class JSON {
* administrative rights.
*
* @deprecated 8.1.0 Use annotation based ACLs from the AppFramework instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkAdminUser() {
\OC_JSON::checkAdminUser();
@@ -181,6 +190,7 @@ class JSON {
* @param array $data
* @return string
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function encode($data) {
return \OC_JSON::encode($data);
@@ -190,6 +200,7 @@ class JSON {
* Check is a given user exists - send json error msg if not
* @param string $user
* @deprecated 8.1.0 Use a AppFramework JSONResponse instead
+ * @suppress PhanDeprecatedFunction
*/
public static function checkUserExists($user) {
\OC_JSON::checkUserExists($user);
diff --git a/lib/public/Lock/LockedException.php b/lib/public/Lock/LockedException.php
index 87ae4511ac9..c371c6c56b0 100644
--- a/lib/public/Lock/LockedException.php
+++ b/lib/public/Lock/LockedException.php
@@ -43,7 +43,7 @@ class LockedException extends \Exception {
* LockedException constructor.
*
* @param string $path locked path
- * @param \Exception $previous previous exception for cascading
+ * @param \Exception|null $previous previous exception for cascading
*
* @since 8.1.0
*/
diff --git a/lib/public/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php
index 6df83b4d10e..6d0591b019b 100644
--- a/lib/public/Mail/IEMailTemplate.php
+++ b/lib/public/Mail/IEMailTemplate.php
@@ -62,7 +62,7 @@ interface IEMailTemplate {
* Adds a heading to the email
*
* @param string $title
- * @param string $plainTitle|bool Title that is used in the plain text email
+ * @param string|bool $plainTitle Title that is used in the plain text email
* if empty the $title is used, if false none will be used
*
* @since 12.0.0
diff --git a/lib/public/Response.php b/lib/public/Response.php
index b68da644352..dd029e12dbf 100644
--- a/lib/public/Response.php
+++ b/lib/public/Response.php
@@ -109,6 +109,7 @@ class Response {
* @param string $filepath of file to send
* @since 4.0.0
* @deprecated 8.1.0 - Use \OCP\AppFramework\Http\StreamResponse or another AppFramework controller instead
+ * @suppress PhanDeprecatedFunction
*/
static public function sendFile( $filepath ) {
\OC_Response::sendFile( $filepath );
diff --git a/lib/public/Search/PagedProvider.php b/lib/public/Search/PagedProvider.php
index 43d8c316652..b1294fa6dc4 100644
--- a/lib/public/Search/PagedProvider.php
+++ b/lib/public/Search/PagedProvider.php
@@ -42,7 +42,7 @@ abstract class PagedProvider extends Provider {
* @since 8.0.0
*/
public function __construct($options) {
- $this->options = $options;
+ parent::__construct($options);
}
/**
@@ -53,7 +53,7 @@ abstract class PagedProvider extends Provider {
*/
public function search($query) {
// old apps might assume they get all results, so we use SIZE_ALL
- $this->searchPaged($query, 1, self::SIZE_ALL);
+ return $this->searchPaged($query, 1, self::SIZE_ALL);
}
/**
diff --git a/lib/public/Security/ISecureRandom.php b/lib/public/Security/ISecureRandom.php
index 14190639f44..2f74a003f51 100644
--- a/lib/public/Security/ISecureRandom.php
+++ b/lib/public/Security/ISecureRandom.php
@@ -49,7 +49,7 @@ interface ISecureRandom {
* generate human readable random strings. Lower- and upper-case characters and digits
* are included. Characters which are ambiguous are excluded, such as I, l, and 1 and so on.
*/
- const CHAR_HUMAN_READABLE = "abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";
+ const CHAR_HUMAN_READABLE = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789';
/**
* Convenience method to get a low strength random number generator.
diff --git a/lib/public/Share.php b/lib/public/Share.php
index ec3a7c8db1b..f3a0b53efec 100644
--- a/lib/public/Share.php
+++ b/lib/public/Share.php
@@ -265,8 +265,8 @@ class Share extends \OC\Share\Constants {
* @param string $shareWith User or group the item is being shared with
* @param int $permissions CRUDS
* @param string $itemSourceName
- * @param \DateTime $expirationDate
- * @param bool $passwordChanged
+ * @param \DateTime|null $expirationDate
+ * @param bool|null $passwordChanged
* @return bool|string Returns true on success or false on failure, Returns token on success for links
* @throws \OC\HintException when the share type is remote and the shareWith is invalid
* @throws \Exception
diff --git a/lib/public/Share/Exceptions/GenericShareException.php b/lib/public/Share/Exceptions/GenericShareException.php
index 8410a2d0037..21a3b2caa5b 100644
--- a/lib/public/Share/Exceptions/GenericShareException.php
+++ b/lib/public/Share/Exceptions/GenericShareException.php
@@ -35,7 +35,7 @@ class GenericShareException extends HintException {
* @param string $message
* @param string $hint
* @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @since 9.0.0
*/
public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
diff --git a/lib/public/SystemTag/ManagerEvent.php b/lib/public/SystemTag/ManagerEvent.php
index 85e7863492e..f7a9b8d6da7 100644
--- a/lib/public/SystemTag/ManagerEvent.php
+++ b/lib/public/SystemTag/ManagerEvent.php
@@ -48,7 +48,7 @@ class ManagerEvent extends Event {
*
* @param string $event
* @param ISystemTag $tag
- * @param ISystemTag $beforeTag
+ * @param ISystemTag|null $beforeTag
* @since 9.0.0
*/
public function __construct($event, ISystemTag $tag, ISystemTag $beforeTag = null) {
diff --git a/lib/public/SystemTag/TagNotFoundException.php b/lib/public/SystemTag/TagNotFoundException.php
index c983e2afc80..49008d1adde 100644
--- a/lib/public/SystemTag/TagNotFoundException.php
+++ b/lib/public/SystemTag/TagNotFoundException.php
@@ -38,7 +38,7 @@ class TagNotFoundException extends \RuntimeException {
*
* @param string $message
* @param int $code
- * @param \Exception $previous
+ * @param \Exception|null $previous
* @param string[] $tags
* @since 9.0.0
*/
diff --git a/lib/public/Template.php b/lib/public/Template.php
index 590f430e24c..edea99f9ef3 100644
--- a/lib/public/Template.php
+++ b/lib/public/Template.php
@@ -48,9 +48,10 @@ namespace OCP;
*
* @see \OCP\IURLGenerator::imagePath
* @deprecated 8.0.0 Use \OCP\Template::image_path() instead
+ * @suppress PhanDeprecatedFunction
*/
-function image_path( $app, $image ) {
- return(\image_path( $app, $image ));
+function image_path($app, $image) {
+ return \image_path($app, $image);
}
@@ -59,9 +60,10 @@ function image_path( $app, $image ) {
* @param string $mimetype
* @return string to the image of this file type.
* @deprecated 8.0.0 Use \OCP\Template::mimetype_icon() instead
+ * @suppress PhanDeprecatedFunction
*/
-function mimetype_icon( $mimetype ) {
- return(\mimetype_icon( $mimetype ));
+function mimetype_icon($mimetype) {
+ return \mimetype_icon($mimetype);
}
/**
@@ -69,9 +71,10 @@ function mimetype_icon( $mimetype ) {
* @param string $path path to file
* @return string to the preview of the image
* @deprecated 8.0.0 Use \OCP\Template::preview_icon() instead
+ * @suppress PhanDeprecatedFunction
*/
-function preview_icon( $path ) {
- return(\preview_icon( $path ));
+function preview_icon($path) {
+ return \preview_icon($path);
}
/**
@@ -81,9 +84,10 @@ function preview_icon( $path ) {
* @param string $token
* @return string link to the preview
* @deprecated 8.0.0 Use \OCP\Template::publicPreview_icon() instead
+ * @suppress PhanDeprecatedFunction
*/
-function publicPreview_icon ( $path, $token ) {
- return(\publicPreview_icon( $path, $token ));
+function publicPreview_icon($path, $token) {
+ return \publicPreview_icon($path, $token);
}
/**
@@ -92,9 +96,10 @@ function publicPreview_icon ( $path, $token ) {
* @param int $bytes in bytes
* @return string size as string
* @deprecated 8.0.0 Use \OCP\Template::human_file_size() instead
+ * @suppress PhanDeprecatedFunction
*/
-function human_file_size( $bytes ) {
- return(\human_file_size( $bytes ));
+function human_file_size($bytes) {
+ return \human_file_size($bytes);
}
@@ -102,12 +107,14 @@ function human_file_size( $bytes ) {
* Return the relative date in relation to today. Returns something like "last hour" or "two month ago"
* @param int $timestamp unix timestamp
* @param boolean $dateOnly
- * @return \OC_L10N_String human readable interpretation of the timestamp
+ * @return string human readable interpretation of the timestamp
*
* @deprecated 8.0.0 Use \OCP\Template::relative_modified_date() instead
+ * @suppress PhanDeprecatedFunction
+ * @suppress PhanTypeMismatchArgument
*/
-function relative_modified_date( $timestamp, $dateOnly = false ) {
- return(\relative_modified_date($timestamp, null, $dateOnly));
+function relative_modified_date($timestamp, $dateOnly = false) {
+ return \relative_modified_date($timestamp, null, $dateOnly);
}
@@ -116,9 +123,10 @@ function relative_modified_date( $timestamp, $dateOnly = false ) {
* @param integer $bytes size of a file in byte
* @return string human readable interpretation of a file size
* @deprecated 8.0.0 Use \OCP\Template::human_file_size() instead
+ * @suppress PhanDeprecatedFunction
*/
function simple_file_size($bytes) {
- return(\human_file_size($bytes));
+ return \human_file_size($bytes);
}
@@ -129,9 +137,10 @@ function simple_file_size($bytes) {
* @param array $params the parameters
* @return string html options
* @deprecated 8.0.0 Use \OCP\Template::html_select_options() instead
+ * @suppress PhanDeprecatedFunction
*/
function html_select_options($options, $selected, $params=array()) {
- return(\html_select_options($options, $selected, $params));
+ return \html_select_options($options, $selected, $params);
}
@@ -151,6 +160,7 @@ class Template extends \OC_Template {
* @param string $image
* @return string to the image
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function image_path($app, $image) {
return \image_path($app, $image);
@@ -163,6 +173,7 @@ class Template extends \OC_Template {
* @param string $mimetype
* @return string to the image of this file type.
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function mimetype_icon($mimetype) {
return \mimetype_icon($mimetype);
@@ -174,6 +185,7 @@ class Template extends \OC_Template {
* @param string $path path to file
* @return string to the preview of the image
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function preview_icon($path) {
return \preview_icon($path);
@@ -187,6 +199,7 @@ class Template extends \OC_Template {
* @param string $token
* @return string link to the preview
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function publicPreview_icon($path, $token) {
return \publicPreview_icon($path, $token);
@@ -199,6 +212,7 @@ class Template extends \OC_Template {
* @param int $bytes in bytes
* @return string size as string
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function human_file_size($bytes) {
return \human_file_size($bytes);
@@ -211,6 +225,8 @@ class Template extends \OC_Template {
* @param boolean $dateOnly
* @return string human readable interpretation of the timestamp
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
+ * @suppress PhanTypeMismatchArgument
*/
public static function relative_modified_date($timestamp, $dateOnly = false) {
return \relative_modified_date($timestamp, null, $dateOnly);
@@ -224,6 +240,7 @@ class Template extends \OC_Template {
* @param array $params the parameters
* @return string html options
* @since 8.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function html_select_options($options, $selected, $params=array()) {
return \html_select_options($options, $selected, $params);
diff --git a/lib/public/User.php b/lib/public/User.php
index 64398a7f1f8..ef0096deab4 100644
--- a/lib/public/User.php
+++ b/lib/public/User.php
@@ -89,6 +89,7 @@ class User {
* @return array an array of all display names (value) and the correspondig uids (key)
* @deprecated 8.1.0 use method searchDisplayName() of \OCP\IUserManager - \OC::$server->getUserManager()
* @since 5.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function getDisplayNames( $search = '', $limit = null, $offset = null ) {
return \OC_User::getDisplayNames( $search, $limit, $offset );
@@ -111,8 +112,8 @@ class User {
* @deprecated 8.1.0 use method userExists() of \OCP\IUserManager - \OC::$server->getUserManager()
* @since 5.0.0
*/
- public static function userExists( $uid, $excludingBackend = null ) {
- return \OC_User::userExists( $uid, $excludingBackend );
+ public static function userExists($uid, $excludingBackend = null) {
+ return \OC_User::userExists($uid);
}
/**
* Logs the user out including all the session data
diff --git a/lib/public/UserInterface.php b/lib/public/UserInterface.php
index 119564da736..61136783b3c 100644
--- a/lib/public/UserInterface.php
+++ b/lib/public/UserInterface.php
@@ -46,7 +46,7 @@ interface UserInterface {
* @return boolean
*
* Returns the supported actions as int to be
- * compared with \OC_User_Backend::CREATE_USER etc.
+ * compared with \OC\User\Backend::CREATE_USER etc.
* @since 4.5.0
*/
public function implementsActions($actions);
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 02b59c370a0..e4ebdb5bfa7 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -73,7 +73,7 @@ class Util {
* @since 4.0.0
*/
public static function getVersion() {
- return(\OC_Util::getVersion());
+ return \OC_Util::getVersion();
}
/**
@@ -119,11 +119,11 @@ class Util {
$message->setPlainBody($mailtext);
$message->setFrom([$fromaddress => $fromname]);
if($html === 1) {
- $message->setHTMLBody($altbody);
+ $message->setHtmlBody($altbody);
}
if($altbody === '') {
- $message->setHTMLBody($mailtext);
+ $message->setHtmlBody($mailtext);
$message->setPlainBody('');
} else {
$message->setHtmlBody($mailtext);
@@ -252,9 +252,10 @@ class Util {
*
* @deprecated 8.0.0 Use \OC::$server->query('DateTimeFormatter') instead
* @since 4.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function formatDate($timestamp, $dateOnly=false, $timeZone = null) {
- return(\OC_Util::formatDate($timestamp, $dateOnly, $timeZone));
+ return \OC_Util::formatDate($timestamp, $dateOnly, $timeZone);
}
/**
@@ -351,7 +352,7 @@ class Util {
* @since 5.0.0
*/
public static function getServerHostName() {
- $host_name = self::getServerHost();
+ $host_name = \OC::$server->getRequest()->getServerHost();
// strip away port number (if existing)
$colon_pos = strpos($host_name, ':');
if ($colon_pos != FALSE) {
@@ -440,20 +441,20 @@ class Util {
* @return string a human readable file size
* @since 4.0.0
*/
- public static function humanFileSize( $bytes ) {
- return(\OC_Helper::humanFileSize( $bytes ));
+ public static function humanFileSize($bytes) {
+ return \OC_Helper::humanFileSize($bytes);
}
/**
* Make a computer file size (2 kB to 2048)
* @param string $str file size in a fancy format
- * @return int a file size in bytes
+ * @return float a file size in bytes
*
* Inspired by: http://www.php.net/manual/en/function.filesize.php#92418
* @since 4.0.0
*/
- public static function computerFileSize( $str ) {
- return(\OC_Helper::computerFileSize( $str ));
+ public static function computerFileSize($str) {
+ return \OC_Helper::computerFileSize($str);
}
/**
@@ -470,8 +471,8 @@ class Util {
* TODO: write example
* @since 4.0.0
*/
- static public function connectHook($signalClass, $signalName, $slotClass, $slotName ) {
- return(\OC_Hook::connect($signalClass, $signalName, $slotClass, $slotName ));
+ static public function connectHook($signalClass, $signalName, $slotClass, $slotName) {
+ return \OC_Hook::connect($signalClass, $signalName, $slotClass, $slotName);
}
/**
@@ -484,8 +485,8 @@ class Util {
* TODO: write example
* @since 4.0.0
*/
- static public function emitHook( $signalclass, $signalname, $params = array()) {
- return(\OC_Hook::emit( $signalclass, $signalname, $params ));
+ static public function emitHook($signalclass, $signalname, $params = array()) {
+ return \OC_Hook::emit($signalclass, $signalname, $params);
}
/**
@@ -518,7 +519,7 @@ class Util {
exit();
}
- if (!(\OC::$server->getRequest()->passesCSRFCheck())) {
+ if (!\OC::$server->getRequest()->passesCSRFCheck()) {
exit();
}
}
@@ -549,7 +550,7 @@ class Util {
* @since 6.0.0
*/
public static function encodePath($component) {
- return(\OC_Util::encodePath($component));
+ return \OC_Util::encodePath($component);
}
/**
@@ -562,7 +563,7 @@ class Util {
* @since 4.5.0
*/
public static function mb_array_change_key_case($input, $case = MB_CASE_LOWER, $encoding = 'UTF-8') {
- return(\OC_Helper::mb_array_change_key_case($input, $case, $encoding));
+ return \OC_Helper::mb_array_change_key_case($input, $case, $encoding);
}
/**
@@ -602,12 +603,12 @@ class Util {
*
* @param array $haystack the array to be searched
* @param string $needle the search string
- * @param int $index optional, only search this key name
+ * @param mixed $index optional, only search this key name
* @return mixed the key of the matching field, otherwise false
* @since 4.5.0
*/
public static function recursiveArraySearch($haystack, $needle, $index = null) {
- return(\OC_Helper::recursiveArraySearch($haystack, $needle, $index));
+ return \OC_Helper::recursiveArraySearch($haystack, $needle, $index);
}
/**
@@ -648,6 +649,7 @@ class Util {
* @return bool true if the file name is valid, false otherwise
* @deprecated 8.1.0 use \OC\Files\View::verifyPath()
* @since 7.0.0
+ * @suppress PhanDeprecatedFunction
*/
public static function isValidFileName($file) {
return \OC_Util::isValidFileName($file);
diff --git a/ocs/providers.php b/ocs/providers.php
index 9efca14768e..1961a68ec2d 100644
--- a/ocs/providers.php
+++ b/ocs/providers.php
@@ -34,7 +34,7 @@ $url = $request->getServerProtocol() . '://' . substr($request->getServerHost()
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->startDocument('1.0','UTF-8');
-$writer->setIndent(4);
+$writer->setIndent(true);
$writer->startElement('providers');
$writer->startElement('provider');
$writer->writeElement('id', 'ownCloud');
diff --git a/ocs/routes.php b/ocs/routes.php
deleted file mode 100644
index 932c4053013..00000000000
--- a/ocs/routes.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Bjoern Schiessle <bjoern@schiessle.org>
- * @author Björn Schießle <bjoern@schiessle.org>
- * @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Tom Needham <tom@owncloud.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-use OCP\API;
-
-// Privatedata
-API::register(
- 'get',
- '/privatedata/getattribute',
- array('OC_OCS_Privatedata', 'get'),
- 'core',
- API::USER_AUTH,
- array('app' => '', 'key' => '')
- );
-API::register(
- 'get',
- '/privatedata/getattribute/{app}',
- array('OC_OCS_Privatedata', 'get'),
- 'core',
- API::USER_AUTH,
- array('key' => '')
- );
-API::register(
- 'get',
- '/privatedata/getattribute/{app}/{key}',
- array('OC_OCS_Privatedata', 'get'),
- 'core',
- API::USER_AUTH
- );
-API::register(
- 'post',
- '/privatedata/setattribute/{app}/{key}',
- array('OC_OCS_Privatedata', 'set'),
- 'core',
- API::USER_AUTH
- );
-API::register(
- 'post',
- '/privatedata/deleteattribute/{app}/{key}',
- array('OC_OCS_Privatedata', 'delete'),
- 'core',
- API::USER_AUTH
- );
diff --git a/public.php b/public.php
index a9365d6db63..efa59267125 100644
--- a/public.php
+++ b/public.php
@@ -51,8 +51,8 @@ try {
$pathInfo = trim($pathInfo, '/');
list($service) = explode('/', $pathInfo);
}
- $file = OCP\Config::getAppValue('core', 'public_' . strip_tags($service));
- if (is_null($file)) {
+ $file = \OC::$server->getConfig()->getAppValue('core', 'public_' . strip_tags($service));
+ if ($file === null) {
header('HTTP/1.0 404 Not Found');
exit;
}
diff --git a/remote.php b/remote.php
index 8e74967365d..1d83e5a7f83 100644
--- a/remote.php
+++ b/remote.php
@@ -41,7 +41,7 @@ class RemoteException extends Exception {
}
/**
- * @param Exception | Error $e
+ * @param Exception|Error $e
*/
function handleException($e) {
$request = \OC::$server->getRequest();
diff --git a/settings/BackgroundJobs/VerifyUserData.php b/settings/BackgroundJobs/VerifyUserData.php
index 5e5b2b9c678..90f9e1fc678 100644
--- a/settings/BackgroundJobs/VerifyUserData.php
+++ b/settings/BackgroundJobs/VerifyUserData.php
@@ -87,7 +87,7 @@ class VerifyUserData extends Job {
* run the job, then remove it from the jobList
*
* @param JobList $jobList
- * @param ILogger $logger
+ * @param ILogger|null $logger
*/
public function execute($jobList, ILogger $logger = null) {
diff --git a/settings/Controller/AuthSettingsController.php b/settings/Controller/AuthSettingsController.php
index 7bb8a6654e6..7b68fc4c289 100644
--- a/settings/Controller/AuthSettingsController.php
+++ b/settings/Controller/AuthSettingsController.php
@@ -76,11 +76,11 @@ class AuthSettingsController extends Controller {
* @NoAdminRequired
* @NoSubadminRequired
*
- * @return JSONResponse
+ * @return JSONResponse|array
*/
public function index() {
$user = $this->userManager->get($this->uid);
- if (is_null($user)) {
+ if ($user === null) {
return [];
}
$tokens = $this->tokenProvider->getTokenByUser($user);
@@ -147,6 +147,9 @@ class AuthSettingsController extends Controller {
]);
}
+ /**
+ * @return JSONResponse
+ */
private function getServiceNotAvailableResponse() {
$resp = new JSONResponse();
$resp->setStatus(Http::STATUS_SERVICE_UNAVAILABLE);
@@ -156,7 +159,7 @@ class AuthSettingsController extends Controller {
/**
* Return a 25 digit device password
*
- * Example: AbCdE-fGhIj-KlMnO-pQrSt-12345
+ * Example: AbCdE-fGhJk-MnPqR-sTwXy-23456
*
* @return string
*/
@@ -172,7 +175,7 @@ class AuthSettingsController extends Controller {
* @NoAdminRequired
* @NoSubadminRequired
*
- * @return JSONResponse
+ * @return array
*/
public function destroy($id) {
$user = $this->userManager->get($this->uid);
@@ -190,9 +193,10 @@ class AuthSettingsController extends Controller {
*
* @param int $id
* @param array $scope
+ * @return array
*/
public function update($id, array $scope) {
- $token = $this->tokenProvider->getTokenById($id);
+ $token = $this->tokenProvider->getTokenById((string)$id);
$token->setScope([
'filesystem' => $scope['filesystem']
]);
diff --git a/settings/Controller/CertificateController.php b/settings/Controller/CertificateController.php
index 1cf9e03effb..c5f7e89f3fc 100644
--- a/settings/Controller/CertificateController.php
+++ b/settings/Controller/CertificateController.php
@@ -72,7 +72,7 @@ class CertificateController extends Controller {
*
* @NoAdminRequired
* @NoSubadminRequired
- * @return array
+ * @return DataResponse
*/
public function addPersonalRootCertificate() {
return $this->addCertificate($this->userCertificateManager);
@@ -114,7 +114,7 @@ class CertificateController extends Controller {
$headers
);
} catch (\Exception $e) {
- return new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY, $headers);
+ return new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY, $headers);
}
}
@@ -129,7 +129,7 @@ class CertificateController extends Controller {
public function removePersonalRootCertificate($certificateIdentifier) {
if ($this->isCertificateImportAllowed() === false) {
- return new DataResponse('Individual certificate management disabled', Http::STATUS_FORBIDDEN);
+ return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN);
}
$this->userCertificateManager->removeCertificate($certificateIdentifier);
@@ -156,7 +156,7 @@ class CertificateController extends Controller {
/**
* Add a new personal root certificate to the system's trust store
*
- * @return array
+ * @return DataResponse
*/
public function addSystemRootCertificate() {
return $this->addCertificate($this->systemCertificateManager);
@@ -171,7 +171,7 @@ class CertificateController extends Controller {
public function removeSystemRootCertificate($certificateIdentifier) {
if ($this->isCertificateImportAllowed() === false) {
- return new DataResponse('Individual certificate management disabled', Http::STATUS_FORBIDDEN);
+ return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN);
}
$this->systemCertificateManager->removeCertificate($certificateIdentifier);
diff --git a/settings/Controller/ChangePasswordController.php b/settings/Controller/ChangePasswordController.php
index cb1a97386a6..a758180e858 100644
--- a/settings/Controller/ChangePasswordController.php
+++ b/settings/Controller/ChangePasswordController.php
@@ -22,6 +22,7 @@
namespace OC\Settings\Controller;
use OC\HintException;
+use OC\User\Session;
use OCP\App\IAppManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse;
@@ -46,7 +47,7 @@ class ChangePasswordController extends Controller {
/** @var IGroupManager */
private $groupManager;
- /** @var IUserSession */
+ /** @var Session */
private $userSession;
/** @var IAppManager */
diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php
index 76394fcb6c6..4b03cf91a10 100644
--- a/settings/Controller/UsersController.php
+++ b/settings/Controller/UsersController.php
@@ -45,7 +45,6 @@ use OCP\Files\Config\IUserMountCache;
use OCP\Encryption\IEncryptionModule;
use OCP\Encryption\IManager;
use OCP\IConfig;
-use OCP\IGroupManager;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IRequest;
@@ -71,7 +70,7 @@ class UsersController extends Controller {
private $isAdmin;
/** @var IUserManager */
private $userManager;
- /** @var IGroupManager */
+ /** @var \OC\Group\Manager */
private $groupManager;
/** @var IConfig */
private $config;
@@ -113,7 +112,7 @@ class UsersController extends Controller {
* @param string $appName
* @param IRequest $request
* @param IUserManager $userManager
- * @param IGroupManager $groupManager
+ * @param \OC\Group\Manager $groupManager
* @param IUserSession $userSession
* @param IConfig $config
* @param bool $isAdmin
@@ -136,7 +135,7 @@ class UsersController extends Controller {
public function __construct($appName,
IRequest $request,
IUserManager $userManager,
- IGroupManager $groupManager,
+ \OC\Group\Manager $groupManager,
IUserSession $userSession,
IConfig $config,
$isAdmin,
@@ -180,14 +179,14 @@ class UsersController extends Controller {
$this->isEncryptionAppEnabled = $appManager->isEnabledForUser('encryption');
if ($this->isEncryptionAppEnabled) {
// putting this directly in empty is possible in PHP 5.5+
- $result = $config->getAppValue('encryption', 'recoveryAdminEnabled', 0);
+ $result = $config->getAppValue('encryption', 'recoveryAdminEnabled', '0');
$this->isRestoreEnabled = !empty($result);
}
}
/**
* @param IUser $user
- * @param array $userGroups
+ * @param array|null $userGroups
* @return array
*/
private function formatUserForIndex(IUser $user, array $userGroups = null) {
diff --git a/settings/Hooks.php b/settings/Hooks.php
index 2cc5ce30bbe..115f62a9a2a 100644
--- a/settings/Hooks.php
+++ b/settings/Hooks.php
@@ -119,7 +119,7 @@ class Hooks {
if ($user->getEMailAddress() !== null) {
$template = $this->mailer->createEMailTemplate();
$template->addHeader();
- $template->addHeading($this->l->t('Password changed for %s', $user->getDisplayName()), false);
+ $template->addHeading($this->l->t('Password changed for %s', [$user->getDisplayName()]), false);
$template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.'));
$template->addFooter();
@@ -185,10 +185,10 @@ class Hooks {
if ($oldMailAddress !== null) {
$template = $this->mailer->createEMailTemplate();
$template->addHeader();
- $template->addHeading($this->l->t('Email address changed for %s', $user->getDisplayName()), false);
+ $template->addHeading($this->l->t('Email address changed for %s', [$user->getDisplayName()]), false);
$template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.'));
if ($user->getEMailAddress()) {
- $template->addBodyText($this->l->t('The new email address is %s', $user->getEMailAddress()));
+ $template->addBodyText($this->l->t('The new email address is %s', [$user->getEMailAddress()]));
}
$template->addFooter();
diff --git a/settings/Middleware/SubadminMiddleware.php b/settings/Middleware/SubadminMiddleware.php
index df34b80656b..9914d65af02 100644
--- a/settings/Middleware/SubadminMiddleware.php
+++ b/settings/Middleware/SubadminMiddleware.php
@@ -27,6 +27,7 @@ namespace OC\Settings\Middleware;
use OC\AppFramework\Http;
use OC\AppFramework\Middleware\Security\Exceptions\NotAdminException;
use OC\AppFramework\Utility\ControllerMethodReflector;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Middleware;
@@ -54,7 +55,7 @@ class SubadminMiddleware extends Middleware {
/**
* Check if sharing is enabled before the controllers is executed
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @throws \Exception
*/
@@ -68,7 +69,7 @@ class SubadminMiddleware extends Middleware {
/**
* Return 403 page in case of an exception
- * @param \OCP\AppFramework\Controller $controller
+ * @param Controller $controller
* @param string $methodName
* @param \Exception $exception
* @return TemplateResponse
diff --git a/settings/ajax/togglesubadmins.php b/settings/ajax/togglesubadmins.php
index 5658a382410..c9cc078ed09 100644
--- a/settings/ajax/togglesubadmins.php
+++ b/settings/ajax/togglesubadmins.php
@@ -39,8 +39,8 @@ $targetUserObject = \OC::$server->getUserManager()->get($username);
$targetGroupObject = \OC::$server->getGroupManager()->get($group);
$isSubAdminOfGroup = false;
-if($targetUserObject !== null && $targetUserObject !== null) {
- $isSubAdminOfGroup = $subAdminManager->isSubAdminofGroup($targetUserObject, $targetGroupObject);
+if($targetUserObject !== null && $targetGroupObject !== null) {
+ $isSubAdminOfGroup = $subAdminManager->isSubAdminOfGroup($targetUserObject, $targetGroupObject);
}
// Toggle group
diff --git a/settings/ajax/uninstallapp.php b/settings/ajax/uninstallapp.php
index 0e68a893ef4..79109600a39 100644
--- a/settings/ajax/uninstallapp.php
+++ b/settings/ajax/uninstallapp.php
@@ -47,5 +47,5 @@ if($result !== false) {
OC_JSON::success(array('data' => array('appid' => $appId)));
} else {
$l = \OC::$server->getL10N('settings');
- OC_JSON::error(array("data" => array( "message" => $l->t("Couldn't remove app.") )));
+ OC_JSON::error(array('data' => array( 'message' => $l->t("Couldn't remove app.") )));
}
diff --git a/settings/ajax/updateapp.php b/settings/ajax/updateapp.php
index bcf8e149140..b398e41033b 100644
--- a/settings/ajax/updateapp.php
+++ b/settings/ajax/updateapp.php
@@ -51,7 +51,7 @@ try {
$config->setSystemValue('maintenance', false);
} catch(Exception $ex) {
$config->setSystemValue('maintenance', false);
- OC_JSON::error(array("data" => array( "message" => $ex->getMessage() )));
+ OC_JSON::error(array('data' => array( 'message' => $ex->getMessage() )));
return;
}
@@ -59,5 +59,5 @@ if($result !== false) {
OC_JSON::success(array('data' => array('appid' => $appId)));
} else {
$l = \OC::$server->getL10N('settings');
- OC_JSON::error(array("data" => array( "message" => $l->t("Couldn't update app.") )));
+ OC_JSON::error(array('data' => array( 'message' => $l->t("Couldn't update app.") )));
}
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 957ad395f94..278c307b1f3 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -479,7 +479,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
$.post(OC.webroot + '/index.php/disableapp', {appid: appId}, function() {
OC.Settings.Apps.showErrorMessage(
appId,
- t('settings', 'Error: this app cannot be enabled because it makes the server unstable')
+ t('settings', 'Error: This app can not be enabled because it makes the server unstable')
);
appItems.forEach(function(appItem) {
appItem.data('errormsg', t('settings', 'Error while enabling app'));
@@ -493,7 +493,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
}).fail(function() {
OC.Settings.Apps.showErrorMessage(
appId,
- t('settings', 'Error: could not disable broken app')
+ t('settings', 'Error: Could not disable broken app')
);
appItems.forEach(function(appItem) {
appItem.data('errormsg', t('settings', 'Error while disabling broken app'));
diff --git a/settings/js/federationsettingsview.js b/settings/js/federationsettingsview.js
index d5537d19404..46d92027a97 100644
--- a/settings/js/federationsettingsview.js
+++ b/settings/js/federationsettingsview.js
@@ -182,7 +182,7 @@
var $icon = this.$('#' + field + 'form > h2 > span');
$icon.removeClass('icon-password');
- $icon.removeClass('icon-contacts-dark');
+ $icon.removeClass('icon-contacts');
$icon.removeClass('icon-link');
$icon.addClass('hidden');
@@ -192,7 +192,7 @@
$icon.removeClass('hidden');
break;
case 'contacts':
- $icon.addClass('icon-contacts-dark');
+ $icon.addClass('icon-contacts');
$icon.removeClass('hidden');
break;
case 'public':
diff --git a/settings/js/settings/personalInfo.js b/settings/js/settings/personalInfo.js
index 306994a7094..89b37d291c5 100644
--- a/settings/js/settings/personalInfo.js
+++ b/settings/js/settings/personalInfo.js
@@ -169,7 +169,6 @@ $(document).ready(function () {
if (data.status === "success") {
$("#passwordbutton").after("<span class='checkmark icon icon-checkmark password-state'></span>");
removeloader();
- $(".personal-show-label").show();
$('#pass1').val('');
$('#pass2').val('').change();
}
@@ -185,6 +184,7 @@ $(document).ready(function () {
}
);
}
+ $(".personal-show-label").show();
$(".password-loading").remove();
$("#passwordbutton").removeAttr('disabled');
});
diff --git a/settings/l10n/ast.js b/settings/l10n/ast.js
index 7556af94637..0cb73145543 100644
--- a/settings/l10n/ast.js
+++ b/settings/l10n/ast.js
@@ -74,8 +74,6 @@ OC.L10N.register(
"Enable" : "Activar",
"Enabling app …" : "Habilitando aplicación...",
"Error while enabling app" : "Fallu mientres s'activaba l'aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fallu: esta aplicación nun pue habilitase porque fadrá inestable'l sirvidor",
- "Error: could not disable broken app" : "Fallu: nun pudo deshabilitase l'aplicación rota",
"Error while disabling broken app" : "Fallu entrín se deshabilitaba l'aplicación rota",
"Updating...." : "Anovando....",
"Error while updating app" : "Fallu mientres s'anovaba l'aplicación",
diff --git a/settings/l10n/ast.json b/settings/l10n/ast.json
index eed8bae1e4a..9f6c11d7614 100644
--- a/settings/l10n/ast.json
+++ b/settings/l10n/ast.json
@@ -72,8 +72,6 @@
"Enable" : "Activar",
"Enabling app …" : "Habilitando aplicación...",
"Error while enabling app" : "Fallu mientres s'activaba l'aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fallu: esta aplicación nun pue habilitase porque fadrá inestable'l sirvidor",
- "Error: could not disable broken app" : "Fallu: nun pudo deshabilitase l'aplicación rota",
"Error while disabling broken app" : "Fallu entrín se deshabilitaba l'aplicación rota",
"Updating...." : "Anovando....",
"Error while updating app" : "Fallu mientres s'anovaba l'aplicación",
diff --git a/settings/l10n/ca.js b/settings/l10n/ca.js
index 5fc789290f3..da37e1e3048 100644
--- a/settings/l10n/ca.js
+++ b/settings/l10n/ca.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"{actor} changed your email address" : "{actor} va canviar la seva adreça d\\'email",
"You changed your email address" : "Has canviat el teu email",
"Your email address was changed by an administrator" : "La seva adreça d'email s\\'ha canviat per un administrador",
+ "Security" : "Seguretat",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "La teva <strong>contrasenya</strong> o <strong>email</strong> s'ha modificat",
"Your apps" : "Les teves apps",
"Enabled apps" : "Apps activades",
@@ -27,11 +28,14 @@ OC.L10N.register(
"Unable to delete group." : "No es pot esborrar el grup.",
"Invalid SMTP password." : "Contrasenya SMTP no vàlida.",
"Well done, %s!" : "Ben fet, %s!",
+ "Email setting test" : "Prova de l'arranjament del correu",
+ "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu. Revisa el registre del servidor de correu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema en enviar el correu. Revisi la seva configuració. (Error: %s)",
"You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.",
"Invalid mail address" : "Adreça de correu invàlida",
"No valid group selected" : "No s'ha seleccionat un grup vàlid",
"A user with that name already exists." : "Ja existeix un usuari amb est nom.",
+ "To send a password link to the user an email address is required." : "Per enviar una contrasenya a l'usuari cal una adreça de correu.",
"Unable to create user." : "No es pot crear el usuari.",
"Unable to delete user." : "No es pot eliminar l'usuari",
"Error while enabling user." : "Error activant usuari.",
@@ -77,23 +81,31 @@ OC.L10N.register(
"Official" : "Oficial",
"All" : "Tots",
"Update to %s" : "Actualitzar a %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["Tens %n aplicació pendent d'actualitzar","Tens %n aplicacions pendents d'actualitzar"],
"No apps found for your version" : "No s'han trobat aplicacions per la seva versió",
"The app will be downloaded from the app store" : "L'app es descarregarà des de la botiga d'apps",
+ "Disabling app …" : "Desactivant l'aplicacio ...",
"Error while disabling app" : "Error en desactivar l'aplicació",
"Disable" : "Desactiva",
"Enable" : "Habilita",
"Enabling app …" : "Activant aplicació...",
"Error while enabling app" : "Error en activar l'aplicació",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: No es pot activar l'aplicació perquè tornaria el servidor inestable",
+ "Error: Could not disable broken app" : "Error: no s'ha pogut desactivar l'aplicació trencada",
+ "Error while disabling broken app" : "Error en desactivar l'aplicació trencada",
"Updating...." : "Actualitzant...",
"Error while updating app" : "Error en actualitzar l'aplicació",
"Updated" : "Actualitzada",
"Removing …" : "Treient ...",
"Error while removing app" : "Error treient app",
"Remove" : "Treure",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "S'ha activat l'aplicació però necessita actualitzar-se. Seràs redirigit a la pàgina d'actualització d'aquí a 5 segons.",
"App update" : "Actualització de la App",
"Approved" : "Aprovat",
"Experimental" : "Experimental",
+ "No apps found for {query}" : "No s'han trobat aplicacions per a {query}",
"Enable all" : "Permetre tots",
+ "Allow filesystem access" : "Peret accés al sistema de fitxers",
"Disconnect" : "Desconnecta",
"Revoke" : "Revocar",
"Internet Explorer" : "Internet Explorer",
@@ -114,6 +126,9 @@ OC.L10N.register(
"Press ⌘-C to copy." : "Prem ⌘-C per copiar.",
"Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.",
"Error while loading browser sessions and device tokens" : "Error durant la càrrega de les sessions del navegador i testimonis de dispositius",
+ "Error while creating device token" : "Error al crear el testimoni de dispositiu",
+ "Error while deleting the token" : "Error al esborrar el testimoni",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "S'ha produït un error. Si us plau, puja un certificat PEM codificat en ASCII.",
"Valid until {date}" : "Vàlid fins {date}",
"Delete" : "Esborra",
"Local" : "Local",
@@ -121,6 +136,7 @@ OC.L10N.register(
"Only visible to local users" : "Només visible per a usuaris locals",
"Only visible to you" : "Només visible per tu",
"Contacts" : "Contactes",
+ "Visible to local users and to trusted servers" : "Visible per als usuaris locals i els servidors de confiança",
"Public" : "Públic",
"Verify" : "Verificar",
"Verifying …" : "Verificant ...",
@@ -136,8 +152,10 @@ OC.L10N.register(
"A valid group name must be provided" : "Heu de facilitar un nom de grup vàlid",
"deleted {groupName}" : "eliminat {groupName}",
"undo" : "desfés",
+ "{size} used" : "{size} utilitzat",
"never" : "mai",
"deleted {userName}" : "eliminat {userName}",
+ "No user found for <strong>{pattern}</strong>" : "No s'ha trobat cap usuari per a <strong>{pattern}</strong>",
"Unable to add user to group {group}" : "No es pot afegir l'usuari al grup {group}",
"Unable to remove user from group {group}" : "No es pot eliminar l'usuari del grup {group}",
"Add group" : "Afegeix grup",
@@ -149,11 +167,13 @@ OC.L10N.register(
"A valid password must be provided" : "Heu de facilitar una contrasenya vàlida",
"A valid email must be provided" : "S'ha de subministrar una adreça de correu electrònic vàlida",
"Developer documentation" : "Documentació para desenvolupadors",
+ "View in store" : "Veure al repositori",
"Limit to groups" : "Limitar per grups",
"This app has an update available." : "Aquesta aplicació té una actualització disponible.",
"by %s" : "per %s",
"Documentation:" : "Documentació:",
"User documentation" : "Documentació d'usuari",
+ "Admin documentation" : "Documentació d'administrador",
"Visit website" : "Visita el lloc web",
"Report a bug" : "Reportar un error",
"Show description …" : "Mostrar descripció...",
@@ -202,6 +222,10 @@ OC.L10N.register(
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Això probablement està provocat per una cau/accelerador com Zend OPcache o eAccelerator.",
"System locale can not be set to a one which supports UTF-8." : "No s'ha pogut establir cap localització del sistema amb suport per UTF-8.",
"All checks passed." : "Totes les comprovacions correctes.",
+ "Background jobs" : "Tasques en segon pla",
+ "Last job ran %s." : "L'última tasca es va executar %s.",
+ "Last job execution ran %s. Something seems wrong." : "L'última tasca es va executar %s. Alguna cosa sembla malament.",
+ "Background job didn’t run yet!" : "Les tasques en segon pla encara no s'han executat!",
"Execute one task with each page loaded" : "Executa una tasca per cada paquet carregat",
"Version" : "Versió",
"Sharing" : "Compartir",
@@ -284,6 +308,7 @@ OC.L10N.register(
"Group admin for" : "Administrador de grup per",
"Quota" : "Quota",
"Storage location" : "Ubicació de l'emmagatzemament",
+ "User backend" : "Backend d'usuari",
"Last login" : "Últim accés",
"change full name" : "canvia el nom complet",
"set new password" : "estableix nova contrasenya",
@@ -331,7 +356,10 @@ OC.L10N.register(
"iOS app" : "aplicació para iOS",
"Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució",
"Name" : "Nom",
+ "Follow us on Google Plus!" : "Segueix-nos al Google Plus!",
"Show last log in" : "Mostrar l'últim accés",
- "Verifying" : "Verificant"
+ "Verifying" : "Verificant",
+ "Follow us on Google+!" : "Segueix-nos al Google+!",
+ "Follow us on Twitter!" : "Segueix-nos al Twitter!"
},
"nplurals=2; plural=(n != 1);");
diff --git a/settings/l10n/ca.json b/settings/l10n/ca.json
index bd53ddb8a36..5052af0210a 100644
--- a/settings/l10n/ca.json
+++ b/settings/l10n/ca.json
@@ -5,6 +5,7 @@
"{actor} changed your email address" : "{actor} va canviar la seva adreça d\\'email",
"You changed your email address" : "Has canviat el teu email",
"Your email address was changed by an administrator" : "La seva adreça d'email s\\'ha canviat per un administrador",
+ "Security" : "Seguretat",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "La teva <strong>contrasenya</strong> o <strong>email</strong> s'ha modificat",
"Your apps" : "Les teves apps",
"Enabled apps" : "Apps activades",
@@ -25,11 +26,14 @@
"Unable to delete group." : "No es pot esborrar el grup.",
"Invalid SMTP password." : "Contrasenya SMTP no vàlida.",
"Well done, %s!" : "Ben fet, %s!",
+ "Email setting test" : "Prova de l'arranjament del correu",
+ "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu. Revisa el registre del servidor de correu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema en enviar el correu. Revisi la seva configuració. (Error: %s)",
"You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.",
"Invalid mail address" : "Adreça de correu invàlida",
"No valid group selected" : "No s'ha seleccionat un grup vàlid",
"A user with that name already exists." : "Ja existeix un usuari amb est nom.",
+ "To send a password link to the user an email address is required." : "Per enviar una contrasenya a l'usuari cal una adreça de correu.",
"Unable to create user." : "No es pot crear el usuari.",
"Unable to delete user." : "No es pot eliminar l'usuari",
"Error while enabling user." : "Error activant usuari.",
@@ -75,23 +79,31 @@
"Official" : "Oficial",
"All" : "Tots",
"Update to %s" : "Actualitzar a %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["Tens %n aplicació pendent d'actualitzar","Tens %n aplicacions pendents d'actualitzar"],
"No apps found for your version" : "No s'han trobat aplicacions per la seva versió",
"The app will be downloaded from the app store" : "L'app es descarregarà des de la botiga d'apps",
+ "Disabling app …" : "Desactivant l'aplicacio ...",
"Error while disabling app" : "Error en desactivar l'aplicació",
"Disable" : "Desactiva",
"Enable" : "Habilita",
"Enabling app …" : "Activant aplicació...",
"Error while enabling app" : "Error en activar l'aplicació",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: No es pot activar l'aplicació perquè tornaria el servidor inestable",
+ "Error: Could not disable broken app" : "Error: no s'ha pogut desactivar l'aplicació trencada",
+ "Error while disabling broken app" : "Error en desactivar l'aplicació trencada",
"Updating...." : "Actualitzant...",
"Error while updating app" : "Error en actualitzar l'aplicació",
"Updated" : "Actualitzada",
"Removing …" : "Treient ...",
"Error while removing app" : "Error treient app",
"Remove" : "Treure",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "S'ha activat l'aplicació però necessita actualitzar-se. Seràs redirigit a la pàgina d'actualització d'aquí a 5 segons.",
"App update" : "Actualització de la App",
"Approved" : "Aprovat",
"Experimental" : "Experimental",
+ "No apps found for {query}" : "No s'han trobat aplicacions per a {query}",
"Enable all" : "Permetre tots",
+ "Allow filesystem access" : "Peret accés al sistema de fitxers",
"Disconnect" : "Desconnecta",
"Revoke" : "Revocar",
"Internet Explorer" : "Internet Explorer",
@@ -112,6 +124,9 @@
"Press ⌘-C to copy." : "Prem ⌘-C per copiar.",
"Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.",
"Error while loading browser sessions and device tokens" : "Error durant la càrrega de les sessions del navegador i testimonis de dispositius",
+ "Error while creating device token" : "Error al crear el testimoni de dispositiu",
+ "Error while deleting the token" : "Error al esborrar el testimoni",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "S'ha produït un error. Si us plau, puja un certificat PEM codificat en ASCII.",
"Valid until {date}" : "Vàlid fins {date}",
"Delete" : "Esborra",
"Local" : "Local",
@@ -119,6 +134,7 @@
"Only visible to local users" : "Només visible per a usuaris locals",
"Only visible to you" : "Només visible per tu",
"Contacts" : "Contactes",
+ "Visible to local users and to trusted servers" : "Visible per als usuaris locals i els servidors de confiança",
"Public" : "Públic",
"Verify" : "Verificar",
"Verifying …" : "Verificant ...",
@@ -134,8 +150,10 @@
"A valid group name must be provided" : "Heu de facilitar un nom de grup vàlid",
"deleted {groupName}" : "eliminat {groupName}",
"undo" : "desfés",
+ "{size} used" : "{size} utilitzat",
"never" : "mai",
"deleted {userName}" : "eliminat {userName}",
+ "No user found for <strong>{pattern}</strong>" : "No s'ha trobat cap usuari per a <strong>{pattern}</strong>",
"Unable to add user to group {group}" : "No es pot afegir l'usuari al grup {group}",
"Unable to remove user from group {group}" : "No es pot eliminar l'usuari del grup {group}",
"Add group" : "Afegeix grup",
@@ -147,11 +165,13 @@
"A valid password must be provided" : "Heu de facilitar una contrasenya vàlida",
"A valid email must be provided" : "S'ha de subministrar una adreça de correu electrònic vàlida",
"Developer documentation" : "Documentació para desenvolupadors",
+ "View in store" : "Veure al repositori",
"Limit to groups" : "Limitar per grups",
"This app has an update available." : "Aquesta aplicació té una actualització disponible.",
"by %s" : "per %s",
"Documentation:" : "Documentació:",
"User documentation" : "Documentació d'usuari",
+ "Admin documentation" : "Documentació d'administrador",
"Visit website" : "Visita el lloc web",
"Report a bug" : "Reportar un error",
"Show description …" : "Mostrar descripció...",
@@ -200,6 +220,10 @@
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Això probablement està provocat per una cau/accelerador com Zend OPcache o eAccelerator.",
"System locale can not be set to a one which supports UTF-8." : "No s'ha pogut establir cap localització del sistema amb suport per UTF-8.",
"All checks passed." : "Totes les comprovacions correctes.",
+ "Background jobs" : "Tasques en segon pla",
+ "Last job ran %s." : "L'última tasca es va executar %s.",
+ "Last job execution ran %s. Something seems wrong." : "L'última tasca es va executar %s. Alguna cosa sembla malament.",
+ "Background job didn’t run yet!" : "Les tasques en segon pla encara no s'han executat!",
"Execute one task with each page loaded" : "Executa una tasca per cada paquet carregat",
"Version" : "Versió",
"Sharing" : "Compartir",
@@ -282,6 +306,7 @@
"Group admin for" : "Administrador de grup per",
"Quota" : "Quota",
"Storage location" : "Ubicació de l'emmagatzemament",
+ "User backend" : "Backend d'usuari",
"Last login" : "Últim accés",
"change full name" : "canvia el nom complet",
"set new password" : "estableix nova contrasenya",
@@ -329,7 +354,10 @@
"iOS app" : "aplicació para iOS",
"Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució",
"Name" : "Nom",
+ "Follow us on Google Plus!" : "Segueix-nos al Google Plus!",
"Show last log in" : "Mostrar l'últim accés",
- "Verifying" : "Verificant"
+ "Verifying" : "Verificant",
+ "Follow us on Google+!" : "Segueix-nos al Google+!",
+ "Follow us on Twitter!" : "Segueix-nos al Twitter!"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js
index a2dfffa7d0b..d4ef3099ab9 100644
--- a/settings/l10n/cs.js
+++ b/settings/l10n/cs.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Povolit",
"Enabling app …" : "Povolování aplikace …",
"Error while enabling app" : "Chyba při povolování aplikace",
- "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
- "Error: could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
+ "Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
+ "Error: Could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
"Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
"Updating...." : "Aktualizuji...",
"Error while updating app" : "Chyba při aktualizaci aplikace",
@@ -249,7 +249,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.",
"Start migration" : "Spustit migraci",
"Security & setup warnings" : "Upozornění zabezpečení a nastavení",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci PHP podle <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">instalační dokumentace ↗</a>, hlavně při použití php-fpm.",
"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." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.",
@@ -354,6 +353,7 @@ OC.L10N.register(
"Like our Facebook page" : "Stejně jako naše stránky na Facebooku",
"Follow us on Twitter" : "Sledujte nás na Twitteru",
"Check out our blog" : "Podívejte se na náš blog",
+ "Subscribe to our newsletter" : "Odebírejte náš newsletter",
"Settings" : "Nastavení",
"Show storage location" : "Cesta k datům",
"Show user backend" : "Zobrazit vedení uživatelů",
@@ -439,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Odebírejte náš newsletter!",
"Show last log in" : "Poslední přihlášení",
"Verifying" : "Ověřování",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP modul 'fileinfo' chybí. Velmi ho kvůli lepším výsledkům detekce MIME typu souburu doporučujeme povolit.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Weboví, desktopoví a mobilní klienti a hesla v aplikacích, která aktuálně mají přístup k vašemu účtu.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Zde můžete vytvořit hesla pro jednotlivé aplikace, takže nemusíte sdělovat vaše heslo. Také je zde můžete kdykoliv zneplatnit.",
diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json
index 9917ff03eeb..5111c5b57e6 100644
--- a/settings/l10n/cs.json
+++ b/settings/l10n/cs.json
@@ -99,8 +99,8 @@
"Enable" : "Povolit",
"Enabling app …" : "Povolování aplikace …",
"Error while enabling app" : "Chyba při povolování aplikace",
- "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
- "Error: could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
+ "Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
+ "Error: Could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
"Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
"Updating...." : "Aktualizuji...",
"Error while updating app" : "Chyba při aktualizaci aplikace",
@@ -247,7 +247,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.",
"Start migration" : "Spustit migraci",
"Security & setup warnings" : "Upozornění zabezpečení a nastavení",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci PHP podle <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">instalační dokumentace ↗</a>, hlavně při použití php-fpm.",
"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." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.",
@@ -352,6 +351,7 @@
"Like our Facebook page" : "Stejně jako naše stránky na Facebooku",
"Follow us on Twitter" : "Sledujte nás na Twitteru",
"Check out our blog" : "Podívejte se na náš blog",
+ "Subscribe to our newsletter" : "Odebírejte náš newsletter",
"Settings" : "Nastavení",
"Show storage location" : "Cesta k datům",
"Show user backend" : "Zobrazit vedení uživatelů",
@@ -437,6 +437,7 @@
"Subscribe to our newsletter!" : "Odebírejte náš newsletter!",
"Show last log in" : "Poslední přihlášení",
"Verifying" : "Ověřování",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP modul 'fileinfo' chybí. Velmi ho kvůli lepším výsledkům detekce MIME typu souburu doporučujeme povolit.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Weboví, desktopoví a mobilní klienti a hesla v aplikacích, která aktuálně mají přístup k vašemu účtu.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Zde můžete vytvořit hesla pro jednotlivé aplikace, takže nemusíte sdělovat vaše heslo. Také je zde můžete kdykoliv zneplatnit.",
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index 04e58fe0f40..823eb439b96 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Aktivieren",
"Enabling app …" : "Aktiviere App…",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
- "Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
+ "Error: This app can not be enabled because it makes the server unstable" : "ehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
+ "Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
"Updating...." : "Aktualisiere…",
"Error while updating app" : "Es ist ein Fehler während der Aktualisierung der App aufgetreten",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Deines Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.",
"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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
@@ -440,6 +440,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Abonniere unseren Newsletter!",
"Show last log in" : "Letzte Anmeldung anzeigen",
"Verifying" : "Überprüfe",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Dein Konto haben",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So must Du nicht Dein Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index eb60e163cf4..53c36dcf905 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -99,8 +99,8 @@
"Enable" : "Aktivieren",
"Enabling app …" : "Aktiviere App…",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
- "Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
+ "Error: This app can not be enabled because it makes the server unstable" : "ehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
+ "Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
"Updating...." : "Aktualisiere…",
"Error while updating app" : "Es ist ein Fehler während der Aktualisierung der App aufgetreten",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Deines Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.",
"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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
@@ -438,6 +438,7 @@
"Subscribe to our newsletter!" : "Abonniere unseren Newsletter!",
"Show last log in" : "Letzte Anmeldung anzeigen",
"Verifying" : "Überprüfe",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Dein Konto haben",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So must Du nicht Dein Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 2be7d671feb..51d2b423e14 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Aktivieren",
"Enabling app …" : "Aktiviere App…",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
- "Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
+ "Error: This app can not be enabled because it makes the server unstable" : "ehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
+ "Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
"Updating...." : "Aktualisiere…",
"Error while updating app" : "Es ist ein Fehler während der Aktualisierung der App aufgetreten",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Ihres Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.",
"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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
@@ -440,6 +440,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!",
"Show last log in" : "Letzte Anmeldung anzeigen",
"Verifying" : "Überprüfe",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Ihr Konto haben.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So müssen Sie nicht Ihr Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 834e99041a5..2b2456adcf8 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -99,8 +99,8 @@
"Enable" : "Aktivieren",
"Enabling app …" : "Aktiviere App…",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
- "Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
+ "Error: This app can not be enabled because it makes the server unstable" : "ehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
+ "Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
"Updating...." : "Aktualisiere…",
"Error while updating app" : "Es ist ein Fehler während der Aktualisierung der App aufgetreten",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Ihres Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.",
"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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
@@ -438,6 +438,7 @@
"Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!",
"Show last log in" : "Letzte Anmeldung anzeigen",
"Verifying" : "Überprüfe",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Ihr Konto haben.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So müssen Sie nicht Ihr Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.",
diff --git a/settings/l10n/el.js b/settings/l10n/el.js
index 34717ce3c6e..f3fc0a67f5d 100644
--- a/settings/l10n/el.js
+++ b/settings/l10n/el.js
@@ -8,6 +8,8 @@ OC.L10N.register(
"You changed your email address" : "Έχετε αλλάξει τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας",
"Your email address was changed by an administrator" : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας άλλαξε από τον διαχειριστή",
"Security" : "Ασφάλεια",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Μία προσπάθεια σύνδεσης με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων απέτυχε (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ο δικός σας <ισχυρός>κωδικός πρόσβασης</ισχυρός>ή<ισχυρός>αλληλογραφίας</ισχυρός>τροποποιήθηκε",
"Your apps" : "Οι εφαρμογές σας",
"Enabled apps" : "Ενεργοποιημένες εφαρμογές",
@@ -18,7 +20,9 @@ OC.L10N.register(
"No user supplied" : "Δεν εισήχθη χρήστης",
"Unable to change password" : "Αδυναμία αλλαγής συνθηματικού",
"Authentication error" : "Σφάλμα πιστοποίησης",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Παρακαλώ παρέχετε έναν κωδικό ανάκτησης διαχειριστή, διαφορετικά όλα τα δεδομένα χρήστη θα χαθούν.",
"Wrong admin recovery password. Please check the password and try again." : "Λάθος κωδικός ανάκτησης διαχειριστή. Παρακαλώ ελέγξτε τον κωδικό και δοκιμάστε ξανά.",
+ "Backend doesn't support password change, but the user's encryption key was updated." : "Το σύστημα δεν υποστηρίζει αλλαγή κωδικού, αλλά το κλειδί κρυπτογράφησης του χρήστη ενημερώθηκε επιτυχώς.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ",
"Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "Το cURL χρησιμοποιεί μια παρωχημένη %s έκδοση (%s). Παρακαλούμε αναβαθμίστε το λειτουργικό σας σύστημα αλλιώς δυνατότητες όπως %s δεν θα δουλέψουν αξιόπιστα.",
@@ -28,16 +32,21 @@ OC.L10N.register(
"Unable to add group." : "Αδυναμία προσθήκης ομάδας.",
"Unable to delete group." : "Αδυναμία διαγραφής ομάδας.",
"Invalid SMTP password." : "Μη έγκυρο συνθηματικό SMTP.",
+ "Well done, %s!" : "Συγχαρητήρια, %s!",
+ "If you received this email, the email configuration seems to be correct." : "Εάν λάβατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, ",
"Email setting test" : "Δοκιμή ρυθμίσεων email",
+ "Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλώ ελέγξτε τις ρυθμίσεις σας.(Error: %s)",
"You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.",
"Invalid mail address" : "Μη έγκυρη διεύθυνση ταχυδρομείου.",
"No valid group selected" : "Δεν επιλέθηκε έγκυρη ομάδα",
"A user with that name already exists." : "Υπάρχει ήδη χρήστης με το ίδιο όνομα",
+ "To send a password link to the user an email address is required." : "Για να στείλετε ένα σύνδεσμο συνθηματικού στον χρήστη μια διεύθυνση ηλεκτρονικού ταχυδρομείου είναι απαραίτητη.",
"Unable to create user." : "Αδυναμία δημιουργίας χρήστη.",
"Unable to delete user." : "Αδυναμία διαγραφής χρήστη.",
"Error while enabling user." : "Σφάλμα κατά την ενεργοποίηση χρήστη.",
"Error while disabling user." : "Σφάλμα κατά την απενεργοποίηση χρήστη.",
+ "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Για να επιβεβαιώσετε τον λογαριασμό σας στο Twitter, δημοσιεύστε την παρακάτω δημοσίευση στο Twitter (σιγουρευτείτε ότι την δημοσιεύετε χωρίς χαρακτήρες αλλαγής γραμμής)",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"Unable to change full name" : "Δεν ήταν δυνατή η αλλαγή του πλήρους ονόματός σας",
"Unable to change email address" : "Αδυναμία αλλαγής διεύθυνσης ηλεκτρονικής αλληλογραφίας",
@@ -46,13 +55,23 @@ OC.L10N.register(
"Invalid user" : "Μη έγκυρος χρήστης",
"Unable to change mail address" : "Αδυναμία αλλαγής διεύθυνσης αλληλογραφίας",
"Email saved" : "Το email αποθηκεύτηκε ",
+ "%1$s changed your password on %2$s." : "%1$sάλλαξε το συνθηματικό σε %2$s.",
+ "Your password on %s was changed." : "Ο κωδικός πρόσβασης στο %s έχει αλλάξει.",
+ "Your password on %s was reset by an administrator." : "Έχει γίνει επαναφορά του κωδικού πρόσβασης στο %s από τον διαχειριστή.",
"Password changed for %s" : "Το συνθηματικό άλλαξε για τον %s",
"If you did not request this, please contact an administrator." : "Εάν δεν το αιτηθήκατε, παρακαλούμε επικοινωνήστε με τον διαχειριστή.",
+ "Password for %1$s changed on %2$s" : "Ο κωδικός πρόσβασης για το %1$s άλλαξε σε %2$s",
+ "%1$s changed your email address on %2$s." : "%1$sάλλαξε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σε %2$s.",
+ "Your email address on %s was changed." : "Η ηλεκτρονική σας διεύθυνση στο %s έχει αλλάξει.",
+ "Your email address on %s was changed by an administrator." : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας στο %s άλλαξε από τον διαχειριστή.",
+ "Email address changed for %s" : "Το συνθηματικό άλλαξε για τον %s",
"The new email address is %s" : "Η νέα διεύθυνση ηλεκτρονικής αλληλογραφίας είναι %s",
+ "Email address for %1$s changed on %2$s" : "Η διεύθυνση ηλεκτρονικού ταχυδρομείου για το %1$s άλλαξε σε %2$s",
"Welcome aboard" : "Καλώς ήλθατε",
"Welcome aboard %s" : "Καλώς ήλθατε %s",
"Your username is: %s" : "Το όνομα χρήστη σας είναι: %s",
"Set your password" : "Καθορισμός συνθηματικού",
+ "Go to %s" : "Πηγαίνετε στο %s",
"Install Client" : "Εγκατάσταση πελάτη",
"Your %s account was created" : "Ο λογαριασμός %s δημιουργήθηκε",
"Password confirmation is required" : "Απαιτείται επιβεβαίωση συνθηματικού",
@@ -69,6 +88,8 @@ OC.L10N.register(
"All" : "Όλες",
"Update to %s" : "Ενημέρωση σε %s",
"No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση",
+ "The app will be downloaded from the app store" : "Αυτή η εφαρμογή θα ",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι επίσημες εφαρμογές αναπτύσσονται μέσα από την κοινότητα. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για παραγωγική χρήση. ",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Οι εγκεκριμένες εφαρμογές αναπτύχθηκαν από αξιόπιστους προγραμματιστές και έχουν περάσει έναν συνοπτικό έλεγχο ασφαλείας. Διατηρούνται ενεργά σε ένα αποθετήριο ανοιχτού κώδικα και οι συντηρητές θεωρούν οτι είναι σταθερές για κανονική χρήση.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Η εφαρμογή αυτή δεν ελέγχεται για θέματα ασφάλειας και είναι νέα ή είναι γνωστό ότι είναι ασταθής. Η εγκατάσταση γίνεται με δική σας ευθύνη.",
"Disabling app …" : "Γίνεται απενεργοποίηση εφαρμογής...",
@@ -77,8 +98,7 @@ OC.L10N.register(
"Enable" : "Ενεργοποίηση",
"Enabling app …" : "Γίνεται ενεργοποίηση εφαρμογής...",
"Error while enabling app" : "Σφάλμα κατά την ενεργοποίηση της εφαρμογής",
- "Error: this app cannot be enabled because it makes the server unstable" : "Σφάλμα: αυτή η εφαρμογή δεν μπορεί να ενεργοποιηθεί γιατί θα καταστήσει ασταθή τον διακομιστή.",
- "Error: could not disable broken app" : "Σφάλμα: αδυναμία απενεργοποίησης κατεστραμμένης εφαρμογής",
+ "Error: Could not disable broken app" : "Σφάλμα: αδυναμία απενεργοποίησης κατεστραμμένης εφαρμογής",
"Error while disabling broken app" : "Σφάλμα κατά την απενεργοποίηση κατεστραμμένης εφαρμογής",
"Updating...." : "Ενημέρωση...",
"Error while updating app" : "Σφάλμα κατά την ενημέρωση της εφαρμογής",
@@ -93,6 +113,7 @@ OC.L10N.register(
"No apps found for {query}" : "Δεν βρέθηκαν εφαρμογές για {query}",
"Enable all" : "Ενεργοποίηση όλων",
"Disconnect" : "Αποσύνδεση",
+ "Revoke" : "Ανάκληση",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
@@ -103,6 +124,7 @@ OC.L10N.register(
"iPad iOS" : "iPad iOS",
"iOS Client" : "Πελάτης iOS",
"Android Client" : "Πελάτης Android",
+ "Sync client - {os}" : "Συγχρονισμός πελατών - {os}",
"This session" : "Αυτή η συνεδρία",
"Copy" : "Αντιγραφή",
"Copied!" : "Αντιγράφτηκε!",
@@ -120,7 +142,9 @@ OC.L10N.register(
"Only visible to local users" : "Εμφανές μόνο σε τοπικούς χρήστες",
"Only visible to you" : "Εμφανές μόνο σε εσάς",
"Contacts" : "Επαφές",
+ "Visible to local users and to trusted servers" : "Προσθήκη στη λίστα των έμπιστων διακομιστών",
"Public" : "Δημόσιο",
+ "Will be synced to a global and public address book" : "Θα συγχρονιστεί με παγκόσμιο και δημόσιο βιβλίο διευθύνσεων",
"Verify" : "Επαλήθευση",
"Verifying …" : "Γίνεται επαλήθευση ...",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
@@ -135,14 +159,18 @@ OC.L10N.register(
"A valid group name must be provided" : "Πρέπει να δοθεί ένα έγκυρο όνομα ομάδας",
"deleted {groupName}" : "διαγραφή {groupName}",
"undo" : "αναίρεση",
+ "{size} used" : "{μέγεθος} που χρησιμοποιείται",
"never" : "ποτέ",
"deleted {userName}" : "διαγραφή {userName}",
+ "No user found for <strong>{pattern}</strong>" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"Unable to add user to group {group}" : "Αδυναμία προσθήκης χρήστη στην ομάδα {group}",
"Unable to remove user from group {group}" : "Αδυναμία αφαίρεσης χρήστη από την ομάδα {group}",
"Add group" : "Προσθήκη ομάδας",
"no group" : "καμια ομάδα",
"Password successfully changed" : "Το συνθηματικό αλλάχτηκε επιτυχώς",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Η αλλαγή του κωδικού πρόσβασης θα έχει ως αποτέλεσμα το χάσιμο δεδομένων, επειδή η ανάκτηση δεδομένων δεν είναι διαθέσιμη γι' αυτόν τον χρήστη",
+ "Could not change the users email" : "Αδυναμία αλλαγής της ηλεκτρονικής διεύθυνσης του χρήστη",
+ "Error while changing status of {user}" : "Σφάλμα κατά την αλλαγή κατάστασης του {χρήστη}",
"A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
"Error creating user: {message}" : "Σφάλμα δημιουργίας χρήστη: {message}",
"A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
@@ -152,6 +180,7 @@ OC.L10N.register(
"Limit to groups" : "Όριο στις ομάδες",
"This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.",
"by %s" : "από %s",
+ "%s-licensed" : "%s-αδειοδοτημένο",
"Documentation:" : "Τεκμηρίωση:",
"User documentation" : "Τεκμηρίωση Χρήστη",
"Admin documentation" : "Τεκμηρίωση Διαχειριστή",
@@ -159,6 +188,8 @@ OC.L10N.register(
"Report a bug" : "Αναφέρετε σφάλμα",
"Show description …" : "Εμφάνιση περιγραφής",
"Hide description …" : "Απόκρυψη περιγραφής",
+ "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει ελάχιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.",
+ "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει μέγιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:",
"Enable only for specific groups" : "Ενεργοποίηση μόνο για καθορισμένες ομάδες",
"SSL Root Certificates" : "Πιστοποιητικά SSL του Root",
@@ -180,6 +211,7 @@ OC.L10N.register(
"STARTTLS" : "STARTTLS",
"Email server" : "Διακομιστής Email",
"Open documentation" : "Άνοιγμα τεκμηρίωσης.",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Είναι σημαντικό ",
"Send mode" : "Κατάσταση αποστολής",
"Encryption" : "Κρυπτογράφηση",
"From address" : "Από τη διεύθυνση",
@@ -211,11 +243,17 @@ OC.L10N.register(
"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." : "Η ρύθμιση \"μόνο ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό κάποιων ρυθμίσεων μέσω της διεπαφής web. Επιπλέον, το αρχείο πρέπει να γίνει χειροκίνητα εγγράψιμο πριν από κάθε διαδικασία ενημέρωσης.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
"System locale can not be set to a one which supports UTF-8." : "Οι ρυθμίσεις τοποθεσίας συστήματος δεν μπορούν να οριστούν σε κάποιες που δεν υποστηρίζουν UTF-8.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Παρακαλούμε ελέγξτε τις <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">οδηγίες εγκατάστασης ↗</a>, και ελέγξτε για σφάλματα ή προειδοποιήσεις στα <a href=\"%s\">αρχεία καταγραφής</a>.",
"All checks passed." : "Όλοι οι έλεγχοι επιτυχείς.",
+ "Background jobs" : "Εργασίες παρασκηνίου",
"Execute one task with each page loaded" : "Εκτελεί μια διεργασία κάθε φορά που φορτώνεται μια σελίδα",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω HTTP.",
+ "Use system cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.",
"Version" : "Έκδοση",
"Sharing" : "Διαμοιρασμός",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ως διαχειριστής μπορείτε να ρυθμίσετε λεπτομερώς την συμπεριφορά διαμοιρασμού.\nΠαρακαλούμε ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.",
"Allow apps to use the Share API" : "Επιτρέπει την χρήση του API διαμοιρασμού σε εφαρμογές ",
"Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου",
"Allow public uploads" : "Επιτρέπεται το κοινόχρηστο ανέβασμα",
@@ -231,6 +269,7 @@ 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 needs to be entered." : "Να επιτρέπεται η χρήση αυτόματης συμπλήρωσης στο διάλογο διαμοιρασμού. Αν αυτό είναι απενεργοποιημένο θα πρέπει να εισαχθεί το πλήρες όνομα χρήστη.",
+ "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα ",
"Tips & tricks" : "Συμβουλές & τεχνάσματα",
"How to do backups" : "Πώς να κάνετε αντίγραφα ασφαλείας",
"Advanced monitoring" : "Παρακολούθηση για προχωρημένους",
@@ -240,6 +279,7 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Ελέγξτε την ασφάλεια του Nextcloud σας μέσω της σάρωσης ασφαλείας",
"Hardening and security guidance" : "Οδηγίες ασφάλειας και θωράκισης",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Χρησιμοποιείτε <strong>%s</strong> από <strong>%s</strong>",
+ "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Χρησιμοποιείτε <strong>%s</strong> του <strong>%s</strong>(<strong>%s%%</strong>)",
"Profile picture" : "Φωτογραφία προφίλ",
"Upload new" : "Μεταφόρτωση νέου",
"Select from Files" : "Επιλογή από τα Αρχεία",
@@ -253,6 +293,7 @@ OC.L10N.register(
"Email" : "Ηλεκτρονικό ταχυδρομείο",
"Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας",
"No email address set" : "Δεν ορίστηκε διεύθυνση email",
+ "For password reset and notifications" : "Για ανάκτηση συνθηματικού και ειδοποιήσεις",
"Phone number" : "Αριθμός τηλεφώνου",
"Your phone number" : "Ο αριθμός τηλεφώνου σας",
"Address" : "Διεύθυνση",
@@ -268,13 +309,20 @@ OC.L10N.register(
"Change password" : "Αλλαγή συνθηματικού",
"Language" : "Γλώσσα",
"Help translate" : "Βοηθήστε στη μετάφραση",
+ "Web, desktop and mobile clients currently logged in to your account." : " ",
"Device" : "Συσκευή",
"Last activity" : "Τελευταία δραστηριότητα",
"App name" : "Όνομα εφαρμογής",
"Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής",
+ "Use the credentials below to configure your app or device." : "Χρησιμοποιήστε τα παρακάτω διαπιστευτήρια για να ρυθμίσετε την εφαρμογή ή την συσκευή σας.",
"For security reasons this password will only be shown once." : "Για λόγους ασφαλείας αυτό το συνθηματικό θα εμφανιστεί μόνο μια φορά.",
"Username" : "Όνομα χρήστη",
"Done" : "Ολοκληρώθηκε",
+ "Follow us on Google+" : "Ακολουθήστε μας στο Google+",
+ "Like our Facebook page" : "Ακολουθήστε μας στην σελίδα μας στο facebook!",
+ "Follow us on Twitter" : "Ακολουθήστε μας στο Twitter",
+ "Check out our blog" : "Επισκεφθείτε το ιστολόγιό μας!",
+ "Subscribe to our newsletter" : "Εγγραφείτε στο ενημερωτικό δελτίο μας!",
"Settings" : "Ρυθμίσεις",
"Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης",
"Show user backend" : "Εμφάνιση χρήστη συστήματος υποστήριξης",
@@ -336,6 +384,7 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συτήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"Uninstall app" : "Απεγκατάσταση εφαρμογης",
+ "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Χαίρεται,<br><br>απλά σας κάνουμε γνωστό ότι διαθέτετε έναν %s λογαριασμό.<br><br>Το όνομά σας είναι: %s<br>Έχετε πρόσβαση: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Χαιρετισμούς!",
"For password recovery and notifications" : "Η ανάκτηση του συνθηματικού και οι ειδοποιήσεις",
"Your website" : "Η ιστοσελίδα σας",
@@ -344,6 +393,7 @@ OC.L10N.register(
"Desktop client" : "Πελάτης σταθερού υπολογιστή",
"Android app" : "Εφαρμογή Android",
"iOS app" : "Εφαρμογή iOS",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Εάν επιθυμείτε να υποστηρίξετε το έργο {contributeopen}συμμετέχετε στην ανάπτυξη{linkclose} ή {contributeopen}διαδώστε(linkclose}!",
"Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά",
"Name" : "Όνομα",
"Follow us on Google Plus!" : "Ακολουθήστε μας στο Google Plus!",
diff --git a/settings/l10n/el.json b/settings/l10n/el.json
index f61b56cd365..3889f1fda13 100644
--- a/settings/l10n/el.json
+++ b/settings/l10n/el.json
@@ -6,6 +6,8 @@
"You changed your email address" : "Έχετε αλλάξει τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας",
"Your email address was changed by an administrator" : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας άλλαξε από τον διαχειριστή",
"Security" : "Ασφάλεια",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Μία προσπάθεια σύνδεσης με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων απέτυχε (%1$s)",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ο δικός σας <ισχυρός>κωδικός πρόσβασης</ισχυρός>ή<ισχυρός>αλληλογραφίας</ισχυρός>τροποποιήθηκε",
"Your apps" : "Οι εφαρμογές σας",
"Enabled apps" : "Ενεργοποιημένες εφαρμογές",
@@ -16,7 +18,9 @@
"No user supplied" : "Δεν εισήχθη χρήστης",
"Unable to change password" : "Αδυναμία αλλαγής συνθηματικού",
"Authentication error" : "Σφάλμα πιστοποίησης",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Παρακαλώ παρέχετε έναν κωδικό ανάκτησης διαχειριστή, διαφορετικά όλα τα δεδομένα χρήστη θα χαθούν.",
"Wrong admin recovery password. Please check the password and try again." : "Λάθος κωδικός ανάκτησης διαχειριστή. Παρακαλώ ελέγξτε τον κωδικό και δοκιμάστε ξανά.",
+ "Backend doesn't support password change, but the user's encryption key was updated." : "Το σύστημα δεν υποστηρίζει αλλαγή κωδικού, αλλά το κλειδί κρυπτογράφησης του χρήστη ενημερώθηκε επιτυχώς.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ",
"Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "Το cURL χρησιμοποιεί μια παρωχημένη %s έκδοση (%s). Παρακαλούμε αναβαθμίστε το λειτουργικό σας σύστημα αλλιώς δυνατότητες όπως %s δεν θα δουλέψουν αξιόπιστα.",
@@ -26,16 +30,21 @@
"Unable to add group." : "Αδυναμία προσθήκης ομάδας.",
"Unable to delete group." : "Αδυναμία διαγραφής ομάδας.",
"Invalid SMTP password." : "Μη έγκυρο συνθηματικό SMTP.",
+ "Well done, %s!" : "Συγχαρητήρια, %s!",
+ "If you received this email, the email configuration seems to be correct." : "Εάν λάβατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, ",
"Email setting test" : "Δοκιμή ρυθμίσεων email",
+ "Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλώ ελέγξτε τις ρυθμίσεις σας.(Error: %s)",
"You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.",
"Invalid mail address" : "Μη έγκυρη διεύθυνση ταχυδρομείου.",
"No valid group selected" : "Δεν επιλέθηκε έγκυρη ομάδα",
"A user with that name already exists." : "Υπάρχει ήδη χρήστης με το ίδιο όνομα",
+ "To send a password link to the user an email address is required." : "Για να στείλετε ένα σύνδεσμο συνθηματικού στον χρήστη μια διεύθυνση ηλεκτρονικού ταχυδρομείου είναι απαραίτητη.",
"Unable to create user." : "Αδυναμία δημιουργίας χρήστη.",
"Unable to delete user." : "Αδυναμία διαγραφής χρήστη.",
"Error while enabling user." : "Σφάλμα κατά την ενεργοποίηση χρήστη.",
"Error while disabling user." : "Σφάλμα κατά την απενεργοποίηση χρήστη.",
+ "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Για να επιβεβαιώσετε τον λογαριασμό σας στο Twitter, δημοσιεύστε την παρακάτω δημοσίευση στο Twitter (σιγουρευτείτε ότι την δημοσιεύετε χωρίς χαρακτήρες αλλαγής γραμμής)",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"Unable to change full name" : "Δεν ήταν δυνατή η αλλαγή του πλήρους ονόματός σας",
"Unable to change email address" : "Αδυναμία αλλαγής διεύθυνσης ηλεκτρονικής αλληλογραφίας",
@@ -44,13 +53,23 @@
"Invalid user" : "Μη έγκυρος χρήστης",
"Unable to change mail address" : "Αδυναμία αλλαγής διεύθυνσης αλληλογραφίας",
"Email saved" : "Το email αποθηκεύτηκε ",
+ "%1$s changed your password on %2$s." : "%1$sάλλαξε το συνθηματικό σε %2$s.",
+ "Your password on %s was changed." : "Ο κωδικός πρόσβασης στο %s έχει αλλάξει.",
+ "Your password on %s was reset by an administrator." : "Έχει γίνει επαναφορά του κωδικού πρόσβασης στο %s από τον διαχειριστή.",
"Password changed for %s" : "Το συνθηματικό άλλαξε για τον %s",
"If you did not request this, please contact an administrator." : "Εάν δεν το αιτηθήκατε, παρακαλούμε επικοινωνήστε με τον διαχειριστή.",
+ "Password for %1$s changed on %2$s" : "Ο κωδικός πρόσβασης για το %1$s άλλαξε σε %2$s",
+ "%1$s changed your email address on %2$s." : "%1$sάλλαξε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σε %2$s.",
+ "Your email address on %s was changed." : "Η ηλεκτρονική σας διεύθυνση στο %s έχει αλλάξει.",
+ "Your email address on %s was changed by an administrator." : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας στο %s άλλαξε από τον διαχειριστή.",
+ "Email address changed for %s" : "Το συνθηματικό άλλαξε για τον %s",
"The new email address is %s" : "Η νέα διεύθυνση ηλεκτρονικής αλληλογραφίας είναι %s",
+ "Email address for %1$s changed on %2$s" : "Η διεύθυνση ηλεκτρονικού ταχυδρομείου για το %1$s άλλαξε σε %2$s",
"Welcome aboard" : "Καλώς ήλθατε",
"Welcome aboard %s" : "Καλώς ήλθατε %s",
"Your username is: %s" : "Το όνομα χρήστη σας είναι: %s",
"Set your password" : "Καθορισμός συνθηματικού",
+ "Go to %s" : "Πηγαίνετε στο %s",
"Install Client" : "Εγκατάσταση πελάτη",
"Your %s account was created" : "Ο λογαριασμός %s δημιουργήθηκε",
"Password confirmation is required" : "Απαιτείται επιβεβαίωση συνθηματικού",
@@ -67,6 +86,8 @@
"All" : "Όλες",
"Update to %s" : "Ενημέρωση σε %s",
"No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση",
+ "The app will be downloaded from the app store" : "Αυτή η εφαρμογή θα ",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι επίσημες εφαρμογές αναπτύσσονται μέσα από την κοινότητα. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για παραγωγική χρήση. ",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Οι εγκεκριμένες εφαρμογές αναπτύχθηκαν από αξιόπιστους προγραμματιστές και έχουν περάσει έναν συνοπτικό έλεγχο ασφαλείας. Διατηρούνται ενεργά σε ένα αποθετήριο ανοιχτού κώδικα και οι συντηρητές θεωρούν οτι είναι σταθερές για κανονική χρήση.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Η εφαρμογή αυτή δεν ελέγχεται για θέματα ασφάλειας και είναι νέα ή είναι γνωστό ότι είναι ασταθής. Η εγκατάσταση γίνεται με δική σας ευθύνη.",
"Disabling app …" : "Γίνεται απενεργοποίηση εφαρμογής...",
@@ -75,8 +96,7 @@
"Enable" : "Ενεργοποίηση",
"Enabling app …" : "Γίνεται ενεργοποίηση εφαρμογής...",
"Error while enabling app" : "Σφάλμα κατά την ενεργοποίηση της εφαρμογής",
- "Error: this app cannot be enabled because it makes the server unstable" : "Σφάλμα: αυτή η εφαρμογή δεν μπορεί να ενεργοποιηθεί γιατί θα καταστήσει ασταθή τον διακομιστή.",
- "Error: could not disable broken app" : "Σφάλμα: αδυναμία απενεργοποίησης κατεστραμμένης εφαρμογής",
+ "Error: Could not disable broken app" : "Σφάλμα: αδυναμία απενεργοποίησης κατεστραμμένης εφαρμογής",
"Error while disabling broken app" : "Σφάλμα κατά την απενεργοποίηση κατεστραμμένης εφαρμογής",
"Updating...." : "Ενημέρωση...",
"Error while updating app" : "Σφάλμα κατά την ενημέρωση της εφαρμογής",
@@ -91,6 +111,7 @@
"No apps found for {query}" : "Δεν βρέθηκαν εφαρμογές για {query}",
"Enable all" : "Ενεργοποίηση όλων",
"Disconnect" : "Αποσύνδεση",
+ "Revoke" : "Ανάκληση",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
@@ -101,6 +122,7 @@
"iPad iOS" : "iPad iOS",
"iOS Client" : "Πελάτης iOS",
"Android Client" : "Πελάτης Android",
+ "Sync client - {os}" : "Συγχρονισμός πελατών - {os}",
"This session" : "Αυτή η συνεδρία",
"Copy" : "Αντιγραφή",
"Copied!" : "Αντιγράφτηκε!",
@@ -118,7 +140,9 @@
"Only visible to local users" : "Εμφανές μόνο σε τοπικούς χρήστες",
"Only visible to you" : "Εμφανές μόνο σε εσάς",
"Contacts" : "Επαφές",
+ "Visible to local users and to trusted servers" : "Προσθήκη στη λίστα των έμπιστων διακομιστών",
"Public" : "Δημόσιο",
+ "Will be synced to a global and public address book" : "Θα συγχρονιστεί με παγκόσμιο και δημόσιο βιβλίο διευθύνσεων",
"Verify" : "Επαλήθευση",
"Verifying …" : "Γίνεται επαλήθευση ...",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
@@ -133,14 +157,18 @@
"A valid group name must be provided" : "Πρέπει να δοθεί ένα έγκυρο όνομα ομάδας",
"deleted {groupName}" : "διαγραφή {groupName}",
"undo" : "αναίρεση",
+ "{size} used" : "{μέγεθος} που χρησιμοποιείται",
"never" : "ποτέ",
"deleted {userName}" : "διαγραφή {userName}",
+ "No user found for <strong>{pattern}</strong>" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"Unable to add user to group {group}" : "Αδυναμία προσθήκης χρήστη στην ομάδα {group}",
"Unable to remove user from group {group}" : "Αδυναμία αφαίρεσης χρήστη από την ομάδα {group}",
"Add group" : "Προσθήκη ομάδας",
"no group" : "καμια ομάδα",
"Password successfully changed" : "Το συνθηματικό αλλάχτηκε επιτυχώς",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Η αλλαγή του κωδικού πρόσβασης θα έχει ως αποτέλεσμα το χάσιμο δεδομένων, επειδή η ανάκτηση δεδομένων δεν είναι διαθέσιμη γι' αυτόν τον χρήστη",
+ "Could not change the users email" : "Αδυναμία αλλαγής της ηλεκτρονικής διεύθυνσης του χρήστη",
+ "Error while changing status of {user}" : "Σφάλμα κατά την αλλαγή κατάστασης του {χρήστη}",
"A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
"Error creating user: {message}" : "Σφάλμα δημιουργίας χρήστη: {message}",
"A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
@@ -150,6 +178,7 @@
"Limit to groups" : "Όριο στις ομάδες",
"This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.",
"by %s" : "από %s",
+ "%s-licensed" : "%s-αδειοδοτημένο",
"Documentation:" : "Τεκμηρίωση:",
"User documentation" : "Τεκμηρίωση Χρήστη",
"Admin documentation" : "Τεκμηρίωση Διαχειριστή",
@@ -157,6 +186,8 @@
"Report a bug" : "Αναφέρετε σφάλμα",
"Show description …" : "Εμφάνιση περιγραφής",
"Hide description …" : "Απόκρυψη περιγραφής",
+ "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει ελάχιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.",
+ "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει μέγιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:",
"Enable only for specific groups" : "Ενεργοποίηση μόνο για καθορισμένες ομάδες",
"SSL Root Certificates" : "Πιστοποιητικά SSL του Root",
@@ -178,6 +209,7 @@
"STARTTLS" : "STARTTLS",
"Email server" : "Διακομιστής Email",
"Open documentation" : "Άνοιγμα τεκμηρίωσης.",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Είναι σημαντικό ",
"Send mode" : "Κατάσταση αποστολής",
"Encryption" : "Κρυπτογράφηση",
"From address" : "Από τη διεύθυνση",
@@ -209,11 +241,17 @@
"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." : "Η ρύθμιση \"μόνο ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό κάποιων ρυθμίσεων μέσω της διεπαφής web. Επιπλέον, το αρχείο πρέπει να γίνει χειροκίνητα εγγράψιμο πριν από κάθε διαδικασία ενημέρωσης.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
"System locale can not be set to a one which supports UTF-8." : "Οι ρυθμίσεις τοποθεσίας συστήματος δεν μπορούν να οριστούν σε κάποιες που δεν υποστηρίζουν UTF-8.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Παρακαλούμε ελέγξτε τις <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">οδηγίες εγκατάστασης ↗</a>, και ελέγξτε για σφάλματα ή προειδοποιήσεις στα <a href=\"%s\">αρχεία καταγραφής</a>.",
"All checks passed." : "Όλοι οι έλεγχοι επιτυχείς.",
+ "Background jobs" : "Εργασίες παρασκηνίου",
"Execute one task with each page loaded" : "Εκτελεί μια διεργασία κάθε φορά που φορτώνεται μια σελίδα",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω HTTP.",
+ "Use system cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.",
"Version" : "Έκδοση",
"Sharing" : "Διαμοιρασμός",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ως διαχειριστής μπορείτε να ρυθμίσετε λεπτομερώς την συμπεριφορά διαμοιρασμού.\nΠαρακαλούμε ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.",
"Allow apps to use the Share API" : "Επιτρέπει την χρήση του API διαμοιρασμού σε εφαρμογές ",
"Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου",
"Allow public uploads" : "Επιτρέπεται το κοινόχρηστο ανέβασμα",
@@ -229,6 +267,7 @@
"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 needs to be entered." : "Να επιτρέπεται η χρήση αυτόματης συμπλήρωσης στο διάλογο διαμοιρασμού. Αν αυτό είναι απενεργοποιημένο θα πρέπει να εισαχθεί το πλήρες όνομα χρήστη.",
+ "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα ",
"Tips & tricks" : "Συμβουλές & τεχνάσματα",
"How to do backups" : "Πώς να κάνετε αντίγραφα ασφαλείας",
"Advanced monitoring" : "Παρακολούθηση για προχωρημένους",
@@ -238,6 +277,7 @@
"Check the security of your Nextcloud over our security scan" : "Ελέγξτε την ασφάλεια του Nextcloud σας μέσω της σάρωσης ασφαλείας",
"Hardening and security guidance" : "Οδηγίες ασφάλειας και θωράκισης",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Χρησιμοποιείτε <strong>%s</strong> από <strong>%s</strong>",
+ "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Χρησιμοποιείτε <strong>%s</strong> του <strong>%s</strong>(<strong>%s%%</strong>)",
"Profile picture" : "Φωτογραφία προφίλ",
"Upload new" : "Μεταφόρτωση νέου",
"Select from Files" : "Επιλογή από τα Αρχεία",
@@ -251,6 +291,7 @@
"Email" : "Ηλεκτρονικό ταχυδρομείο",
"Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας",
"No email address set" : "Δεν ορίστηκε διεύθυνση email",
+ "For password reset and notifications" : "Για ανάκτηση συνθηματικού και ειδοποιήσεις",
"Phone number" : "Αριθμός τηλεφώνου",
"Your phone number" : "Ο αριθμός τηλεφώνου σας",
"Address" : "Διεύθυνση",
@@ -266,13 +307,20 @@
"Change password" : "Αλλαγή συνθηματικού",
"Language" : "Γλώσσα",
"Help translate" : "Βοηθήστε στη μετάφραση",
+ "Web, desktop and mobile clients currently logged in to your account." : " ",
"Device" : "Συσκευή",
"Last activity" : "Τελευταία δραστηριότητα",
"App name" : "Όνομα εφαρμογής",
"Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής",
+ "Use the credentials below to configure your app or device." : "Χρησιμοποιήστε τα παρακάτω διαπιστευτήρια για να ρυθμίσετε την εφαρμογή ή την συσκευή σας.",
"For security reasons this password will only be shown once." : "Για λόγους ασφαλείας αυτό το συνθηματικό θα εμφανιστεί μόνο μια φορά.",
"Username" : "Όνομα χρήστη",
"Done" : "Ολοκληρώθηκε",
+ "Follow us on Google+" : "Ακολουθήστε μας στο Google+",
+ "Like our Facebook page" : "Ακολουθήστε μας στην σελίδα μας στο facebook!",
+ "Follow us on Twitter" : "Ακολουθήστε μας στο Twitter",
+ "Check out our blog" : "Επισκεφθείτε το ιστολόγιό μας!",
+ "Subscribe to our newsletter" : "Εγγραφείτε στο ενημερωτικό δελτίο μας!",
"Settings" : "Ρυθμίσεις",
"Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης",
"Show user backend" : "Εμφάνιση χρήστη συστήματος υποστήριξης",
@@ -334,6 +382,7 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συτήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"Uninstall app" : "Απεγκατάσταση εφαρμογης",
+ "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Χαίρεται,<br><br>απλά σας κάνουμε γνωστό ότι διαθέτετε έναν %s λογαριασμό.<br><br>Το όνομά σας είναι: %s<br>Έχετε πρόσβαση: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Χαιρετισμούς!",
"For password recovery and notifications" : "Η ανάκτηση του συνθηματικού και οι ειδοποιήσεις",
"Your website" : "Η ιστοσελίδα σας",
@@ -342,6 +391,7 @@
"Desktop client" : "Πελάτης σταθερού υπολογιστή",
"Android app" : "Εφαρμογή Android",
"iOS app" : "Εφαρμογή iOS",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Εάν επιθυμείτε να υποστηρίξετε το έργο {contributeopen}συμμετέχετε στην ανάπτυξη{linkclose} ή {contributeopen}διαδώστε(linkclose}!",
"Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά",
"Name" : "Όνομα",
"Follow us on Google Plus!" : "Ακολουθήστε μας στο Google Plus!",
diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js
index 609c14ec13e..768afb4f51a 100644
--- a/settings/l10n/en_GB.js
+++ b/settings/l10n/en_GB.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Enable",
"Enabling app …" : "Enabling app …",
"Error while enabling app" : "Error whilst enabling app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: this app cannot be enabled because it makes the server unstable",
- "Error: could not disable broken app" : "Error: could not disable broken app",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable",
+ "Error: Could not disable broken app" : "Error: Could not disable broken app",
"Error while disabling broken app" : "Error whilst disabling broken app",
"Updating...." : "Updating....",
"Error while updating app" : "Error whilst updating app",
@@ -249,7 +249,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.",
"Start migration" : "Start migration",
"Security & setup warnings" : "Security & setup warnings",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm.",
"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." : "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.",
@@ -440,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Subscribe to our newsletter!",
"Show last log in" : "Show last log in",
"Verifying" : "Verifying",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobile clients and app specific passwords that currently have access to your account.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too.",
diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json
index 7fbebc94a3a..3b49b6a65d9 100644
--- a/settings/l10n/en_GB.json
+++ b/settings/l10n/en_GB.json
@@ -99,8 +99,8 @@
"Enable" : "Enable",
"Enabling app …" : "Enabling app …",
"Error while enabling app" : "Error whilst enabling app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: this app cannot be enabled because it makes the server unstable",
- "Error: could not disable broken app" : "Error: could not disable broken app",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable",
+ "Error: Could not disable broken app" : "Error: Could not disable broken app",
"Error while disabling broken app" : "Error whilst disabling broken app",
"Updating...." : "Updating....",
"Error while updating app" : "Error whilst updating app",
@@ -247,7 +247,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.",
"Start migration" : "Start migration",
"Security & setup warnings" : "Security & setup warnings",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm.",
"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." : "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.",
@@ -438,6 +437,7 @@
"Subscribe to our newsletter!" : "Subscribe to our newsletter!",
"Show last log in" : "Show last log in",
"Verifying" : "Verifying",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobile clients and app specific passwords that currently have access to your account.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too.",
diff --git a/settings/l10n/es.js b/settings/l10n/es.js
index 8d3d60f64c2..39e89675e20 100644
--- a/settings/l10n/es.js
+++ b/settings/l10n/es.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Activar",
"Enabling app …" : "Activando app ...",
"Error while enabling app" : "Error mientras se activaba la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: Esta App no puede habilitarse porque el servidor se volveria inestable.",
- "Error: could not disable broken app" : "Error: No puedo deshabilitar la App dañada.",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor",
+ "Error: Could not disable broken app" : "Error: No se ha podido desactivar una app estropeada",
"Error while disabling broken app" : "Error mientras deshabilitaba la App dañada",
"Updating...." : "Actualizando...",
"Error while updating app" : "Error mientras se actualizaba la aplicación",
@@ -249,13 +249,13 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.",
"Start migration" : "Iniciar migración",
"Security & setup warnings" : "Avisos de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo devuelve una respuesta vacía.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para ver notas de configuración de PHP y comprobar la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm.",
"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." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para quitar bloques de documento ('strip inline doc blocks'). Esto hará que varias aplicaciones principales estén inaccesibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no se ejecuta con el nivel de aislamiento de transacción \"READ COMMITTED\" . Ésto puede causar problemas cuando múltiples acciones se ejecutan en paralelo.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$sestá instalado por debajo de la versión %2$s, por motivos de estabilidad y rendimiento se recomienda actualizar a una versión más moderna de %1$s.",
"The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Es muy recomendable activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional está desactivado, esto podría conducir a problemas con 'race conditions'. Activa 'filelocking.enabled' en 'config.php' para solucionar esos problemas. Mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a> para más información.",
"System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.",
@@ -428,8 +428,8 @@ OC.L10N.register(
"Desktop client" : "Cliente de escritorio",
"Android app" : "Aplicación de Android",
"iOS app" : "La aplicación de iOS",
- "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Si deseas apoyar el proyecto, ¡{contributeopen}únete al desarrollo{linkclose} o {contributeopen}difúnde la palabra{linkclose}!",
- "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Si deseas apoyar el proyecto, ¡{contributeopen}únete al desarrollo{linkclose} o {contributeopen}difunde la palabra{linkclose}!",
+ "Show First Run Wizard again" : "Mostrar nuevamente el asistente de ejecución inicial",
"Passcodes that give an app or device permissions to access your account." : "Código de paso que da permisos a una app o dispositivo para acceder a tu cuenta.",
"Name" : "Nombre",
"Follow us on Google Plus!" : "¡Síganos en Google+!",
@@ -439,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Recomendamos encarecidamente activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Contraseñas específicas para los clientes web, de escritorio y móviles, y también apps que tienen actualmente acceso a tu cuenta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para apps para que no tengas que dar tu propia contraseña. También puedes revocarlas individualmente.",
diff --git a/settings/l10n/es.json b/settings/l10n/es.json
index 5225b8016d9..b9419ca63bb 100644
--- a/settings/l10n/es.json
+++ b/settings/l10n/es.json
@@ -99,8 +99,8 @@
"Enable" : "Activar",
"Enabling app …" : "Activando app ...",
"Error while enabling app" : "Error mientras se activaba la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: Esta App no puede habilitarse porque el servidor se volveria inestable.",
- "Error: could not disable broken app" : "Error: No puedo deshabilitar la App dañada.",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor",
+ "Error: Could not disable broken app" : "Error: No se ha podido desactivar una app estropeada",
"Error while disabling broken app" : "Error mientras deshabilitaba la App dañada",
"Updating...." : "Actualizando...",
"Error while updating app" : "Error mientras se actualizaba la aplicación",
@@ -247,13 +247,13 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.",
"Start migration" : "Iniciar migración",
"Security & setup warnings" : "Avisos de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo devuelve una respuesta vacía.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para ver notas de configuración de PHP y comprobar la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm.",
"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." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para quitar bloques de documento ('strip inline doc blocks'). Esto hará que varias aplicaciones principales estén inaccesibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no se ejecuta con el nivel de aislamiento de transacción \"READ COMMITTED\" . Ésto puede causar problemas cuando múltiples acciones se ejecutan en paralelo.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$sestá instalado por debajo de la versión %2$s, por motivos de estabilidad y rendimiento se recomienda actualizar a una versión más moderna de %1$s.",
"The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Es muy recomendable activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional está desactivado, esto podría conducir a problemas con 'race conditions'. Activa 'filelocking.enabled' en 'config.php' para solucionar esos problemas. Mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a> para más información.",
"System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.",
@@ -426,8 +426,8 @@
"Desktop client" : "Cliente de escritorio",
"Android app" : "Aplicación de Android",
"iOS app" : "La aplicación de iOS",
- "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Si deseas apoyar el proyecto, ¡{contributeopen}únete al desarrollo{linkclose} o {contributeopen}difúnde la palabra{linkclose}!",
- "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Si deseas apoyar el proyecto, ¡{contributeopen}únete al desarrollo{linkclose} o {contributeopen}difunde la palabra{linkclose}!",
+ "Show First Run Wizard again" : "Mostrar nuevamente el asistente de ejecución inicial",
"Passcodes that give an app or device permissions to access your account." : "Código de paso que da permisos a una app o dispositivo para acceder a tu cuenta.",
"Name" : "Nombre",
"Follow us on Google Plus!" : "¡Síganos en Google+!",
@@ -437,6 +437,7 @@
"Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Recomendamos encarecidamente activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Contraseñas específicas para los clientes web, de escritorio y móviles, y también apps que tienen actualmente acceso a tu cuenta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para apps para que no tengas que dar tu propia contraseña. También puedes revocarlas individualmente.",
diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js
index 32bedf65531..88242cb589b 100644
--- a/settings/l10n/es_AR.js
+++ b/settings/l10n/es_AR.js
@@ -101,8 +101,6 @@ OC.L10N.register(
"Enable" : "Habilitar",
"Enabling app …" : "Habilitando aplicación ...",
"Error while enabling app" : "Se presentó un error al habilitar la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
- "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
"Updating...." : "Actualizando....",
"Error while updating app" : "Se presentó un error al actualizar la aplicación",
@@ -247,7 +245,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ",
"Start migration" : "Comenzar migración",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ",
"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." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.",
@@ -422,6 +419,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "¡Suscribase a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí usted puede generar contraseñas individuales para las aplicaciones para que usted no tenga que dar su contraseña. También puede revocalras individualmente. ",
"Follow us on Google+!" : "¡Síganos en Google+!",
diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json
index 84266df415a..e0e2397f47e 100644
--- a/settings/l10n/es_AR.json
+++ b/settings/l10n/es_AR.json
@@ -99,8 +99,6 @@
"Enable" : "Habilitar",
"Enabling app …" : "Habilitando aplicación ...",
"Error while enabling app" : "Se presentó un error al habilitar la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
- "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
"Updating...." : "Actualizando....",
"Error while updating app" : "Se presentó un error al actualizar la aplicación",
@@ -245,7 +243,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ",
"Start migration" : "Comenzar migración",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ",
"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." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.",
@@ -420,6 +417,7 @@
"Subscribe to our newsletter!" : "¡Suscribase a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí usted puede generar contraseñas individuales para las aplicaciones para que usted no tenga que dar su contraseña. También puede revocalras individualmente. ",
"Follow us on Google+!" : "¡Síganos en Google+!",
diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js
index c1df463f1bd..56965b165cf 100644
--- a/settings/l10n/es_MX.js
+++ b/settings/l10n/es_MX.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Habilitar",
"Enabling app …" : "Habilitando aplicación ...",
"Error while enabling app" : "Se presentó un error al habilitar la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
- "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
+ "Error: Could not disable broken app" : "Error: No fue posible deshabilitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
"Updating...." : "Actualizando....",
"Error while updating app" : "Se presentó un error al actualizar la aplicación",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ",
"Start migration" : "Iniciar migración",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Es importante que todo esté configurado correctamente por la seguridad y desempeño de tu instancia. Para ayudarte con esto, estamos haciendo unas validaciones automáticas. Por favor ve la sección de Consejos y Trucos así como la documentación para más información.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP no parece estar configurado correctamente para consultar las variables de ambiente. La prueba con getenv(\"PATH\") sólo regresa una respuesta vacía.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor verifica la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> en relación a las notas de configuración de PHP y la configuración de PHP en tu servidorr, especialmente cuando se usa php-fpm.",
"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." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezca tener permisos de escritura manualmente en cada actualización. ",
@@ -440,8 +440,9 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Te recomendamos ámpliamente que habilites este módulo para obtener los mejores resultados en la detección de tipos MIME.",
- "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Los clientes web, móviles y de escritorio así como contraseñas de aplicación específica que tienen acceso a tu cuenta.",
+ "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "A continuación se presenta un listado de las sesiones, dispositivos y eventos que se han presentado en tu cuenta. ",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para las aplicaciones para que no tengas que dar tu contraseña. También puedes revocalras individualmente. ",
"Follow us on Google+!" : "¡Síguenos en Google+!",
"Follow us on Twitter!" : "¡Síguenos en Twitter!",
diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json
index 361a602a2f3..ced4947a30a 100644
--- a/settings/l10n/es_MX.json
+++ b/settings/l10n/es_MX.json
@@ -99,8 +99,8 @@
"Enable" : "Habilitar",
"Enabling app …" : "Habilitando aplicación ...",
"Error while enabling app" : "Se presentó un error al habilitar la aplicación",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
- "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota",
+ "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
+ "Error: Could not disable broken app" : "Error: No fue posible deshabilitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
"Updating...." : "Actualizando....",
"Error while updating app" : "Se presentó un error al actualizar la aplicación",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ",
"Start migration" : "Iniciar migración",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Es importante que todo esté configurado correctamente por la seguridad y desempeño de tu instancia. Para ayudarte con esto, estamos haciendo unas validaciones automáticas. Por favor ve la sección de Consejos y Trucos así como la documentación para más información.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP no parece estar configurado correctamente para consultar las variables de ambiente. La prueba con getenv(\"PATH\") sólo regresa una respuesta vacía.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor verifica la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> en relación a las notas de configuración de PHP y la configuración de PHP en tu servidorr, especialmente cuando se usa php-fpm.",
"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." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezca tener permisos de escritura manualmente en cada actualización. ",
@@ -438,8 +438,9 @@
"Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!",
"Show last log in" : "Mostrar el último inicio de sesión",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Te recomendamos ámpliamente que habilites este módulo para obtener los mejores resultados en la detección de tipos MIME.",
- "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Los clientes web, móviles y de escritorio así como contraseñas de aplicación específica que tienen acceso a tu cuenta.",
+ "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "A continuación se presenta un listado de las sesiones, dispositivos y eventos que se han presentado en tu cuenta. ",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para las aplicaciones para que no tengas que dar tu contraseña. También puedes revocalras individualmente. ",
"Follow us on Google+!" : "¡Síguenos en Google+!",
"Follow us on Twitter!" : "¡Síguenos en Twitter!",
diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js
index d32a5d6d28d..69f8d402fbe 100644
--- a/settings/l10n/eu.js
+++ b/settings/l10n/eu.js
@@ -56,8 +56,6 @@ OC.L10N.register(
"Enable" : "Gaitu",
"Enabling app …" : "Aplikazioa gaitzen...",
"Error while enabling app" : "Erroea izan da aplikazioa gaitzerakoan",
- "Error: this app cannot be enabled because it makes the server unstable" : "Akatsa: Aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako",
- "Error: could not disable broken app" : "Akatsa: ezin da hondatutako aplikazioa desgaitu",
"Error while disabling broken app" : "Akatsa hondatutako aplikazioa desgaitzerakoan",
"Updating...." : "Eguneratzen...",
"Error while updating app" : "Errorea aplikazioa eguneratzen zen bitartean",
diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json
index 80733a71b4a..5807c1a50a8 100644
--- a/settings/l10n/eu.json
+++ b/settings/l10n/eu.json
@@ -54,8 +54,6 @@
"Enable" : "Gaitu",
"Enabling app …" : "Aplikazioa gaitzen...",
"Error while enabling app" : "Erroea izan da aplikazioa gaitzerakoan",
- "Error: this app cannot be enabled because it makes the server unstable" : "Akatsa: Aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako",
- "Error: could not disable broken app" : "Akatsa: ezin da hondatutako aplikazioa desgaitu",
"Error while disabling broken app" : "Akatsa hondatutako aplikazioa desgaitzerakoan",
"Updating...." : "Eguneratzen...",
"Error while updating app" : "Errorea aplikazioa eguneratzen zen bitartean",
diff --git a/settings/l10n/fi.js b/settings/l10n/fi.js
index 328b0116f01..0c3cd0f680c 100644
--- a/settings/l10n/fi.js
+++ b/settings/l10n/fi.js
@@ -95,8 +95,6 @@ OC.L10N.register(
"Enable" : "Käytä",
"Enabling app …" : "Otetaan sovellusta käyttöön...",
"Error while enabling app" : "Virhe ottaessa sovellusta käyttöön",
- "Error: this app cannot be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan",
- "Error: could not disable broken app" : "Virhe: rikkinäisen sovelluksen poistaminen käytöstä ei onnistunut",
"Error while disabling broken app" : "Virhe rikkinäistä sovellusta käytöstä poistaessa",
"Updating...." : "Päivitetään...",
"Error while updating app" : "Virhe sovellusta päivittäessä",
diff --git a/settings/l10n/fi.json b/settings/l10n/fi.json
index 29a01413bce..169955b71c3 100644
--- a/settings/l10n/fi.json
+++ b/settings/l10n/fi.json
@@ -93,8 +93,6 @@
"Enable" : "Käytä",
"Enabling app …" : "Otetaan sovellusta käyttöön...",
"Error while enabling app" : "Virhe ottaessa sovellusta käyttöön",
- "Error: this app cannot be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan",
- "Error: could not disable broken app" : "Virhe: rikkinäisen sovelluksen poistaminen käytöstä ei onnistunut",
"Error while disabling broken app" : "Virhe rikkinäistä sovellusta käytöstä poistaessa",
"Updating...." : "Päivitetään...",
"Error while updating app" : "Virhe sovellusta päivittäessä",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index 491347cce61..22069fcc180 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Activer",
"Enabling app …" : "Activation de l'application...",
"Error while enabling app" : "Erreur lors de l'activation de l'application",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activer car cela le serveur instable .",
- "Error: could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé ",
+ "Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
+ "Error: Could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé",
"Error while disabling broken app" : "Erreur lors de la désactivation de l'application cassé .",
"Updating...." : "Mise à jour...",
"Error while updating app" : "Erreur lors de la mise à jour de l'application",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.",
"Start migration" : "Démarrer la migration",
"Security & setup warnings" : "Avertissements de sécurité & configuration",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider dans cette tâche, nous faisons des vérifications automatiques. Veuillez consulter la section Trucs et Astuces et la documentation pour plus d'informations.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer PHP sur votre serveur, en particulier en cas d'utilisation de php-fpm.",
"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." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.",
@@ -440,6 +440,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!",
"Show last log in" : "Montrer la dernière connexion",
"Verifying" : "Vérification en cours",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clients web, desktop, mobiles et mots de passe spécifiques d'application qui ont actuellement accès à votre compte.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Ici vous pouvez générer des mots de passe individuels pour les applications pour éviter de communiquer votre mot de passe. Vous pouvez aussi les révoquer individuellement.",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index ce9fba59e72..7634f833c08 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -99,8 +99,8 @@
"Enable" : "Activer",
"Enabling app …" : "Activation de l'application...",
"Error while enabling app" : "Erreur lors de l'activation de l'application",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activer car cela le serveur instable .",
- "Error: could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé ",
+ "Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
+ "Error: Could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé",
"Error while disabling broken app" : "Erreur lors de la désactivation de l'application cassé .",
"Updating...." : "Mise à jour...",
"Error while updating app" : "Erreur lors de la mise à jour de l'application",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.",
"Start migration" : "Démarrer la migration",
"Security & setup warnings" : "Avertissements de sécurité & configuration",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider dans cette tâche, nous faisons des vérifications automatiques. Veuillez consulter la section Trucs et Astuces et la documentation pour plus d'informations.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer PHP sur votre serveur, en particulier en cas d'utilisation de php-fpm.",
"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." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.",
@@ -438,6 +438,7 @@
"Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!",
"Show last log in" : "Montrer la dernière connexion",
"Verifying" : "Vérification en cours",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clients web, desktop, mobiles et mots de passe spécifiques d'application qui ont actuellement accès à votre compte.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Ici vous pouvez générer des mots de passe individuels pour les applications pour éviter de communiquer votre mot de passe. Vous pouvez aussi les révoquer individuellement.",
diff --git a/settings/l10n/he.js b/settings/l10n/he.js
index 86893231804..b634ff99c4a 100644
--- a/settings/l10n/he.js
+++ b/settings/l10n/he.js
@@ -46,8 +46,6 @@ OC.L10N.register(
"Disable" : "ניטרול",
"Enable" : "הפעלה",
"Error while enabling app" : "שגיאה בעת הפעלת יישום",
- "Error: this app cannot be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישום זה כיוון שהוא גורם לשרת להיות לא יציב. ",
- "Error: could not disable broken app" : "שגיאה: לא ניתן לנטרל יישום פגום",
"Error while disabling broken app" : "שגיאה בזמן נטרול יישום פגום",
"Updating...." : "מתבצע עדכון…",
"Error while updating app" : "אירעה שגיאה בעת עדכון היישום",
diff --git a/settings/l10n/he.json b/settings/l10n/he.json
index 91bd7d54a23..d02446ae3ca 100644
--- a/settings/l10n/he.json
+++ b/settings/l10n/he.json
@@ -44,8 +44,6 @@
"Disable" : "ניטרול",
"Enable" : "הפעלה",
"Error while enabling app" : "שגיאה בעת הפעלת יישום",
- "Error: this app cannot be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישום זה כיוון שהוא גורם לשרת להיות לא יציב. ",
- "Error: could not disable broken app" : "שגיאה: לא ניתן לנטרל יישום פגום",
"Error while disabling broken app" : "שגיאה בזמן נטרול יישום פגום",
"Updating...." : "מתבצע עדכון…",
"Error while updating app" : "אירעה שגיאה בעת עדכון היישום",
diff --git a/settings/l10n/hu.js b/settings/l10n/hu.js
index e81efb196dd..4af053ded7b 100644
--- a/settings/l10n/hu.js
+++ b/settings/l10n/hu.js
@@ -67,8 +67,6 @@ OC.L10N.register(
"Enable" : "Engedélyezés",
"Enabling app …" : "Alkalmazás engedélyezése ...",
"Error while enabling app" : "Hiba az alkalmazás engedélyezése közben",
- "Error: this app cannot be enabled because it makes the server unstable" : "Hiba: ezt az alkalmzást nem lehet engedélyezni, mert a szerver instabilitását eredményezné",
- "Error: could not disable broken app" : "Hiba: nem lehet tiltani a megtört alkalmazást",
"Error while disabling broken app" : "Hiba történt a megtört alkalmazás tiltása közben",
"Updating...." : "Frissítés folyamatban...",
"Error while updating app" : "Hiba történt az alkalmazás frissítése közben",
diff --git a/settings/l10n/hu.json b/settings/l10n/hu.json
index 24a93468c2d..cbee1008f6b 100644
--- a/settings/l10n/hu.json
+++ b/settings/l10n/hu.json
@@ -65,8 +65,6 @@
"Enable" : "Engedélyezés",
"Enabling app …" : "Alkalmazás engedélyezése ...",
"Error while enabling app" : "Hiba az alkalmazás engedélyezése közben",
- "Error: this app cannot be enabled because it makes the server unstable" : "Hiba: ezt az alkalmzást nem lehet engedélyezni, mert a szerver instabilitását eredményezné",
- "Error: could not disable broken app" : "Hiba: nem lehet tiltani a megtört alkalmazást",
"Error while disabling broken app" : "Hiba történt a megtört alkalmazás tiltása közben",
"Updating...." : "Frissítés folyamatban...",
"Error while updating app" : "Hiba történt az alkalmazás frissítése közben",
diff --git a/settings/l10n/ia.js b/settings/l10n/ia.js
index 4bbb07f3c58..4dc4e344c93 100644
--- a/settings/l10n/ia.js
+++ b/settings/l10n/ia.js
@@ -51,7 +51,6 @@ OC.L10N.register(
"Enable" : "Activar",
"Enabling app …" : "Activante application...",
"Error while enabling app" : "Error durante activation del application...",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo face le servitor esser instabile",
"Updating...." : "Actualisante...",
"Error while updating app" : "Error durante actualisation del application",
"Updated" : "Actualisate",
diff --git a/settings/l10n/ia.json b/settings/l10n/ia.json
index c91d6c0ffc8..b274b3182fa 100644
--- a/settings/l10n/ia.json
+++ b/settings/l10n/ia.json
@@ -49,7 +49,6 @@
"Enable" : "Activar",
"Enabling app …" : "Activante application...",
"Error while enabling app" : "Error durante activation del application...",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo face le servitor esser instabile",
"Updating...." : "Actualisante...",
"Error while updating app" : "Error durante actualisation del application",
"Updated" : "Actualisate",
diff --git a/settings/l10n/id.js b/settings/l10n/id.js
index db201cc14ea..0532693df10 100644
--- a/settings/l10n/id.js
+++ b/settings/l10n/id.js
@@ -56,8 +56,6 @@ OC.L10N.register(
"Disable" : "Nonaktifkan",
"Enable" : "Aktifkan",
"Error while enabling app" : "Terjadi kesalahan saat mengakifkan aplikasi",
- "Error: this app cannot be enabled because it makes the server unstable" : "Kesalahan: Aplikasi ini tidak bisa diaktifkan karena membuat server tidak stabil",
- "Error: could not disable broken app" : "Kesalahan: Tidak dapat menonaktifkan aplikasi rusak",
"Error while disabling broken app" : "Terjadi kesalahan saat menonaktifkan aplikasi rusak",
"Updating...." : "Memperbarui....",
"Error while updating app" : "Terjadi kesalahan saat memperbarui aplikasi",
diff --git a/settings/l10n/id.json b/settings/l10n/id.json
index 4bb8331fb54..9d1b1098455 100644
--- a/settings/l10n/id.json
+++ b/settings/l10n/id.json
@@ -54,8 +54,6 @@
"Disable" : "Nonaktifkan",
"Enable" : "Aktifkan",
"Error while enabling app" : "Terjadi kesalahan saat mengakifkan aplikasi",
- "Error: this app cannot be enabled because it makes the server unstable" : "Kesalahan: Aplikasi ini tidak bisa diaktifkan karena membuat server tidak stabil",
- "Error: could not disable broken app" : "Kesalahan: Tidak dapat menonaktifkan aplikasi rusak",
"Error while disabling broken app" : "Terjadi kesalahan saat menonaktifkan aplikasi rusak",
"Updating...." : "Memperbarui....",
"Error while updating app" : "Terjadi kesalahan saat memperbarui aplikasi",
diff --git a/settings/l10n/is.js b/settings/l10n/is.js
index ff7b35f0d0c..a6084b1c628 100644
--- a/settings/l10n/is.js
+++ b/settings/l10n/is.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Virkja",
"Enabling app …" : "Virkja forrit …",
"Error while enabling app" : "Villa við að virkja forrit",
- "Error: this app cannot be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan",
- "Error: could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt",
+ "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.",
+ "Error: Could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt",
"Error while disabling broken app" : "Villa við að gera bilaða forritið óvirkt",
"Updating...." : "Uppfæri...",
"Error while updating app" : "Villa við að uppfæra forrit",
@@ -249,12 +249,20 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.",
"Start migration" : "Hefja yfirfærslu",
"Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.",
"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." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.",
"System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.",
+ "This means that there might be problems with certain characters in filenames." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.",
"All checks passed." : "Stóðst allar prófanir.",
"Background jobs" : "Verk í bakgrunni",
@@ -263,8 +271,10 @@ OC.L10N.register(
"Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!",
"For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
"Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.",
"Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.",
"Version" : "Útgáfa",
"Sharing" : "Deiling",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.",
@@ -339,6 +349,11 @@ OC.L10N.register(
"Username" : "Notandanafn",
"Done" : "Lokið",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.",
+ "Follow us on Google+" : "Fylgstu með okkur á Google+",
+ "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar",
+ "Follow us on Twitter" : "Fylgstu með okkur á Twitter",
+ "Check out our blog" : "Kíktu á bloggið okkar",
+ "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar",
"Settings" : "Stillingar",
"Show storage location" : "Birta staðsetningu gagnageymslu",
"Show user backend" : "Birta bakenda notanda",
@@ -424,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!",
"Show last log in" : "Birta síðustu innskráningu",
"Verifying" : "Sannreyni",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Veftól, tölvur, símar og sértæk lykilorð forrita sem núna hafa aðgang inn á aðganginn þinn.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hér geturðu útbúið sérstök lykilorð fyrir hvert forrit svo að þú þurfir ekki að gefa upp lykilorðið þitt. Þú getur líka afturkallað þau hvert fyrir sig.",
diff --git a/settings/l10n/is.json b/settings/l10n/is.json
index 90461566e58..9b8b7578135 100644
--- a/settings/l10n/is.json
+++ b/settings/l10n/is.json
@@ -99,8 +99,8 @@
"Enable" : "Virkja",
"Enabling app …" : "Virkja forrit …",
"Error while enabling app" : "Villa við að virkja forrit",
- "Error: this app cannot be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan",
- "Error: could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt",
+ "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.",
+ "Error: Could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt",
"Error while disabling broken app" : "Villa við að gera bilaða forritið óvirkt",
"Updating...." : "Uppfæri...",
"Error while updating app" : "Villa við að uppfæra forrit",
@@ -247,12 +247,20 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.",
"Start migration" : "Hefja yfirfærslu",
"Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.",
"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." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.",
"System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.",
+ "This means that there might be problems with certain characters in filenames." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.",
"All checks passed." : "Stóðst allar prófanir.",
"Background jobs" : "Verk í bakgrunni",
@@ -261,8 +269,10 @@
"Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!",
"For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
"Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.",
"Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.",
"Version" : "Útgáfa",
"Sharing" : "Deiling",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.",
@@ -337,6 +347,11 @@
"Username" : "Notandanafn",
"Done" : "Lokið",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.",
+ "Follow us on Google+" : "Fylgstu með okkur á Google+",
+ "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar",
+ "Follow us on Twitter" : "Fylgstu með okkur á Twitter",
+ "Check out our blog" : "Kíktu á bloggið okkar",
+ "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar",
"Settings" : "Stillingar",
"Show storage location" : "Birta staðsetningu gagnageymslu",
"Show user backend" : "Birta bakenda notanda",
@@ -422,6 +437,7 @@
"Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!",
"Show last log in" : "Birta síðustu innskráningu",
"Verifying" : "Sannreyni",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Veftól, tölvur, símar og sértæk lykilorð forrita sem núna hafa aðgang inn á aðganginn þinn.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hér geturðu útbúið sérstök lykilorð fyrir hvert forrit svo að þú þurfir ekki að gefa upp lykilorðið þitt. Þú getur líka afturkallað þau hvert fyrir sig.",
diff --git a/settings/l10n/it.js b/settings/l10n/it.js
index a6815f9a80f..8638efd563e 100644
--- a/settings/l10n/it.js
+++ b/settings/l10n/it.js
@@ -84,8 +84,6 @@ OC.L10N.register(
"Enable" : "Abilita",
"Enabling app …" : "Abilitazione applicazione...",
"Error while enabling app" : "Errore durante l'attivazione",
- "Error: this app cannot be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
- "Error: could not disable broken app" : "Errore: impossibile disabilitare l'applicazione danneggiata",
"Error while disabling broken app" : "Errore durante la disabilitazione dell'applicazione danneggiata",
"Updating...." : "Aggiornamento in corso...",
"Error while updating app" : "Errore durante l'aggiornamento",
diff --git a/settings/l10n/it.json b/settings/l10n/it.json
index 36496965ec7..956cc054dab 100644
--- a/settings/l10n/it.json
+++ b/settings/l10n/it.json
@@ -82,8 +82,6 @@
"Enable" : "Abilita",
"Enabling app …" : "Abilitazione applicazione...",
"Error while enabling app" : "Errore durante l'attivazione",
- "Error: this app cannot be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
- "Error: could not disable broken app" : "Errore: impossibile disabilitare l'applicazione danneggiata",
"Error while disabling broken app" : "Errore durante la disabilitazione dell'applicazione danneggiata",
"Updating...." : "Aggiornamento in corso...",
"Error while updating app" : "Errore durante l'aggiornamento",
diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js
index 369ba10f73e..5a412cb4820 100644
--- a/settings/l10n/ja.js
+++ b/settings/l10n/ja.js
@@ -48,7 +48,7 @@ OC.L10N.register(
"_You have %n app update pending_::_You have %n app updates pending_" : ["%n 個のアプリのアップデートを保留中"],
"No apps found for your version" : "現在のバージョンに対応するアプリはありません",
"The app will be downloaded from the app store" : "このアプリは、アプリストアからダウンロードできます。",
- "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは ownCloud コミュニティにより開発されています。公式アプリは ownCloud の中心的な機能を提供し、製品として可能です。",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは Nextcloud コミュニティにより開発されています。公式アプリは Nextcloud の中心的な機能を提供し、製品として可能です。",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "承認されたアプリは信頼された開発者により開発され、大まかなセキュリティチェックに合格しています。アプリは積極的にオープンソースコードレポジトリでメンテナンスされ、メンテナは通常の用途では安定していると考えます。",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "このアプリはセキュリティチェックされていません、新規アプリか安定性が確認されていないアプリです。自己責任でインストールしてください。",
"Disabling app …" : "アプリを無効にします …",
@@ -57,8 +57,6 @@ OC.L10N.register(
"Enable" : "有効にする",
"Enabling app …" : "アプリを有効 ...",
"Error while enabling app" : "アプリを有効にする際にエラーが発生",
- "Error: this app cannot be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。",
- "Error: could not disable broken app" : "エラー: 壊れたアプリを無効にできませんでした",
"Error while disabling broken app" : "壊れたアプリの無効化中にエラーが発生",
"Updating...." : "更新中....",
"Error while updating app" : "アプリの更新中にエラーが発生",
@@ -181,7 +179,7 @@ OC.L10N.register(
"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." : "暗号化を一度有効化すると、この時点からサーバーにアップロードされるファイルの全てが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にすることが可能です。",
- "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." : "暗号化だけで、システムのセキュリティが保証されるものではありません。暗号化アプリがどのように動作するかの詳細について、およびサポートされているユースケースについてはownCloudのドキュメントを参照してください。",
+ "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." : "暗号化だけで、システムのセキュリティが保証されるものではありません。暗号化アプリがどのように動作するかの詳細について、およびサポートされているユースケースについては Nextcloud のドキュメントを参照してください。",
"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." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。",
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
@@ -260,7 +258,7 @@ OC.L10N.register(
"Change password" : "パスワードを変更",
"Language" : "言語",
"Help translate" : "翻訳に協力する",
- "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリで ownCloud にログインしている端末一覧です。",
+ "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリであなたのアカウントにログインしている端末一覧です。",
"Device" : "デバイス",
"Last activity" : "最後の活動",
"App name" : "アプリ名",
diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json
index 25cff576e78..86dc1c7368d 100644
--- a/settings/l10n/ja.json
+++ b/settings/l10n/ja.json
@@ -46,7 +46,7 @@
"_You have %n app update pending_::_You have %n app updates pending_" : ["%n 個のアプリのアップデートを保留中"],
"No apps found for your version" : "現在のバージョンに対応するアプリはありません",
"The app will be downloaded from the app store" : "このアプリは、アプリストアからダウンロードできます。",
- "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは ownCloud コミュニティにより開発されています。公式アプリは ownCloud の中心的な機能を提供し、製品として可能です。",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは Nextcloud コミュニティにより開発されています。公式アプリは Nextcloud の中心的な機能を提供し、製品として可能です。",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "承認されたアプリは信頼された開発者により開発され、大まかなセキュリティチェックに合格しています。アプリは積極的にオープンソースコードレポジトリでメンテナンスされ、メンテナは通常の用途では安定していると考えます。",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "このアプリはセキュリティチェックされていません、新規アプリか安定性が確認されていないアプリです。自己責任でインストールしてください。",
"Disabling app …" : "アプリを無効にします …",
@@ -55,8 +55,6 @@
"Enable" : "有効にする",
"Enabling app …" : "アプリを有効 ...",
"Error while enabling app" : "アプリを有効にする際にエラーが発生",
- "Error: this app cannot be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。",
- "Error: could not disable broken app" : "エラー: 壊れたアプリを無効にできませんでした",
"Error while disabling broken app" : "壊れたアプリの無効化中にエラーが発生",
"Updating...." : "更新中....",
"Error while updating app" : "アプリの更新中にエラーが発生",
@@ -179,7 +177,7 @@
"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." : "暗号化を一度有効化すると、この時点からサーバーにアップロードされるファイルの全てが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にすることが可能です。",
- "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." : "暗号化だけで、システムのセキュリティが保証されるものではありません。暗号化アプリがどのように動作するかの詳細について、およびサポートされているユースケースについてはownCloudのドキュメントを参照してください。",
+ "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." : "暗号化だけで、システムのセキュリティが保証されるものではありません。暗号化アプリがどのように動作するかの詳細について、およびサポートされているユースケースについては Nextcloud のドキュメントを参照してください。",
"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." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。",
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
@@ -258,7 +256,7 @@
"Change password" : "パスワードを変更",
"Language" : "言語",
"Help translate" : "翻訳に協力する",
- "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリで ownCloud にログインしている端末一覧です。",
+ "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリであなたのアカウントにログインしている端末一覧です。",
"Device" : "デバイス",
"Last activity" : "最後の活動",
"App name" : "アプリ名",
diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js
index cada0f307bf..16825befbb6 100644
--- a/settings/l10n/ko.js
+++ b/settings/l10n/ko.js
@@ -96,8 +96,6 @@ OC.L10N.register(
"Enable" : "사용함",
"Enabling app …" : "앱 활성화 중 …",
"Error while enabling app" : "앱을 활성화하는 중 오류 발생",
- "Error: this app cannot be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
- "Error: could not disable broken app" : "오류: 망가진 앱을 비활성화할 수 없음",
"Error while disabling broken app" : "망가진 앱을 비활성화 하는 중 오류 발생",
"Updating...." : "업데이트 중....",
"Error while updating app" : "앱을 업데이트하는 중 오류 발생",
@@ -242,7 +240,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.",
"Start migration" : "이전 시작",
"Security & setup warnings" : "보안 및 설치 경고",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.",
"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." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "데이터베이스가 \"READ COMMITTED\" 트랜잭션 격리 수준에서 실행되고 있지 않습니다. 여러 작업이 동시에 실행될 때 문제가 발생할 수 있습니다.",
@@ -412,6 +409,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "뉴스레터를 구독하세요!",
"Show last log in" : "마지막 로그인 시간 보이기",
"Verifying" : "확인 중",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP의 'fileinfo' 모듈이 없습니다. 올바른 MIME 형식 감지를 위해서 이 모듈을 활성화하는 것을 추천합니다.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "앱 암호를 생성하여 내 암호를 공개하지 않아도 됩니다. 이 암호는 개별적으로 폐기할 수도 있습니다.",
"Follow us on Google+!" : "Google+에서 저희를 팔로하세요!",
diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json
index 1f6c9732c0b..3cc5873b55c 100644
--- a/settings/l10n/ko.json
+++ b/settings/l10n/ko.json
@@ -94,8 +94,6 @@
"Enable" : "사용함",
"Enabling app …" : "앱 활성화 중 …",
"Error while enabling app" : "앱을 활성화하는 중 오류 발생",
- "Error: this app cannot be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
- "Error: could not disable broken app" : "오류: 망가진 앱을 비활성화할 수 없음",
"Error while disabling broken app" : "망가진 앱을 비활성화 하는 중 오류 발생",
"Updating...." : "업데이트 중....",
"Error while updating app" : "앱을 업데이트하는 중 오류 발생",
@@ -240,7 +238,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.",
"Start migration" : "이전 시작",
"Security & setup warnings" : "보안 및 설치 경고",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.",
"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." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "데이터베이스가 \"READ COMMITTED\" 트랜잭션 격리 수준에서 실행되고 있지 않습니다. 여러 작업이 동시에 실행될 때 문제가 발생할 수 있습니다.",
@@ -410,6 +407,7 @@
"Subscribe to our newsletter!" : "뉴스레터를 구독하세요!",
"Show last log in" : "마지막 로그인 시간 보이기",
"Verifying" : "확인 중",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP의 'fileinfo' 모듈이 없습니다. 올바른 MIME 형식 감지를 위해서 이 모듈을 활성화하는 것을 추천합니다.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "앱 암호를 생성하여 내 암호를 공개하지 않아도 됩니다. 이 암호는 개별적으로 폐기할 수도 있습니다.",
"Follow us on Google+!" : "Google+에서 저희를 팔로하세요!",
diff --git a/settings/l10n/nb.js b/settings/l10n/nb.js
index c4d5864a271..7ceb5cd62f3 100644
--- a/settings/l10n/nb.js
+++ b/settings/l10n/nb.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Aktiver",
"Enabling app …" : "Aktiverer program…",
"Error while enabling app" : "Aktivering av program mislyktes",
- "Error: this app cannot be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi den gjør tjeneren ustabil",
- "Error: could not disable broken app" : "Feil: Kunne ikke deaktivere ustabil app",
+ "Error: This app can not be enabled because it makes the server unstable" : "Feil: Dette programmet kan ikke aktiveres fordi det gjør tjeneren ustabil",
+ "Error: Could not disable broken app" : "Feil: Kunne ikke deaktivere ustabilt program",
"Error while disabling broken app" : "Feil ved deaktivering av ustabilt program",
"Updating...." : "Oppdaterer…",
"Error while updating app" : "Feil ved oppdatering av program",
@@ -249,7 +249,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.",
"Start migration" : "Start migrering",
"Security & setup warnings" : "Advarsler om sikkerhet og oppsett",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Sjekk <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installasjonsdokumentasjonen ↗</a> etter PHP-oppsettsnotater og oppsett av PHP på tjeneren din, særlig om du bruker php-fpm.",
"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." : "Det skrivebeskyttede oppsettet er blitt aktivert. Dette forhindrer setting av visse oppsett via vev-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
@@ -440,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!",
"Show last log in" : "Vis siste innlogging",
"Verifying" : "Bekrefter",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-modulen 'fileinfo' mangler. Vi anbefaler at du aktiverer denne modulen for å kunne detektere MIME-typen korrekt.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Vev, skrivebord og mobil -klienter og programspesifikke passord som har tilgang til kontoen din nå.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Her kan du opprette egne passord for programmer slik at du ikke trenger å gi dem ditt passord. Du kan tilbakekalle dem individuelt også.",
diff --git a/settings/l10n/nb.json b/settings/l10n/nb.json
index ac598979e04..70dfe662aef 100644
--- a/settings/l10n/nb.json
+++ b/settings/l10n/nb.json
@@ -99,8 +99,8 @@
"Enable" : "Aktiver",
"Enabling app …" : "Aktiverer program…",
"Error while enabling app" : "Aktivering av program mislyktes",
- "Error: this app cannot be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi den gjør tjeneren ustabil",
- "Error: could not disable broken app" : "Feil: Kunne ikke deaktivere ustabil app",
+ "Error: This app can not be enabled because it makes the server unstable" : "Feil: Dette programmet kan ikke aktiveres fordi det gjør tjeneren ustabil",
+ "Error: Could not disable broken app" : "Feil: Kunne ikke deaktivere ustabilt program",
"Error while disabling broken app" : "Feil ved deaktivering av ustabilt program",
"Updating...." : "Oppdaterer…",
"Error while updating app" : "Feil ved oppdatering av program",
@@ -247,7 +247,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.",
"Start migration" : "Start migrering",
"Security & setup warnings" : "Advarsler om sikkerhet og oppsett",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Sjekk <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installasjonsdokumentasjonen ↗</a> etter PHP-oppsettsnotater og oppsett av PHP på tjeneren din, særlig om du bruker php-fpm.",
"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." : "Det skrivebeskyttede oppsettet er blitt aktivert. Dette forhindrer setting av visse oppsett via vev-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
@@ -438,6 +437,7 @@
"Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!",
"Show last log in" : "Vis siste innlogging",
"Verifying" : "Bekrefter",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-modulen 'fileinfo' mangler. Vi anbefaler at du aktiverer denne modulen for å kunne detektere MIME-typen korrekt.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Vev, skrivebord og mobil -klienter og programspesifikke passord som har tilgang til kontoen din nå.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Her kan du opprette egne passord for programmer slik at du ikke trenger å gi dem ditt passord. Du kan tilbakekalle dem individuelt også.",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index 6de98cecba2..a08f5508beb 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Activeer",
"Enabling app …" : "Activeren app ...",
"Error while enabling app" : "Fout tijdens het inschakelen van het programma",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fout: deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
- "Error: could not disable broken app" : "Fout: kan de beschadigde app niet uitschakelen",
+ "Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
+ "Error: Could not disable broken app" : "Fout: Kan de beschadigde app niet uitschakelen",
"Error while disabling broken app" : "Fout bij het uitschakelen van de beschadigde app",
"Updating...." : "Bijwerken....",
"Error while updating app" : "Fout bij het bijwerken van de app",
@@ -249,12 +249,20 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.",
"Start migration" : "Start migratie",
"Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP lijkt niet goed te zijn opgezet om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Controleer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratienotities en de php configuratie van je server, zeker bij gebruik van php-fpm.",
"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." : "De Alleen-lezen config is ingeschakeld. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kern apps niet berijkbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie-isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s lager dan versie %2$s is geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te vervangen door een nieuwere versie.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is uitgeschakeld, dat zou namelijk kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.",
"System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.",
+ "This means that there might be problems with certain characters in filenames." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op je systeem te installeren om een van de volgende talen te ondersteunen: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als je installatie niet in de hoofddirectory van het domein staat, maar wel systeem cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou je de \"overwrite.cli.url\" optie in config.php moeten instellen op het webroot pad van je installatie (aanbevolen: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Het was niet mogelijk om de systeem cron via CLI uit te voeren. De volgende technische problemen traden op:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatie handleiding</a> goed door en controleer op fouten en waarschuwingen in de <a href=\"%s\">logging</a>.",
"All checks passed." : "Alle checks geslaagd",
"Background jobs" : "Achtergrond jobs",
@@ -266,6 +274,7 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 15 minuten cron.php over http aan te roepen.",
"Use system cron service to call the cron.php file every 15 minutes." : "Gebruik de systeemcron service om cron.php elke 15 minuten aan te roepen.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.",
"Version" : "Versie",
"Sharing" : "Delen",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als beheerder kun je het deel-gedrag optimaliseren. Bekijk de documentatie voor meer informatie.",
@@ -430,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!",
"Show last log in" : "Toon laatste inlog",
"Verifying" : "Verifiëren",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobiele clients and app specifieke wachtwoorden die nu toegang hebben tot je account.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier kun je individuele wachtwoorden voor apps genereren, zodat je geen wachtwoorden hoeft uit te geven. Je kunt ze ook weer individueel intrekken.",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index 7f555a18244..21d46b48c55 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -99,8 +99,8 @@
"Enable" : "Activeer",
"Enabling app …" : "Activeren app ...",
"Error while enabling app" : "Fout tijdens het inschakelen van het programma",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fout: deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
- "Error: could not disable broken app" : "Fout: kan de beschadigde app niet uitschakelen",
+ "Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
+ "Error: Could not disable broken app" : "Fout: Kan de beschadigde app niet uitschakelen",
"Error while disabling broken app" : "Fout bij het uitschakelen van de beschadigde app",
"Updating...." : "Bijwerken....",
"Error while updating app" : "Fout bij het bijwerken van de app",
@@ -247,12 +247,20 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.",
"Start migration" : "Start migratie",
"Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP lijkt niet goed te zijn opgezet om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Controleer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratienotities en de php configuratie van je server, zeker bij gebruik van php-fpm.",
"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." : "De Alleen-lezen config is ingeschakeld. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kern apps niet berijkbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie-isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s lager dan versie %2$s is geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te vervangen door een nieuwere versie.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is uitgeschakeld, dat zou namelijk kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.",
"System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.",
+ "This means that there might be problems with certain characters in filenames." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op je systeem te installeren om een van de volgende talen te ondersteunen: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als je installatie niet in de hoofddirectory van het domein staat, maar wel systeem cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou je de \"overwrite.cli.url\" optie in config.php moeten instellen op het webroot pad van je installatie (aanbevolen: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Het was niet mogelijk om de systeem cron via CLI uit te voeren. De volgende technische problemen traden op:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatie handleiding</a> goed door en controleer op fouten en waarschuwingen in de <a href=\"%s\">logging</a>.",
"All checks passed." : "Alle checks geslaagd",
"Background jobs" : "Achtergrond jobs",
@@ -264,6 +272,7 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 15 minuten cron.php over http aan te roepen.",
"Use system cron service to call the cron.php file every 15 minutes." : "Gebruik de systeemcron service om cron.php elke 15 minuten aan te roepen.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.",
"Version" : "Versie",
"Sharing" : "Delen",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als beheerder kun je het deel-gedrag optimaliseren. Bekijk de documentatie voor meer informatie.",
@@ -428,6 +437,7 @@
"Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!",
"Show last log in" : "Toon laatste inlog",
"Verifying" : "Verifiëren",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobiele clients and app specifieke wachtwoorden die nu toegang hebben tot je account.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier kun je individuele wachtwoorden voor apps genereren, zodat je geen wachtwoorden hoeft uit te geven. Je kunt ze ook weer individueel intrekken.",
diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js
index d06af55b090..413752641c4 100644
--- a/settings/l10n/pl.js
+++ b/settings/l10n/pl.js
@@ -101,8 +101,6 @@ OC.L10N.register(
"Enable" : "Włącz",
"Enabling app …" : "Włączam aplikację...",
"Error while enabling app" : "Błąd podczas włączania aplikacji",
- "Error: this app cannot be enabled because it makes the server unstable" : "Błąd: ta aplikacja nie może być włączona, ponieważ sprawia, że serwer jest niestabilny",
- "Error: could not disable broken app" : "Błąd: nie można wyłączyć zepsutą aplikację",
"Error while disabling broken app" : "Błąd podczas wyłączania zepsutej aplikacji",
"Updating...." : "Aktualizacja w toku...",
"Error while updating app" : "Błąd podczas aktualizacji aplikacji",
@@ -249,7 +247,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.",
"Start migration" : "Rozpocznij migrację",
"Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.",
"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." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.",
@@ -424,6 +421,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!",
"Show last log in" : "Pokaż ostatni login",
"Verifying" : "Sprawdzanie",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, klient desktop, klienci mobilni specjalne hasła aplikacja, które aktualnie mają dostęp do twojego konta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Tutaj możesz wygenerować lub unieważnić hasła dla poszczególnych aplikacji tak, aby nie było potrzeby podawania Twojego hasła. ",
diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json
index e29d0776a67..9fd0ed54197 100644
--- a/settings/l10n/pl.json
+++ b/settings/l10n/pl.json
@@ -99,8 +99,6 @@
"Enable" : "Włącz",
"Enabling app …" : "Włączam aplikację...",
"Error while enabling app" : "Błąd podczas włączania aplikacji",
- "Error: this app cannot be enabled because it makes the server unstable" : "Błąd: ta aplikacja nie może być włączona, ponieważ sprawia, że serwer jest niestabilny",
- "Error: could not disable broken app" : "Błąd: nie można wyłączyć zepsutą aplikację",
"Error while disabling broken app" : "Błąd podczas wyłączania zepsutej aplikacji",
"Updating...." : "Aktualizacja w toku...",
"Error while updating app" : "Błąd podczas aktualizacji aplikacji",
@@ -247,7 +245,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.",
"Start migration" : "Rozpocznij migrację",
"Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.",
"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." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.",
@@ -422,6 +419,7 @@
"Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!",
"Show last log in" : "Pokaż ostatni login",
"Verifying" : "Sprawdzanie",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, klient desktop, klienci mobilni specjalne hasła aplikacja, które aktualnie mają dostęp do twojego konta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Tutaj możesz wygenerować lub unieważnić hasła dla poszczególnych aplikacji tak, aby nie było potrzeby podawania Twojego hasła. ",
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index 7d8164f07fc..fe247c2402a 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Habilitar",
"Enabling app …" : "Ativando aplicativo...",
"Error while enabling app" : "Erro ao habilitar o aplicativo",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erro: este aplicativo não pode ser habilitado porque faz o servidor instável",
- "Error: could not disable broken app" : "Erro: Não foi possível desativar o aplicativo corrompido",
+ "Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
+ "Error: Could not disable broken app" : "Erro: Não foi possível desativar o aplicativo defeituoso",
"Error while disabling broken app" : "Erro ao desativar aplicativo corrompido",
"Updating...." : "Atualizando...",
"Error while updating app" : "Erro ao atualizar aplicativo",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.",
"Start migration" : "Iniciar migração",
"Security & setup warnings" : "Segurança & avisos de configuração",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "É importante para a segurança e desempenho de sua instância que tudo esteja configurado corretamente. Para ajudar você com isso que estamos fazendo algumas verificações automáticas. Por favor, consulte a seção Dicas & Truques e a documentação para obter mais informações.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parece ser configurado corretamente para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas retorna uma resposta vazia.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Verifique a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação de instalação ↗</a> para os detalhes de configuração do PHP e a configuração do PHP do seu servidor, especialmente ao usar o php-fpm.",
"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." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via interface web. Além disso, o arquivo precisa ser definido manualmente com permissão de escrita para cada atualização.",
@@ -396,7 +396,7 @@ OC.L10N.register(
"Uninstalling ...." : "Desinstalando...",
"Error while uninstalling app" : "Erro enquanto desinstalava aplicativo",
"Uninstall" : "Desinstalar",
- "__language_name__" : "__language_name__",
+ "__language_name__" : "Português Brasileiro",
"Personal info" : "Informação pessoal",
"Sessions" : "Sessões",
"App passwords" : "Senhas de aplicativos",
@@ -440,6 +440,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!",
"Show last log in" : "Mostrar o último acesso",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clientes web, desktop, celulares e senhas específicas de aplicativos que atualmente têm acesso à sua conta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aqui você pode gerar senhas individuais para aplicativos e assim você não precisa dar sua senha. Você pode revogá-los individualmente também.",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index 4a22bb4b22e..0ae482a1f99 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -99,8 +99,8 @@
"Enable" : "Habilitar",
"Enabling app …" : "Ativando aplicativo...",
"Error while enabling app" : "Erro ao habilitar o aplicativo",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erro: este aplicativo não pode ser habilitado porque faz o servidor instável",
- "Error: could not disable broken app" : "Erro: Não foi possível desativar o aplicativo corrompido",
+ "Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
+ "Error: Could not disable broken app" : "Erro: Não foi possível desativar o aplicativo defeituoso",
"Error while disabling broken app" : "Erro ao desativar aplicativo corrompido",
"Updating...." : "Atualizando...",
"Error while updating app" : "Erro ao atualizar aplicativo",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.",
"Start migration" : "Iniciar migração",
"Security & setup warnings" : "Segurança & avisos de configuração",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "É importante para a segurança e desempenho de sua instância que tudo esteja configurado corretamente. Para ajudar você com isso que estamos fazendo algumas verificações automáticas. Por favor, consulte a seção Dicas & Truques e a documentação para obter mais informações.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parece ser configurado corretamente para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas retorna uma resposta vazia.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Verifique a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação de instalação ↗</a> para os detalhes de configuração do PHP e a configuração do PHP do seu servidor, especialmente ao usar o php-fpm.",
"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." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via interface web. Além disso, o arquivo precisa ser definido manualmente com permissão de escrita para cada atualização.",
@@ -394,7 +394,7 @@
"Uninstalling ...." : "Desinstalando...",
"Error while uninstalling app" : "Erro enquanto desinstalava aplicativo",
"Uninstall" : "Desinstalar",
- "__language_name__" : "__language_name__",
+ "__language_name__" : "Português Brasileiro",
"Personal info" : "Informação pessoal",
"Sessions" : "Sessões",
"App passwords" : "Senhas de aplicativos",
@@ -438,6 +438,7 @@
"Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!",
"Show last log in" : "Mostrar o último acesso",
"Verifying" : "Verificando",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clientes web, desktop, celulares e senhas específicas de aplicativos que atualmente têm acesso à sua conta.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aqui você pode gerar senhas individuais para aplicativos e assim você não precisa dar sua senha. Você pode revogá-los individualmente também.",
diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js
index 8f6b1074af8..d013d7e9d38 100644
--- a/settings/l10n/pt_PT.js
+++ b/settings/l10n/pt_PT.js
@@ -46,8 +46,6 @@ OC.L10N.register(
"Disable" : "Desativar",
"Enable" : "Ativar",
"Error while enabling app" : "Ocorreu um erro enquanto ativava a app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável",
- "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada",
"Error while disabling broken app" : "Erro ao desactivar app estragada",
"Updating...." : "A atualizar...",
"Error while updating app" : "Ocorreu um erro enquanto atualizava a app",
diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json
index 503a837c394..f4ed7a49f9b 100644
--- a/settings/l10n/pt_PT.json
+++ b/settings/l10n/pt_PT.json
@@ -44,8 +44,6 @@
"Disable" : "Desativar",
"Enable" : "Ativar",
"Error while enabling app" : "Ocorreu um erro enquanto ativava a app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável",
- "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada",
"Error while disabling broken app" : "Erro ao desactivar app estragada",
"Updating...." : "A atualizar...",
"Error while updating app" : "Ocorreu um erro enquanto atualizava a app",
diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js
index 68280a66614..eca6aaa582e 100644
--- a/settings/l10n/ru.js
+++ b/settings/l10n/ru.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Включить",
"Enabling app …" : "Включение приложения",
"Error while enabling app" : "Ошибка при включении приложения",
- "Error: this app cannot be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно делает сервер нестабильным",
- "Error: could not disable broken app" : "Ошибка: невозможно отключить сломанное приложение",
+ "Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным",
+ "Error: Could not disable broken app" : "Ошибка: невозможно отключить «сломанное» приложение",
"Error while disabling broken app" : "Ошибка при отключении сломанного приложения",
"Updating...." : "Обновление...",
"Error while updating app" : "Ошибка при обновлении приложения",
@@ -249,7 +249,6 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.",
"Start migration" : "Запустить миграцию",
"Security & setup warnings" : "Предупреждения безопасности и установки",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не настроен правильно для получения переменных системного окружения. Запрос getenv(\"PATH\") возвращает пустые результаты.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации по установке ↗</a> для получения информации по настройке PHP на вашем сервере, особенно это касается php-fpm.",
"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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.",
@@ -440,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "Подписывайтесь на нашу новостную рассылку!",
"Show last log in" : "Показывать последний вход в систему",
"Verifying" : "Производится проверка",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Веб, настольные и мобильные клиенты, а также индивидуальные пароли приложений, которые имеют доступ к вашему аккаунту.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Тут можно для каждого из приложений создать индивидуальные пароли, поэтому не требуется передавать ваш пароль. Такие пароли могут также отзываться по отдельности.",
diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json
index 9e2c1113dd5..8c2d6e1101a 100644
--- a/settings/l10n/ru.json
+++ b/settings/l10n/ru.json
@@ -99,8 +99,8 @@
"Enable" : "Включить",
"Enabling app …" : "Включение приложения",
"Error while enabling app" : "Ошибка при включении приложения",
- "Error: this app cannot be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно делает сервер нестабильным",
- "Error: could not disable broken app" : "Ошибка: невозможно отключить сломанное приложение",
+ "Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным",
+ "Error: Could not disable broken app" : "Ошибка: невозможно отключить «сломанное» приложение",
"Error while disabling broken app" : "Ошибка при отключении сломанного приложения",
"Updating...." : "Обновление...",
"Error while updating app" : "Ошибка при обновлении приложения",
@@ -247,7 +247,6 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.",
"Start migration" : "Запустить миграцию",
"Security & setup warnings" : "Предупреждения безопасности и установки",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не настроен правильно для получения переменных системного окружения. Запрос getenv(\"PATH\") возвращает пустые результаты.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации по установке ↗</a> для получения информации по настройке PHP на вашем сервере, особенно это касается php-fpm.",
"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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.",
@@ -438,6 +437,7 @@
"Subscribe to our newsletter!" : "Подписывайтесь на нашу новостную рассылку!",
"Show last log in" : "Показывать последний вход в систему",
"Verifying" : "Производится проверка",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Веб, настольные и мобильные клиенты, а также индивидуальные пароли приложений, которые имеют доступ к вашему аккаунту.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Тут можно для каждого из приложений создать индивидуальные пароли, поэтому не требуется передавать ваш пароль. Такие пароли могут также отзываться по отдельности.",
diff --git a/settings/l10n/sk.js b/settings/l10n/sk.js
index 321e6778db4..e89dd0c2a17 100644
--- a/settings/l10n/sk.js
+++ b/settings/l10n/sk.js
@@ -56,8 +56,6 @@ OC.L10N.register(
"Enable" : "Zapnúť",
"Enabling app …" : "Povoľujem aplikáciu …",
"Error while enabling app" : "Chyba pri povoľovaní aplikácie",
- "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera",
- "Error: could not disable broken app" : "Chyba: nebolo možné zakázať poškodenú aplikáciu",
"Error while disabling broken app" : "Nastala chyba počas zakazovania poškodenej aplikácie",
"Updating...." : "Aktualizujem...",
"Error while updating app" : "chyba pri aktualizácii aplikácie",
diff --git a/settings/l10n/sk.json b/settings/l10n/sk.json
index 0fcd6da5bbb..a801416bc09 100644
--- a/settings/l10n/sk.json
+++ b/settings/l10n/sk.json
@@ -54,8 +54,6 @@
"Enable" : "Zapnúť",
"Enabling app …" : "Povoľujem aplikáciu …",
"Error while enabling app" : "Chyba pri povoľovaní aplikácie",
- "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera",
- "Error: could not disable broken app" : "Chyba: nebolo možné zakázať poškodenú aplikáciu",
"Error while disabling broken app" : "Nastala chyba počas zakazovania poškodenej aplikácie",
"Updating...." : "Aktualizujem...",
"Error while updating app" : "chyba pri aktualizácii aplikácie",
diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js
index 810b20055d2..3cde9260fd5 100644
--- a/settings/l10n/sl.js
+++ b/settings/l10n/sl.js
@@ -46,8 +46,6 @@ OC.L10N.register(
"Disable" : "Onemogoči",
"Enable" : "Omogoči",
"Error while enabling app" : "Napaka omogočanja programa",
- "Error: this app cannot be enabled because it makes the server unstable" : "Napaka: ta aplikacija ne more biti aktivna, ker povzroča nestabilnost strežnika",
- "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa",
"Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa",
"Updating...." : "Poteka posodabljanje ...",
"Error while updating app" : "Prišlo je do napake med posodabljanjem programa.",
diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json
index fc0d68ad303..83e4701ebff 100644
--- a/settings/l10n/sl.json
+++ b/settings/l10n/sl.json
@@ -44,8 +44,6 @@
"Disable" : "Onemogoči",
"Enable" : "Omogoči",
"Error while enabling app" : "Napaka omogočanja programa",
- "Error: this app cannot be enabled because it makes the server unstable" : "Napaka: ta aplikacija ne more biti aktivna, ker povzroča nestabilnost strežnika",
- "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa",
"Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa",
"Updating...." : "Poteka posodabljanje ...",
"Error while updating app" : "Prišlo je do napake med posodabljanjem programa.",
diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js
index f81d88c630e..057d174ab55 100644
--- a/settings/l10n/sq.js
+++ b/settings/l10n/sq.js
@@ -4,10 +4,12 @@ OC.L10N.register(
"{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ",
"You changed your password" : "Ju ndëruat fjalëkalimin",
"Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori",
- "{actor} changed your email address" : "{actor} ndëroi emailin tuaj ",
+ "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ",
"You changed your email address" : "Ju ndryshuat adresën e emailit tuaj",
"Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator",
"Security" : "Siguria",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar",
"Your apps" : "Aplikacionet tuaja ",
"Enabled apps" : "Lejo aplikacionet",
@@ -20,6 +22,7 @@ OC.L10N.register(
"Authentication error" : "Gabim mirëfilltësimi",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ",
"Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.",
+ "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing",
"Federated Cloud Sharing" : "Ndarje Në Re të Federuar ",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.",
@@ -28,7 +31,11 @@ OC.L10N.register(
"Group already exists." : "Grupi ekziston tashmë.",
"Unable to add group." : "S’arrin të shtojë grup.",
"Unable to delete group." : "S’arrin të fshijë grup.",
+ "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm",
"Well done, %s!" : "U krye, %s!",
+ "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.",
+ "Email setting test" : "Test i konfigurimeve të Email-it",
+ "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
"Invalid mail address" : "Adresë email e pavlefshme",
@@ -38,14 +45,16 @@ OC.L10N.register(
"Unable to create user." : "S’u arrit krijimi i përdoruesit.",
"Unable to delete user." : "S’arrin të fshijë përdorues.",
"Error while enabling user." : "Gabim ndërsa",
- "Error while disabling user." : "Gabim ndërsa çaktivizo përdoruesin.",
+ "Error while disabling user." : "Gabim gjatë çaktivizimit të përdoruesit.",
+ "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):",
+ "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):",
"Settings saved" : "Konfigurimet u ruajtën",
"Unable to change full name" : "S’arrin të ndryshojë emrin e plotë",
"Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it",
"Your full name has been changed." : "Emri juaj i plotë u ndryshua.",
"Forbidden" : "E ndaluar",
"Invalid user" : "Përdorues i pavlefshëm",
- "Unable to change mail address" : "S’arrin të ndryshojë adresë email",
+ "Unable to change mail address" : "E pamundur të ndryshojë adresën e email-it",
"Email saved" : "Email-i u ruajt",
"%1$s changed your password on %2$s." : "%1$s ju ka ndryshuar fjalëkalmin në %2$s.",
"Your password on %s was changed." : "Fjalëkalimi juaj në %s u ndryshua. ",
@@ -59,10 +68,13 @@ OC.L10N.register(
"Email address changed for %s" : "Adresa e email-it ndryshojë për %s",
"The new email address is %s" : "Adresa e re e email-it është %s",
"Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s",
+ "Welcome aboard" : "Mirë se vini në bord",
+ "Welcome aboard %s" : "Mirë se vini në bord %s",
"You have now an %s account, you can add, protect, and share your data." : "Ju keni tani një %s llogari, ju mund të shtoni, mbroni dhe shpërndanin të dhënat tuaja.",
"Your username is: %s" : "Emri juaj i përdoruesit është: %s",
"Set your password" : "Vendos fjalëkalimin tënd",
"Go to %s" : "Shko tek %s",
+ "Install Client" : "Instalo Klient",
"Your %s account was created" : "Llogaria juaj %s u krijua",
"Password confirmation is required" : "Kërkohet konfirmimi i fjalëkalimit",
"Couldn't remove app." : "S’hoqi dot aplikacionin.",
@@ -83,17 +95,19 @@ OC.L10N.register(
"Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.",
+ "Disabling app …" : "Çaktivizo aplikacionin ...",
"Error while disabling app" : "Gabim në çaktivizimin e aplikacionit",
"Disable" : "Çaktivizoje",
"Enable" : "Aktivizoje",
"Enabling app …" : "Duke aktivizuar aplikacionin ...",
"Error while enabling app" : "Gabim në aktivizimin e aplikacionit",
- "Error: this app cannot be enabled because it makes the server unstable" : "Gabim: ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
- "Error: could not disable broken app" : "Gabim: s’u çaktivizua dot aplikacion i dëmtuar",
+ "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
+ "Error: Could not disable broken app" : "Gabim: S’u çaktivizua dot aplikacioni i dëmtuar",
"Error while disabling broken app" : "Gabim teka çaktivizohej aplikacion i dëmtuar",
"Updating...." : "Po përditësohet…",
"Error while updating app" : "Gabim gjatë përditësimit të aplikacionit",
"Updated" : "U përditësua",
+ "Removing …" : "Duke hequr ...",
"Error while removing app" : "Gabim ndërsa çaktivizon aplikacionin",
"Remove" : "Hiqe",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.",
@@ -127,7 +141,7 @@ OC.L10N.register(
"Error while deleting the token" : "Gabim gjatë fshirjes së token-it",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.",
"Valid until {date}" : "E vlefshme deri më {date}",
- "Delete" : "Fshije",
+ "Delete" : "Fshij",
"Local" : "Lokale",
"Private" : "Private",
"Only visible to local users" : "E dukshme vetëm për përdoruesit lokal",
@@ -138,6 +152,7 @@ OC.L10N.register(
"Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global",
"Verify" : "Verifiko",
"Verifying …" : "Duke verifikuar ...",
+ "An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.",
"Select a profile picture" : "Përzgjidhni një foto profili",
"Very weak password" : "Fjalëkalim shumë i dobët",
"Weak password" : "Fjalëkalim i dobët",
@@ -148,10 +163,12 @@ OC.L10N.register(
"Unable to delete {objName}" : "S’arrin të fshijë {objName}",
"Error creating group: {message}" : "Gabim gjatë krijimit të grupit: {message}",
"A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi",
- "deleted {groupName}" : "u fshi {groupName}",
+ "deleted {groupName}" : "u fshi {emërGrupi}",
"undo" : "zhbëje",
+ "{size} used" : "{madhësia} e përdorur",
"never" : "kurrë",
"deleted {userName}" : "u fshi {userName}",
+ "No user found for <strong>{pattern}</strong>" : "Asnjë përdorues i gjetur për <strong> {modelin} </strong>",
"Unable to add user to group {group}" : "E pamundur që të shtosh përdorues te grupi {grupi}",
"Unable to remove user from group {group}" : "E pamundur të heqësh përdoruesin nga grupi {grupi}",
"Add group" : "Shto grup",
@@ -166,6 +183,8 @@ OC.L10N.register(
"A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
"A valid email must be provided" : "Duhet dhënë një email i vlefshëm",
"Developer documentation" : "Dokumentim për zhvillues",
+ "View in store" : "Shiko në dyqan",
+ "Limit to groups" : "Kufizo grupet",
"This app has an update available." : "Ka gati një përditësim për këtë aplikacion.",
"by %s" : "nga %s",
"%s-licensed" : "licencuar prej %s",
@@ -199,6 +218,7 @@ OC.L10N.register(
"STARTTLS" : "STARTTLS",
"Email server" : "Shërbyes email-esh",
"Open documentation" : "Hapni dokumentimin",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.",
"Send mode" : "Mënyrë dërgimi",
"Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
@@ -214,6 +234,7 @@ OC.L10N.register(
"Test email settings" : "Testoni rregullimet e email-it",
"Send email" : "Dërgo email",
"Server-side encryption" : "Fshehtëzim më anë shërbyesi",
+ "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." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.",
"Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit",
"Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ",
"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." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).",
@@ -228,20 +249,39 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
"Start migration" : "Fillo migrimin",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë ngritur si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Ju lutem kontrolloni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentacionin e instalimit ↗ </a> për shënimet e konfigurimit te PHP-se dhe për konfigurimin PHP të serverit tuaj, veçanërisht kur përdoret php-fpm.",
"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." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Mesa duket PHP është ngritur për të zhveshur blloqet e inline doc. Kjo do të bëjë disa aplikacione bazë të paaksesueshme.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk ekzekutohet me nivelin \"READ COMMITED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s versioni i mëposhtëm %2$sështë instaluar, për arsye qëndrueshmërie dhe performance është e rekomanduar të përditësohet në një version më të ri %1$s.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.",
"System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.",
+ "This means that there might be problems with certain characters in filenames." : "Kjo do të thotë që mund të ketë probleme me disa karaktere në emrat e skedarëve.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Propozohrt që të instaloni paketat e kërkuara në sistemin tuaj për të mbështetur një nga lokacionet e mëposhtme: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nuk ishte e mundur që të ekzekutohej puna cron nëpërmjet CLI. Gabimet teknike në vijim janë shfaqur :",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Ju lutem riverifikoni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> udhëzuesin e instalimit </a>,, dhe kontrolloni për ndonjë gabim apo njoftim paraprak në <a href=\"%s\">log</a>.",
"All checks passed." : "I kaloi krejt kontrollet.",
+ "Background jobs" : "Punët në background",
+ "Last job ran %s." : "Puna e fundit vazhdoi %s.",
+ "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.",
+ "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
"Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.",
+ "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta.",
"The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.",
"Version" : "Version",
"Sharing" : "Ndarje me të tjerët",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.",
"Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
"Allow public uploads" : "Lejo ngarkime publike",
+ "Always ask for a password" : "Gjithmonë pyet për një fjalëkalim",
"Enforce password protection" : "Detyro mbrojtje me fjalëkalim",
"Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
"Expire after " : "Skadon pas ",
@@ -256,6 +296,7 @@ OC.L10N.register(
"Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)",
"This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.",
"Tips & tricks" : "Ndihmëza & rrengje",
+ "There are a lot of features and config switches available to optimally customize and use this instance. Here are some pointers for more information." : "Ekzistojnë shumë funksione dhe çelësa të konfigurimit që janë në dispozicion për të përshtatur dhe përdorur në mënyrë optimale këtë shembull. Këtu janë disa udhëzues për më shumë informacion.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite po përdoret si bazë të dhënash e programit klient. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër klient baze të dhënash.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Kjo është veçanërisht e rekomanduar gjatë përdorimit të desktopit të klientit për sinkronizimin skedari. ",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.",
@@ -264,6 +305,7 @@ OC.L10N.register(
"Performance tuning" : "Përimtime performance",
"Improving the config.php" : "Si të përmirësohet config.php",
"Theming" : "Ndryshim teme grafike",
+ "Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>",
"You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Ju po përdorni <strong>%s</strong> të <strong>%s</strong> (<strong>%s%%</strong>)",
@@ -287,7 +329,9 @@ OC.L10N.register(
"Your postal address" : "Adresa juaj postale",
"Website" : "Faqe web-i",
"It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.",
+ "Link https://…" : "Linku https://…",
"Twitter" : "Twitter",
+ "Twitter handle @…" : "Përdoruesi i Twitter @ ...",
"You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:",
"Password" : "Fjalëkalim",
"Current password" : "Fjalëkalimi i tanishëm",
@@ -305,6 +349,11 @@ OC.L10N.register(
"Username" : "Emër përdoruesi",
"Done" : "U bë",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.",
+ "Follow us on Google+" : "Na ndiqni në Google+",
+ "Like our Facebook page" : "Pëlqeni faqen tonë në Facebook",
+ "Follow us on Twitter" : "Na ndiqni në Twitter",
+ "Check out our blog" : "Shikoni blogun tonë",
+ "Subscribe to our newsletter" : "Abonohu në gazeten tonë",
"Settings" : "Konfigurimet",
"Show storage location" : "Shfaq vendndodhje depozite",
"Show user backend" : "Shfaq programin klient të përdoruesit",
@@ -389,6 +438,10 @@ OC.L10N.register(
"Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!",
"Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!",
"Show last log in" : "Shfaq hyrjen e fundit",
+ "Verifying" : "Duke verifikuar",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Është e rëndësishme për sigurinë dhe performancën e instancës tuaj që gjithçka të konfigurohet në mënyrë korrekte. Për t'ju ndihmuar me këtë ne po bëjmë disa kontrolle automatike. Ju lutemi shikoni seksionin e këshillave dhe dokumentacionin për më shumë informacion.",
+ "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.",
+ "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, klientë të lëvizshëm dhe fjalëkalime specifike për aplikacione që aktualisht kanë akses në llogarinë tuaj.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Këtu ju mund krijoni fjalëkalime individuale për aplikacionet, kështu që ju nuk keni pse të hiqni dorë nga fjalëkalimi juaj. Ju mund t'i anulloni ato individualish.",
"Follow us on Google+!" : "Na ndiqni në Google+!",
"Follow us on Twitter!" : "Na ndiqni në Twitter!",
diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json
index baff66e7959..f1321a23c67 100644
--- a/settings/l10n/sq.json
+++ b/settings/l10n/sq.json
@@ -2,10 +2,12 @@
"{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ",
"You changed your password" : "Ju ndëruat fjalëkalimin",
"Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori",
- "{actor} changed your email address" : "{actor} ndëroi emailin tuaj ",
+ "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ",
"You changed your email address" : "Ju ndryshuat adresën e emailit tuaj",
"Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator",
"Security" : "Siguria",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar",
"Your apps" : "Aplikacionet tuaja ",
"Enabled apps" : "Lejo aplikacionet",
@@ -18,6 +20,7 @@
"Authentication error" : "Gabim mirëfilltësimi",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ",
"Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.",
+ "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing",
"Federated Cloud Sharing" : "Ndarje Në Re të Federuar ",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.",
@@ -26,7 +29,11 @@
"Group already exists." : "Grupi ekziston tashmë.",
"Unable to add group." : "S’arrin të shtojë grup.",
"Unable to delete group." : "S’arrin të fshijë grup.",
+ "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm",
"Well done, %s!" : "U krye, %s!",
+ "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.",
+ "Email setting test" : "Test i konfigurimeve të Email-it",
+ "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
"Invalid mail address" : "Adresë email e pavlefshme",
@@ -36,14 +43,16 @@
"Unable to create user." : "S’u arrit krijimi i përdoruesit.",
"Unable to delete user." : "S’arrin të fshijë përdorues.",
"Error while enabling user." : "Gabim ndërsa",
- "Error while disabling user." : "Gabim ndërsa çaktivizo përdoruesin.",
+ "Error while disabling user." : "Gabim gjatë çaktivizimit të përdoruesit.",
+ "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):",
+ "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):",
"Settings saved" : "Konfigurimet u ruajtën",
"Unable to change full name" : "S’arrin të ndryshojë emrin e plotë",
"Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it",
"Your full name has been changed." : "Emri juaj i plotë u ndryshua.",
"Forbidden" : "E ndaluar",
"Invalid user" : "Përdorues i pavlefshëm",
- "Unable to change mail address" : "S’arrin të ndryshojë adresë email",
+ "Unable to change mail address" : "E pamundur të ndryshojë adresën e email-it",
"Email saved" : "Email-i u ruajt",
"%1$s changed your password on %2$s." : "%1$s ju ka ndryshuar fjalëkalmin në %2$s.",
"Your password on %s was changed." : "Fjalëkalimi juaj në %s u ndryshua. ",
@@ -57,10 +66,13 @@
"Email address changed for %s" : "Adresa e email-it ndryshojë për %s",
"The new email address is %s" : "Adresa e re e email-it është %s",
"Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s",
+ "Welcome aboard" : "Mirë se vini në bord",
+ "Welcome aboard %s" : "Mirë se vini në bord %s",
"You have now an %s account, you can add, protect, and share your data." : "Ju keni tani një %s llogari, ju mund të shtoni, mbroni dhe shpërndanin të dhënat tuaja.",
"Your username is: %s" : "Emri juaj i përdoruesit është: %s",
"Set your password" : "Vendos fjalëkalimin tënd",
"Go to %s" : "Shko tek %s",
+ "Install Client" : "Instalo Klient",
"Your %s account was created" : "Llogaria juaj %s u krijua",
"Password confirmation is required" : "Kërkohet konfirmimi i fjalëkalimit",
"Couldn't remove app." : "S’hoqi dot aplikacionin.",
@@ -81,17 +93,19 @@
"Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.",
+ "Disabling app …" : "Çaktivizo aplikacionin ...",
"Error while disabling app" : "Gabim në çaktivizimin e aplikacionit",
"Disable" : "Çaktivizoje",
"Enable" : "Aktivizoje",
"Enabling app …" : "Duke aktivizuar aplikacionin ...",
"Error while enabling app" : "Gabim në aktivizimin e aplikacionit",
- "Error: this app cannot be enabled because it makes the server unstable" : "Gabim: ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
- "Error: could not disable broken app" : "Gabim: s’u çaktivizua dot aplikacion i dëmtuar",
+ "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
+ "Error: Could not disable broken app" : "Gabim: S’u çaktivizua dot aplikacioni i dëmtuar",
"Error while disabling broken app" : "Gabim teka çaktivizohej aplikacion i dëmtuar",
"Updating...." : "Po përditësohet…",
"Error while updating app" : "Gabim gjatë përditësimit të aplikacionit",
"Updated" : "U përditësua",
+ "Removing …" : "Duke hequr ...",
"Error while removing app" : "Gabim ndërsa çaktivizon aplikacionin",
"Remove" : "Hiqe",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.",
@@ -125,7 +139,7 @@
"Error while deleting the token" : "Gabim gjatë fshirjes së token-it",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.",
"Valid until {date}" : "E vlefshme deri më {date}",
- "Delete" : "Fshije",
+ "Delete" : "Fshij",
"Local" : "Lokale",
"Private" : "Private",
"Only visible to local users" : "E dukshme vetëm për përdoruesit lokal",
@@ -136,6 +150,7 @@
"Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global",
"Verify" : "Verifiko",
"Verifying …" : "Duke verifikuar ...",
+ "An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.",
"Select a profile picture" : "Përzgjidhni një foto profili",
"Very weak password" : "Fjalëkalim shumë i dobët",
"Weak password" : "Fjalëkalim i dobët",
@@ -146,10 +161,12 @@
"Unable to delete {objName}" : "S’arrin të fshijë {objName}",
"Error creating group: {message}" : "Gabim gjatë krijimit të grupit: {message}",
"A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi",
- "deleted {groupName}" : "u fshi {groupName}",
+ "deleted {groupName}" : "u fshi {emërGrupi}",
"undo" : "zhbëje",
+ "{size} used" : "{madhësia} e përdorur",
"never" : "kurrë",
"deleted {userName}" : "u fshi {userName}",
+ "No user found for <strong>{pattern}</strong>" : "Asnjë përdorues i gjetur për <strong> {modelin} </strong>",
"Unable to add user to group {group}" : "E pamundur që të shtosh përdorues te grupi {grupi}",
"Unable to remove user from group {group}" : "E pamundur të heqësh përdoruesin nga grupi {grupi}",
"Add group" : "Shto grup",
@@ -164,6 +181,8 @@
"A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
"A valid email must be provided" : "Duhet dhënë një email i vlefshëm",
"Developer documentation" : "Dokumentim për zhvillues",
+ "View in store" : "Shiko në dyqan",
+ "Limit to groups" : "Kufizo grupet",
"This app has an update available." : "Ka gati një përditësim për këtë aplikacion.",
"by %s" : "nga %s",
"%s-licensed" : "licencuar prej %s",
@@ -197,6 +216,7 @@
"STARTTLS" : "STARTTLS",
"Email server" : "Shërbyes email-esh",
"Open documentation" : "Hapni dokumentimin",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.",
"Send mode" : "Mënyrë dërgimi",
"Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
@@ -212,6 +232,7 @@
"Test email settings" : "Testoni rregullimet e email-it",
"Send email" : "Dërgo email",
"Server-side encryption" : "Fshehtëzim më anë shërbyesi",
+ "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." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.",
"Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit",
"Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ",
"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." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).",
@@ -226,20 +247,39 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
"Start migration" : "Fillo migrimin",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë ngritur si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Ju lutem kontrolloni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentacionin e instalimit ↗ </a> për shënimet e konfigurimit te PHP-se dhe për konfigurimin PHP të serverit tuaj, veçanërisht kur përdoret php-fpm.",
"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." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Mesa duket PHP është ngritur për të zhveshur blloqet e inline doc. Kjo do të bëjë disa aplikacione bazë të paaksesueshme.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk ekzekutohet me nivelin \"READ COMMITED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s versioni i mëposhtëm %2$sështë instaluar, për arsye qëndrueshmërie dhe performance është e rekomanduar të përditësohet në një version më të ri %1$s.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.",
"System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.",
+ "This means that there might be problems with certain characters in filenames." : "Kjo do të thotë që mund të ketë probleme me disa karaktere në emrat e skedarëve.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Propozohrt që të instaloni paketat e kërkuara në sistemin tuaj për të mbështetur një nga lokacionet e mëposhtme: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nuk ishte e mundur që të ekzekutohej puna cron nëpërmjet CLI. Gabimet teknike në vijim janë shfaqur :",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Ju lutem riverifikoni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> udhëzuesin e instalimit </a>,, dhe kontrolloni për ndonjë gabim apo njoftim paraprak në <a href=\"%s\">log</a>.",
"All checks passed." : "I kaloi krejt kontrollet.",
+ "Background jobs" : "Punët në background",
+ "Last job ran %s." : "Puna e fundit vazhdoi %s.",
+ "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.",
+ "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
"Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.",
+ "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta.",
"The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.",
"Version" : "Version",
"Sharing" : "Ndarje me të tjerët",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.",
"Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
"Allow public uploads" : "Lejo ngarkime publike",
+ "Always ask for a password" : "Gjithmonë pyet për një fjalëkalim",
"Enforce password protection" : "Detyro mbrojtje me fjalëkalim",
"Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
"Expire after " : "Skadon pas ",
@@ -254,6 +294,7 @@
"Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)",
"This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.",
"Tips & tricks" : "Ndihmëza & rrengje",
+ "There are a lot of features and config switches available to optimally customize and use this instance. Here are some pointers for more information." : "Ekzistojnë shumë funksione dhe çelësa të konfigurimit që janë në dispozicion për të përshtatur dhe përdorur në mënyrë optimale këtë shembull. Këtu janë disa udhëzues për më shumë informacion.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite po përdoret si bazë të dhënash e programit klient. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër klient baze të dhënash.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Kjo është veçanërisht e rekomanduar gjatë përdorimit të desktopit të klientit për sinkronizimin skedari. ",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.",
@@ -262,6 +303,7 @@
"Performance tuning" : "Përimtime performance",
"Improving the config.php" : "Si të përmirësohet config.php",
"Theming" : "Ndryshim teme grafike",
+ "Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>",
"You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Ju po përdorni <strong>%s</strong> të <strong>%s</strong> (<strong>%s%%</strong>)",
@@ -285,7 +327,9 @@
"Your postal address" : "Adresa juaj postale",
"Website" : "Faqe web-i",
"It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.",
+ "Link https://…" : "Linku https://…",
"Twitter" : "Twitter",
+ "Twitter handle @…" : "Përdoruesi i Twitter @ ...",
"You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:",
"Password" : "Fjalëkalim",
"Current password" : "Fjalëkalimi i tanishëm",
@@ -303,6 +347,11 @@
"Username" : "Emër përdoruesi",
"Done" : "U bë",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.",
+ "Follow us on Google+" : "Na ndiqni në Google+",
+ "Like our Facebook page" : "Pëlqeni faqen tonë në Facebook",
+ "Follow us on Twitter" : "Na ndiqni në Twitter",
+ "Check out our blog" : "Shikoni blogun tonë",
+ "Subscribe to our newsletter" : "Abonohu në gazeten tonë",
"Settings" : "Konfigurimet",
"Show storage location" : "Shfaq vendndodhje depozite",
"Show user backend" : "Shfaq programin klient të përdoruesit",
@@ -387,6 +436,10 @@
"Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!",
"Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!",
"Show last log in" : "Shfaq hyrjen e fundit",
+ "Verifying" : "Duke verifikuar",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Është e rëndësishme për sigurinë dhe performancën e instancës tuaj që gjithçka të konfigurohet në mënyrë korrekte. Për t'ju ndihmuar me këtë ne po bëjmë disa kontrolle automatike. Ju lutemi shikoni seksionin e këshillave dhe dokumentacionin për më shumë informacion.",
+ "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.",
+ "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, klientë të lëvizshëm dhe fjalëkalime specifike për aplikacione që aktualisht kanë akses në llogarinë tuaj.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Këtu ju mund krijoni fjalëkalime individuale për aplikacionet, kështu që ju nuk keni pse të hiqni dorë nga fjalëkalimi juaj. Ju mund t'i anulloni ato individualish.",
"Follow us on Google+!" : "Na ndiqni në Google+!",
"Follow us on Twitter!" : "Na ndiqni në Twitter!",
diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js
index 3caf9486f70..1ba5a98ce52 100644
--- a/settings/l10n/sv.js
+++ b/settings/l10n/sv.js
@@ -97,8 +97,6 @@ OC.L10N.register(
"Enable" : "Aktivera",
"Enabling app …" : "Aktiverar app ...",
"Error while enabling app" : "Fel vid aktivering av app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fel uppstod: Denna applikation kan ej startas för det gör servern ostabil.",
- "Error: could not disable broken app" : "Fel: Gick inte att inaktivera trasig applikation.",
"Error while disabling broken app" : "Fel under inaktivering av trasig applikation.",
"Updating...." : "Uppdaterar ...",
"Error while updating app" : "Fel uppstod vid uppdatering av appen",
diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json
index 183f203d394..cece29821fc 100644
--- a/settings/l10n/sv.json
+++ b/settings/l10n/sv.json
@@ -95,8 +95,6 @@
"Enable" : "Aktivera",
"Enabling app …" : "Aktiverar app ...",
"Error while enabling app" : "Fel vid aktivering av app",
- "Error: this app cannot be enabled because it makes the server unstable" : "Fel uppstod: Denna applikation kan ej startas för det gör servern ostabil.",
- "Error: could not disable broken app" : "Fel: Gick inte att inaktivera trasig applikation.",
"Error while disabling broken app" : "Fel under inaktivering av trasig applikation.",
"Updating...." : "Uppdaterar ...",
"Error while updating app" : "Fel uppstod vid uppdatering av appen",
diff --git a/settings/l10n/th.js b/settings/l10n/th.js
index 218c400cf2a..1af8034423a 100644
--- a/settings/l10n/th.js
+++ b/settings/l10n/th.js
@@ -46,8 +46,6 @@ OC.L10N.register(
"Disable" : "ปิดใช้งาน",
"Enable" : "เปิดใช้งาน",
"Error while enabling app" : "เกิดข้อผิดพลาดขณะกำลังตรวจสอบแอพฯ",
- "Error: this app cannot be enabled because it makes the server unstable" : "ข้อผิดพลาด: ไม่สามารถเปิดใช้งานแอพฯนี้ เพราะมันอาจทำให้เซิร์ฟเวอร์มีปัญหา",
- "Error: could not disable broken app" : "ข้อผิดพลาด: ไม่สามารถปิดการใช้งานแอพฯที่มีปัญหา",
"Error while disabling broken app" : "ข้อผิดพลาดขณะกำลังปิดการใช้งานแอพฯที่มีปัญหา",
"Updating...." : "กำลังอัพเดทข้อมูล...",
"Error while updating app" : "เกิดข้อผิดพลาดขณะกำลังอัพเดทแอพฯ",
diff --git a/settings/l10n/th.json b/settings/l10n/th.json
index 5852a625859..5a465fa14c2 100644
--- a/settings/l10n/th.json
+++ b/settings/l10n/th.json
@@ -44,8 +44,6 @@
"Disable" : "ปิดใช้งาน",
"Enable" : "เปิดใช้งาน",
"Error while enabling app" : "เกิดข้อผิดพลาดขณะกำลังตรวจสอบแอพฯ",
- "Error: this app cannot be enabled because it makes the server unstable" : "ข้อผิดพลาด: ไม่สามารถเปิดใช้งานแอพฯนี้ เพราะมันอาจทำให้เซิร์ฟเวอร์มีปัญหา",
- "Error: could not disable broken app" : "ข้อผิดพลาด: ไม่สามารถปิดการใช้งานแอพฯที่มีปัญหา",
"Error while disabling broken app" : "ข้อผิดพลาดขณะกำลังปิดการใช้งานแอพฯที่มีปัญหา",
"Updating...." : "กำลังอัพเดทข้อมูล...",
"Error while updating app" : "เกิดข้อผิดพลาดขณะกำลังอัพเดทแอพฯ",
diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js
index 9d689322192..20251f69c10 100644
--- a/settings/l10n/tr.js
+++ b/settings/l10n/tr.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "Etkinleştir",
"Enabling app …" : "Uygulama etkinleştiriliyor...",
"Error while enabling app" : "Uygulama etkinleştirilirken sorun çıktı",
- "Error: this app cannot be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
- "Error: could not disable broken app" : "Hata: Bozuk uygulama devre dışı bırakılamadı",
+ "Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
+ "Error: Could not disable broken app" : "Hata: Bozuk uygulama devre dışı bırakılamadı",
"Error while disabling broken app" : "Bozuk uygulama devre dışı bırakılırken sorun çıktı",
"Updating...." : "Güncelleniyor....",
"Error while updating app" : "Uygulama güncellenirken sorun çıktı",
@@ -249,7 +249,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.",
"Start migration" : "Aktarmayı başlat",
"Security & setup warnings" : "Güvenlik ve kurulum uyarıları",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP yanlış kurulmuş ve sistem ortam değişkenlerini okuyamıyor gibi görünüyor. getenv(\"PATH\") komutu ile yapılan sınama sonucunda boş bir yanıt alındı.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Lütfen PHP yapılandırma notları ve özellikle php-fpm kullanırken sunucunuzdaki PHP yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelerine ↗</a> bakın.",
"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." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu yapılandırma, bazı ayarların web arayüzünden yapılmasını önler. Ayrıca, bu dosyanın her güncelleme öncesinde el ile yazılabilir yapılması gerekir.",
@@ -440,6 +440,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : " Bültenimize abone olun!",
"Show last log in" : "Son oturum açma zamanı görüntülensin",
"Verifying" : "Doğrulanıyor",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Şu anda hesabınıza erişebilen web, masa üstü ve mobil istemciler ile uygulamaya özel parolalar.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Bu bölümden uygulamalara özel parolalar üretebilirsiniz. Böylece kendi parolanızı vermeniz gerekmez. Daha sonra bu parolaları ayrı ayrı geçersiz kılabilirsiniz.",
diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json
index ae9f4e30d8f..017e62c528d 100644
--- a/settings/l10n/tr.json
+++ b/settings/l10n/tr.json
@@ -99,8 +99,8 @@
"Enable" : "Etkinleştir",
"Enabling app …" : "Uygulama etkinleştiriliyor...",
"Error while enabling app" : "Uygulama etkinleştirilirken sorun çıktı",
- "Error: this app cannot be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
- "Error: could not disable broken app" : "Hata: Bozuk uygulama devre dışı bırakılamadı",
+ "Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
+ "Error: Could not disable broken app" : "Hata: Bozuk uygulama devre dışı bırakılamadı",
"Error while disabling broken app" : "Bozuk uygulama devre dışı bırakılırken sorun çıktı",
"Updating...." : "Güncelleniyor....",
"Error while updating app" : "Uygulama güncellenirken sorun çıktı",
@@ -247,7 +247,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.",
"Start migration" : "Aktarmayı başlat",
"Security & setup warnings" : "Güvenlik ve kurulum uyarıları",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP yanlış kurulmuş ve sistem ortam değişkenlerini okuyamıyor gibi görünüyor. getenv(\"PATH\") komutu ile yapılan sınama sonucunda boş bir yanıt alındı.",
"Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Lütfen PHP yapılandırma notları ve özellikle php-fpm kullanırken sunucunuzdaki PHP yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelerine ↗</a> bakın.",
"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." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu yapılandırma, bazı ayarların web arayüzünden yapılmasını önler. Ayrıca, bu dosyanın her güncelleme öncesinde el ile yazılabilir yapılması gerekir.",
@@ -438,6 +438,7 @@
"Subscribe to our newsletter!" : " Bültenimize abone olun!",
"Show last log in" : "Son oturum açma zamanı görüntülensin",
"Verifying" : "Doğrulanıyor",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Şu anda hesabınıza erişebilen web, masa üstü ve mobil istemciler ile uygulamaya özel parolalar.",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Bu bölümden uygulamalara özel parolalar üretebilirsiniz. Böylece kendi parolanızı vermeniz gerekmez. Daha sonra bu parolaları ayrı ayrı geçersiz kılabilirsiniz.",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index 78f2c5053f4..92eca8c8909 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -101,8 +101,8 @@ OC.L10N.register(
"Enable" : "启用",
"Enabling app …" : "正在启用应用程序...",
"Error while enabling app" : "启用应用时出错",
- "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
- "Error: could not disable broken app" : "错误: 无法禁用损坏的应用",
+ "Error: This app can not be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
+ "Error: Could not disable broken app" : "错误: 无法禁用损坏的应用",
"Error while disabling broken app" : "禁用损坏的应用时出错",
"Updating...." : "正在更新....",
"Error while updating app" : "更新应用时出错",
@@ -249,12 +249,20 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本 (ownCloud<=8.0) 迁移您的加密密钥.",
"Start migration" : "开始迁移",
"Security & setup warnings" : "安全及设置警告",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\\\"PATH\\\") 测试时仅返回空结果.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装文档 ↗</a> 中关于 PHP 配置的说明并在您的服务器中进行配置, 尤其是使用 php-fpm 时.",
"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." : "已启用只读配置. 这将阻止在 Web 界面中进行设置. 此外, 每次更新后该文件需要手动设置为可写入.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除内联块, 这将导致多个核心应用无法访问.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能是由缓存/加速器造成的, 例如 Zend OPcache 或 eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "您的数据库不能在 \"READ COMMITTED\" 事务隔离级别运行. 这样可能导致在多个并行操作时出现问题.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "已安装 %1$s 的低版本 %2$s. 出于稳定性和性能的原因, 我们建议您升级到更新的 %1$s 版本.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "事务文件锁被禁用, 这可能导致竞争条件的问题. 在 config.php 中启用 'filelocking.enabled' 选项来避免这些问题. 请参考 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">文档↗</a> 获取更多信息.",
"System locale can not be set to a one which supports UTF-8." : "系统区域无法设置为支持 UTF-8 的区域.",
+ "This means that there might be problems with certain characters in filenames." : "这意味着当文件名中包含特定字符时可能出现问题.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "我们强烈建议在您的系统中安装需要的包以支持下列区域: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您不是安装在域名的根目录, 并且使用系统 cron 服务时, 可能导致 URL 生成问题. 为了避免这些问题, 请在您的 config.php 文件中设置 \"overwrite.cli.url\" 选项为您的安装根目录路径 (建议: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "由于下列的技术错误, 无法通过 CLI 执行计划任务:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "请再次检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装指南 ↗</a>, 并检查 <a href=\"%s\">日志</a> 中的任何错误或警告.",
"All checks passed." : "所有检查已通过.",
"Background jobs" : "后台任务",
@@ -263,8 +271,10 @@ OC.L10N.register(
"Background job didn’t run yet!" : "后台任务当前没有运行!",
"For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能, 正确配置后台任务非常重要. 对于较大的实例, 推荐配置为 'Cron'. 详情请参考相关文档.",
"Execute one task with each page loaded" : "每个页面加载后执行一个任务",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 注册到 webcron 服务上, 通过 http 每 15 分钟执行 cron.php.",
"Use system cron service to call the cron.php file every 15 minutes." : "使用系统 cron 服务每 15 分钟执行一次 cron.php 文件.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行.",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能, 您需要 PHP posix 扩展. 请参考 {linkstart}PHP 文档{linkend} 获取更多信息.",
"Version" : "版本",
"Sharing" : "共享",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。",
@@ -339,6 +349,11 @@ OC.L10N.register(
"Username" : "用户名",
"Done" : "完成",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发, {githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议.",
+ "Follow us on Google+" : "在 Google+ 上关注我们!",
+ "Like our Facebook page" : "点赞我们 facebook 页面!",
+ "Follow us on Twitter" : "在 Twitter 上关注我们!",
+ "Check out our blog" : "浏览我们的博客!",
+ "Subscribe to our newsletter" : "订阅我们的最新消息!",
"Settings" : "设置",
"Show storage location" : "显示存储位置",
"Show user backend" : "显示用户来源",
@@ -424,6 +439,7 @@ OC.L10N.register(
"Subscribe to our newsletter!" : "订阅我们的最新消息!",
"Show last log in" : "显示最后登录",
"Verifying" : "正在验证",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "网站,桌面设备,移动客户端和当前可以访问您帐户的应用专用密码。",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "您可以为应用程序生成独立密码,因此您不必输入您的密码。 您也可以单独撤销这些独立密码。",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index 64d08cc47a7..a7e9d18a463 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -99,8 +99,8 @@
"Enable" : "启用",
"Enabling app …" : "正在启用应用程序...",
"Error while enabling app" : "启用应用时出错",
- "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
- "Error: could not disable broken app" : "错误: 无法禁用损坏的应用",
+ "Error: This app can not be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
+ "Error: Could not disable broken app" : "错误: 无法禁用损坏的应用",
"Error while disabling broken app" : "禁用损坏的应用时出错",
"Updating...." : "正在更新....",
"Error while updating app" : "更新应用时出错",
@@ -247,12 +247,20 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本 (ownCloud<=8.0) 迁移您的加密密钥.",
"Start migration" : "开始迁移",
"Security & setup warnings" : "安全及设置警告",
- "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\\\"PATH\\\") 测试时仅返回空结果.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装文档 ↗</a> 中关于 PHP 配置的说明并在您的服务器中进行配置, 尤其是使用 php-fpm 时.",
"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." : "已启用只读配置. 这将阻止在 Web 界面中进行设置. 此外, 每次更新后该文件需要手动设置为可写入.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除内联块, 这将导致多个核心应用无法访问.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能是由缓存/加速器造成的, 例如 Zend OPcache 或 eAccelerator.",
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "您的数据库不能在 \"READ COMMITTED\" 事务隔离级别运行. 这样可能导致在多个并行操作时出现问题.",
+ "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "已安装 %1$s 的低版本 %2$s. 出于稳定性和性能的原因, 我们建议您升级到更新的 %1$s 版本.",
+ "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "事务文件锁被禁用, 这可能导致竞争条件的问题. 在 config.php 中启用 'filelocking.enabled' 选项来避免这些问题. 请参考 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">文档↗</a> 获取更多信息.",
"System locale can not be set to a one which supports UTF-8." : "系统区域无法设置为支持 UTF-8 的区域.",
+ "This means that there might be problems with certain characters in filenames." : "这意味着当文件名中包含特定字符时可能出现问题.",
+ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "我们强烈建议在您的系统中安装需要的包以支持下列区域: %s.",
+ "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您不是安装在域名的根目录, 并且使用系统 cron 服务时, 可能导致 URL 生成问题. 为了避免这些问题, 请在您的 config.php 文件中设置 \"overwrite.cli.url\" 选项为您的安装根目录路径 (建议: \"%s\")",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "由于下列的技术错误, 无法通过 CLI 执行计划任务:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "请再次检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装指南 ↗</a>, 并检查 <a href=\"%s\">日志</a> 中的任何错误或警告.",
"All checks passed." : "所有检查已通过.",
"Background jobs" : "后台任务",
@@ -261,8 +269,10 @@
"Background job didn’t run yet!" : "后台任务当前没有运行!",
"For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能, 正确配置后台任务非常重要. 对于较大的实例, 推荐配置为 'Cron'. 详情请参考相关文档.",
"Execute one task with each page loaded" : "每个页面加载后执行一个任务",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 注册到 webcron 服务上, 通过 http 每 15 分钟执行 cron.php.",
"Use system cron service to call the cron.php file every 15 minutes." : "使用系统 cron 服务每 15 分钟执行一次 cron.php 文件.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行.",
+ "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能, 您需要 PHP posix 扩展. 请参考 {linkstart}PHP 文档{linkend} 获取更多信息.",
"Version" : "版本",
"Sharing" : "共享",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。",
@@ -337,6 +347,11 @@
"Username" : "用户名",
"Done" : "完成",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发, {githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议.",
+ "Follow us on Google+" : "在 Google+ 上关注我们!",
+ "Like our Facebook page" : "点赞我们 facebook 页面!",
+ "Follow us on Twitter" : "在 Twitter 上关注我们!",
+ "Check out our blog" : "浏览我们的博客!",
+ "Subscribe to our newsletter" : "订阅我们的最新消息!",
"Settings" : "设置",
"Show storage location" : "显示存储位置",
"Show user backend" : "显示用户来源",
@@ -422,6 +437,7 @@
"Subscribe to our newsletter!" : "订阅我们的最新消息!",
"Show last log in" : "显示最后登录",
"Verifying" : "正在验证",
+ "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "网站,桌面设备,移动客户端和当前可以访问您帐户的应用专用密码。",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "您可以为应用程序生成独立密码,因此您不必输入您的密码。 您也可以单独撤销这些独立密码。",
diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js
index 327f5a2bafa..ce4ed5fd828 100644
--- a/settings/l10n/zh_TW.js
+++ b/settings/l10n/zh_TW.js
@@ -1,6 +1,20 @@
OC.L10N.register(
"settings",
{
+ "{actor} changed your password" : "{actor} 變更了您的密碼",
+ "You changed your password" : "您已變更您的密碼",
+ "Your password was reset by an administrator" : "您的密碼已被管理員重設",
+ "{actor} changed your email address" : "{actor} 變更了您的電子郵件地址",
+ "You changed your email address" : "您已更改您的電子郵件地址",
+ "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更",
+ "Security" : "安全性",
+ "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。",
+ "Your apps" : "您的應用程式",
+ "Enabled apps" : "已啓用應用程式",
+ "Disabled apps" : "已停用應用程式",
+ "App bundles" : "應用程式套裝",
"Wrong password" : "密碼錯誤",
"Saved" : "已儲存",
"No user supplied" : "未提供使用者",
@@ -15,60 +29,114 @@ OC.L10N.register(
"Group already exists." : "群組已存在",
"Unable to add group." : "無法新增群組",
"Unable to delete group." : "無法刪除群組",
+ "Invalid SMTP password." : "無效的 SMTP 密碼",
+ "Well done, %s!" : "太棒了, %s!",
+ "If you received this email, the email configuration seems to be correct." : "如果你收到這封email,代表email設定是正確的。",
+ "Email setting test" : "測試郵件設定",
+ "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱mail伺服器記錄檔",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)",
"You need to set your user email before being able to send test emails." : "在寄出測試郵件前您需要設定信箱位址",
"Invalid mail address" : "無效的 email 地址",
+ "No valid group selected" : "無效的群組",
"A user with that name already exists." : "同名的使用者已經存在",
"Unable to create user." : "無法建立使用者",
"Unable to delete user." : "無法移除使用者",
+ "Error while enabling user." : "啟用用戶時發生錯誤",
+ "Error while disabling user." : "停用用戶時發生錯誤",
+ "Settings saved" : "設定已存檔",
"Unable to change full name" : "無法變更全名",
+ "Unable to change email address" : "無法變更email地址",
"Your full name has been changed." : "您的全名已變更",
"Forbidden" : "存取被拒",
"Invalid user" : "無效的使用者",
"Unable to change mail address" : "無法更改 email 地址",
"Email saved" : "Email 已儲存",
+ "Your password on %s was changed." : "你的密碼在 %s 已變更。",
+ "Your password on %s was reset by an administrator." : "您的密碼在 %s 已被管理員重設。",
+ "Password changed for %s" : "%s 的密碼已變更。",
+ "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員。",
+ "Password for %1$s changed on %2$s" : "%1$s 的密碼已在 %2$s 變更。",
+ "%1$s changed your email address on %2$s." : "%1$s 更改你的 email 地址在 %2$s 時。",
+ "Your email address on %s was changed." : "你的email地址在 %s 已變更。",
+ "Your email address on %s was changed by an administrator." : "你的email地址在 %s 已被管理員變更。",
+ "Email address changed for %s" : "%s 的email地址已變更。",
+ "The new email address is %s" : "新的email地址為 %s",
+ "Your username is: %s" : "你的使用者名稱為: %s",
+ "Set your password" : "設定您的密碼",
+ "Go to %s" : "前往 %s",
+ "Install Client" : "安裝使用端",
"Your %s account was created" : "您的 %s 帳號已經建立",
+ "Password confirmation is required" : "要求密碼確認",
"Couldn't remove app." : "無法移除應用程式",
"Couldn't update app." : "無法更新應用程式",
+ "Are you really sure you want add {domain} as trusted domain?" : "您確定要新增 {domain} 為信任的網域?",
"Add trusted domain" : "新增信任的網域",
"Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束",
"Migration started …" : "開始遷移…",
"Not saved" : "未儲存",
+ "Sending…" : "傳送中…",
"Email sent" : "Email 已寄出",
"Official" : "官方",
"All" : "所有",
"Update to %s" : "更新到 %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 個應用程式尚未更新"],
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "審查通過的應用程式經由可信任的開發人員所設計,並且經過一連串的安全測試,他們在開放的程式庫中維護這些應用程式,而且確保這些應用程式能穩定運作",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "這個新應用程式並沒有經過安全檢測,可能會是不穩定的,如果您要安裝的話,風險自行負責。",
+ "Disabling app …" : "停用應用程式中 ...",
"Error while disabling app" : "停用應用程式錯誤",
"Disable" : "停用",
"Enable" : "啟用",
+ "Enabling app …" : "啟動中...",
"Error while enabling app" : "啟用應用程式錯誤",
+ "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它使伺服器不穩定",
+ "Error: Could not disable broken app" : "錯誤: 無法啟用已損毀的應用",
+ "Error while disabling broken app" : "關閉損毀的應用時發生錯誤",
"Updating...." : "更新中…",
"Error while updating app" : "更新應用程式錯誤",
"Updated" : "已更新",
+ "Removing …" : "移除中...",
+ "Error while removing app" : "移除應用程式錯誤",
+ "Remove" : "移除",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "這個應用程式已啟用但是需要更新,您將會在 5 秒後被引導至更新頁面",
"App update" : "應用程式更新",
"Approved" : "審查通過",
"Experimental" : "實驗性質",
+ "No apps found for {query}" : "沒有符合 {query} 的應用程式",
+ "Enable all" : "全部啟用",
+ "Allow filesystem access" : "允許檔案系統的存取",
"Disconnect" : "中斷連線",
+ "Revoke" : "撤消",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
+ "Google Chrome" : "Google Chrome",
+ "Safari" : "Safari",
"Google Chrome for Android" : "Google Chrome for Android",
+ "iPhone iOS" : "iPhone iOS",
+ "iPad iOS" : "iPad iOS",
"iOS Client" : "iOS 客戶端",
"Android Client" : "Android 客戶端",
"Sync client - {os}" : "同步客戶端 - {os}",
"This session" : "目前的工作階段",
+ "Copy" : "複製",
"Copied!" : "已複製",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
+ "Error while creating device token" : "建立裝置token時發生錯誤",
+ "Error while deleting the token" : "刪除token時發生錯誤",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證",
"Valid until {date}" : "{date} 前有效",
"Delete" : "刪除",
+ "Local" : "本地",
+ "Private" : "私人的",
+ "Only visible to local users" : "僅本地用戶可見",
+ "Only visible to you" : "僅你可見",
+ "Contacts" : "聯絡人",
+ "Visible to local users and to trusted servers" : "僅本地用戶與信任伺服器可見",
+ "Public" : "公開",
"Select a profile picture" : "選擇大頭貼",
"Very weak password" : "密碼強度非常弱",
"Weak password" : "密碼強度弱",
@@ -80,8 +148,12 @@ OC.L10N.register(
"A valid group name must be provided" : "必須提供一個有效的群組名稱",
"deleted {groupName}" : "刪除 {groupName}",
"undo" : "復原",
+ "{size} used" : "{size} 已使用",
"never" : "永不",
"deleted {userName}" : "刪除 {userName}",
+ "Add group" : "新增群組",
+ "no group" : "沒有群組",
+ "Password successfully changed" : "成功變更密碼",
"Changing the password will result in data loss, because data recovery is not available for this user" : "更改密碼會造成資料遺失,因為資料復原的功能無法在這個使用者使用",
"A valid username must be provided" : "必須提供一個有效的用戶名",
"A valid password must be provided" : "一定要提供一個有效的密碼",
diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json
index 1acab7670b4..2443afab52a 100644
--- a/settings/l10n/zh_TW.json
+++ b/settings/l10n/zh_TW.json
@@ -1,4 +1,18 @@
{ "translations": {
+ "{actor} changed your password" : "{actor} 變更了您的密碼",
+ "You changed your password" : "您已變更您的密碼",
+ "Your password was reset by an administrator" : "您的密碼已被管理員重設",
+ "{actor} changed your email address" : "{actor} 變更了您的電子郵件地址",
+ "You changed your email address" : "您已更改您的電子郵件地址",
+ "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更",
+ "Security" : "安全性",
+ "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。",
+ "Your apps" : "您的應用程式",
+ "Enabled apps" : "已啓用應用程式",
+ "Disabled apps" : "已停用應用程式",
+ "App bundles" : "應用程式套裝",
"Wrong password" : "密碼錯誤",
"Saved" : "已儲存",
"No user supplied" : "未提供使用者",
@@ -13,60 +27,114 @@
"Group already exists." : "群組已存在",
"Unable to add group." : "無法新增群組",
"Unable to delete group." : "無法刪除群組",
+ "Invalid SMTP password." : "無效的 SMTP 密碼",
+ "Well done, %s!" : "太棒了, %s!",
+ "If you received this email, the email configuration seems to be correct." : "如果你收到這封email,代表email設定是正確的。",
+ "Email setting test" : "測試郵件設定",
+ "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱mail伺服器記錄檔",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)",
"You need to set your user email before being able to send test emails." : "在寄出測試郵件前您需要設定信箱位址",
"Invalid mail address" : "無效的 email 地址",
+ "No valid group selected" : "無效的群組",
"A user with that name already exists." : "同名的使用者已經存在",
"Unable to create user." : "無法建立使用者",
"Unable to delete user." : "無法移除使用者",
+ "Error while enabling user." : "啟用用戶時發生錯誤",
+ "Error while disabling user." : "停用用戶時發生錯誤",
+ "Settings saved" : "設定已存檔",
"Unable to change full name" : "無法變更全名",
+ "Unable to change email address" : "無法變更email地址",
"Your full name has been changed." : "您的全名已變更",
"Forbidden" : "存取被拒",
"Invalid user" : "無效的使用者",
"Unable to change mail address" : "無法更改 email 地址",
"Email saved" : "Email 已儲存",
+ "Your password on %s was changed." : "你的密碼在 %s 已變更。",
+ "Your password on %s was reset by an administrator." : "您的密碼在 %s 已被管理員重設。",
+ "Password changed for %s" : "%s 的密碼已變更。",
+ "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員。",
+ "Password for %1$s changed on %2$s" : "%1$s 的密碼已在 %2$s 變更。",
+ "%1$s changed your email address on %2$s." : "%1$s 更改你的 email 地址在 %2$s 時。",
+ "Your email address on %s was changed." : "你的email地址在 %s 已變更。",
+ "Your email address on %s was changed by an administrator." : "你的email地址在 %s 已被管理員變更。",
+ "Email address changed for %s" : "%s 的email地址已變更。",
+ "The new email address is %s" : "新的email地址為 %s",
+ "Your username is: %s" : "你的使用者名稱為: %s",
+ "Set your password" : "設定您的密碼",
+ "Go to %s" : "前往 %s",
+ "Install Client" : "安裝使用端",
"Your %s account was created" : "您的 %s 帳號已經建立",
+ "Password confirmation is required" : "要求密碼確認",
"Couldn't remove app." : "無法移除應用程式",
"Couldn't update app." : "無法更新應用程式",
+ "Are you really sure you want add {domain} as trusted domain?" : "您確定要新增 {domain} 為信任的網域?",
"Add trusted domain" : "新增信任的網域",
"Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束",
"Migration started …" : "開始遷移…",
"Not saved" : "未儲存",
+ "Sending…" : "傳送中…",
"Email sent" : "Email 已寄出",
"Official" : "官方",
"All" : "所有",
"Update to %s" : "更新到 %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 個應用程式尚未更新"],
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式",
"Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "審查通過的應用程式經由可信任的開發人員所設計,並且經過一連串的安全測試,他們在開放的程式庫中維護這些應用程式,而且確保這些應用程式能穩定運作",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "這個新應用程式並沒有經過安全檢測,可能會是不穩定的,如果您要安裝的話,風險自行負責。",
+ "Disabling app …" : "停用應用程式中 ...",
"Error while disabling app" : "停用應用程式錯誤",
"Disable" : "停用",
"Enable" : "啟用",
+ "Enabling app …" : "啟動中...",
"Error while enabling app" : "啟用應用程式錯誤",
+ "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它使伺服器不穩定",
+ "Error: Could not disable broken app" : "錯誤: 無法啟用已損毀的應用",
+ "Error while disabling broken app" : "關閉損毀的應用時發生錯誤",
"Updating...." : "更新中…",
"Error while updating app" : "更新應用程式錯誤",
"Updated" : "已更新",
+ "Removing …" : "移除中...",
+ "Error while removing app" : "移除應用程式錯誤",
+ "Remove" : "移除",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "這個應用程式已啟用但是需要更新,您將會在 5 秒後被引導至更新頁面",
"App update" : "應用程式更新",
"Approved" : "審查通過",
"Experimental" : "實驗性質",
+ "No apps found for {query}" : "沒有符合 {query} 的應用程式",
+ "Enable all" : "全部啟用",
+ "Allow filesystem access" : "允許檔案系統的存取",
"Disconnect" : "中斷連線",
+ "Revoke" : "撤消",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
+ "Google Chrome" : "Google Chrome",
+ "Safari" : "Safari",
"Google Chrome for Android" : "Google Chrome for Android",
+ "iPhone iOS" : "iPhone iOS",
+ "iPad iOS" : "iPad iOS",
"iOS Client" : "iOS 客戶端",
"Android Client" : "Android 客戶端",
"Sync client - {os}" : "同步客戶端 - {os}",
"This session" : "目前的工作階段",
+ "Copy" : "複製",
"Copied!" : "已複製",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
+ "Error while creating device token" : "建立裝置token時發生錯誤",
+ "Error while deleting the token" : "刪除token時發生錯誤",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證",
"Valid until {date}" : "{date} 前有效",
"Delete" : "刪除",
+ "Local" : "本地",
+ "Private" : "私人的",
+ "Only visible to local users" : "僅本地用戶可見",
+ "Only visible to you" : "僅你可見",
+ "Contacts" : "聯絡人",
+ "Visible to local users and to trusted servers" : "僅本地用戶與信任伺服器可見",
+ "Public" : "公開",
"Select a profile picture" : "選擇大頭貼",
"Very weak password" : "密碼強度非常弱",
"Weak password" : "密碼強度弱",
@@ -78,8 +146,12 @@
"A valid group name must be provided" : "必須提供一個有效的群組名稱",
"deleted {groupName}" : "刪除 {groupName}",
"undo" : "復原",
+ "{size} used" : "{size} 已使用",
"never" : "永不",
"deleted {userName}" : "刪除 {userName}",
+ "Add group" : "新增群組",
+ "no group" : "沒有群組",
+ "Password successfully changed" : "成功變更密碼",
"Changing the password will result in data loss, because data recovery is not available for this user" : "更改密碼會造成資料遺失,因為資料復原的功能無法在這個使用者使用",
"A valid username must be provided" : "必須提供一個有效的用戶名",
"A valid password must be provided" : "一定要提供一個有效的密碼",
diff --git a/settings/templates/settings/admin/server.php b/settings/templates/settings/admin/server.php
index b32514c8b24..407badcff41 100644
--- a/settings/templates/settings/admin/server.php
+++ b/settings/templates/settings/admin/server.php
@@ -28,7 +28,7 @@
<div id="security-warning" class="section">
<h2><?php p($l->t('Security & setup warnings'));?></h2>
- <p class="settings-hint"><?php p($l->t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.'));?></p>
+ <p class="settings-hint"><?php p($l->t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information.'));?></p>
<ul>
<?php
// is php setup properly to query system environment variables like getenv('PATH')
diff --git a/settings/users.php b/settings/users.php
index 4d214bf9502..8dedb703ada 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -73,7 +73,7 @@ $groupsInfo->setSorting($sortGroupsBy);
list($adminGroup, $groups) = $groupsInfo->get();
$recoveryAdminEnabled = OC_App::isEnabled('encryption') &&
- $config->getAppValue( 'encryption', 'recoveryAdminEnabled', null );
+ $config->getAppValue( 'encryption', 'recoveryAdminEnabled', '0');
if($isAdmin) {
$subAdmins = \OC::$server->getGroupManager()->getSubAdmin()->getAllSubAdmins();
diff --git a/status.php b/status.php
index 3d2d8f59d75..293d843c6d6 100644
--- a/status.php
+++ b/status.php
@@ -56,5 +56,5 @@ try {
} catch (Exception $ex) {
OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
- \OCP\Util::writeLog('remote', $ex->getMessage(), \OCP\Util::FATAL);
+ \OC::$server->getLogger()->logException($ex, ['app' => 'remote']);
}
diff --git a/tests/Core/Controller/ChangePasswordControllerTest.php b/tests/Core/Controller/ChangePasswordControllerTest.php
index c426bae9974..ea3abb58e2f 100644
--- a/tests/Core/Controller/ChangePasswordControllerTest.php
+++ b/tests/Core/Controller/ChangePasswordControllerTest.php
@@ -50,9 +50,9 @@ class ChangePasswordControllerTest extends \Test\TestCase {
public function setUp() {
parent::setUp();
- $this->userManager = $this->createMock(IUserManager::class);
+ $this->userManager = $this->createMock(\OC\User\Manager::class);
$this->userSession = $this->createMock(Session::class);
- $this->groupManager = $this->createMock(IGroupManager::class);
+ $this->groupManager = $this->createMock(\OC\Group\Manager::class);
$this->appManager = $this->createMock(IAppManager::class);
$this->l = $this->createMock(IL10N::class);
$this->l->method('t')->will($this->returnArgument(0));
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index bd2d0143caf..493bade9dd8 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -307,7 +307,7 @@ class LoginControllerTest extends TestCase {
->method('deleteUserValue');
$expected = new \OCP\AppFramework\Http\RedirectResponse($loginPageUrl);
- $expected->throttle();
+ $expected->throttle(['user' => 'MyUserName']);
$this->assertEquals($expected, $this->loginController->tryLogin($user, $password, '/apps/files'));
}
@@ -634,7 +634,7 @@ class LoginControllerTest extends TestCase {
->method('createRememberMeToken');
$expected = new RedirectResponse('');
- $expected->throttle();
+ $expected->throttle(['user' => 'john']);
$this->assertEquals($expected, $this->loginController->tryLogin('john@doe.com', 'just wrong', null));
}
}
diff --git a/tests/Core/Controller/OCSControllerTest.php b/tests/Core/Controller/OCSControllerTest.php
index 9d0a3dae118..aa2c780f82e 100644
--- a/tests/Core/Controller/OCSControllerTest.php
+++ b/tests/Core/Controller/OCSControllerTest.php
@@ -169,7 +169,7 @@ class OCSControllerTest extends TestCase {
$this->equalTo('wrongpass')
)->willReturn(false);
- $expected = new DataResponse(null, 102);
+ $expected = new DataResponse([], 102);
$expected->throttle();
$this->assertEquals($expected, $this->controller->personCheck('user', 'wrongpass'));
}
@@ -181,7 +181,7 @@ class OCSControllerTest extends TestCase {
$this->equalTo('wrongpass')
)->willReturn(false);
- $expected = new DataResponse(null, 101);
+ $expected = new DataResponse([], 101);
$this->assertEquals($expected, $this->controller->personCheck('', ''));
}
@@ -192,7 +192,7 @@ class OCSControllerTest extends TestCase {
->with('NotExistingUser')
->willReturn(null);
- $expected = new DataResponse('User not found', 404);
+ $expected = new DataResponse(['User not found'], 404);
$this->assertEquals($expected, $this->controller->getIdentityProof('NotExistingUser'));
}
diff --git a/tests/Core/Middleware/TwoFactorMiddlewareTest.php b/tests/Core/Middleware/TwoFactorMiddlewareTest.php
index fc8cf0d8b7e..56022c78bdd 100644
--- a/tests/Core/Middleware/TwoFactorMiddlewareTest.php
+++ b/tests/Core/Middleware/TwoFactorMiddlewareTest.php
@@ -24,6 +24,7 @@ namespace Test\Core\Middleware;
use OC\Core\Middleware\TwoFactorMiddleware;
use OC\AppFramework\Http\Request;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Utility\IControllerMethodReflector;
use OCP\IConfig;
use OCP\ISession;
@@ -44,6 +45,9 @@ class TwoFactorMiddlewareTest extends TestCase {
/** @var TwoFactorMiddleware */
private $middleware;
+ /** @var Controller */
+ private $controller;
+
protected function setUp() {
parent::setUp();
@@ -67,6 +71,7 @@ class TwoFactorMiddlewareTest extends TestCase {
);
$this->middleware = new TwoFactorMiddleware($this->twoFactorManager, $this->userSession, $this->session, $this->urlGenerator, $this->reflector, $this->request);
+ $this->controller = $this->createMock(Controller::class);
}
public function testBeforeControllerNotLoggedIn() {
@@ -81,7 +86,7 @@ class TwoFactorMiddlewareTest extends TestCase {
$this->userSession->expects($this->never())
->method('getUser');
- $this->middleware->beforeController(null, 'index');
+ $this->middleware->beforeController($this->controller, 'index');
}
public function testBeforeControllerPublicPage() {
@@ -92,7 +97,7 @@ class TwoFactorMiddlewareTest extends TestCase {
$this->userSession->expects($this->never())
->method('isLoggedIn');
- $this->middleware->beforeController(null, 'create');
+ $this->middleware->beforeController($this->controller, 'create');
}
public function testBeforeControllerNoTwoFactorCheckNeeded() {
@@ -113,7 +118,7 @@ class TwoFactorMiddlewareTest extends TestCase {
->with($user)
->will($this->returnValue(false));
- $this->middleware->beforeController(null, 'index');
+ $this->middleware->beforeController($this->controller, 'index');
}
/**
@@ -141,7 +146,7 @@ class TwoFactorMiddlewareTest extends TestCase {
->with($user)
->will($this->returnValue(true));
- $this->middleware->beforeController(null, 'index');
+ $this->middleware->beforeController($this->controller, 'index');
}
/**
@@ -184,7 +189,7 @@ class TwoFactorMiddlewareTest extends TestCase {
->will($this->returnValue('test/url'));
$expected = new \OCP\AppFramework\Http\RedirectResponse('test/url');
- $this->assertEquals($expected, $this->middleware->afterException(null, 'index', $ex));
+ $this->assertEquals($expected, $this->middleware->afterException($this->controller, 'index', $ex));
}
public function testAfterException() {
@@ -196,7 +201,7 @@ class TwoFactorMiddlewareTest extends TestCase {
->will($this->returnValue('redirect/url'));
$expected = new \OCP\AppFramework\Http\RedirectResponse('redirect/url');
- $this->assertEquals($expected, $this->middleware->afterException(null, 'index', $ex));
+ $this->assertEquals($expected, $this->middleware->afterException($this->controller, 'index', $ex));
}
}
diff --git a/tests/Core/Templates/TemplatesTest.php b/tests/Core/Templates/TemplatesTest.php
deleted file mode 100644
index cd1502fd22c..00000000000
--- a/tests/Core/Templates/TemplatesTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Tests\Core\Templates;
-
-class TemplatesTest extends \Test\TestCase {
-
- public function test403() {
- $template = \OC::$SERVERROOT . '/core/templates/403.php';
- $expectedHtml = "<ul><li class='error'>\n\t\tAccess forbidden<br><p class='hint'></p></li></ul>";
- $this->assertTemplate($expectedHtml, $template);
- }
-
- public function test404() {
- $template = \OC::$SERVERROOT . '/core/templates/404.php';
- $href = \OC::$server->getURLGenerator()->linkTo('', 'index.php');
- $expectedHtml = "<ul><li class='error'>\n\t\t\tFile not found<br><p class='hint'>The specified document has not been found on the server.</p>\n<p class='hint'><a href='$href'>You can click here to return to Nextcloud.</a></p>\n\t\t</li></ul>";
- $this->assertTemplate($expectedHtml, $template);
- }
-
-}
diff --git a/tests/Settings/Controller/CertificateControllerTest.php b/tests/Settings/Controller/CertificateControllerTest.php
index 36b5715e734..48d34a1542b 100644
--- a/tests/Settings/Controller/CertificateControllerTest.php
+++ b/tests/Settings/Controller/CertificateControllerTest.php
@@ -174,7 +174,7 @@ class CertificateControllerTest extends \Test\TestCase {
->with(file_get_contents($uploadedFile['tmp_name'], 'badCertificate.crt'))
->will($this->throwException(new \Exception()));
- $expected = new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY);
+ $expected = new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY);
$this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate());
}
diff --git a/tests/Settings/Controller/CheckSetupControllerTest.php b/tests/Settings/Controller/CheckSetupControllerTest.php
index 49931994f02..d0093cc8a9a 100644
--- a/tests/Settings/Controller/CheckSetupControllerTest.php
+++ b/tests/Settings/Controller/CheckSetupControllerTest.php
@@ -296,11 +296,11 @@ class CheckSetupControllerTest extends TestCase {
$this->urlGenerator->expects($this->at(0))
->method('linkToDocs')
->with('admin-performance')
- ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-performance');
+ ->willReturn('http://docs.example.org/server/go.php?to=admin-performance');
$this->urlGenerator->expects($this->at(1))
->method('linkToDocs')
->with('admin-security')
- ->willReturn('https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html');
+ ->willReturn('https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html');
$this->checkSetupController
->expects($this->once())
->method('isPhpOutdated')
@@ -316,19 +316,19 @@ class CheckSetupControllerTest extends TestCase {
$this->urlGenerator->expects($this->at(3))
->method('linkToDocs')
->with('admin-code-integrity')
- ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-code-integrity');
+ ->willReturn('http://docs.example.org/server/go.php?to=admin-code-integrity');
$this->urlGenerator->expects($this->at(4))
->method('linkToDocs')
->with('admin-php-opcache')
- ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-php-opcache');
+ ->willReturn('http://docs.example.org/server/go.php?to=admin-php-opcache');
$expected = new DataResponse(
[
'serverHasInternetConnection' => false,
'isMemcacheConfigured' => true,
- 'memcacheDocs' => 'http://doc.owncloud.org/server/go.php?to=admin-performance',
+ 'memcacheDocs' => 'http://docs.example.org/server/go.php?to=admin-performance',
'isUrandomAvailable' => self::invokePrivate($this->checkSetupController, 'isUrandomAvailable'),
- 'securityDocs' => 'https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html',
+ 'securityDocs' => 'https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html',
'isUsedTlsLibOutdated' => '',
'phpSupported' => [
'eol' => true,
@@ -338,9 +338,9 @@ class CheckSetupControllerTest extends TestCase {
'reverseProxyDocs' => 'reverse-proxy-doc-link',
'isCorrectMemcachedPHPModuleInstalled' => true,
'hasPassedCodeIntegrityCheck' => null,
- 'codeIntegrityCheckerDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-code-integrity',
+ 'codeIntegrityCheckerDocumentation' => 'http://docs.example.org/server/go.php?to=admin-code-integrity',
'isOpcacheProperlySetup' => false,
- 'phpOpcacheDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-php-opcache',
+ 'phpOpcacheDocumentation' => 'http://docs.example.org/server/go.php?to=admin-php-opcache',
'isSettimelimitAvailable' => true,
]
);
diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php
index a8b67278e77..40ba9ee1c21 100644
--- a/tests/Settings/Mailer/NewUserMailHelperTest.php
+++ b/tests/Settings/Mailer/NewUserMailHelperTest.php
@@ -182,7 +182,7 @@ class NewUserMailHelperTest extends TestCase {
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%">
- <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
@@ -415,7 +415,7 @@ EOF;
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%">
- <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
diff --git a/tests/acceptance/features/core/NextcloudTestServerLocalHelper.php b/tests/acceptance/features/core/NextcloudTestServerLocalHelper.php
index 32b5330c61a..b11a9ae8217 100644
--- a/tests/acceptance/features/core/NextcloudTestServerLocalHelper.php
+++ b/tests/acceptance/features/core/NextcloudTestServerLocalHelper.php
@@ -35,9 +35,12 @@
* the Nextcloud server; the last commit in that Git repository must provide the
* initial state for the Nextcloud server expected by the acceptance tests.
*
- * The Nextcloud server is available at "127.0.0.1", so it is expected to see
- * "127.0.0.1" as a trusted domain (which would be the case if it was installed
- * by running "occ maintenance:install"). The base URL to access the Nextcloud
+ * The Nextcloud server is available at "$nextcloudServerDomain", which can be
+ * optionally specified when the NextcloudTestServerLocalHelper is created; if
+ * no value is given "127.0.0.1" is used by default. In any case, the value of
+ * "$nextcloudServerDomain" must be seen as a trusted domain by the Nextcloud
+ * server (which would be the case for "127.0.0.1" if it was installed by
+ * running "occ maintenance:install"). The base URL to access the Nextcloud
* server can be got from "getBaseUrl".
*/
class NextcloudTestServerLocalHelper implements NextcloudTestServerHelper {
@@ -45,12 +48,19 @@ class NextcloudTestServerLocalHelper implements NextcloudTestServerHelper {
/**
* @var string
*/
+ private $nextcloudServerDomain;
+
+ /**
+ * @var string
+ */
private $phpServerPid;
/**
* Creates a new NextcloudTestServerLocalHelper.
*/
- public function __construct() {
+ public function __construct($nextcloudServerDomain = "127.0.0.1") {
+ $this->nextcloudServerDomain = $nextcloudServerDomain;
+
$this->phpServerPid = "";
}
@@ -77,7 +87,7 @@ class NextcloudTestServerLocalHelper implements NextcloudTestServerHelper {
// execOrException is not used because the server is started in the
// background, so the command will always succeed even if the server
// itself fails.
- $this->phpServerPid = exec("php -S 127.0.0.1:80 -t ../../ >/dev/null 2>&1 & echo $!");
+ $this->phpServerPid = exec("php -S " . $this->nextcloudServerDomain . ":80 -t ../../ >/dev/null 2>&1 & echo $!");
$timeout = 60;
if (!Utils::waitForServer($this->getBaseUrl(), $timeout)) {
@@ -100,7 +110,7 @@ class NextcloudTestServerLocalHelper implements NextcloudTestServerHelper {
* @return string the base URL of the Nextcloud test server.
*/
public function getBaseUrl() {
- return "http://127.0.0.1/index.php";
+ return "http://" . $this->nextcloudServerDomain . "/index.php";
}
/**
diff --git a/tests/acceptance/installAndConfigureServer.sh b/tests/acceptance/installAndConfigureServer.sh
index 2fbdf821f77..c61faeda238 100755
--- a/tests/acceptance/installAndConfigureServer.sh
+++ b/tests/acceptance/installAndConfigureServer.sh
@@ -25,6 +25,18 @@
set -o errexit
+NEXTCLOUD_SERVER_DOMAIN=""
+if [ "$1" = "--nextcloud-server-domain" ]; then
+ NEXTCLOUD_SERVER_DOMAIN=$2
+
+ shift 2
+fi
+
php occ maintenance:install --admin-pass=admin
OC_PASS=123456acb php occ user:add --password-from-env user0
+
+if [ "$NEXTCLOUD_SERVER_DOMAIN" != "" ]; then
+ # Default first trusted domain is "localhost"; replace it with given domain.
+ php occ config:system:set trusted_domains 0 --value="$NEXTCLOUD_SERVER_DOMAIN"
+fi
diff --git a/tests/acceptance/run-local.sh b/tests/acceptance/run-local.sh
index 93c11e810f8..e2270be3854 100755
--- a/tests/acceptance/run-local.sh
+++ b/tests/acceptance/run-local.sh
@@ -54,6 +54,26 @@ if [ "$1" = "--timeout-multiplier" ]; then
shift 2
fi
+# "--nextcloud-server-domain XXX" option can be provided to set the domain used
+# by the Selenium server to access the Nextcloud server.
+DEFAULT_NEXTCLOUD_SERVER_DOMAIN="127.0.0.1"
+NEXTCLOUD_SERVER_DOMAIN="$DEFAULT_NEXTCLOUD_SERVER_DOMAIN"
+if [ "$1" = "--nextcloud-server-domain" ]; then
+ NEXTCLOUD_SERVER_DOMAIN=$2
+
+ shift 2
+fi
+
+# "--selenium-server XXX" option can be provided to set the domain and port used
+# by the acceptance tests to access the Selenium server.
+DEFAULT_SELENIUM_SERVER="127.0.0.1:4444"
+SELENIUM_SERVER="$DEFAULT_SELENIUM_SERVER"
+if [ "$1" = "--selenium-server" ]; then
+ SELENIUM_SERVER=$2
+
+ shift 2
+fi
+
# Safety parameter to prevent executing this script by mistake and messing with
# the Git repository.
if [ "$1" != "allow-git-repository-modifications" ]; then
@@ -80,12 +100,63 @@ if [ "$TIMEOUT_MULTIPLIER" != "" ]; then
sed --in-place "s/$ORIGINAL/$REPLACEMENT/" config/behat.yml
fi
+if [ "$NEXTCLOUD_SERVER_DOMAIN" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
+ # Although Behat documentation states that using the BEHAT_PARAMS
+ # environment variable "You can set any value for any option that is
+ # available in a behat.yml file" this is currently not true for the
+ # constructor parameters of contexts (see
+ # https://github.com/Behat/Behat/issues/983). Thus, the default "behat.yml"
+ # configuration file has to be adjusted to provide the appropriate
+ # parameters for NextcloudTestServerContext.
+ ORIGINAL="\
+ - NextcloudTestServerContext"
+ REPLACEMENT="\
+ - NextcloudTestServerContext:\n\
+ nextcloudTestServerHelperParameters:\n\
+ - $NEXTCLOUD_SERVER_DOMAIN"
+ sed --in-place "s/$ORIGINAL/$REPLACEMENT/" config/behat.yml
+fi
+
+if [ "$SELENIUM_SERVER" != "$DEFAULT_SELENIUM_SERVER" ]; then
+ # Set the Selenium server to be used by Mink; this extends the default
+ # configuration from "config/behat.yml".
+ export BEHAT_PARAMS='
+{
+ "extensions": {
+ "Behat\\MinkExtension": {
+ "sessions": {
+ "default": {
+ "selenium2": {
+ "wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
+ }
+ },
+ "John": {
+ "selenium2": {
+ "wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
+ }
+ },
+ "Jane": {
+ "selenium2": {
+ "wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
+ }
+ }
+ }
+ }
+ }
+}'
+fi
+
composer install
cd ../../
+INSTALL_AND_CONFIGURE_SERVER_PARAMETERS=""
+if [ "$NEXTCLOUD_SERVER_domain" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
+ INSTALL_AND_CONFIGURE_SERVER_PARAMETERS+="--nextcloud-server-domain $NEXTCLOUD_SERVER_DOMAIN"
+fi
+
echo "Installing and configuring Nextcloud server"
-tests/acceptance/installAndConfigureServer.sh
+tests/acceptance/installAndConfigureServer.sh $INSTALL_AND_CONFIGURE_SERVER_PARAMETERS
echo "Saving the default state so acceptance tests can reset to it"
find . -name ".gitignore" -exec rm --force {} \;
@@ -95,6 +166,6 @@ cd tests/acceptance
# Ensure that the Selenium server is ready before running the tests.
echo "Waiting for Selenium"
-timeout 60s bash -c "while ! curl 127.0.0.1:4444 >/dev/null 2>&1; do sleep 1; done"
+timeout 60s bash -c "while ! curl $SELENIUM_SERVER >/dev/null 2>&1; do sleep 1; done"
vendor/bin/behat $SCENARIO_TO_RUN
diff --git a/tests/data/emails/new-account-email-custom.html b/tests/data/emails/new-account-email-custom.html
index a60902ae306..e35b9f57848 100644
--- a/tests/data/emails/new-account-email-custom.html
+++ b/tests/data/emails/new-account-email-custom.html
@@ -23,7 +23,7 @@
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
diff --git a/tests/data/emails/new-account-email-single-button.html b/tests/data/emails/new-account-email-single-button.html
index 50763efa5b5..d70a8a647d3 100644
--- a/tests/data/emails/new-account-email-single-button.html
+++ b/tests/data/emails/new-account-email-single-button.html
@@ -23,7 +23,7 @@
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
diff --git a/tests/data/emails/new-account-email.html b/tests/data/emails/new-account-email.html
index 32568e11b66..3e8814bbfbb 100644
--- a/tests/data/emails/new-account-email.html
+++ b/tests/data/emails/new-account-email.html
@@ -23,7 +23,7 @@
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
<center data-parsed="" style="min-width:580px;width:100%">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
</tbody>
diff --git a/tests/lib/App/AppStore/Bundles/BundleFetcherTest.php b/tests/lib/App/AppStore/Bundles/BundleFetcherTest.php
index 71f9820fc72..350f6654e08 100644
--- a/tests/lib/App/AppStore/Bundles/BundleFetcherTest.php
+++ b/tests/lib/App/AppStore/Bundles/BundleFetcherTest.php
@@ -23,6 +23,7 @@ namespace Test\App\AppStore\Bundles;
use OC\App\AppStore\Bundles\BundleFetcher;
use OC\App\AppStore\Bundles\CoreBundle;
+use OC\App\AppStore\Bundles\EducationBundle;
use OC\App\AppStore\Bundles\EnterpriseBundle;
use OC\App\AppStore\Bundles\GroupwareBundle;
use OC\App\AppStore\Bundles\SocialSharingBundle;
@@ -50,6 +51,7 @@ class BundleFetcherTest extends TestCase {
new EnterpriseBundle($this->l10n),
new GroupwareBundle($this->l10n),
new SocialSharingBundle($this->l10n),
+ new EducationBundle($this->l10n),
];
$this->assertEquals($expected, $this->bundleFetcher->getBundles());
}
diff --git a/tests/lib/App/AppStore/Bundles/EducationBundleTest.php b/tests/lib/App/AppStore/Bundles/EducationBundleTest.php
new file mode 100644
index 00000000000..589f35db215
--- /dev/null
+++ b/tests/lib/App/AppStore/Bundles/EducationBundleTest.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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 Test\App\AppStore\Bundles;
+
+use OC\App\AppStore\Bundles\EducationBundle;
+
+class EducationBundleTest extends BundleBase {
+ public function setUp() {
+ parent::setUp();
+ $this->bundle = new EducationBundle($this->l10n);
+ $this->bundleIdentifier = 'EducationBundle';
+ $this->bundleName = 'Education Edition';
+ $this->bundleAppIds = [
+ 'zenodo',
+ 'dashboard',
+ 'circles',
+ 'groupfolders',
+ 'announcementcenter',
+ 'admin_notifications',
+ 'quota_warning',
+ 'orcid',
+ 'user_saml',
+ ];
+ }
+}
diff --git a/tests/lib/AppFramework/Controller/ControllerTest.php b/tests/lib/AppFramework/Controller/ControllerTest.php
index 59e2904e740..5c8124c5e7f 100644
--- a/tests/lib/AppFramework/Controller/ControllerTest.php
+++ b/tests/lib/AppFramework/Controller/ControllerTest.php
@@ -95,75 +95,6 @@ class ControllerTest extends \Test\TestCase {
$this->controller = new ChildController($this->app, $request);
}
-
- public function testParamsGet(){
- $this->assertEquals('Johnny Weissmüller', $this->controller->params('name', 'Tarzan'));
- }
-
-
- public function testParamsGetDefault(){
- $this->assertEquals('Tarzan', $this->controller->params('Ape Man', 'Tarzan'));
- }
-
-
- public function testParamsFile(){
- $this->assertEquals('filevalue', $this->controller->params('file', 'filevalue'));
- }
-
-
- public function testGetUploadedFile(){
- $this->assertEquals('filevalue', $this->controller->getUploadedFile('file'));
- }
-
-
-
- public function testGetUploadedFileDefault(){
- $this->assertEquals('default', $this->controller->params('files', 'default'));
- }
-
-
- public function testGetParams(){
- $params = array(
- 'name' => 'Johnny Weissmüller',
- 'nickname' => 'Janey',
- );
-
- $this->assertEquals($params, $this->controller->getParams());
- }
-
-
- public function testRender(){
- $this->assertTrue($this->controller->render('') instanceof TemplateResponse);
- }
-
-
- public function testSetParams(){
- $params = array('john' => 'foo');
- $response = $this->controller->render('home', $params);
-
- $this->assertEquals($params, $response->getParams());
- }
-
-
- public function testRenderHeaders(){
- $headers = array('one', 'two');
- $response = $this->controller->render('', array(), '', $headers);
-
- $this->assertTrue(in_array($headers[0], $response->getHeaders()));
- $this->assertTrue(in_array($headers[1], $response->getHeaders()));
- }
-
-
- public function testGetRequestMethod(){
- $this->assertEquals('hi', $this->controller->method());
- }
-
-
- public function testGetEnvVariable(){
- $this->assertEquals('daheim', $this->controller->env('PATH'));
- }
-
-
/**
* @expectedException \DomainException
*/
diff --git a/tests/lib/AppFramework/Http/ResponseTest.php b/tests/lib/AppFramework/Http/ResponseTest.php
index d8959face89..9267d862600 100644
--- a/tests/lib/AppFramework/Http/ResponseTest.php
+++ b/tests/lib/AppFramework/Http/ResponseTest.php
@@ -269,4 +269,9 @@ class ResponseTest extends \Test\TestCase {
$this->childResponse->throttle();
$this->assertTrue($this->childResponse->isThrottled());
}
+
+ public function testGetThrottleMetadata() {
+ $this->childResponse->throttle(['foo' => 'bar']);
+ $this->assertSame(['foo' => 'bar'], $this->childResponse->getThrottleMetadata());
+ }
}
diff --git a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php
index 2b7a79bae2f..f948e184f53 100644
--- a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php
+++ b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php
@@ -26,6 +26,7 @@ namespace Test\AppFramework\Middleware;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Middleware\MiddlewareDispatcher;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\Http\Response;
diff --git a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php
index 14d3b796846..ae2345764ff 100644
--- a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php
+++ b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php
@@ -112,6 +112,10 @@ class BruteForceMiddlewareTest extends TestCase {
->expects($this->once())
->method('isThrottled')
->willReturn(true);
+ $response
+ ->expects($this->once())
+ ->method('getThrottleMetadata')
+ ->willReturn([]);
$this->reflector
->expects($this->once())
->method('getAnnotationParameter')
diff --git a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php
index d0096d43f3d..498eaed8949 100644
--- a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php
+++ b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php
@@ -17,26 +17,30 @@ use OC\AppFramework\Middleware\Security\CORSMiddleware;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\AppFramework\Middleware\Security\Exceptions\SecurityException;
use OC\Security\Bruteforce\Throttler;
+use OC\User\Session;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
-
+use OCP\IConfig;
+use OCP\Security\ISecureRandom;
class CORSMiddlewareTest extends \Test\TestCase {
+ /** @var ControllerMethodReflector */
private $reflector;
+ /** @var Session|\PHPUnit_Framework_MockObject_MockObject */
private $session;
/** @var Throttler */
private $throttler;
+ /** @var Controller */
+ private $controller;
protected function setUp() {
parent::setUp();
$this->reflector = new ControllerMethodReflector();
- $this->session = $this->getMockBuilder('\OC\User\Session')
- ->disableOriginalConstructor()
- ->getMock();
- $this->throttler = $this->getMockBuilder('\OC\Security\Bruteforce\Throttler')
- ->disableOriginalConstructor()
- ->getMock();
+ $this->session = $this->createMock(Session::class);
+ $this->throttler = $this->createMock(Throttler::class);
+ $this->controller = $this->createMock(Controller::class);
}
/**
@@ -49,13 +53,13 @@ class CORSMiddlewareTest extends \Test\TestCase {
'HTTP_ORIGIN' => 'test'
]
],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $response = $middleware->afterController($this, __FUNCTION__, new Response());
+ $response = $middleware->afterController($this->controller, __FUNCTION__, new Response());
$headers = $response->getHeaders();
$this->assertEquals('test', $headers['Access-Control-Allow-Origin']);
}
@@ -68,12 +72,12 @@ class CORSMiddlewareTest extends \Test\TestCase {
'HTTP_ORIGIN' => 'test'
]
],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $response = $middleware->afterController($this, __FUNCTION__, new Response());
+ $response = $middleware->afterController($this->controller, __FUNCTION__, new Response());
$headers = $response->getHeaders();
$this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers));
}
@@ -85,13 +89,13 @@ class CORSMiddlewareTest extends \Test\TestCase {
public function testNoOriginHeaderNoCORSHEADER() {
$request = new Request(
[],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $response = $middleware->afterController($this, __FUNCTION__, new Response());
+ $response = $middleware->afterController($this->controller, __FUNCTION__, new Response());
$headers = $response->getHeaders();
$this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers));
}
@@ -108,15 +112,15 @@ class CORSMiddlewareTest extends \Test\TestCase {
'HTTP_ORIGIN' => 'test'
]
],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
$response = new Response();
$response->addHeader('AcCess-control-Allow-Credentials ', 'TRUE');
- $middleware->afterController($this, __FUNCTION__, $response);
+ $middleware->afterController($this->controller, __FUNCTION__, $response);
}
/**
@@ -126,8 +130,8 @@ class CORSMiddlewareTest extends \Test\TestCase {
public function testNoCORSShouldAllowCookieAuth() {
$request = new Request(
[],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
@@ -139,7 +143,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(true));
$this->reflector->reflect($this, __FUNCTION__);
- $middleware->beforeController($this, __FUNCTION__, new Response());
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -151,8 +155,8 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->session->expects($this->once())
->method('logout');
@@ -163,7 +167,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $middleware->beforeController($this, __FUNCTION__, new Response());
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -176,8 +180,8 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->session->expects($this->once())
->method('logout');
@@ -188,7 +192,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $middleware->beforeController($this, __FUNCTION__, new Response());
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -201,8 +205,8 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$this->session->expects($this->once())
->method('logout');
@@ -213,7 +217,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $middleware->beforeController($this, __FUNCTION__, new Response());
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
public function testAfterExceptionWithSecurityExceptionNoStatus() {
@@ -222,11 +226,11 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $response = $middleware->afterException($this, __FUNCTION__, new SecurityException('A security exception'));
+ $response = $middleware->afterException($this->controller, __FUNCTION__, new SecurityException('A security exception'));
$expected = new JSONResponse(['message' => 'A security exception'], 500);
$this->assertEquals($expected, $response);
@@ -238,11 +242,11 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $response = $middleware->afterException($this, __FUNCTION__, new SecurityException('A security exception', 501));
+ $response = $middleware->afterException($this->controller, __FUNCTION__, new SecurityException('A security exception', 501));
$expected = new JSONResponse(['message' => 'A security exception'], 501);
$this->assertEquals($expected, $response);
@@ -258,11 +262,11 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'pass'
]],
- $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMockBuilder('\OCP\IConfig')->getMock()
+ $this->createMock(ISecureRandom::class),
+ $this->createMock(IConfig::class)
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler);
- $middleware->afterException($this, __FUNCTION__, new \Exception('A regular exception'));
+ $middleware->afterException($this->controller, __FUNCTION__, new \Exception('A regular exception'));
}
}
diff --git a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php
index 17ac30b8fe4..773cb2b196f 100644
--- a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php
+++ b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php
@@ -131,7 +131,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->with($this->equalTo('files'));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
@@ -152,7 +152,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
try {
$this->reader->reflect(__CLASS__, $method);
- $sec->beforeController(__CLASS__, $method);
+ $sec->beforeController($this->controller, $method);
} catch (SecurityException $ex){
$this->assertEquals($status, $ex->getCode());
}
@@ -234,7 +234,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
$sec = $this->getMiddleware(false, false);
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $sec->beforeController(__CLASS__, __FUNCTION__);
+ $sec->beforeController($this->controller, __FUNCTION__);
}
@@ -261,7 +261,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
}
$this->reader->reflect(__CLASS__, $method);
- $sec->beforeController(__CLASS__, $method);
+ $sec->beforeController($this->controller, $method);
}
@@ -277,7 +277,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->method('passesStrictCookieCheck')
->will($this->returnValue(true));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
@@ -291,7 +291,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(false));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -306,7 +306,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(true));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -322,7 +322,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(true));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -338,7 +338,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(false));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
@@ -352,7 +352,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->will($this->returnValue(false));
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -367,7 +367,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
->willReturn(true);
$this->reader->reflect(__CLASS__, __FUNCTION__);
- $this->middleware->beforeController(__CLASS__, __FUNCTION__);
+ $this->middleware->beforeController($this->controller, __FUNCTION__);
}
public function dataCsrfOcsController() {
diff --git a/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php b/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php
index af2045cb7c1..3c218bb53c7 100644
--- a/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php
+++ b/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php
@@ -15,21 +15,21 @@ namespace Test\AppFramework\Middleware;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Middleware\SessionMiddleware;
use OC\AppFramework\Utility\ControllerMethodReflector;
+use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Response;
class SessionMiddlewareTest extends \Test\TestCase {
- /**
- * @var ControllerMethodReflector
- */
+ /** @var ControllerMethodReflector */
private $reflector;
- /**
- * @var Request
- */
+ /** @var Request */
private $request;
+ /** @var Controller */
+ private $controller;
+
protected function setUp() {
parent::setUp();
@@ -39,6 +39,7 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->getMockBuilder('\OCP\IConfig')->getMock()
);
$this->reflector = new ControllerMethodReflector();
+ $this->controller = $this->createMock(Controller::class);
}
/**
@@ -49,7 +50,7 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new SessionMiddleware($this->request, $this->reflector, $session);
- $middleware->beforeController($this, __FUNCTION__);
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
/**
@@ -60,7 +61,7 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new SessionMiddleware($this->request, $this->reflector, $session);
- $middleware->afterController($this, __FUNCTION__, new Response());
+ $middleware->afterController($this->controller, __FUNCTION__, new Response());
}
public function testSessionClosedOnBeforeController() {
@@ -68,7 +69,7 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new SessionMiddleware($this->request, $this->reflector, $session);
- $middleware->beforeController($this, __FUNCTION__);
+ $middleware->beforeController($this->controller, __FUNCTION__);
}
public function testSessionNotClosedOnAfterController() {
@@ -76,7 +77,7 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->reflector->reflect($this, __FUNCTION__);
$middleware = new SessionMiddleware($this->request, $this->reflector, $session);
- $middleware->afterController($this, __FUNCTION__, new Response());
+ $middleware->afterController($this->controller, __FUNCTION__, new Response());
}
/**
diff --git a/tests/lib/Comments/ManagerTest.php b/tests/lib/Comments/ManagerTest.php
index 24c634be137..b04f3bd567e 100644
--- a/tests/lib/Comments/ManagerTest.php
+++ b/tests/lib/Comments/ManagerTest.php
@@ -307,29 +307,9 @@ class ManagerTest extends TestCase {
}
public function testGetNumberOfUnreadCommentsForFolder() {
- // 2 comment for 1111 with 1 before read marker
- // 2 comments for 1112 with no read marker
- // 1 comment for 1113 before read marker
- // 1 comment for 1114 with no read marker
- $this->addDatabaseEntry(0, 0, null, null, '1112');
- for ($i = 1; $i < 5; $i++) {
- $this->addDatabaseEntry(0, 0, null, null, '111' . $i);
- }
- $this->addDatabaseEntry(0, 0, (new \DateTime())->modify('-2 days'), null, '1111');
- $user = $this->createMock(IUser::class);
- $user->expects($this->any())
- ->method('getUID')
- ->will($this->returnValue('comment_test'));
-
- $manager = $this->getManager();
-
- $manager->setReadMark('files', '1111', (new \DateTime())->modify('-1 days'), $user);
- $manager->setReadMark('files', '1113', (new \DateTime()), $user);
-
$query = $this->connection->getQueryBuilder();
$query->insert('filecache')
->values([
- 'fileid' => $query->createParameter('fileid'),
'parent' => $query->createNamedParameter(1000),
'size' => $query->createNamedParameter(10),
'mtime' => $query->createNamedParameter(10),
@@ -338,17 +318,37 @@ class ManagerTest extends TestCase {
'path_hash' => $query->createParameter('path'),
]);
- for ($i = 1111; $i < 1115; $i++) {
+ $fileIds = [];
+ for ($i = 0; $i < 4; $i++) {
$query->setParameter('path', 'path_' . $i);
- $query->setParameter('fileid', $i);
$query->execute();
+ $fileIds[] = $query->getLastInsertId();
}
+ // 2 comment for 1111 with 1 before read marker
+ // 2 comments for 1112 with no read marker
+ // 1 comment for 1113 before read marker
+ // 1 comment for 1114 with no read marker
+ $this->addDatabaseEntry(0, 0, null, null, $fileIds[1]);
+ for ($i = 0; $i < 4; $i++) {
+ $this->addDatabaseEntry(0, 0, null, null, $fileIds[$i]);
+ }
+ $this->addDatabaseEntry(0, 0, (new \DateTime())->modify('-2 days'), null, $fileIds[0]);
+ $user = $this->createMock(IUser::class);
+ $user->expects($this->any())
+ ->method('getUID')
+ ->will($this->returnValue('comment_test'));
+
+ $manager = $this->getManager();
+
+ $manager->setReadMark('files', (string) $fileIds[0], (new \DateTime())->modify('-1 days'), $user);
+ $manager->setReadMark('files', (string) $fileIds[2], (new \DateTime()), $user);
+
$amount = $manager->getNumberOfUnreadCommentsForFolder(1000, $user);
$this->assertEquals([
- '1111' => 1,
- '1112' => 2,
- '1114' => 1,
+ $fileIds[0] => 1,
+ $fileIds[1] => 2,
+ $fileIds[3] => 1,
], $amount);
}
diff --git a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php
index c270e105fc1..e89da0fbc92 100644
--- a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php
+++ b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php
@@ -44,6 +44,8 @@ class FunctionBuilderTest extends TestCase {
$query = $this->connection->getQueryBuilder();
$query->select($query->func()->concat($query->createNamedParameter('foo'), new Literal("'bar'")));
+ $query->from('appconfig')
+ ->setMaxResults(1);
$this->assertEquals('foobar', $query->execute()->fetchColumn());
}
@@ -52,6 +54,8 @@ class FunctionBuilderTest extends TestCase {
$query = $this->connection->getQueryBuilder();
$query->select($query->func()->md5($query->createNamedParameter('foobar')));
+ $query->from('appconfig')
+ ->setMaxResults(1);
$this->assertEquals(md5('foobar'), $query->execute()->fetchColumn());
}
@@ -60,6 +64,8 @@ class FunctionBuilderTest extends TestCase {
$query = $this->connection->getQueryBuilder();
$query->select($query->func()->substring($query->createNamedParameter('foobar'), new Literal(2), $query->createNamedParameter(2)));
+ $query->from('appconfig')
+ ->setMaxResults(1);
$this->assertEquals('oo', $query->execute()->fetchColumn());
}
@@ -68,6 +74,8 @@ class FunctionBuilderTest extends TestCase {
$query = $this->connection->getQueryBuilder();
$query->select($query->func()->substring($query->createNamedParameter('foobar'), new Literal(2)));
+ $query->from('appconfig')
+ ->setMaxResults(1);
$this->assertEquals('oobar', $query->execute()->fetchColumn());
}
diff --git a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
index 150c772b26c..e264fde6ec7 100644
--- a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
+++ b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
@@ -472,15 +472,15 @@ class QueryBuilderTest extends \Test\TestCase {
public function dataFrom() {
return [
['data', null, null, null, [['table' => '`*PREFIX*data`', 'alias' => null]], '`*PREFIX*data`'],
- ['data', 't', null, null, [['table' => '`*PREFIX*data`', 'alias' => 't']], '`*PREFIX*data` t'],
+ ['data', 't', null, null, [['table' => '`*PREFIX*data`', 'alias' => '`t`']], '`*PREFIX*data` `t`'],
['data1', null, 'data2', null, [
['table' => '`*PREFIX*data1`', 'alias' => null],
['table' => '`*PREFIX*data2`', 'alias' => null]
], '`*PREFIX*data1`, `*PREFIX*data2`'],
['data', 't1', 'data', 't2', [
- ['table' => '`*PREFIX*data`', 'alias' => 't1'],
- ['table' => '`*PREFIX*data`', 'alias' => 't2']
- ], '`*PREFIX*data` t1, `*PREFIX*data` t2'],
+ ['table' => '`*PREFIX*data`', 'alias' => '`t1`'],
+ ['table' => '`*PREFIX*data`', 'alias' => '`t2`']
+ ], '`*PREFIX*data` `t1`, `*PREFIX*data` `t2`'],
];
}
@@ -515,18 +515,18 @@ class QueryBuilderTest extends \Test\TestCase {
return [
[
'd1', 'data2', null, null,
- ['d1' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 INNER JOIN `*PREFIX*data2` ON '
+ ['`d1`' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` INNER JOIN `*PREFIX*data2` ON '
],
[
'd1', 'data2', 'd2', null,
- ['d1' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 INNER JOIN `*PREFIX*data2` d2 ON '
+ ['`d1`' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` INNER JOIN `*PREFIX*data2` `d2` ON '
],
[
- 'd1', 'data2', 'd2', 'd1.`field1` = d2.`field2`',
- ['d1' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => 'd1.`field1` = d2.`field2`']]],
- '`*PREFIX*data1` d1 INNER JOIN `*PREFIX*data2` d2 ON d1.`field1` = d2.`field2`'
+ 'd1', 'data2', 'd2', '`d1`.`field1` = `d2`.`field2`',
+ ['`d1`' => [['joinType' => 'inner', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => '`d1`.`field1` = `d2`.`field2`']]],
+ '`*PREFIX*data1` `d1` INNER JOIN `*PREFIX*data2` `d2` ON `d1`.`field1` = `d2`.`field2`'
],
];
@@ -596,18 +596,18 @@ class QueryBuilderTest extends \Test\TestCase {
return [
[
'd1', 'data2', null, null,
- ['d1' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 LEFT JOIN `*PREFIX*data2` ON '
+ ['`d1`' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` LEFT JOIN `*PREFIX*data2` ON '
],
[
'd1', 'data2', 'd2', null,
- ['d1' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 LEFT JOIN `*PREFIX*data2` d2 ON '
+ ['`d1`' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` LEFT JOIN `*PREFIX*data2` `d2` ON '
],
[
- 'd1', 'data2', 'd2', 'd1.`field1` = d2.`field2`',
- ['d1' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => 'd1.`field1` = d2.`field2`']]],
- '`*PREFIX*data1` d1 LEFT JOIN `*PREFIX*data2` d2 ON d1.`field1` = d2.`field2`'
+ 'd1', 'data2', 'd2', '`d1`.`field1` = `d2`.`field2`',
+ ['`d1`' => [['joinType' => 'left', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => '`d1`.`field1` = `d2`.`field2`']]],
+ '`*PREFIX*data1` `d1` LEFT JOIN `*PREFIX*data2` `d2` ON `d1`.`field1` = `d2`.`field2`'
],
];
}
@@ -646,18 +646,18 @@ class QueryBuilderTest extends \Test\TestCase {
return [
[
'd1', 'data2', null, null,
- ['d1' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 RIGHT JOIN `*PREFIX*data2` ON '
+ ['`d1`' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => null, 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` RIGHT JOIN `*PREFIX*data2` ON '
],
[
'd1', 'data2', 'd2', null,
- ['d1' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => null]]],
- '`*PREFIX*data1` d1 RIGHT JOIN `*PREFIX*data2` d2 ON '
+ ['`d1`' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => null]]],
+ '`*PREFIX*data1` `d1` RIGHT JOIN `*PREFIX*data2` `d2` ON '
],
[
- 'd1', 'data2', 'd2', 'd1.`field1` = d2.`field2`',
- ['d1' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => 'd2', 'joinCondition' => 'd1.`field1` = d2.`field2`']]],
- '`*PREFIX*data1` d1 RIGHT JOIN `*PREFIX*data2` d2 ON d1.`field1` = d2.`field2`'
+ 'd1', 'data2', 'd2', '`d1`.`field1` = `d2`.`field2`',
+ ['`d1`' => [['joinType' => 'right', 'joinTable' => '`*PREFIX*data2`', 'joinAlias' => '`d2`', 'joinCondition' => '`d1`.`field1` = `d2`.`field2`']]],
+ '`*PREFIX*data1` `d1` RIGHT JOIN `*PREFIX*data2` `d2` ON `d1`.`field1` = `d2`.`field2`'
],
];
}
diff --git a/tests/lib/Files/Cache/CacheTest.php b/tests/lib/Files/Cache/CacheTest.php
index 0038cef1f63..5e6301d689a 100644
--- a/tests/lib/Files/Cache/CacheTest.php
+++ b/tests/lib/Files/Cache/CacheTest.php
@@ -488,48 +488,50 @@ class CacheTest extends \Test\TestCase {
, 10, 0, [], $user)));
}
- function testMove() {
- $file1 = 'folder';
- $file2 = 'folder/bar';
- $file3 = 'folder/foo';
- $file4 = 'folder/foo/1';
- $file5 = 'folder/foo/2';
+ function movePathProvider() {
+ return [
+ ['folder/foo', 'folder/foobar', ['1', '2']],
+ ['folder/foo', 'foo', ['1', '2']],
+ ['files/Индустрия_Инженерные системы ЦОД', 'files/Индустрия_Инженерные системы ЦОД1', ['1', '2']],
+ ];
+ }
+
+ /**
+ * @dataProvider movePathProvider
+ */
+ function testMove($sourceFolder, $targetFolder, $children) {
$data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/bar');
$folderData = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
- $this->cache->put($file1, $folderData);
- $this->cache->put($file2, $folderData);
- $this->cache->put($file3, $folderData);
- $this->cache->put($file4, $data);
- $this->cache->put($file5, $data);
+ // create folders
+ foreach ([$sourceFolder, $targetFolder] as $current) {
+ while (strpos($current, '/') > 0) {
+ $current = dirname($current);
+ $this->cache->put($current, $folderData);
+ $this->cache2->put($current, $folderData);
+ }
+ }
- /* simulate a second user with a different storage id but the same folder structure */
- $this->cache2->put($file1, $folderData);
- $this->cache2->put($file2, $folderData);
- $this->cache2->put($file3, $folderData);
- $this->cache2->put($file4, $data);
- $this->cache2->put($file5, $data);
+ $this->cache->put($sourceFolder, $folderData);
+ $this->cache2->put($sourceFolder, $folderData);
+ foreach ($children as $child) {
+ $this->cache->put($sourceFolder . '/' . $child, $data);
+ $this->cache2->put($sourceFolder . '/' . $child, $data);
+ }
- $this->cache->move('folder/foo', 'folder/foobar');
+ $this->cache->move($sourceFolder, $targetFolder);
- $this->assertFalse($this->cache->inCache('folder/foo'));
- $this->assertFalse($this->cache->inCache('folder/foo/1'));
- $this->assertFalse($this->cache->inCache('folder/foo/2'));
-
- $this->assertTrue($this->cache->inCache('folder/bar'));
- $this->assertTrue($this->cache->inCache('folder/foobar'));
- $this->assertTrue($this->cache->inCache('folder/foobar/1'));
- $this->assertTrue($this->cache->inCache('folder/foobar/2'));
-
- /* the folder structure of the second user must not change! */
- $this->assertTrue($this->cache2->inCache('folder/bar'));
- $this->assertTrue($this->cache2->inCache('folder/foo'));
- $this->assertTrue($this->cache2->inCache('folder/foo/1'));
- $this->assertTrue($this->cache2->inCache('folder/foo/2'));
-
- $this->assertFalse($this->cache2->inCache('folder/foobar'));
- $this->assertFalse($this->cache2->inCache('folder/foobar/1'));
- $this->assertFalse($this->cache2->inCache('folder/foobar/2'));
+
+ $this->assertFalse($this->cache->inCache($sourceFolder));
+ $this->assertTrue($this->cache2->inCache($sourceFolder));
+ $this->assertTrue($this->cache->inCache($targetFolder));
+ $this->assertFalse($this->cache2->inCache($targetFolder));
+ foreach ($children as $child) {
+ $this->assertFalse($this->cache->inCache($sourceFolder . '/' . $child));
+ $this->assertTrue($this->cache2->inCache($sourceFolder . '/' . $child));
+ $this->assertTrue($this->cache->inCache($targetFolder . '/' . $child));
+ $this->assertFalse($this->cache2->inCache($targetFolder . '/' . $child));
+ }
}
function testGetIncomplete() {
diff --git a/tests/lib/Files/Cache/QuerySearchHelperTest.php b/tests/lib/Files/Cache/QuerySearchHelperTest.php
index f458ef039e1..850cee066a1 100644
--- a/tests/lib/Files/Cache/QuerySearchHelperTest.php
+++ b/tests/lib/Files/Cache/QuerySearchHelperTest.php
@@ -129,6 +129,8 @@ class QuerySearchHelperTest extends TestCase {
$builder->insert('filecache')
->values($values)
->execute();
+
+ return $builder->getLastInsertId();
}
private function search(ISearchOperator $operator) {
@@ -139,34 +141,34 @@ class QuerySearchHelperTest extends TestCase {
public function comparisonProvider() {
return [
- [new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125), [1002]],
- [new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [1001]],
+ [new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125), [1]],
+ [new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 125), []],
- [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50), [1001, 1002]],
- [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'name', 'foobar'), [1001]],
- [new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', 'foo%'), [1001, 1002]],
- [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mimetype', 'image/jpg'), [1001]],
- [new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'image/%'), [1001, 1002]],
+ [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50), [0, 1]],
+ [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'name', 'foobar'), [0]],
+ [new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', 'foo%'), [0, 1]],
+ [new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mimetype', 'image/jpg'), [0]],
+ [new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'image/%'), [0, 1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50),
- new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [1001]
- ]), [1001]],
+ new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]
+ ]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_OR, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 100),
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 150),
- ]), [1001, 1002]],
+ ]), [0, 1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 150),
- ]), [1001]],
+ ]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125),
- ]), [1001]],
+ ]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125),
- ]), [1002]],
+ ]), [1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', '%bar'),
- ]), [1002]],
+ ]), [1]],
];
}
@@ -178,22 +180,25 @@ class QuerySearchHelperTest extends TestCase {
* @param array $fileIds
*/
public function testComparison(ISearchOperator $operator, array $fileIds) {
- $this->addCacheEntry([
+ $fileId = [];
+ $fileId[] = $this->addCacheEntry([
'path' => 'foobar',
- 'fileid' => 1001,
'mtime' => 100,
'size' => 50,
'mimetype' => 'image/jpg'
]);
- $this->addCacheEntry([
+ $fileId[] = $this->addCacheEntry([
'path' => 'fooasd',
- 'fileid' => 1002,
'mtime' => 150,
'size' => 50,
'mimetype' => 'image/png'
]);
+ $fileIds = array_map(function($i) use ($fileId) {
+ return $fileId[$i];
+ }, $fileIds);
+
$results = $this->search($operator);
sort($fileIds);
diff --git a/tests/lib/Files/Config/UserMountCacheTest.php b/tests/lib/Files/Config/UserMountCacheTest.php
index f455dc987af..a96b385fcbf 100644
--- a/tests/lib/Files/Config/UserMountCacheTest.php
+++ b/tests/lib/Files/Config/UserMountCacheTest.php
@@ -332,7 +332,7 @@ class UserMountCacheTest extends TestCase {
$id = (int)$this->connection->lastInsertId('*PREFIX*filecache');
$this->fileIds[] = $id;
} else {
- $sql = 'SELECT fileid FROM *PREFIX*filecache WHERE `storage` = ? AND `path_hash` =?';
+ $sql = 'SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` =?';
$query = $this->connection->prepare($sql);
$query->execute([$storageId, md5($internalPath)]);
return (int)$query->fetchColumn();
diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php
index f1e1ee7d417..2983e065ca8 100644
--- a/tests/lib/Files/ViewTest.php
+++ b/tests/lib/Files/ViewTest.php
@@ -18,6 +18,7 @@ use OC\Files\View;
use OCP\Constants;
use OCP\Files\Config\IMountProvider;
use OCP\Files\FileInfo;
+use OCP\Files\Storage\IStorage;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
use OCP\Share;
@@ -32,11 +33,11 @@ class TemporaryNoTouch extends Temporary {
}
class TemporaryNoCross extends Temporary {
- public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = null) {
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = null) {
return Common::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime);
}
- public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
return Common::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
}
diff --git a/tests/lib/Group/GroupTest.php b/tests/lib/Group/GroupTest.php
index fcf6e9d6292..c1824566733 100644
--- a/tests/lib/Group/GroupTest.php
+++ b/tests/lib/Group/GroupTest.php
@@ -130,7 +130,7 @@ class GroupTest extends \Test\TestCase {
->disableOriginalConstructor()
->getMock();
$userManager = $this->getUserManager();
- $userBackend = $this->getMockBuilder('\OC_User_Backend')
+ $userBackend = $this->getMockBuilder(\OC\User\Backend::class)
->disableOriginalConstructor()
->getMock();
$group = new \OC\Group\Group('group1', array($backend1, $backend2), $userManager);
@@ -227,7 +227,7 @@ class GroupTest extends \Test\TestCase {
->disableOriginalConstructor()
->getMock();
$userManager = $this->getUserManager();
- $userBackend = $this->getMockBuilder('\OC_User_Backend')
+ $userBackend = $this->getMockBuilder(\OC\User\Backend::class)
->disableOriginalConstructor()
->getMock();
$group = new \OC\Group\Group('group1', array($backend), $userManager);
diff --git a/tests/lib/OCS/PrivatedataTest.php b/tests/lib/OCS/PrivatedataTest.php
deleted file mode 100644
index 0b3b23b8804..00000000000
--- a/tests/lib/OCS/PrivatedataTest.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
- /**
- * ownCloud
- *
- * @author Thomas Müller
- * @copyright 2013 Thomas Müller deepdiver@owncloud.com
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library 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 library. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace Test\OCS;
-
-use OC_OCS_Privatedata;
-
-/**
- * Class PrivatedataTest
- *
- * @group DB
- */
-class PrivatedataTest extends \Test\TestCase {
- private $appKey;
-
- protected function setUp() {
- parent::setUp();
- \OC::$server->getSession()->set('user_id', 'user1');
- $this->appKey = $this->getUniqueID('app');
- }
-
- public function testGetEmptyOne() {
- $params = array('app' => $this->appKey, 'key' => '123');
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(0, $result);
- }
-
- public function testGetEmptyAll() {
- $params = array('app' => $this->appKey);
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(0, $result);
- }
-
- public function testSetOne() {
- $_POST = array('value' => 123456789);
- $params = array('app' => $this->appKey, 'key' => 'k-1');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(1, $result);
- }
-
- public function testSetExisting() {
- $_POST = array('value' => 123456789);
- $params = array('app' => $this->appKey, 'key' => 'k-10');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(1, $result);
- $data = $result->getData();
- $data = $data[0];
- $this->assertEquals('123456789', $data['value']);
-
- $_POST = array('value' => 'updated');
- $params = array('app' => $this->appKey, 'key' => 'k-10');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(1, $result);
- $data = $result->getData();
- $data = $data[0];
- $this->assertEquals('updated', $data['value']);
- }
-
- public function testSetSameValue() {
- $_POST = array('value' => 123456789);
- $params = array('app' => $this->appKey, 'key' => 'k-10');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(1, $result);
- $data = $result->getData();
- $data = $data[0];
- $this->assertEquals('123456789', $data['value']);
-
- // set the same value again
- $_POST = array('value' => 123456789);
- $params = array('app' => $this->appKey, 'key' => 'k-10');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(1, $result);
- $data = $result->getData();
- $data = $data[0];
- $this->assertEquals('123456789', $data['value']);
- }
-
- public function testSetMany() {
- $_POST = array('value' => 123456789);
-
- // set key 'k-1'
- $params = array('app' => $this->appKey, 'key' => 'k-1');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- // set key 'k-2'
- $params = array('app' => $this->appKey, 'key' => 'k-2');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- // query for all
- $params = array('app' => $this->appKey);
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(2, $result);
- }
-
- public function testDelete() {
- $_POST = array('value' => 123456789);
-
- // set key 'k-1'
- $params = array('app' => $this->appKey, 'key' => 'k-3');
- $result = OC_OCS_Privatedata::set($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::delete($params);
- $this->assertEquals(100, $result->getStatusCode());
-
- $result = OC_OCS_Privatedata::get($params);
- $this->assertOcsResult(0, $result);
- }
-
- /**
- * @dataProvider deleteWithEmptyKeysProvider
- */
- public function testDeleteWithEmptyKeys($params) {
- $result = OC_OCS_Privatedata::delete($params);
- $this->assertEquals(101, $result->getStatusCode());
- }
-
- public function deleteWithEmptyKeysProvider() {
- return array(
- array(array()),
- array(array('app' => '123')),
- array(array('key' => '123')),
- );
- }
-
- /**
- * @param \OC_OCS_Result $result
- * @param integer $expectedArraySize
- */
- public function assertOcsResult($expectedArraySize, $result) {
- $this->assertEquals(100, $result->getStatusCode());
- $data = $result->getData();
- $this->assertTrue(is_array($data));
- $this->assertEquals($expectedArraySize, sizeof($data));
- }
-}
diff --git a/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php b/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
index 4379d1ba589..46422589541 100644
--- a/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
+++ b/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
@@ -24,6 +24,7 @@
namespace Test\Repair\NC12;
use OC\Repair\NC12\UpdateLanguageCodes;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\Migration\IOutput;
use Test\TestCase;
@@ -152,7 +153,7 @@ class UpdateLanguageCodesTest extends TestCase {
->where($qb->expr()->eq('userid', $qb->createNamedParameter($user['userid'])))
->andWhere($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($user['configvalue'])))
+ ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($user['configvalue']), IQueryBuilder::PARAM_STR))
->execute();
}
}
diff --git a/tests/lib/Repair/RepairInvalidPathsTest.php b/tests/lib/Repair/RepairInvalidPathsTest.php
index fe848b62073..b0370f5ae2d 100644
--- a/tests/lib/Repair/RepairInvalidPathsTest.php
+++ b/tests/lib/Repair/RepairInvalidPathsTest.php
@@ -36,6 +36,10 @@ class RepairInvalidPathsTest extends TestCase {
private $storage;
/** @var Cache */
private $cache;
+ /** @var Temporary */
+ private $storage2;
+ /** @var Cache */
+ private $cache2;
/** @var RepairInvalidPaths */
private $repair;
@@ -44,6 +48,8 @@ class RepairInvalidPathsTest extends TestCase {
$this->storage = new Temporary();
$this->cache = $this->storage->getCache();
+ $this->storage2 = new Temporary();
+ $this->cache2 = $this->storage2->getCache();
$config = $this->createMock(IConfig::class);
$config->expects($this->any())
->method('getSystemValue')
@@ -152,4 +158,32 @@ class RepairInvalidPathsTest extends TestCase {
$this->assertEquals($folderId1, $this->cache->getId('foo2/bar'));
$this->assertEquals($folderId2, $this->cache->getId('foo2/bar2'));
}
+
+ public function testRepairNonDuplicateBetweenStorage() {
+ $this->storage->mkdir('foo/bar/asd');
+ $this->storage2->mkdir('foo2');
+ $this->storage->getScanner()->scan('');
+ $this->storage2->getScanner()->scan('');
+
+ $folderId = $this->cache->getId('foo/bar');
+ $newParentEntry = $this->cache2->get('foo2');
+ $newParentFolderId = $newParentEntry->getId();
+ // failed rename, moved entry is updated but not it's children
+ $this->cache->update($folderId, ['path' => 'foo2/bar', 'parent' => $newParentFolderId, 'storage' => $newParentEntry->getStorageId()]);
+
+ $this->assertTrue($this->cache2->inCache('foo2/bar'));
+ $this->assertTrue($this->cache->inCache('foo/bar/asd'));
+ $this->assertFalse($this->cache2->inCache('foo2/bar/asd'));
+
+ $this->assertEquals($folderId, $this->cache->get('foo/bar/asd')['parent']);
+
+ $this->repair->run($this->createMock(IOutput::class));
+
+ $this->assertTrue($this->cache2->inCache('foo2/bar'));
+ $this->assertTrue($this->cache2->inCache('foo2/bar/asd'));
+ $this->assertFalse($this->cache->inCache('foo/bar/asd'));
+
+ $this->assertEquals($folderId, $this->cache2->get('foo2/bar/asd')['parent']);
+ $this->assertEquals($folderId, $this->cache2->getId('foo2/bar'));
+ }
}
diff --git a/tests/lib/Share/ShareTest.php b/tests/lib/Share/ShareTest.php
index 40e88d597a4..4ce40a2accd 100644
--- a/tests/lib/Share/ShareTest.php
+++ b/tests/lib/Share/ShareTest.php
@@ -1246,7 +1246,9 @@ class ShareTest extends \Test\TestCase {
->setParameter('owner', $this->user1->getUID())
->setParameter('share_type', \OCP\Share::SHARE_TYPE_LINK);
- $res = $qb->execute()->fetchAll();
+ $result = $qb->execute();
+ $res = $result->fetchAll();
+ $result->closeCursor();
$this->assertCount(1, $res);
$id = $res[0]['id'];
@@ -1260,7 +1262,9 @@ class ShareTest extends \Test\TestCase {
->from('share')
->where($qb->expr()->eq('id', $qb->createParameter('id')))
->setParameter('id', $id);
- $hash = $qb->execute()->fetch()['share_with'];
+ $result = $qb->execute();
+ $hash = $result->fetch()['share_with'];
+ $result->closeCursor();
$hasher = \OC::$server->getHasher();
diff --git a/tests/lib/Share20/LegacyHooksTest.php b/tests/lib/Share20/LegacyHooksTest.php
index d3a538f1d8d..22d575d26ff 100644
--- a/tests/lib/Share20/LegacyHooksTest.php
+++ b/tests/lib/Share20/LegacyHooksTest.php
@@ -99,7 +99,7 @@ class LegacyHooksTest extends TestCase {
->setTarget('myTarget');
$hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
- \OCP\Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'post');
+ \OCP\Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'post');
$hookListnerExpectsPost = [
'id' => 42,
@@ -135,4 +135,56 @@ class LegacyHooksTest extends TestCase {
$event->setArgument('deletedShares', [$share]);
$this->eventDispatcher->dispatch('OCP\Share::postUnshare', $event);
}
+
+ public function testPostUnshareFromSelf() {
+ $path = $this->createMock(File::class);
+ $path->method('getId')->willReturn(1);
+
+ $share = $this->manager->newShare();
+ $share->setId(42)
+ ->setProviderId('prov')
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setSharedWith('awesomeUser')
+ ->setSharedBy('sharedBy')
+ ->setNode($path)
+ ->setTarget('myTarget');
+
+ $hookListner = $this->getMockBuilder('Dummy')->setMethods(['postFromSelf'])->getMock();
+ \OCP\Util::connectHook('OCP\Share', 'post_unshareFromSelf', $hookListner, 'postFromSelf');
+
+ $hookListnerExpectsPostFromSelf = [
+ 'id' => 42,
+ 'itemType' => 'file',
+ 'itemSource' => 1,
+ 'shareType' => \OCP\Share::SHARE_TYPE_USER,
+ 'shareWith' => 'awesomeUser',
+ 'itemparent' => null,
+ 'uidOwner' => 'sharedBy',
+ 'fileSource' => 1,
+ 'fileTarget' => 'myTarget',
+ 'itemTarget' => 'myTarget',
+ 'unsharedItems' => [
+ [
+ 'id' => 42,
+ 'itemType' => 'file',
+ 'itemSource' => 1,
+ 'shareType' => \OCP\Share::SHARE_TYPE_USER,
+ 'shareWith' => 'awesomeUser',
+ 'itemparent' => null,
+ 'uidOwner' => 'sharedBy',
+ 'fileSource' => 1,
+ 'fileTarget' => 'myTarget',
+ 'itemTarget' => 'myTarget',
+ ],
+ ],
+ ];
+
+ $hookListner
+ ->expects($this->exactly(1))
+ ->method('postFromSelf')
+ ->with($hookListnerExpectsPostFromSelf);
+
+ $event = new GenericEvent($share);
+ $this->eventDispatcher->dispatch('OCP\Share::postUnshareFromSelf', $event);
+ }
}
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php
index 1cc165106d7..01d594de7ae 100644
--- a/tests/lib/Share20/ManagerTest.php
+++ b/tests/lib/Share20/ManagerTest.php
@@ -23,6 +23,7 @@ namespace Test\Share20;
use OC\Files\Mount\MoveableMount;
use OC\HintException;
use OC\Share20\DefaultShareProvider;
+use OCP\Defaults;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
@@ -31,8 +32,10 @@ use OCP\Files\Node;
use OCP\Files\Storage;
use OCP\IGroup;
use OCP\IServerContainer;
+use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
+use OCP\Mail\IMailer;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IProviderFactory;
use OCP\Share\IShare;
@@ -85,6 +88,12 @@ class ManagerTest extends \Test\TestCase {
protected $rootFolder;
/** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject */
protected $eventDispatcher;
+ /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */
+ protected $mailer;
+ /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
+ protected $urlGenerator;
+ /** @var \OC_Defaults|\PHPUnit_Framework_MockObject_MockObject */
+ protected $defaults;
public function setUp() {
@@ -97,6 +106,9 @@ class ManagerTest extends \Test\TestCase {
$this->userManager = $this->createMock(IUserManager::class);
$this->rootFolder = $this->createMock(IRootFolder::class);
$this->eventDispatcher = $this->createMock(EventDispatcher::class);
+ $this->mailer = $this->createMock(IMailer::class);
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
+ $this->defaults = $this->createMock(\OC_Defaults::class);
$this->l = $this->createMock(IL10N::class);
$this->l->method('t')
@@ -117,7 +129,10 @@ class ManagerTest extends \Test\TestCase {
$this->factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$this->defaultProvider = $this->createMock(DefaultShareProvider::class);
@@ -141,7 +156,10 @@ class ManagerTest extends \Test\TestCase {
$this->factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
]);
}
@@ -332,6 +350,40 @@ class ManagerTest extends \Test\TestCase {
$manager->deleteShare($share1);
}
+ public function testDeleteFromSelf() {
+ $manager = $this->createManagerMock()
+ ->setMethods(['getShareById'])
+ ->getMock();
+
+ $recipientId = 'unshareFrom';
+ $share = $this->manager->newShare();
+ $share->setId(42)
+ ->setProviderId('prov')
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setSharedWith('sharedWith')
+ ->setSharedBy('sharedBy')
+ ->setShareOwner('shareOwner')
+ ->setTarget('myTarget')
+ ->setNodeId(1)
+ ->setNodeType('file');
+
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('deleteFromSelf')
+ ->with($share, $recipientId);
+
+ $this->eventDispatcher->expects($this->at(0))
+ ->method('dispatch')
+ ->with(
+ 'OCP\Share::postUnshareFromSelf',
+ $this->callBack(function(GenericEvent $e) use ($share) {
+ return $e->getSubject() === $share;
+ })
+ );
+
+ $manager->deleteFromSelf($share, $recipientId);
+ }
+
public function testDeleteChildren() {
$manager = $this->createManagerMock()
->setMethods(['deleteShare'])
@@ -2074,7 +2126,10 @@ class ManagerTest extends \Test\TestCase {
$factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$share = $this->createMock(IShare::class);
@@ -2113,7 +2168,10 @@ class ManagerTest extends \Test\TestCase {
$factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$share = $this->createMock(IShare::class);
@@ -2761,7 +2819,10 @@ class ManagerTest extends \Test\TestCase {
$factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$this->assertSame($expected,
$manager->shareProviderExists($shareType)
@@ -2789,7 +2850,10 @@ class ManagerTest extends \Test\TestCase {
$factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$factory->setProvider($this->defaultProvider);
@@ -2848,7 +2912,10 @@ class ManagerTest extends \Test\TestCase {
$factory,
$this->userManager,
$this->rootFolder,
- $this->eventDispatcher
+ $this->eventDispatcher,
+ $this->mailer,
+ $this->urlGenerator,
+ $this->defaults
);
$factory->setProvider($this->defaultProvider);
diff --git a/tests/lib/Template/JSCombinerTest.php b/tests/lib/Template/JSCombinerTest.php
index 89bb13338c8..d6583d4a450 100644
--- a/tests/lib/Template/JSCombinerTest.php
+++ b/tests/lib/Template/JSCombinerTest.php
@@ -31,6 +31,7 @@ use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\ICache;
+use OCP\ILogger;
use OCP\IURLGenerator;
class JSCombinerTest extends \Test\TestCase {
@@ -44,6 +45,8 @@ class JSCombinerTest extends \Test\TestCase {
protected $depsCache;
/** @var JSCombiner */
protected $jsCombiner;
+ /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
+ protected $logger;
protected function setUp() {
parent::setUp();
@@ -52,11 +55,14 @@ class JSCombinerTest extends \Test\TestCase {
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->config = $this->createMock(SystemConfig::class);
$this->depsCache = $this->createMock(ICache::class);
+ $this->logger = $this->createMock(ILogger::class);
$this->jsCombiner = new JSCombiner(
$this->appData,
$this->urlGenerator,
$this->depsCache,
- $this->config);
+ $this->config,
+ $this->logger
+ );
}
public function testProcessDebugMode() {
@@ -284,6 +290,23 @@ class JSCombinerTest extends \Test\TestCase {
$this->assertFalse($actual);
}
+ public function testIsCachedWithoutContent() {
+ $fileName = 'combine.json';
+ $folder = $this->createMock(ISimpleFolder::class);
+ $file = $this->createMock(ISimpleFile::class);
+ $folder->method('getFile')
+ ->with('combine.js.deps')
+ ->willReturn($file);
+ $file->expects($this->once())
+ ->method('getContent')
+ ->willReturn('');
+ $this->logger->expects($this->once())
+ ->method('info')
+ ->with('JSCombiner: deps file empty: combine.js.deps');
+ $actual = self::invokePrivate($this->jsCombiner, 'isCached', [$fileName, $folder]);
+ $this->assertFalse($actual);
+ }
+
public function testCacheNoFile() {
$fileName = 'combine.js';
diff --git a/tests/lib/Updater/VersionCheckTest.php b/tests/lib/Updater/VersionCheckTest.php
index 79c0a88dbf6..6f6c6c1ad0c 100644
--- a/tests/lib/Updater/VersionCheckTest.php
+++ b/tests/lib/Updater/VersionCheckTest.php
@@ -59,8 +59,8 @@ class VersionCheckTest extends \Test\TestCase {
$expectedResult = [
'version' => '8.0.4.2',
'versionstring' => 'ownCloud 8.0.4',
- 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip',
- 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html',
+ 'url' => 'https://download.example.org/community/owncloud-8.0.4.zip',
+ 'web' => 'http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html',
];
$this->config
@@ -81,8 +81,8 @@ class VersionCheckTest extends \Test\TestCase {
$expectedResult = [
'version' => '8.0.4.2',
'versionstring' => 'ownCloud 8.0.4',
- 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip',
- 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html',
+ 'url' => 'https://download.example.org/community/owncloud-8.0.4.zip',
+ 'web' => 'http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html',
'autoupdater' => '0',
];
@@ -119,8 +119,8 @@ class VersionCheckTest extends \Test\TestCase {
<owncloud>
<version>8.0.4.2</version>
<versionstring>ownCloud 8.0.4</versionstring>
- <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url>
- <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web>
+ <url>https://download.example.org/community/owncloud-8.0.4.zip</url>
+ <web>http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html</web>
<autoupdater>0</autoupdater>
</owncloud>';
$this->updater
diff --git a/tests/lib/Util/User/Dummy.php b/tests/lib/Util/User/Dummy.php
index ea47f5d7d15..806a97bacba 100644
--- a/tests/lib/Util/User/Dummy.php
+++ b/tests/lib/Util/User/Dummy.php
@@ -95,7 +95,7 @@ class Dummy extends Backend implements \OCP\IUserBackend {
*
* @param string $uid The username
* @param string $password The password
- * @return string
+ * @return string|bool
*
* Check if the password is correct without logging in the user
* returns the user id or false
@@ -103,9 +103,9 @@ class Dummy extends Backend implements \OCP\IUserBackend {
public function checkPassword($uid, $password) {
if (isset($this->users[$uid]) && $this->users[$uid] === $password) {
return $uid;
- } else {
- return false;
}
+
+ return false;
}
/**
diff --git a/tests/lib/UtilTest.php b/tests/lib/UtilTest.php
index 39a29742e4f..52d18571647 100644
--- a/tests/lib/UtilTest.php
+++ b/tests/lib/UtilTest.php
@@ -305,7 +305,7 @@ class UtilTest extends \Test\TestCase {
* @group DB
*/
function testDefaultApps($defaultAppConfig, $expectedPath, $enabledApps) {
- $oldDefaultApps = \OCP\Config::getSystemValue('defaultapp', '');
+ $oldDefaultApps = \OC::$server->getConfig()->getSystemValue('defaultapp', '');
// CLI is doing messy stuff with the webroot, so need to work it around
$oldWebRoot = \OC::$WEBROOT;
\OC::$WEBROOT = '';
diff --git a/themes/example/defaults.php b/themes/example/defaults.php
index 27d0cccaf60..186cda236b1 100644
--- a/themes/example/defaults.php
+++ b/themes/example/defaults.php
@@ -111,6 +111,7 @@ class OC_Theme {
/**
* Returns logo claim
* @return string logo claim
+ * @deprecated 13.0.0 not used anymore
*/
public function getLogoClaim() {
return '';
diff --git a/version.php b/version.php
index d9e26eafcee..649c8ae7389 100644
--- a/version.php
+++ b/version.php
@@ -26,7 +26,7 @@
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = array(13, 0, 0, 1);
+$OC_Version = array(13, 0, 0, 2);
// The human readable string
$OC_VersionString = '13.0.0 alpha';