summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php48
-rw-r--r--lib/composer/composer/autoload_classmap.php74
-rw-r--r--lib/composer/composer/autoload_psr4.php1
-rw-r--r--lib/composer/composer/autoload_static.php79
-rw-r--r--lib/l10n/ar.js6
-rw-r--r--lib/l10n/ar.json6
-rw-r--r--lib/l10n/ast.js17
-rw-r--r--lib/l10n/ast.json17
-rw-r--r--lib/l10n/az.js4
-rw-r--r--lib/l10n/az.json4
-rw-r--r--lib/l10n/bg.js16
-rw-r--r--lib/l10n/bg.json16
-rw-r--r--lib/l10n/bn_BD.js3
-rw-r--r--lib/l10n/bn_BD.json3
-rw-r--r--lib/l10n/ca.js35
-rw-r--r--lib/l10n/ca.json35
-rw-r--r--lib/l10n/cs.js179
-rw-r--r--lib/l10n/cs.json179
-rw-r--r--lib/l10n/da.js17
-rw-r--r--lib/l10n/da.json17
-rw-r--r--lib/l10n/de.js45
-rw-r--r--lib/l10n/de.json45
-rw-r--r--lib/l10n/de_DE.js37
-rw-r--r--lib/l10n/de_DE.json37
-rw-r--r--lib/l10n/el.js17
-rw-r--r--lib/l10n/el.json17
-rw-r--r--lib/l10n/en_GB.js18
-rw-r--r--lib/l10n/en_GB.json18
-rw-r--r--lib/l10n/eo.js39
-rw-r--r--lib/l10n/eo.json39
-rw-r--r--lib/l10n/es.js35
-rw-r--r--lib/l10n/es.json35
-rw-r--r--lib/l10n/es_419.js18
-rw-r--r--lib/l10n/es_419.json18
-rw-r--r--lib/l10n/es_AR.js17
-rw-r--r--lib/l10n/es_AR.json17
-rw-r--r--lib/l10n/es_CL.js18
-rw-r--r--lib/l10n/es_CL.json18
-rw-r--r--lib/l10n/es_CO.js18
-rw-r--r--lib/l10n/es_CO.json18
-rw-r--r--lib/l10n/es_CR.js18
-rw-r--r--lib/l10n/es_CR.json18
-rw-r--r--lib/l10n/es_DO.js18
-rw-r--r--lib/l10n/es_DO.json18
-rw-r--r--lib/l10n/es_EC.js18
-rw-r--r--lib/l10n/es_EC.json18
-rw-r--r--lib/l10n/es_GT.js18
-rw-r--r--lib/l10n/es_GT.json18
-rw-r--r--lib/l10n/es_HN.js18
-rw-r--r--lib/l10n/es_HN.json18
-rw-r--r--lib/l10n/es_MX.js18
-rw-r--r--lib/l10n/es_MX.json18
-rw-r--r--lib/l10n/es_NI.js18
-rw-r--r--lib/l10n/es_NI.json18
-rw-r--r--lib/l10n/es_PA.js18
-rw-r--r--lib/l10n/es_PA.json18
-rw-r--r--lib/l10n/es_PE.js18
-rw-r--r--lib/l10n/es_PE.json18
-rw-r--r--lib/l10n/es_PR.js18
-rw-r--r--lib/l10n/es_PR.json18
-rw-r--r--lib/l10n/es_PY.js18
-rw-r--r--lib/l10n/es_PY.json18
-rw-r--r--lib/l10n/es_SV.js18
-rw-r--r--lib/l10n/es_SV.json18
-rw-r--r--lib/l10n/es_UY.js18
-rw-r--r--lib/l10n/es_UY.json18
-rw-r--r--lib/l10n/et_EE.js16
-rw-r--r--lib/l10n/et_EE.json16
-rw-r--r--lib/l10n/eu.js17
-rw-r--r--lib/l10n/eu.json17
-rw-r--r--lib/l10n/fa.js7
-rw-r--r--lib/l10n/fa.json7
-rw-r--r--lib/l10n/fi.js13
-rw-r--r--lib/l10n/fi.json13
-rw-r--r--lib/l10n/fr.js35
-rw-r--r--lib/l10n/fr.json35
-rw-r--r--lib/l10n/gl.js57
-rw-r--r--lib/l10n/gl.json57
-rw-r--r--lib/l10n/he.js21
-rw-r--r--lib/l10n/he.json21
-rw-r--r--lib/l10n/hr.js307
-rw-r--r--lib/l10n/hr.json307
-rw-r--r--lib/l10n/hu.js35
-rw-r--r--lib/l10n/hu.json35
-rw-r--r--lib/l10n/id.js17
-rw-r--r--lib/l10n/id.json17
-rw-r--r--lib/l10n/is.js35
-rw-r--r--lib/l10n/is.json35
-rw-r--r--lib/l10n/it.js35
-rw-r--r--lib/l10n/it.json35
-rw-r--r--lib/l10n/ja.js37
-rw-r--r--lib/l10n/ja.json37
-rw-r--r--lib/l10n/ka_GE.js18
-rw-r--r--lib/l10n/ka_GE.json18
-rw-r--r--lib/l10n/ko.js18
-rw-r--r--lib/l10n/ko.json18
-rw-r--r--lib/l10n/lb.js3
-rw-r--r--lib/l10n/lb.json3
-rw-r--r--lib/l10n/lt_LT.js26
-rw-r--r--lib/l10n/lt_LT.json26
-rw-r--r--lib/l10n/lv.js14
-rw-r--r--lib/l10n/lv.json14
-rw-r--r--lib/l10n/mk.js35
-rw-r--r--lib/l10n/mk.json35
-rw-r--r--lib/l10n/nb.js18
-rw-r--r--lib/l10n/nb.json18
-rw-r--r--lib/l10n/nl.js35
-rw-r--r--lib/l10n/nl.json35
-rw-r--r--lib/l10n/nn_NO.js3
-rw-r--r--lib/l10n/nn_NO.json3
-rw-r--r--lib/l10n/pl.js51
-rw-r--r--lib/l10n/pl.json51
-rw-r--r--lib/l10n/pt_BR.js37
-rw-r--r--lib/l10n/pt_BR.json37
-rw-r--r--lib/l10n/pt_PT.js18
-rw-r--r--lib/l10n/pt_PT.json18
-rw-r--r--lib/l10n/ro.js15
-rw-r--r--lib/l10n/ro.json15
-rw-r--r--lib/l10n/ru.js35
-rw-r--r--lib/l10n/ru.json35
-rw-r--r--lib/l10n/sk.js35
-rw-r--r--lib/l10n/sk.json35
-rw-r--r--lib/l10n/sl.js87
-rw-r--r--lib/l10n/sl.json87
-rw-r--r--lib/l10n/sq.js18
-rw-r--r--lib/l10n/sq.json18
-rw-r--r--lib/l10n/sr.js35
-rw-r--r--lib/l10n/sr.json35
-rw-r--r--lib/l10n/sv.js55
-rw-r--r--lib/l10n/sv.json55
-rw-r--r--lib/l10n/th.js17
-rw-r--r--lib/l10n/th.json17
-rw-r--r--lib/l10n/tr.js39
-rw-r--r--lib/l10n/tr.json39
-rw-r--r--lib/l10n/uk.js18
-rw-r--r--lib/l10n/uk.json18
-rw-r--r--lib/l10n/vi.js3
-rw-r--r--lib/l10n/vi.json3
-rw-r--r--lib/l10n/zh_CN.js35
-rw-r--r--lib/l10n/zh_CN.json35
-rw-r--r--lib/l10n/zh_TW.js18
-rw-r--r--lib/l10n/zh_TW.json18
-rw-r--r--lib/private/Accounts/AccountManager.php3
-rw-r--r--lib/private/Accounts/Hooks.php1
-rw-r--r--lib/private/Activity/EventMerger.php3
-rw-r--r--lib/private/Activity/Manager.php1
-rw-r--r--lib/private/App/AppManager.php16
-rw-r--r--lib/private/App/AppStore/Fetcher/AppFetcher.php3
-rw-r--r--lib/private/App/AppStore/Fetcher/Fetcher.php2
-rw-r--r--lib/private/App/CodeChecker/CodeChecker.php2
-rw-r--r--lib/private/App/CodeChecker/DeprecationCheck.php1
-rw-r--r--lib/private/App/CodeChecker/EmptyCheck.php1
-rw-r--r--lib/private/App/CodeChecker/ICheck.php1
-rw-r--r--lib/private/App/PlatformRepository.php1
-rw-r--r--lib/private/AppConfig.php13
-rw-r--r--lib/private/AppFramework/App.php7
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php8
-rw-r--r--lib/private/AppFramework/Http.php3
-rw-r--r--lib/private/AppFramework/Http/Dispatcher.php14
-rw-r--r--lib/private/AppFramework/Http/Request.php11
-rw-r--r--lib/private/AppFramework/Middleware/MiddlewareDispatcher.php1
-rw-r--r--lib/private/AppFramework/Middleware/OCSMiddleware.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php1
-rw-r--r--lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php1
-rw-r--r--lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php24
-rw-r--r--lib/private/AppFramework/Middleware/SessionMiddleware.php25
-rw-r--r--lib/private/AppFramework/OCS/BaseResponse.php1
-rw-r--r--lib/private/AppFramework/OCS/V1Response.php1
-rw-r--r--lib/private/AppFramework/OCS/V2Response.php3
-rw-r--r--lib/private/AppFramework/Routing/RouteActionHandler.php4
-rw-r--r--lib/private/AppFramework/Utility/ControllerMethodReflector.php13
-rw-r--r--lib/private/AppFramework/Utility/SimpleContainer.php6
-rw-r--r--lib/private/AppFramework/Utility/TimeFactory.php1
-rw-r--r--lib/private/Authentication/Exceptions/ExpiredTokenException.php1
-rw-r--r--lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php29
-rw-r--r--lib/private/Authentication/Exceptions/WipeTokenException.php1
-rw-r--r--lib/private/Authentication/Login/CreateSessionTokenCommand.php2
-rw-r--r--lib/private/Authentication/Login/PreLoginHookCommand.php2
-rw-r--r--lib/private/Authentication/LoginCredentials/Store.php7
-rw-r--r--lib/private/Authentication/Token/DefaultTokenProvider.php5
-rw-r--r--lib/private/Authentication/Token/INamedToken.php2
-rw-r--r--lib/private/Authentication/Token/IProvider.php3
-rw-r--r--lib/private/Authentication/Token/Manager.php40
-rw-r--r--lib/private/Authentication/Token/PublicKeyTokenMapper.php3
-rw-r--r--lib/private/Authentication/Token/PublicKeyTokenProvider.php64
-rw-r--r--lib/private/Authentication/TwoFactorAuth/Registry.php7
-rw-r--r--lib/private/Avatar/Avatar.php4
-rw-r--r--lib/private/Avatar/AvatarManager.php2
-rw-r--r--lib/private/Avatar/UserAvatar.php8
-rw-r--r--lib/private/BackgroundJob/JobList.php2
-rw-r--r--lib/private/Broadcast/Events/BroadcastEvent.php59
-rw-r--r--lib/private/CapabilitiesManager.php1
-rw-r--r--lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php22
-rw-r--r--lib/private/Collaboration/Collaborators/RemotePlugin.php5
-rw-r--r--lib/private/Collaboration/Collaborators/UserPlugin.php5
-rw-r--r--lib/private/Collaboration/Resources/Collection.php4
-rw-r--r--lib/private/Collaboration/Resources/Manager.php17
-rw-r--r--lib/private/Comments/Comment.php7
-rw-r--r--lib/private/Comments/Manager.php6
-rw-r--r--lib/private/Comments/ManagerFactory.php1
-rw-r--r--lib/private/Config.php1
-rw-r--r--lib/private/Console/Application.php1
-rw-r--r--lib/private/Contacts/ContactsMenu/ContactsStore.php2
-rw-r--r--lib/private/DB/AdapterMySQL.php1
-rw-r--r--lib/private/DB/AdapterOCI8.php1
-rw-r--r--lib/private/DB/AdapterPgSql.php1
-rw-r--r--lib/private/DB/AdapterSqlite.php1
-rw-r--r--lib/private/DB/Connection.php11
-rw-r--r--lib/private/DB/MigrationService.php2
-rw-r--r--lib/private/DB/Migrator.php12
-rw-r--r--lib/private/DB/MissingIndexInformation.php2
-rw-r--r--lib/private/DB/OracleMigrator.php2
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php21
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php9
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php64
-rw-r--r--lib/private/DB/SQLiteSessionInit.php2
-rw-r--r--lib/private/Dashboard/DashboardManager.php3
-rw-r--r--lib/private/DirectEditing/Manager.php236
-rw-r--r--lib/private/DirectEditing/Token.php76
-rw-r--r--lib/private/Encryption/DecryptAll.php3
-rw-r--r--lib/private/Encryption/EncryptionWrapper.php5
-rw-r--r--lib/private/Encryption/Exceptions/DecryptionFailedException.php1
-rw-r--r--lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php1
-rw-r--r--lib/private/Encryption/Exceptions/EncryptionFailedException.php1
-rw-r--r--lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php1
-rw-r--r--lib/private/Encryption/Exceptions/UnknownCipherException.php1
-rw-r--r--lib/private/Encryption/Keys/Storage.php2
-rw-r--r--lib/private/Encryption/Update.php4
-rw-r--r--lib/private/EventDispatcher/EventDispatcher.php17
-rw-r--r--lib/private/EventDispatcher/SymfonyAdapter.php18
-rw-r--r--lib/private/Federation/CloudFederationProviderManager.php1
-rw-r--r--lib/private/Files/AppData/AppData.php4
-rw-r--r--lib/private/Files/AppData/Factory.php1
-rw-r--r--lib/private/Files/Cache/AbstractCacheEvent.php2
-rw-r--r--lib/private/Files/Cache/Cache.php436
-rw-r--r--lib/private/Files/Cache/CacheEntry.php12
-rw-r--r--lib/private/Files/Cache/CacheQueryBuilder.php92
-rw-r--r--lib/private/Files/Cache/MoveFromCacheTrait.php5
-rw-r--r--lib/private/Files/Cache/Propagator.php7
-rw-r--r--lib/private/Files/Cache/QuerySearchHelper.php11
-rw-r--r--lib/private/Files/Cache/Storage.php7
-rw-r--r--lib/private/Files/Cache/StorageGlobal.php10
-rw-r--r--lib/private/Files/Cache/Watcher.php4
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheWrapper.php2
-rw-r--r--lib/private/Files/Config/CachedMountFileInfo.php2
-rw-r--r--lib/private/Files/Config/MountProviderCollection.php2
-rw-r--r--lib/private/Files/Config/UserMountCache.php2
-rw-r--r--lib/private/Files/FileInfo.php8
-rw-r--r--lib/private/Files/Mount/MountPoint.php4
-rw-r--r--lib/private/Files/Node/File.php17
-rw-r--r--lib/private/Files/Node/Folder.php58
-rw-r--r--lib/private/Files/Node/HookConnector.php22
-rw-r--r--lib/private/Files/Node/LazyRoot.php15
-rw-r--r--lib/private/Files/Node/Node.php55
-rw-r--r--lib/private/Files/Node/Root.php4
-rw-r--r--lib/private/Files/ObjectStore/HomeObjectStoreStorage.php2
-rw-r--r--lib/private/Files/ObjectStore/Mapper.php1
-rw-r--r--lib/private/Files/ObjectStore/NoopScanner.php4
-rw-r--r--lib/private/Files/ObjectStore/ObjectStoreStorage.php14
-rw-r--r--lib/private/Files/ObjectStore/SwiftFactory.php6
-rw-r--r--lib/private/Files/SimpleFS/SimpleFile.php1
-rw-r--r--lib/private/Files/SimpleFS/SimpleFolder.php1
-rw-r--r--lib/private/Files/Storage/Common.php32
-rw-r--r--lib/private/Files/Storage/DAV.php42
-rw-r--r--lib/private/Files/Storage/FailedStorage.php4
-rw-r--r--lib/private/Files/Storage/Local.php26
-rw-r--r--lib/private/Files/Storage/Wrapper/Availability.php207
-rw-r--r--lib/private/Files/Storage/Wrapper/Encoding.php2
-rw-r--r--lib/private/Files/Storage/Wrapper/Encryption.php2
-rw-r--r--lib/private/Files/Storage/Wrapper/Jail.php10
-rw-r--r--lib/private/Files/Type/Loader.php2
-rw-r--r--lib/private/Files/Type/TemplateManager.php5
-rw-r--r--lib/private/Files/Utils/Scanner.php3
-rw-r--r--lib/private/Files/View.php25
-rw-r--r--lib/private/FullTextSearch/FullTextSearchManager.php3
-rw-r--r--lib/private/FullTextSearch/Model/DocumentAccess.php3
-rw-r--r--lib/private/FullTextSearch/Model/IndexDocument.php3
-rw-r--r--lib/private/FullTextSearch/Model/SearchOption.php2
-rw-r--r--lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php2
-rw-r--r--lib/private/FullTextSearch/Model/SearchTemplate.php3
-rw-r--r--lib/private/GlobalScale/Config.php1
-rw-r--r--lib/private/Group/Database.php71
-rw-r--r--lib/private/Group/Group.php19
-rw-r--r--lib/private/Group/Manager.php63
-rw-r--r--lib/private/Group/MetaData.php2
-rw-r--r--lib/private/Http/Client/Client.php1
-rw-r--r--lib/private/L10N/Factory.php3
-rw-r--r--lib/private/L10N/LanguageNotFoundException.php1
-rw-r--r--lib/private/Lock/MemcacheLockingProvider.php2
-rw-r--r--lib/private/Log.php57
-rw-r--r--lib/private/Log/Errorlog.php1
-rw-r--r--lib/private/Log/ExceptionSerializer.php4
-rw-r--r--lib/private/Log/File.php2
-rw-r--r--lib/private/Log/LogDetails.php4
-rw-r--r--lib/private/Log/Systemdlog.php2
-rw-r--r--lib/private/Mail/Mailer.php2
-rw-r--r--lib/private/Memcache/Redis.php1
-rw-r--r--lib/private/Migration/BackgroundRepair.php1
-rw-r--r--lib/private/Migration/ConsoleOutput.php1
-rw-r--r--lib/private/Migration/SimpleOutput.php1
-rw-r--r--lib/private/NavigationManager.php2
-rw-r--r--lib/private/OCS/DiscoveryService.php1
-rw-r--r--lib/private/Preview/Bitmap.php2
-rw-r--r--lib/private/Preview/Generator.php2
-rw-r--r--lib/private/Preview/GeneratorHelper.php1
-rw-r--r--lib/private/Preview/HEIC.php2
-rw-r--r--lib/private/Preview/Image.php1
-rw-r--r--lib/private/Preview/MP3.php1
-rw-r--r--lib/private/Preview/MSOffice2003.php1
-rw-r--r--lib/private/Preview/MSOffice2007.php1
-rw-r--r--lib/private/Preview/MSOfficeDoc.php1
-rw-r--r--lib/private/Preview/MarkDown.php1
-rw-r--r--lib/private/Preview/Movie.php3
-rw-r--r--lib/private/Preview/Office.php3
-rw-r--r--lib/private/Preview/OpenDocument.php1
-rw-r--r--lib/private/Preview/Provider.php1
-rw-r--r--lib/private/Preview/ProviderV1Adapter.php4
-rw-r--r--lib/private/Preview/SVG.php3
-rw-r--r--lib/private/Preview/StarOffice.php1
-rw-r--r--lib/private/Preview/TXT.php1
-rw-r--r--lib/private/Preview/Watcher.php3
-rw-r--r--lib/private/Preview/WatcherConnector.php3
-rw-r--r--lib/private/PreviewManager.php29
-rw-r--r--lib/private/Repair.php5
-rw-r--r--lib/private/Repair/AddCleanupUpdaterBackupsJob.php1
-rw-r--r--lib/private/Repair/ClearFrontendCaches.php4
-rw-r--r--lib/private/Repair/Collation.php1
-rw-r--r--lib/private/Repair/MoveUpdaterStepFile.php1
-rw-r--r--lib/private/Repair/NC11/FixMountStorages.php1
-rw-r--r--lib/private/Repair/NC13/AddLogRotateJob.php1
-rw-r--r--lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php1
-rw-r--r--lib/private/Repair/NC16/ClearCollectionsAccessCache.php58
-rw-r--r--lib/private/Repair/NC16/RemoveCypressFiles.php82
-rw-r--r--lib/private/Repair/NC17/SwitchUpdateChannel.php1
-rw-r--r--lib/private/Repair/Owncloud/DropAccountTermsTable.php1
-rw-r--r--lib/private/Repair/Owncloud/SaveAccountsTableData.php1
-rw-r--r--lib/private/Repair/SqliteAutoincrement.php5
-rw-r--r--lib/private/Route/CachingRouter.php4
-rw-r--r--lib/private/Route/Router.php13
-rw-r--r--lib/private/Search.php2
-rw-r--r--lib/private/Security/Bruteforce/Capabilities.php1
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicy.php1
-rw-r--r--lib/private/Security/CredentialsManager.php2
-rw-r--r--lib/private/Security/Crypto.php7
-rw-r--r--lib/private/Security/IdentityProof/Manager.php35
-rw-r--r--lib/private/Security/RateLimiting/Limiter.php14
-rw-r--r--lib/private/Security/TrustedDomainHelper.php2
-rw-r--r--lib/private/Server.php23
-rw-r--r--lib/private/ServerContainer.php3
-rw-r--r--lib/private/Settings/Manager.php27
-rw-r--r--lib/private/Setup.php93
-rw-r--r--lib/private/Setup/AbstractDatabase.php1
-rw-r--r--lib/private/Setup/MySQL.php5
-rw-r--r--lib/private/Setup/PostgreSQL.php1
-rw-r--r--lib/private/Share/Constants.php29
-rw-r--r--lib/private/Share/SearchResultSorter.php2
-rw-r--r--lib/private/Share/Share.php3
-rw-r--r--lib/private/Share20/DefaultShareProvider.php189
-rw-r--r--lib/private/Share20/Exception/BackendError.php1
-rw-r--r--lib/private/Share20/Exception/InvalidShare.php1
-rw-r--r--lib/private/Share20/Exception/ProviderException.php2
-rw-r--r--lib/private/Share20/Hooks.php1
-rw-r--r--lib/private/Share20/LegacyHooks.php2
-rw-r--r--lib/private/Share20/Manager.php172
-rw-r--r--lib/private/Share20/ProviderFactory.php11
-rw-r--r--lib/private/Share20/Share.php26
-rw-r--r--lib/private/Share20/ShareHelper.php1
-rw-r--r--lib/private/SubAdmin.php6
-rw-r--r--lib/private/SystemConfig.php15
-rw-r--r--lib/private/SystemTag/ManagerFactory.php1
-rw-r--r--lib/private/SystemTag/SystemTagManager.php6
-rw-r--r--lib/private/SystemTag/SystemTagObjectMapper.php8
-rw-r--r--lib/private/Tagging/Tag.php2
-rw-r--r--lib/private/Tagging/TagMapper.php7
-rw-r--r--lib/private/TempManager.php2
-rw-r--r--lib/private/Template/IconsCacher.php4
-rw-r--r--lib/private/Template/JSCombiner.php3
-rw-r--r--lib/private/Template/JSConfigHelper.php13
-rw-r--r--lib/private/Template/SCSSCacher.php12
-rw-r--r--lib/private/TemplateLayout.php18
-rw-r--r--lib/private/URLGenerator.php5
-rw-r--r--lib/private/Updater/VersionCheck.php8
-rw-r--r--lib/private/User/Backend.php2
-rw-r--r--lib/private/User/Database.php25
-rw-r--r--lib/private/User/Manager.php26
-rw-r--r--lib/private/User/NoUserException.php2
-rw-r--r--lib/private/User/Session.php33
-rw-r--r--lib/private/User/User.php4
-rw-r--r--lib/private/legacy/app.php6
-rw-r--r--lib/private/legacy/defaults.php6
-rw-r--r--lib/private/legacy/eventsource.php2
-rw-r--r--lib/private/legacy/files.php19
-rw-r--r--lib/private/legacy/helper.php10
-rw-r--r--lib/private/legacy/image.php8
-rw-r--r--lib/private/legacy/template.php2
-rw-r--r--lib/private/legacy/util.php16
-rw-r--r--lib/public/API.php1
-rw-r--r--lib/public/Accounts/IAccountProperty.php2
-rw-r--r--lib/public/Activity/IConsumer.php2
-rw-r--r--lib/public/Activity/IEvent.php1
-rw-r--r--lib/public/Activity/IFilter.php1
-rw-r--r--lib/public/Activity/ISetting.php1
-rw-r--r--lib/public/App.php1
-rw-r--r--lib/public/App/AppPathNotFoundException.php2
-rw-r--r--lib/public/App/IAppManager.php13
-rw-r--r--lib/public/App/ManagerEvent.php2
-rw-r--r--lib/public/AppFramework/ApiController.php1
-rw-r--r--lib/public/AppFramework/App.php36
-rw-r--r--lib/public/AppFramework/Controller.php3
-rw-r--r--lib/public/AppFramework/Db/DoesNotExistException.php1
-rw-r--r--lib/public/AppFramework/Db/Entity.php43
-rw-r--r--lib/public/AppFramework/Db/Mapper.php2
-rw-r--r--lib/public/AppFramework/Db/MultipleObjectsReturnedException.php1
-rw-r--r--lib/public/AppFramework/Http/DataDownloadResponse.php1
-rw-r--r--lib/public/AppFramework/Http/DownloadResponse.php1
-rw-r--r--lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php1
-rw-r--r--lib/public/AppFramework/Http/FileDisplayResponse.php1
-rw-r--r--lib/public/AppFramework/Http/NotFoundResponse.php1
-rw-r--r--lib/public/AppFramework/Http/RedirectResponse.php2
-rw-r--r--lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php1
-rw-r--r--lib/public/AppFramework/Http/Response.php18
-rw-r--r--lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/IMenuAction.php2
-rw-r--r--lib/public/AppFramework/Http/Template/PublicTemplateResponse.php2
-rw-r--r--lib/public/AppFramework/Http/Template/SimpleMenuAction.php2
-rw-r--r--lib/public/AppFramework/Http/ZipResponse.php2
-rw-r--r--lib/public/AppFramework/Middleware.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSBadRequestException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSForbiddenException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSNotFoundException.php1
-rw-r--r--lib/public/AppFramework/OCSController.php1
-rw-r--r--lib/public/AppFramework/Utility/IControllerMethodReflector.php1
-rw-r--r--lib/public/Authentication/IApacheBackend.php1
-rw-r--r--lib/public/Authentication/LoginCredentials/IStore.php9
-rw-r--r--lib/public/AutoloadNotAllowedException.php1
-rw-r--r--lib/public/Broadcast/Events/IBroadcastEvent.php57
-rw-r--r--lib/public/Capabilities/ICapability.php1
-rw-r--r--lib/public/Capabilities/IPublicCapability.php1
-rw-r--r--lib/public/Comments/CommentsEntityEvent.php2
-rw-r--r--lib/public/Comments/CommentsEvent.php2
-rw-r--r--lib/public/Comments/IComment.php2
-rw-r--r--lib/public/Comments/ICommentsManager.php1
-rw-r--r--lib/public/Comments/ICommentsManagerFactory.php1
-rw-r--r--lib/public/Comments/IllegalIDChangeException.php1
-rw-r--r--lib/public/Comments/MessageTooLongException.php1
-rw-r--r--lib/public/Comments/NotFoundException.php1
-rw-r--r--lib/public/Console/ConsoleEvent.php2
-rw-r--r--lib/public/Contacts/IManager.php1
-rw-r--r--lib/public/DB/QueryBuilder/IFunctionBuilder.php52
-rw-r--r--lib/public/DB/QueryBuilder/ILiteral.php1
-rw-r--r--lib/public/DB/QueryBuilder/IParameter.php1
-rw-r--r--lib/public/DB/QueryBuilder/IQueryBuilder.php62
-rw-r--r--lib/public/DB/QueryBuilder/IQueryFunction.php1
-rw-r--r--lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php1
-rw-r--r--lib/public/Dashboard/IDashboardManager.php2
-rw-r--r--lib/public/Dashboard/IDashboardWidget.php6
-rw-r--r--lib/public/Dashboard/Model/IWidgetConfig.php1
-rw-r--r--lib/public/Dashboard/Model/IWidgetRequest.php2
-rw-r--r--lib/public/Dashboard/Model/WidgetSetting.php2
-rw-r--r--lib/public/Dashboard/Model/WidgetSetup.php2
-rw-r--r--lib/public/Dashboard/Model/WidgetTemplate.php2
-rw-r--r--lib/public/Dashboard/Service/IEventsService.php2
-rw-r--r--lib/public/Dashboard/Service/IWidgetsService.php2
-rw-r--r--lib/public/Defaults.php1
-rw-r--r--lib/public/DirectEditing/ACreateEmpty.php79
-rw-r--r--lib/public/DirectEditing/ACreateFromTemplate.php39
-rw-r--r--lib/public/DirectEditing/ATemplate.php71
-rw-r--r--lib/public/DirectEditing/IEditor.php99
-rw-r--r--lib/public/DirectEditing/IManager.php88
-rw-r--r--lib/public/DirectEditing/IToken.php83
-rw-r--r--lib/public/DirectEditing/RegisterDirectEditorEvent.php57
-rw-r--r--lib/public/Encryption/IManager.php2
-rw-r--r--lib/public/EventDispatcher/ABroadcastedEvent.php71
-rw-r--r--lib/public/EventDispatcher/Event.php18
-rw-r--r--lib/public/EventDispatcher/GenericEvent.php169
-rw-r--r--lib/public/EventDispatcher/IEventDispatcher.php12
-rw-r--r--lib/public/Federation/ICloudFederationProvider.php2
-rw-r--r--lib/public/Files.php1
-rw-r--r--lib/public/Files/AlreadyExistsException.php1
-rw-r--r--lib/public/Files/Cache/ICacheEntry.php24
-rw-r--r--lib/public/Files/Cache/IScanner.php1
-rw-r--r--lib/public/Files/EntityTooLargeException.php1
-rw-r--r--lib/public/Files/File.php14
-rw-r--r--lib/public/Files/FileInfo.php27
-rw-r--r--lib/public/Files/FileNameTooLongException.php1
-rw-r--r--lib/public/Files/Folder.php1
-rw-r--r--lib/public/Files/ForbiddenException.php1
-rw-r--r--lib/public/Files/GenericFileException.php1
-rw-r--r--lib/public/Files/IAppData.php1
-rw-r--r--lib/public/Files/IHomeStorage.php1
-rw-r--r--lib/public/Files/IMimeTypeDetector.php1
-rw-r--r--lib/public/Files/IRootFolder.php2
-rw-r--r--lib/public/Files/InvalidCharacterInPathException.php1
-rw-r--r--lib/public/Files/InvalidContentException.php1
-rw-r--r--lib/public/Files/InvalidPathException.php1
-rw-r--r--lib/public/Files/LockNotAcquiredException.php1
-rw-r--r--lib/public/Files/Node.php30
-rw-r--r--lib/public/Files/NotEnoughSpaceException.php1
-rw-r--r--lib/public/Files/NotFoundException.php1
-rw-r--r--lib/public/Files/NotPermittedException.php1
-rw-r--r--lib/public/Files/ObjectStore/IObjectStore.php1
-rw-r--r--lib/public/Files/ReservedWordException.php1
-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.php1
-rw-r--r--lib/public/Files/Storage/IDisableEncryptionStorage.php2
-rw-r--r--lib/public/Files/Storage/IStorage.php1
-rw-r--r--lib/public/Files/StorageAuthException.php1
-rw-r--r--lib/public/Files/StorageBadConfigException.php1
-rw-r--r--lib/public/Files/StorageConnectionException.php1
-rw-r--r--lib/public/Files/StorageInvalidException.php1
-rw-r--r--lib/public/Files/StorageNotAvailableException.php1
-rw-r--r--lib/public/Files/StorageTimeoutException.php1
-rw-r--r--lib/public/Files/UnseekableException.php1
-rw-r--r--lib/public/Files_FullTextSearch/Model/AFilesDocument.php3
-rw-r--r--lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php2
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchManager.php3
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchPlatform.php3
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchProvider.php4
-rw-r--r--lib/public/FullTextSearch/Model/IDocumentAccess.php2
-rw-r--r--lib/public/FullTextSearch/Model/IIndex.php2
-rw-r--r--lib/public/FullTextSearch/Model/IIndexDocument.php2
-rw-r--r--lib/public/FullTextSearch/Model/IIndexOptions.php2
-rw-r--r--lib/public/FullTextSearch/Model/IRunner.php2
-rw-r--r--lib/public/FullTextSearch/Model/ISearchOption.php1
-rw-r--r--lib/public/FullTextSearch/Model/ISearchRequest.php2
-rw-r--r--lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php2
-rw-r--r--lib/public/FullTextSearch/Model/ISearchResult.php3
-rw-r--r--lib/public/FullTextSearch/Model/ISearchTemplate.php3
-rw-r--r--lib/public/FullTextSearch/Service/IIndexService.php3
-rw-r--r--lib/public/FullTextSearch/Service/IProviderService.php2
-rw-r--r--lib/public/FullTextSearch/Service/ISearchService.php3
-rw-r--r--lib/public/GlobalScale/IConfig.php1
-rw-r--r--lib/public/Group/Backend/IGetDisplayNameBackend.php3
-rw-r--r--lib/public/Group/Backend/ISetDisplayNameBackend.php38
-rw-r--r--lib/public/GroupInterface.php1
-rw-r--r--lib/public/IAddressBook.php1
-rw-r--r--lib/public/IAppConfig.php1
-rw-r--r--lib/public/ICache.php1
-rw-r--r--lib/public/IConfig.php1
-rw-r--r--lib/public/IContainer.php2
-rw-r--r--lib/public/IDBConnection.php1
-rw-r--r--lib/public/IGroup.php9
-rw-r--r--lib/public/IGroupManager.php4
-rw-r--r--lib/public/IL10N.php1
-rw-r--r--lib/public/IMemcache.php1
-rw-r--r--lib/public/INavigationManager.php1
-rw-r--r--lib/public/IPreview.php15
-rw-r--r--lib/public/IRequest.php1
-rw-r--r--lib/public/IServerContainer.php4
-rw-r--r--lib/public/ISession.php1
-rw-r--r--lib/public/ITagManager.php1
-rw-r--r--lib/public/ITags.php1
-rw-r--r--lib/public/IUserBackend.php1
-rw-r--r--lib/public/IUserSession.php18
-rw-r--r--lib/public/Image.php1
-rw-r--r--lib/public/L10N/IFactory.php1
-rw-r--r--lib/public/Migration/IOutput.php1
-rw-r--r--lib/public/Migration/IRepairStep.php1
-rw-r--r--lib/public/OCS/IDiscoveryService.php1
-rw-r--r--lib/public/PreConditionNotMetException.php1
-rw-r--r--lib/public/Preview/IProvider.php1
-rw-r--r--lib/public/RichObjectStrings/Definitions.php56
-rw-r--r--lib/public/Route/IRoute.php1
-rw-r--r--lib/public/SabrePluginEvent.php2
-rw-r--r--lib/public/Security/CSP/AddContentSecurityPolicyEvent.php1
-rw-r--r--lib/public/Security/Events/GenerateSecurePasswordEvent.php50
-rw-r--r--lib/public/Security/Events/ValidatePasswordPolicyEvent.php51
-rw-r--r--lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php1
-rw-r--r--lib/public/Share.php1
-rw-r--r--lib/public/Share/Exceptions/GenericShareException.php1
-rw-r--r--lib/public/Share/Exceptions/IllegalIDChangeException.php1
-rw-r--r--lib/public/Share/IManager.php24
-rw-r--r--lib/public/Share/IProviderFactory.php7
-rw-r--r--lib/public/Share/IShare.php105
-rw-r--r--lib/public/Share/IShareHelper.php1
-rw-r--r--lib/public/Share/IShareProvider.php21
-rw-r--r--lib/public/Share_Backend.php1
-rw-r--r--lib/public/Share_Backend_Collection.php1
-rw-r--r--lib/public/Share_Backend_File_Dependent.php1
-rw-r--r--lib/public/SystemTag/ISystemTag.php1
-rw-r--r--lib/public/SystemTag/ISystemTagManagerFactory.php1
-rw-r--r--lib/public/SystemTag/ManagerEvent.php2
-rw-r--r--lib/public/SystemTag/MapperEvent.php2
-rw-r--r--lib/public/SystemTag/SystemTagsEntityEvent.php2
-rw-r--r--lib/public/User.php1
-rw-r--r--lib/public/User/Events/CreateUserEvent.php63
-rw-r--r--lib/public/User/Events/PostLoginEvent.php (renamed from lib/private/User/Events/PostLoginEvent.php)29
-rw-r--r--lib/public/User/Events/UserCreatedEvent.php71
-rw-r--r--lib/public/UserInterface.php1
-rw-r--r--lib/public/Util.php1
-rw-r--r--lib/public/WorkflowEngine/EntityContext/IDisplayName.php41
-rw-r--r--lib/public/WorkflowEngine/EntityContext/IDisplayText.php47
-rw-r--r--lib/public/WorkflowEngine/EntityContext/IIcon.php42
-rw-r--r--lib/public/WorkflowEngine/EntityContext/IUrl.php41
-rw-r--r--lib/public/WorkflowEngine/GenericEntityEvent.php79
-rw-r--r--lib/public/WorkflowEngine/ICheck.php35
-rw-r--r--lib/public/WorkflowEngine/IComplexOperation.php56
-rw-r--r--lib/public/WorkflowEngine/IEntity.php85
-rw-r--r--lib/public/WorkflowEngine/IEntityCheck.php51
-rw-r--r--lib/public/WorkflowEngine/IEntityCompat.php47
-rw-r--r--lib/public/WorkflowEngine/IEntityEvent.php54
-rw-r--r--lib/public/WorkflowEngine/IFileCheck.php42
-rw-r--r--lib/public/WorkflowEngine/IManager.php43
-rw-r--r--lib/public/WorkflowEngine/IOperation.php70
-rw-r--r--lib/public/WorkflowEngine/IOperationCompat.php50
-rw-r--r--lib/public/WorkflowEngine/IRuleMatcher.php79
-rw-r--r--lib/public/WorkflowEngine/ISpecificOperation.php50
-rw-r--r--lib/versioncheck.php12
611 files changed, 6630 insertions, 4226 deletions
diff --git a/lib/base.php b/lib/base.php
index 7812922c168..510a960e435 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -652,30 +652,35 @@ class OC {
if (!defined('OC_CONSOLE')) {
$errors = OC_Util::checkServer(\OC::$server->getSystemConfig());
if (count($errors) > 0) {
- if (self::$CLI) {
- // Convert l10n string into regular string for usage in database
- $staticErrors = [];
- foreach ($errors as $error) {
- echo $error['error'] . "\n";
- echo $error['hint'] . "\n\n";
- $staticErrors[] = [
- 'error' => (string)$error['error'],
- 'hint' => (string)$error['hint'],
- ];
- }
-
+ if (!self::$CLI) {
+ http_response_code(503);
+ OC_Util::addStyle('guest');
try {
- \OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
+ OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ exit;
} catch (\Exception $e) {
- echo('Writing to database failed');
+ // In case any error happens when showing the error page, we simply fall back to posting the text.
+ // This might be the case when e.g. the data directory is broken and we can not load/write SCSS to/from it.
}
- exit(1);
- } else {
- http_response_code(503);
- OC_Util::addStyle('guest');
- OC_Template::printGuestPage('', 'error', array('errors' => $errors));
- exit;
}
+
+ // Convert l10n string into regular string for usage in database
+ $staticErrors = [];
+ foreach ($errors as $error) {
+ echo $error['error'] . "\n";
+ echo $error['hint'] . "\n\n";
+ $staticErrors[] = [
+ 'error' => (string)$error['error'],
+ 'hint' => (string)$error['hint'],
+ ];
+ }
+
+ try {
+ \OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
+ } catch (\Exception $e) {
+ echo('Writing to database failed');
+ }
+ exit(1);
} elseif (self::$CLI && \OC::$server->getConfig()->getSystemValue('installed', false)) {
\OC::$server->getConfig()->deleteAppValue('core', 'cronErrors');
}
@@ -721,7 +726,8 @@ class OC {
// Make sure that the application class is not loaded before the database is setup
if ($systemConfig->getValue("installed", false)) {
- $settings = new \OC\Settings\Application();
+ OC_App::loadApp('settings');
+ $settings = \OC::$server->query(\OCA\Settings\AppInfo\Application::class);
$settings->register();
}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index b16e8b20b52..50730813700 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -99,6 +99,7 @@ return array(
'OCP\\BackgroundJob\\Job' => $baseDir . '/lib/public/BackgroundJob/Job.php',
'OCP\\BackgroundJob\\QueuedJob' => $baseDir . '/lib/public/BackgroundJob/QueuedJob.php',
'OCP\\BackgroundJob\\TimedJob' => $baseDir . '/lib/public/BackgroundJob/TimedJob.php',
+ 'OCP\\Broadcast\\Events\\IBroadcastEvent' => $baseDir . '/lib/public/Broadcast/Events/IBroadcastEvent.php',
'OCP\\Calendar\\BackendTemporarilyUnavailableException' => $baseDir . '/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
'OCP\\Calendar\\ICalendar' => $baseDir . '/lib/public/Calendar/ICalendar.php',
'OCP\\Calendar\\IManager' => $baseDir . '/lib/public/Calendar/IManager.php',
@@ -169,12 +170,21 @@ return array(
'OCP\\Diagnostics\\IEventLogger' => $baseDir . '/lib/public/Diagnostics/IEventLogger.php',
'OCP\\Diagnostics\\IQuery' => $baseDir . '/lib/public/Diagnostics/IQuery.php',
'OCP\\Diagnostics\\IQueryLogger' => $baseDir . '/lib/public/Diagnostics/IQueryLogger.php',
+ 'OCP\\DirectEditing\\ACreateEmpty' => $baseDir . '/lib/public/DirectEditing/ACreateEmpty.php',
+ 'OCP\\DirectEditing\\ACreateFromTemplate' => $baseDir . '/lib/public/DirectEditing/ACreateFromTemplate.php',
+ 'OCP\\DirectEditing\\ATemplate' => $baseDir . '/lib/public/DirectEditing/ATemplate.php',
+ 'OCP\\DirectEditing\\IEditor' => $baseDir . '/lib/public/DirectEditing/IEditor.php',
+ 'OCP\\DirectEditing\\IManager' => $baseDir . '/lib/public/DirectEditing/IManager.php',
+ 'OCP\\DirectEditing\\IToken' => $baseDir . '/lib/public/DirectEditing/IToken.php',
+ 'OCP\\DirectEditing\\RegisterDirectEditorEvent' => $baseDir . '/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => $baseDir . '/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
'OCP\\Encryption\\IEncryptionModule' => $baseDir . '/lib/public/Encryption/IEncryptionModule.php',
'OCP\\Encryption\\IFile' => $baseDir . '/lib/public/Encryption/IFile.php',
'OCP\\Encryption\\IManager' => $baseDir . '/lib/public/Encryption/IManager.php',
'OCP\\Encryption\\Keys\\IStorage' => $baseDir . '/lib/public/Encryption/Keys/IStorage.php',
+ 'OCP\\EventDispatcher\\ABroadcastedEvent' => $baseDir . '/lib/public/EventDispatcher/ABroadcastedEvent.php',
'OCP\\EventDispatcher\\Event' => $baseDir . '/lib/public/EventDispatcher/Event.php',
+ 'OCP\\EventDispatcher\\GenericEvent' => $baseDir . '/lib/public/EventDispatcher/GenericEvent.php',
'OCP\\EventDispatcher\\IEventDispatcher' => $baseDir . '/lib/public/EventDispatcher/IEventDispatcher.php',
'OCP\\EventDispatcher\\IEventListener' => $baseDir . '/lib/public/EventDispatcher/IEventListener.php',
'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => $baseDir . '/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
@@ -290,6 +300,7 @@ return array(
'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => $baseDir . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
'OCP\\Group\\Backend\\IIsAdminBackend' => $baseDir . '/lib/public/Group/Backend/IIsAdminBackend.php',
'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => $baseDir . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
+ 'OCP\\Group\\Backend\\ISetDisplayNameBackend' => $baseDir . '/lib/public/Group/Backend/ISetDisplayNameBackend.php',
'OCP\\Group\\ISubAdmin' => $baseDir . '/lib/public/Group/ISubAdmin.php',
'OCP\\Http\\Client\\IClient' => $baseDir . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => $baseDir . '/lib/public/Http/Client/IClientService.php',
@@ -382,6 +393,8 @@ return array(
'OCP\\Search\\Provider' => $baseDir . '/lib/public/Search/Provider.php',
'OCP\\Search\\Result' => $baseDir . '/lib/public/Search/Result.php',
'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => $baseDir . '/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
+ 'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => $baseDir . '/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
+ 'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => $baseDir . '/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => $baseDir . '/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
'OCP\\Security\\IContentSecurityPolicyManager' => $baseDir . '/lib/public/Security/IContentSecurityPolicyManager.php',
'OCP\\Security\\ICredentialsManager' => $baseDir . '/lib/public/Security/ICredentialsManager.php',
@@ -437,10 +450,27 @@ return array(
'OCP\\User\\Backend\\IProvideAvatarBackend' => $baseDir . '/lib/public/User/Backend/IProvideAvatarBackend.php',
'OCP\\User\\Backend\\ISetDisplayNameBackend' => $baseDir . '/lib/public/User/Backend/ISetDisplayNameBackend.php',
'OCP\\User\\Backend\\ISetPasswordBackend' => $baseDir . '/lib/public/User/Backend/ISetPasswordBackend.php',
+ 'OCP\\User\\Events\\CreateUserEvent' => $baseDir . '/lib/public/User/Events/CreateUserEvent.php',
+ 'OCP\\User\\Events\\PostLoginEvent' => $baseDir . '/lib/public/User/Events/PostLoginEvent.php',
+ 'OCP\\User\\Events\\UserCreatedEvent' => $baseDir . '/lib/public/User/Events/UserCreatedEvent.php',
'OCP\\Util' => $baseDir . '/lib/public/Util.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IIcon' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IUrl' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
+ 'OCP\\WorkflowEngine\\GenericEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
'OCP\\WorkflowEngine\\ICheck' => $baseDir . '/lib/public/WorkflowEngine/ICheck.php',
+ 'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir . '/lib/public/WorkflowEngine/IComplexOperation.php',
+ 'OCP\\WorkflowEngine\\IEntity' => $baseDir . '/lib/public/WorkflowEngine/IEntity.php',
+ 'OCP\\WorkflowEngine\\IEntityCheck' => $baseDir . '/lib/public/WorkflowEngine/IEntityCheck.php',
+ 'OCP\\WorkflowEngine\\IEntityCompat' => $baseDir . '/lib/public/WorkflowEngine/IEntityCompat.php',
+ 'OCP\\WorkflowEngine\\IEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/IEntityEvent.php',
+ 'OCP\\WorkflowEngine\\IFileCheck' => $baseDir . '/lib/public/WorkflowEngine/IFileCheck.php',
'OCP\\WorkflowEngine\\IManager' => $baseDir . '/lib/public/WorkflowEngine/IManager.php',
'OCP\\WorkflowEngine\\IOperation' => $baseDir . '/lib/public/WorkflowEngine/IOperation.php',
+ 'OCP\\WorkflowEngine\\IOperationCompat' => $baseDir . '/lib/public/WorkflowEngine/IOperationCompat.php',
+ 'OCP\\WorkflowEngine\\IRuleMatcher' => $baseDir . '/lib/public/WorkflowEngine/IRuleMatcher.php',
+ 'OCP\\WorkflowEngine\\ISpecificOperation' => $baseDir . '/lib/public/WorkflowEngine/ISpecificOperation.php',
'OC\\Accounts\\Account' => $baseDir . '/lib/private/Accounts/Account.php',
'OC\\Accounts\\AccountManager' => $baseDir . '/lib/private/Accounts/AccountManager.php',
'OC\\Accounts\\AccountProperty' => $baseDir . '/lib/private/Accounts/AccountProperty.php',
@@ -531,6 +561,7 @@ return array(
'OC\\Authentication\\Exceptions\\LoginRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => $baseDir . '/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
+ 'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => $baseDir . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
'OC\\Authentication\\Exceptions\\WipeTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
@@ -587,6 +618,7 @@ return array(
'OC\\BackgroundJob\\Legacy\\RegularJob' => $baseDir . '/lib/private/BackgroundJob/Legacy/RegularJob.php',
'OC\\BackgroundJob\\QueuedJob' => $baseDir . '/lib/private/BackgroundJob/QueuedJob.php',
'OC\\BackgroundJob\\TimedJob' => $baseDir . '/lib/private/BackgroundJob/TimedJob.php',
+ 'OC\\Broadcast\\Events\\BroadcastEvent' => $baseDir . '/lib/private/Broadcast/Events/BroadcastEvent.php',
'OC\\Cache\\CappedMemoryCache' => $baseDir . '/lib/private/Cache/CappedMemoryCache.php',
'OC\\Cache\\File' => $baseDir . '/lib/private/Cache/File.php',
'OC\\Calendar\\Manager' => $baseDir . '/lib/private/Calendar/Manager.php',
@@ -644,6 +676,7 @@ return array(
'OC\\Core\\Command\\Background\\Cron' => $baseDir . '/core/Command/Background/Cron.php',
'OC\\Core\\Command\\Background\\WebCron' => $baseDir . '/core/Command/Background/WebCron.php',
'OC\\Core\\Command\\Base' => $baseDir . '/core/Command/Base.php',
+ 'OC\\Core\\Command\\Broadcast\\Test' => $baseDir . '/core/Command/Broadcast/Test.php',
'OC\\Core\\Command\\Check' => $baseDir . '/core/Command/Check.php',
'OC\\Core\\Command\\Config\\App\\Base' => $baseDir . '/core/Command/Config/App/Base.php',
'OC\\Core\\Command\\Config\\App\\DeleteConfig' => $baseDir . '/core/Command/Config/App/DeleteConfig.php',
@@ -769,6 +802,8 @@ return array(
'OC\\Core\\Migrations\\Version16000Date20190427105638' => $baseDir . '/core/Migrations/Version16000Date20190427105638.php',
'OC\\Core\\Migrations\\Version16000Date20190428150708' => $baseDir . '/core/Migrations/Version16000Date20190428150708.php',
'OC\\Core\\Migrations\\Version17000Date20190514105811' => $baseDir . '/core/Migrations/Version17000Date20190514105811.php',
+ 'OC\\Core\\Migrations\\Version18000Date20190920085628' => $baseDir . '/core/Migrations/Version18000Date20190920085628.php',
+ 'OC\\Core\\Migrations\\Version18000Date20191014105105' => $baseDir . '/core/Migrations/Version18000Date20191014105105.php',
'OC\\Core\\Notification\\RemoveLinkSharesNotifier' => $baseDir . '/core/Notification/RemoveLinkSharesNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
@@ -820,6 +855,8 @@ return array(
'OC\\Diagnostics\\EventLogger' => $baseDir . '/lib/private/Diagnostics/EventLogger.php',
'OC\\Diagnostics\\Query' => $baseDir . '/lib/private/Diagnostics/Query.php',
'OC\\Diagnostics\\QueryLogger' => $baseDir . '/lib/private/Diagnostics/QueryLogger.php',
+ 'OC\\DirectEditing\\Manager' => $baseDir . '/lib/private/DirectEditing/Manager.php',
+ 'OC\\DirectEditing\\Token' => $baseDir . '/lib/private/DirectEditing/Token.php',
'OC\\Encryption\\DecryptAll' => $baseDir . '/lib/private/Encryption/DecryptAll.php',
'OC\\Encryption\\EncryptionWrapper' => $baseDir . '/lib/private/Encryption/EncryptionWrapper.php',
'OC\\Encryption\\Exceptions\\DecryptionFailedException' => $baseDir . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
@@ -850,6 +887,7 @@ return array(
'OC\\Files\\Cache\\AbstractCacheEvent' => $baseDir . '/lib/private/Files/Cache/AbstractCacheEvent.php',
'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => $baseDir . '/lib/private/Files/Cache/CacheEntry.php',
+ 'OC\\Files\\Cache\\CacheQueryBuilder' => $baseDir . '/lib/private/Files/Cache/CacheQueryBuilder.php',
'OC\\Files\\Cache\\FailedCache' => $baseDir . '/lib/private/Files/Cache/FailedCache.php',
'OC\\Files\\Cache\\HomeCache' => $baseDir . '/lib/private/Files/Cache/HomeCache.php',
'OC\\Files\\Cache\\HomePropagator' => $baseDir . '/lib/private/Files/Cache/HomePropagator.php',
@@ -1079,7 +1117,7 @@ return array(
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => $baseDir . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => $baseDir . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => $baseDir . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
- 'OC\\Repair\\NC16\\RemoveCypressFiles' => $baseDir . '/lib/private/Repair/NC16/RemoveCypressFiles.php',
+ 'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => $baseDir . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
'OC\\Repair\\NC17\\SetEnterpriseLogo' => $baseDir . '/lib/private/Repair/NC17/SetEnterpriseLogo.php',
'OC\\Repair\\NC17\\SwitchUpdateChannel' => $baseDir . '/lib/private/Repair/NC17/SwitchUpdateChannel.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
@@ -1134,40 +1172,7 @@ return array(
'OC\\Session\\Internal' => $baseDir . '/lib/private/Session/Internal.php',
'OC\\Session\\Memory' => $baseDir . '/lib/private/Session/Memory.php',
'OC\\Session\\Session' => $baseDir . '/lib/private/Session/Session.php',
- 'OC\\Settings\\Activity\\GroupProvider' => $baseDir . '/settings/Activity/GroupProvider.php',
- 'OC\\Settings\\Activity\\GroupSetting' => $baseDir . '/settings/Activity/GroupSetting.php',
- 'OC\\Settings\\Activity\\Provider' => $baseDir . '/settings/Activity/Provider.php',
- 'OC\\Settings\\Activity\\SecurityFilter' => $baseDir . '/settings/Activity/SecurityFilter.php',
- 'OC\\Settings\\Activity\\SecurityProvider' => $baseDir . '/settings/Activity/SecurityProvider.php',
- 'OC\\Settings\\Activity\\SecuritySetting' => $baseDir . '/settings/Activity/SecuritySetting.php',
- 'OC\\Settings\\Activity\\Setting' => $baseDir . '/settings/Activity/Setting.php',
- 'OC\\Settings\\Admin\\Mail' => $baseDir . '/settings/Settings/Admin/Mail.php',
- 'OC\\Settings\\Admin\\Overview' => $baseDir . '/settings/Settings/Admin/Overview.php',
- 'OC\\Settings\\Admin\\Security' => $baseDir . '/settings/Settings/Admin/Security.php',
- 'OC\\Settings\\Admin\\Server' => $baseDir . '/settings/Settings/Admin/Server.php',
- 'OC\\Settings\\Admin\\Sharing' => $baseDir . '/settings/Settings/Admin/Sharing.php',
- 'OC\\Settings\\Application' => $baseDir . '/settings/Application.php',
- 'OC\\Settings\\BackgroundJobs\\VerifyUserData' => $baseDir . '/settings/BackgroundJobs/VerifyUserData.php',
- 'OC\\Settings\\Controller\\AdminSettingsController' => $baseDir . '/settings/Controller/AdminSettingsController.php',
- 'OC\\Settings\\Controller\\AppSettingsController' => $baseDir . '/settings/Controller/AppSettingsController.php',
- 'OC\\Settings\\Controller\\AuthSettingsController' => $baseDir . '/settings/Controller/AuthSettingsController.php',
- 'OC\\Settings\\Controller\\CertificateController' => $baseDir . '/settings/Controller/CertificateController.php',
- 'OC\\Settings\\Controller\\ChangePasswordController' => $baseDir . '/settings/Controller/ChangePasswordController.php',
- 'OC\\Settings\\Controller\\CheckSetupController' => $baseDir . '/settings/Controller/CheckSetupController.php',
- 'OC\\Settings\\Controller\\CommonSettingsTrait' => $baseDir . '/settings/Controller/CommonSettingsTrait.php',
- 'OC\\Settings\\Controller\\LogSettingsController' => $baseDir . '/settings/Controller/LogSettingsController.php',
- 'OC\\Settings\\Controller\\MailSettingsController' => $baseDir . '/settings/Controller/MailSettingsController.php',
- 'OC\\Settings\\Controller\\PersonalSettingsController' => $baseDir . '/settings/Controller/PersonalSettingsController.php',
- 'OC\\Settings\\Controller\\TwoFactorSettingsController' => $baseDir . '/settings/Controller/TwoFactorSettingsController.php',
- 'OC\\Settings\\Controller\\UsersController' => $baseDir . '/settings/Controller/UsersController.php',
- 'OC\\Settings\\Hooks' => $baseDir . '/settings/Hooks.php',
- 'OC\\Settings\\Mailer\\NewUserMailHelper' => $baseDir . '/settings/Mailer/NewUserMailHelper.php',
'OC\\Settings\\Manager' => $baseDir . '/lib/private/Settings/Manager.php',
- 'OC\\Settings\\Middleware\\SubadminMiddleware' => $baseDir . '/settings/Middleware/SubadminMiddleware.php',
- 'OC\\Settings\\Personal\\Additional' => $baseDir . '/settings/Settings/Personal/Additional.php',
- 'OC\\Settings\\Personal\\PersonalInfo' => $baseDir . '/settings/Settings/Personal/PersonalInfo.php',
- 'OC\\Settings\\Personal\\Security' => $baseDir . '/settings/Settings/Personal/Security.php',
- 'OC\\Settings\\Personal\\ServerDevNotice' => $baseDir . '/settings/Settings/Personal/ServerDevNotice.php',
'OC\\Settings\\Section' => $baseDir . '/lib/private/Settings/Section.php',
'OC\\Setup' => $baseDir . '/lib/private/Setup.php',
'OC\\Setup\\AbstractDatabase' => $baseDir . '/lib/private/Setup/AbstractDatabase.php',
@@ -1222,7 +1227,6 @@ return array(
'OC\\Updater\\VersionCheck' => $baseDir . '/lib/private/Updater/VersionCheck.php',
'OC\\User\\Backend' => $baseDir . '/lib/private/User/Backend.php',
'OC\\User\\Database' => $baseDir . '/lib/private/User/Database.php',
- 'OC\\User\\Events\\PostLoginEvent' => $baseDir . '/lib/private/User/Events/PostLoginEvent.php',
'OC\\User\\LoginException' => $baseDir . '/lib/private/User/LoginException.php',
'OC\\User\\Manager' => $baseDir . '/lib/private/User/Manager.php',
'OC\\User\\NoUserException' => $baseDir . '/lib/private/User/NoUserException.php',
diff --git a/lib/composer/composer/autoload_psr4.php b/lib/composer/composer/autoload_psr4.php
index 2561f0048c5..31c762759e3 100644
--- a/lib/composer/composer/autoload_psr4.php
+++ b/lib/composer/composer/autoload_psr4.php
@@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
- 'OC\\Settings\\' => array($baseDir . '/settings'),
'OC\\Core\\' => array($baseDir . '/core'),
'OC\\' => array($baseDir . '/lib/private'),
'OCP\\' => array($baseDir . '/lib/public'),
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 779995b8652..5f7e8fde989 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -9,7 +9,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
public static $prefixLengthsPsr4 = array (
'O' =>
array (
- 'OC\\Settings\\' => 12,
'OC\\Core\\' => 8,
'OC\\' => 3,
'OCP\\' => 4,
@@ -17,10 +16,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
);
public static $prefixDirsPsr4 = array (
- 'OC\\Settings\\' =>
- array (
- 0 => __DIR__ . '/../../..' . '/settings',
- ),
'OC\\Core\\' =>
array (
0 => __DIR__ . '/../../..' . '/core',
@@ -133,6 +128,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\BackgroundJob\\Job' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/Job.php',
'OCP\\BackgroundJob\\QueuedJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/QueuedJob.php',
'OCP\\BackgroundJob\\TimedJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/TimedJob.php',
+ 'OCP\\Broadcast\\Events\\IBroadcastEvent' => __DIR__ . '/../../..' . '/lib/public/Broadcast/Events/IBroadcastEvent.php',
'OCP\\Calendar\\BackendTemporarilyUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
'OCP\\Calendar\\ICalendar' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendar.php',
'OCP\\Calendar\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/IManager.php',
@@ -203,12 +199,21 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Diagnostics\\IEventLogger' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IEventLogger.php',
'OCP\\Diagnostics\\IQuery' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IQuery.php',
'OCP\\Diagnostics\\IQueryLogger' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IQueryLogger.php',
+ 'OCP\\DirectEditing\\ACreateEmpty' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ACreateEmpty.php',
+ 'OCP\\DirectEditing\\ACreateFromTemplate' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ACreateFromTemplate.php',
+ 'OCP\\DirectEditing\\ATemplate' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ATemplate.php',
+ 'OCP\\DirectEditing\\IEditor' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IEditor.php',
+ 'OCP\\DirectEditing\\IManager' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IManager.php',
+ 'OCP\\DirectEditing\\IToken' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IToken.php',
+ 'OCP\\DirectEditing\\RegisterDirectEditorEvent' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => __DIR__ . '/../../..' . '/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
'OCP\\Encryption\\IEncryptionModule' => __DIR__ . '/../../..' . '/lib/public/Encryption/IEncryptionModule.php',
'OCP\\Encryption\\IFile' => __DIR__ . '/../../..' . '/lib/public/Encryption/IFile.php',
'OCP\\Encryption\\IManager' => __DIR__ . '/../../..' . '/lib/public/Encryption/IManager.php',
'OCP\\Encryption\\Keys\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Encryption/Keys/IStorage.php',
+ 'OCP\\EventDispatcher\\ABroadcastedEvent' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/ABroadcastedEvent.php',
'OCP\\EventDispatcher\\Event' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/Event.php',
+ 'OCP\\EventDispatcher\\GenericEvent' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/GenericEvent.php',
'OCP\\EventDispatcher\\IEventDispatcher' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/IEventDispatcher.php',
'OCP\\EventDispatcher\\IEventListener' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/IEventListener.php',
'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
@@ -324,6 +329,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
'OCP\\Group\\Backend\\IIsAdminBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IIsAdminBackend.php',
'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
+ 'OCP\\Group\\Backend\\ISetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ISetDisplayNameBackend.php',
'OCP\\Group\\ISubAdmin' => __DIR__ . '/../../..' . '/lib/public/Group/ISubAdmin.php',
'OCP\\Http\\Client\\IClient' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClientService.php',
@@ -416,6 +422,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Search\\Provider' => __DIR__ . '/../../..' . '/lib/public/Search/Provider.php',
'OCP\\Search\\Result' => __DIR__ . '/../../..' . '/lib/public/Search/Result.php',
'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
+ 'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => __DIR__ . '/../../..' . '/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
+ 'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
'OCP\\Security\\IContentSecurityPolicyManager' => __DIR__ . '/../../..' . '/lib/public/Security/IContentSecurityPolicyManager.php',
'OCP\\Security\\ICredentialsManager' => __DIR__ . '/../../..' . '/lib/public/Security/ICredentialsManager.php',
@@ -471,10 +479,27 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\User\\Backend\\IProvideAvatarBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IProvideAvatarBackend.php',
'OCP\\User\\Backend\\ISetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ISetDisplayNameBackend.php',
'OCP\\User\\Backend\\ISetPasswordBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ISetPasswordBackend.php',
+ 'OCP\\User\\Events\\CreateUserEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/CreateUserEvent.php',
+ 'OCP\\User\\Events\\PostLoginEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/PostLoginEvent.php',
+ 'OCP\\User\\Events\\UserCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserCreatedEvent.php',
'OCP\\Util' => __DIR__ . '/../../..' . '/lib/public/Util.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IIcon' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
+ 'OCP\\WorkflowEngine\\EntityContext\\IUrl' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
+ 'OCP\\WorkflowEngine\\GenericEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
'OCP\\WorkflowEngine\\ICheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ICheck.php',
+ 'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IComplexOperation.php',
+ 'OCP\\WorkflowEngine\\IEntity' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntity.php',
+ 'OCP\\WorkflowEngine\\IEntityCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCheck.php',
+ 'OCP\\WorkflowEngine\\IEntityCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCompat.php',
+ 'OCP\\WorkflowEngine\\IEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityEvent.php',
+ 'OCP\\WorkflowEngine\\IFileCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IFileCheck.php',
'OCP\\WorkflowEngine\\IManager' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IManager.php',
'OCP\\WorkflowEngine\\IOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperation.php',
+ 'OCP\\WorkflowEngine\\IOperationCompat' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperationCompat.php',
+ 'OCP\\WorkflowEngine\\IRuleMatcher' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IRuleMatcher.php',
+ 'OCP\\WorkflowEngine\\ISpecificOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ISpecificOperation.php',
'OC\\Accounts\\Account' => __DIR__ . '/../../..' . '/lib/private/Accounts/Account.php',
'OC\\Accounts\\AccountManager' => __DIR__ . '/../../..' . '/lib/private/Accounts/AccountManager.php',
'OC\\Accounts\\AccountProperty' => __DIR__ . '/../../..' . '/lib/private/Accounts/AccountProperty.php',
@@ -565,6 +590,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\Exceptions\\LoginRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
+ 'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
'OC\\Authentication\\Exceptions\\WipeTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
@@ -621,6 +647,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\BackgroundJob\\Legacy\\RegularJob' => __DIR__ . '/../../..' . '/lib/private/BackgroundJob/Legacy/RegularJob.php',
'OC\\BackgroundJob\\QueuedJob' => __DIR__ . '/../../..' . '/lib/private/BackgroundJob/QueuedJob.php',
'OC\\BackgroundJob\\TimedJob' => __DIR__ . '/../../..' . '/lib/private/BackgroundJob/TimedJob.php',
+ 'OC\\Broadcast\\Events\\BroadcastEvent' => __DIR__ . '/../../..' . '/lib/private/Broadcast/Events/BroadcastEvent.php',
'OC\\Cache\\CappedMemoryCache' => __DIR__ . '/../../..' . '/lib/private/Cache/CappedMemoryCache.php',
'OC\\Cache\\File' => __DIR__ . '/../../..' . '/lib/private/Cache/File.php',
'OC\\Calendar\\Manager' => __DIR__ . '/../../..' . '/lib/private/Calendar/Manager.php',
@@ -678,6 +705,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Command\\Background\\Cron' => __DIR__ . '/../../..' . '/core/Command/Background/Cron.php',
'OC\\Core\\Command\\Background\\WebCron' => __DIR__ . '/../../..' . '/core/Command/Background/WebCron.php',
'OC\\Core\\Command\\Base' => __DIR__ . '/../../..' . '/core/Command/Base.php',
+ 'OC\\Core\\Command\\Broadcast\\Test' => __DIR__ . '/../../..' . '/core/Command/Broadcast/Test.php',
'OC\\Core\\Command\\Check' => __DIR__ . '/../../..' . '/core/Command/Check.php',
'OC\\Core\\Command\\Config\\App\\Base' => __DIR__ . '/../../..' . '/core/Command/Config/App/Base.php',
'OC\\Core\\Command\\Config\\App\\DeleteConfig' => __DIR__ . '/../../..' . '/core/Command/Config/App/DeleteConfig.php',
@@ -803,6 +831,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version16000Date20190427105638' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190427105638.php',
'OC\\Core\\Migrations\\Version16000Date20190428150708' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190428150708.php',
'OC\\Core\\Migrations\\Version17000Date20190514105811' => __DIR__ . '/../../..' . '/core/Migrations/Version17000Date20190514105811.php',
+ 'OC\\Core\\Migrations\\Version18000Date20190920085628' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20190920085628.php',
+ 'OC\\Core\\Migrations\\Version18000Date20191014105105' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20191014105105.php',
'OC\\Core\\Notification\\RemoveLinkSharesNotifier' => __DIR__ . '/../../..' . '/core/Notification/RemoveLinkSharesNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
@@ -854,6 +884,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Diagnostics\\EventLogger' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/EventLogger.php',
'OC\\Diagnostics\\Query' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/Query.php',
'OC\\Diagnostics\\QueryLogger' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/QueryLogger.php',
+ 'OC\\DirectEditing\\Manager' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Manager.php',
+ 'OC\\DirectEditing\\Token' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Token.php',
'OC\\Encryption\\DecryptAll' => __DIR__ . '/../../..' . '/lib/private/Encryption/DecryptAll.php',
'OC\\Encryption\\EncryptionWrapper' => __DIR__ . '/../../..' . '/lib/private/Encryption/EncryptionWrapper.php',
'OC\\Encryption\\Exceptions\\DecryptionFailedException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
@@ -884,6 +916,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Cache\\AbstractCacheEvent' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/AbstractCacheEvent.php',
'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheEntry.php',
+ 'OC\\Files\\Cache\\CacheQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheQueryBuilder.php',
'OC\\Files\\Cache\\FailedCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/FailedCache.php',
'OC\\Files\\Cache\\HomeCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/HomeCache.php',
'OC\\Files\\Cache\\HomePropagator' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/HomePropagator.php',
@@ -1113,7 +1146,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
- 'OC\\Repair\\NC16\\RemoveCypressFiles' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/RemoveCypressFiles.php',
+ 'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
'OC\\Repair\\NC17\\SetEnterpriseLogo' => __DIR__ . '/../../..' . '/lib/private/Repair/NC17/SetEnterpriseLogo.php',
'OC\\Repair\\NC17\\SwitchUpdateChannel' => __DIR__ . '/../../..' . '/lib/private/Repair/NC17/SwitchUpdateChannel.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
@@ -1168,40 +1201,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Session\\Internal' => __DIR__ . '/../../..' . '/lib/private/Session/Internal.php',
'OC\\Session\\Memory' => __DIR__ . '/../../..' . '/lib/private/Session/Memory.php',
'OC\\Session\\Session' => __DIR__ . '/../../..' . '/lib/private/Session/Session.php',
- 'OC\\Settings\\Activity\\GroupProvider' => __DIR__ . '/../../..' . '/settings/Activity/GroupProvider.php',
- 'OC\\Settings\\Activity\\GroupSetting' => __DIR__ . '/../../..' . '/settings/Activity/GroupSetting.php',
- 'OC\\Settings\\Activity\\Provider' => __DIR__ . '/../../..' . '/settings/Activity/Provider.php',
- 'OC\\Settings\\Activity\\SecurityFilter' => __DIR__ . '/../../..' . '/settings/Activity/SecurityFilter.php',
- 'OC\\Settings\\Activity\\SecurityProvider' => __DIR__ . '/../../..' . '/settings/Activity/SecurityProvider.php',
- 'OC\\Settings\\Activity\\SecuritySetting' => __DIR__ . '/../../..' . '/settings/Activity/SecuritySetting.php',
- 'OC\\Settings\\Activity\\Setting' => __DIR__ . '/../../..' . '/settings/Activity/Setting.php',
- 'OC\\Settings\\Admin\\Mail' => __DIR__ . '/../../..' . '/settings/Settings/Admin/Mail.php',
- 'OC\\Settings\\Admin\\Overview' => __DIR__ . '/../../..' . '/settings/Settings/Admin/Overview.php',
- 'OC\\Settings\\Admin\\Security' => __DIR__ . '/../../..' . '/settings/Settings/Admin/Security.php',
- 'OC\\Settings\\Admin\\Server' => __DIR__ . '/../../..' . '/settings/Settings/Admin/Server.php',
- 'OC\\Settings\\Admin\\Sharing' => __DIR__ . '/../../..' . '/settings/Settings/Admin/Sharing.php',
- 'OC\\Settings\\Application' => __DIR__ . '/../../..' . '/settings/Application.php',
- 'OC\\Settings\\BackgroundJobs\\VerifyUserData' => __DIR__ . '/../../..' . '/settings/BackgroundJobs/VerifyUserData.php',
- 'OC\\Settings\\Controller\\AdminSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/AdminSettingsController.php',
- 'OC\\Settings\\Controller\\AppSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/AppSettingsController.php',
- 'OC\\Settings\\Controller\\AuthSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/AuthSettingsController.php',
- 'OC\\Settings\\Controller\\CertificateController' => __DIR__ . '/../../..' . '/settings/Controller/CertificateController.php',
- 'OC\\Settings\\Controller\\ChangePasswordController' => __DIR__ . '/../../..' . '/settings/Controller/ChangePasswordController.php',
- 'OC\\Settings\\Controller\\CheckSetupController' => __DIR__ . '/../../..' . '/settings/Controller/CheckSetupController.php',
- 'OC\\Settings\\Controller\\CommonSettingsTrait' => __DIR__ . '/../../..' . '/settings/Controller/CommonSettingsTrait.php',
- 'OC\\Settings\\Controller\\LogSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/LogSettingsController.php',
- 'OC\\Settings\\Controller\\MailSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/MailSettingsController.php',
- 'OC\\Settings\\Controller\\PersonalSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/PersonalSettingsController.php',
- 'OC\\Settings\\Controller\\TwoFactorSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/TwoFactorSettingsController.php',
- 'OC\\Settings\\Controller\\UsersController' => __DIR__ . '/../../..' . '/settings/Controller/UsersController.php',
- 'OC\\Settings\\Hooks' => __DIR__ . '/../../..' . '/settings/Hooks.php',
- 'OC\\Settings\\Mailer\\NewUserMailHelper' => __DIR__ . '/../../..' . '/settings/Mailer/NewUserMailHelper.php',
'OC\\Settings\\Manager' => __DIR__ . '/../../..' . '/lib/private/Settings/Manager.php',
- 'OC\\Settings\\Middleware\\SubadminMiddleware' => __DIR__ . '/../../..' . '/settings/Middleware/SubadminMiddleware.php',
- 'OC\\Settings\\Personal\\Additional' => __DIR__ . '/../../..' . '/settings/Settings/Personal/Additional.php',
- 'OC\\Settings\\Personal\\PersonalInfo' => __DIR__ . '/../../..' . '/settings/Settings/Personal/PersonalInfo.php',
- 'OC\\Settings\\Personal\\Security' => __DIR__ . '/../../..' . '/settings/Settings/Personal/Security.php',
- 'OC\\Settings\\Personal\\ServerDevNotice' => __DIR__ . '/../../..' . '/settings/Settings/Personal/ServerDevNotice.php',
'OC\\Settings\\Section' => __DIR__ . '/../../..' . '/lib/private/Settings/Section.php',
'OC\\Setup' => __DIR__ . '/../../..' . '/lib/private/Setup.php',
'OC\\Setup\\AbstractDatabase' => __DIR__ . '/../../..' . '/lib/private/Setup/AbstractDatabase.php',
@@ -1256,7 +1256,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Updater\\VersionCheck' => __DIR__ . '/../../..' . '/lib/private/Updater/VersionCheck.php',
'OC\\User\\Backend' => __DIR__ . '/../../..' . '/lib/private/User/Backend.php',
'OC\\User\\Database' => __DIR__ . '/../../..' . '/lib/private/User/Database.php',
- 'OC\\User\\Events\\PostLoginEvent' => __DIR__ . '/../../..' . '/lib/private/User/Events/PostLoginEvent.php',
'OC\\User\\LoginException' => __DIR__ . '/../../..' . '/lib/private/User/LoginException.php',
'OC\\User\\Manager' => __DIR__ . '/../../..' . '/lib/private/User/Manager.php',
'OC\\User\\NoUserException' => __DIR__ . '/../../..' . '/lib/private/User/NoUserException.php',
diff --git a/lib/l10n/ar.js b/lib/l10n/ar.js
index 6896d499b3f..24763786526 100644
--- a/lib/l10n/ar.js
+++ b/lib/l10n/ar.js
@@ -130,10 +130,6 @@ OC.L10N.register(
"Verifying …" : "عملية التحقق جارية …",
"Verify" : "التحقق",
"Sharing %s failed, because the file does not exist" : "فشلت مشاركة %s فالملف غير موجود",
- "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك",
- "Sharing %s failed, because the user %s does not exist" : "فشلت مشاركة %s لأن المستخدم %s غير موجود",
- "Share type %s is not valid for %s" : "مشاركة النوع %s غير صالحة لـ %s",
- "%s shared »%s« with you" : "%s شارك »%s« معك",
- "%s via %s" : "%s عبر %s"
+ "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك"
},
"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/lib/l10n/ar.json b/lib/l10n/ar.json
index 63ef9379a34..8fdd1816452 100644
--- a/lib/l10n/ar.json
+++ b/lib/l10n/ar.json
@@ -128,10 +128,6 @@
"Verifying …" : "عملية التحقق جارية …",
"Verify" : "التحقق",
"Sharing %s failed, because the file does not exist" : "فشلت مشاركة %s فالملف غير موجود",
- "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك",
- "Sharing %s failed, because the user %s does not exist" : "فشلت مشاركة %s لأن المستخدم %s غير موجود",
- "Share type %s is not valid for %s" : "مشاركة النوع %s غير صالحة لـ %s",
- "%s shared »%s« with you" : "%s شارك »%s« معك",
- "%s via %s" : "%s عبر %s"
+ "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك"
},"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;"
} \ No newline at end of file
diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js
index ce823712cd7..56d5a5c004b 100644
--- a/lib/l10n/ast.js
+++ b/lib/l10n/ast.js
@@ -144,31 +144,16 @@ OC.L10N.register(
"Storage connection error. %s" : "Fallu de conexón al almacenamientu. %s",
"Storage is temporarily not available" : "L'almacenamientu ta temporalmente non disponible",
"Storage connection timeout. %s" : "Tiempu escosao de conexón al almacenamientu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Necesítase una librería %s con ua versión superior a %s - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Necesítase una librería %s con una versión anterior a %s - versión disponible %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Compartir %s falló, por cuenta qu'el backend nun dexa acciones de tipu %i",
"Sharing %s failed, because the file does not exist" : "Compartir %s falló, porque'l ficheru nun esiste",
"Sharing %s failed, because you can not share with yourself" : "Compartir %s falló, porque nun puede compartise contigo mesmu",
- "Sharing %s failed, because the user %s does not exist" : "Compartir %s falló, yá que l'usuariu %s nun esiste",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Compartir %s falló, yá que l'usuariu %s nun ye miembru de nengún de los grupos de los que ye miembru %s",
- "Sharing %s failed, because this item is already shared with %s" : "Compartir %s falló, porque esti elementu yá ta compartiéndose con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Compartir %s falló, porque esti elementu yá ta compartiéndose col usuariu %s",
- "Sharing %s failed, because the group %s does not exist" : "Compartir %s falló, porque'l grupu %s nun esiste",
- "Sharing %s failed, because %s is not a member of the group %s" : "Compartir %s falló, porque %s nun ye miembru del grupu %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesites apurrir una contraseña pa crear un enllaz públicu, namái tan permitíos los enllaces protexíos",
"Sharing %s failed, because sharing with links is not allowed" : "Compartir %s falló, porque nun se permite compartir con enllaces",
"Not allowed to create a federated share with the same user" : "Nun s'almite crear un recursu compartíu federáu col mesmu usuariu",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Compartir %s falló, nun pudo atopase %s, pue qu'el servidor nun seya anguaño algamable.",
- "Share type %s is not valid for %s" : "La triba de compartición %s nun ye válida pa %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nun pue afitase la data de caducidá. Ficheros compartíos nun puen caducar dempués de %s de compartise",
"Cannot set expiration date. Expiration date is in the past" : "Nun pue afitase la data d'espiración. La data d'espiración ta nel pasáu",
"Sharing failed, because the user %s is the original sharer" : "Compartir falló, porque l'usuariu %s ye'l compartidor orixinal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartir %s falló, porque los permisos perpasen los otorgaos a %s",
"Sharing %s failed, because resharing is not allowed" : "Compartir %s falló, porque nun se permite la re-compartición",
- "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",
- "%s shared »%s« with you" : "%s compartió »%s« contigo",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'aplicación \"%s\" nun puede instalase porque les siguientes dependencies nun se cumplen: %s"
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json
index d8a4e2e5c4f..c806536f652 100644
--- a/lib/l10n/ast.json
+++ b/lib/l10n/ast.json
@@ -142,31 +142,16 @@
"Storage connection error. %s" : "Fallu de conexón al almacenamientu. %s",
"Storage is temporarily not available" : "L'almacenamientu ta temporalmente non disponible",
"Storage connection timeout. %s" : "Tiempu escosao de conexón al almacenamientu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Necesítase una librería %s con ua versión superior a %s - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Necesítase una librería %s con una versión anterior a %s - versión disponible %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Compartir %s falló, por cuenta qu'el backend nun dexa acciones de tipu %i",
"Sharing %s failed, because the file does not exist" : "Compartir %s falló, porque'l ficheru nun esiste",
"Sharing %s failed, because you can not share with yourself" : "Compartir %s falló, porque nun puede compartise contigo mesmu",
- "Sharing %s failed, because the user %s does not exist" : "Compartir %s falló, yá que l'usuariu %s nun esiste",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Compartir %s falló, yá que l'usuariu %s nun ye miembru de nengún de los grupos de los que ye miembru %s",
- "Sharing %s failed, because this item is already shared with %s" : "Compartir %s falló, porque esti elementu yá ta compartiéndose con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Compartir %s falló, porque esti elementu yá ta compartiéndose col usuariu %s",
- "Sharing %s failed, because the group %s does not exist" : "Compartir %s falló, porque'l grupu %s nun esiste",
- "Sharing %s failed, because %s is not a member of the group %s" : "Compartir %s falló, porque %s nun ye miembru del grupu %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesites apurrir una contraseña pa crear un enllaz públicu, namái tan permitíos los enllaces protexíos",
"Sharing %s failed, because sharing with links is not allowed" : "Compartir %s falló, porque nun se permite compartir con enllaces",
"Not allowed to create a federated share with the same user" : "Nun s'almite crear un recursu compartíu federáu col mesmu usuariu",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Compartir %s falló, nun pudo atopase %s, pue qu'el servidor nun seya anguaño algamable.",
- "Share type %s is not valid for %s" : "La triba de compartición %s nun ye válida pa %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nun pue afitase la data de caducidá. Ficheros compartíos nun puen caducar dempués de %s de compartise",
"Cannot set expiration date. Expiration date is in the past" : "Nun pue afitase la data d'espiración. La data d'espiración ta nel pasáu",
"Sharing failed, because the user %s is the original sharer" : "Compartir falló, porque l'usuariu %s ye'l compartidor orixinal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartir %s falló, porque los permisos perpasen los otorgaos a %s",
"Sharing %s failed, because resharing is not allowed" : "Compartir %s falló, porque nun se permite la re-compartición",
- "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",
- "%s shared »%s« with you" : "%s compartió »%s« contigo",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'aplicación \"%s\" nun puede instalase porque les siguientes dependencies nun se cumplen: %s"
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/az.js b/lib/l10n/az.js
index 4a7b305399c..b613410c818 100644
--- a/lib/l10n/az.js
+++ b/lib/l10n/az.js
@@ -25,8 +25,6 @@ OC.L10N.register(
"Authentication error" : "Təyinat metodikası",
"Token expired. Please reload page." : "Token vaxtı bitib. Xahiş olunur səhifəni yenidən yükləyəsiniz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu ola bilər ki, cache/accelerator such tərəfindən cağırılıb hansi ki, Zend OPcache və eAccelerator-da olduğu kimidir.",
- "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil.",
- "Share type %s is not valid for %s" : "Yayımlanma tipi %s etibarlı deyil %s üçün",
- "%s shared »%s« with you" : "%s yayımlandı »%s« sizinlə"
+ "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/az.json b/lib/l10n/az.json
index 22b161619ff..46688f41a85 100644
--- a/lib/l10n/az.json
+++ b/lib/l10n/az.json
@@ -23,8 +23,6 @@
"Authentication error" : "Təyinat metodikası",
"Token expired. Please reload page." : "Token vaxtı bitib. Xahiş olunur səhifəni yenidən yükləyəsiniz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu ola bilər ki, cache/accelerator such tərəfindən cağırılıb hansi ki, Zend OPcache və eAccelerator-da olduğu kimidir.",
- "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil.",
- "Share type %s is not valid for %s" : "Yayımlanma tipi %s etibarlı deyil %s üçün",
- "%s shared »%s« with you" : "%s yayımlandı »%s« sizinlə"
+ "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/bg.js b/lib/l10n/bg.js
index a03ec1dd160..1d6b1a761e9 100644
--- a/lib/l10n/bg.js
+++ b/lib/l10n/bg.js
@@ -137,31 +137,17 @@ OC.L10N.register(
"Please upgrade your database version" : "Моля, обнови базата данни.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, променете правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.",
"Could not obtain lock type %d on \"%s\"." : "Неуспешен опит за ексклузивен достъп от типa %d върху \"%s\".",
- "Library %s with a version higher than %s is required - available version %s." : "Необходима е библиотеката %s с версия по-висока от %s - налична версия %s. ",
- "Library %s with a version lower than %s is required - available version %s." : "Необходима е библиотеката %s с версия по-ниска от %s - налична версия %s. ",
"Create" : "Създай",
"Delete" : "Изтриване",
"Share" : "Споделяне",
"Unlimited" : "Неограничено",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Неуспешно споделяне на %s , защото сървъра не позволява споделяне от тип $i.",
"Sharing %s failed, because the file does not exist" : "Неуспешно споделяне на %s, защото файлът не съществува.",
- "Sharing %s failed, because the user %s does not exist" : "Неуспешно споделяне на %s, защото потребител %s не съществува.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Неуспешно споделяне на %s, защото %s не е член никоя от групите, в които е %s.",
- "Sharing %s failed, because this item is already shared with %s" : "Неуспешно споделяне на %s, защото това съдържание е вече споделено с %s.",
- "Sharing %s failed, because the group %s does not exist" : "Неупешно споделяне на %s, защото групата %s не съществува.",
- "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, защото споделянето посредством връзки не е разрешено.",
- "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.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неуспешно задаване на срок на валидност. Споделянията не могат да изтичат по-късно от %s след като са били споделени",
"Cannot set expiration date. Expiration date is in the past" : "Неуспешно задаване на срок на валидност. Датата на изтичане е в миналото",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Неуспешно споделяне на %s, защото промените надвишават правата на достъп дадени на %s.",
"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, защото файлът не може да бъде намерен в кеша.",
- "%s shared »%s« with you" : "%s сподели »%s« с вас",
- "%s shared »%s« with you." : "%s сподели »%s« с вас.",
- "%s via %s" : "%s чрез %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Неуспешно споделяне на %s, защото файлът не може да бъде намерен в кеша."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bg.json b/lib/l10n/bg.json
index 8968e74d715..70021bc7ad5 100644
--- a/lib/l10n/bg.json
+++ b/lib/l10n/bg.json
@@ -135,31 +135,17 @@
"Please upgrade your database version" : "Моля, обнови базата данни.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, променете правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.",
"Could not obtain lock type %d on \"%s\"." : "Неуспешен опит за ексклузивен достъп от типa %d върху \"%s\".",
- "Library %s with a version higher than %s is required - available version %s." : "Необходима е библиотеката %s с версия по-висока от %s - налична версия %s. ",
- "Library %s with a version lower than %s is required - available version %s." : "Необходима е библиотеката %s с версия по-ниска от %s - налична версия %s. ",
"Create" : "Създай",
"Delete" : "Изтриване",
"Share" : "Споделяне",
"Unlimited" : "Неограничено",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Неуспешно споделяне на %s , защото сървъра не позволява споделяне от тип $i.",
"Sharing %s failed, because the file does not exist" : "Неуспешно споделяне на %s, защото файлът не съществува.",
- "Sharing %s failed, because the user %s does not exist" : "Неуспешно споделяне на %s, защото потребител %s не съществува.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Неуспешно споделяне на %s, защото %s не е член никоя от групите, в които е %s.",
- "Sharing %s failed, because this item is already shared with %s" : "Неуспешно споделяне на %s, защото това съдържание е вече споделено с %s.",
- "Sharing %s failed, because the group %s does not exist" : "Неупешно споделяне на %s, защото групата %s не съществува.",
- "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, защото споделянето посредством връзки не е разрешено.",
- "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.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неуспешно задаване на срок на валидност. Споделянията не могат да изтичат по-късно от %s след като са били споделени",
"Cannot set expiration date. Expiration date is in the past" : "Неуспешно задаване на срок на валидност. Датата на изтичане е в миналото",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Неуспешно споделяне на %s, защото промените надвишават правата на достъп дадени на %s.",
"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, защото файлът не може да бъде намерен в кеша.",
- "%s shared »%s« with you" : "%s сподели »%s« с вас",
- "%s shared »%s« with you." : "%s сподели »%s« с вас.",
- "%s via %s" : "%s чрез %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Неуспешно споделяне на %s, защото файлът не може да бъде намерен в кеша."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/bn_BD.js b/lib/l10n/bn_BD.js
index c17dc3a85f9..8767e4d8158 100644
--- a/lib/l10n/bn_BD.js
+++ b/lib/l10n/bn_BD.js
@@ -20,7 +20,6 @@ OC.L10N.register(
"Application is not enabled" : "অ্যাপ্লিকেসনটি সক্রিয় নয়",
"Authentication error" : "অনুমোদন ঘটিত সমস্যা",
"Token expired. Please reload page." : "টোকেন মেয়াদোত্তীর্ণ। দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।",
- "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই",
- "%s shared »%s« with you" : "%s আপনার সাথে »%s« ভাগাভাগি করেছে"
+ "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bn_BD.json b/lib/l10n/bn_BD.json
index a67dad413b6..8fce438c116 100644
--- a/lib/l10n/bn_BD.json
+++ b/lib/l10n/bn_BD.json
@@ -18,7 +18,6 @@
"Application is not enabled" : "অ্যাপ্লিকেসনটি সক্রিয় নয়",
"Authentication error" : "অনুমোদন ঘটিত সমস্যা",
"Token expired. Please reload page." : "টোকেন মেয়াদোত্তীর্ণ। দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।",
- "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই",
- "%s shared »%s« with you" : "%s আপনার সাথে »%s« ভাগাভাগি করেছে"
+ "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
index 09e49036a2f..904b99e952a 100644
--- a/lib/l10n/ca.js
+++ b/lib/l10n/ca.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Error de connexió d’emmagatzematge. %s",
"Storage is temporarily not available" : "Emmagatzematge temporalment no disponible",
"Storage connection timeout. %s" : "Temps d’espera exhaurit en la connexió d’emmagatzematge. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Es requereix la llibreria %s amb una versió superior a %s - la versió disponible és %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Es requereix la llibreria %s amb una versió inferior a %s - la versió disponible és %s.",
"Create" : "Crea",
"Change" : "Canvia",
"Delete" : "Suprimeix",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "No s'ha pogut compartir %s perquè l'aplicació de fons no permet comparticions del tipus %i",
"Sharing %s failed, because the file does not exist" : "No s'ha pogut compartir %s, perquè el fitxer no existeix",
"Sharing %s failed, because you can not share with yourself" : "No s'ha pogut compartir %s, perquè no us podeu auto-compartir.",
- "Sharing %s failed, because the user %s does not exist" : "No s'ha pogut compartir %s, perquè l'usuari %s no existeix",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "No s'ha pogut compartir %s, perquè l'usuari %s no és membre de cap grup dels que %s n'és membre",
- "Sharing %s failed, because this item is already shared with %s" : "No s'ha pogut compartir %s, perquè l'element ja està compartit amb %s",
- "Sharing %s failed, because this item is already shared with user %s" : "No s'ha pogut compartir %s, perquè l'element ja està compartit amb l'usuari %s",
- "Sharing %s failed, because the group %s does not exist" : "No s'ha pogut compartir %s, perquè el grup %s no existeix",
- "Sharing %s failed, because %s is not a member of the group %s" : "No s'ha pogut compartir %s, perquè %s no és membre del grup %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
- "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
- "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor és inaccessible actualment.",
- "Share type %s is not valid for %s" : "La compartició tipus %s no és vàlida per %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
- "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
- "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "No s'ha pogut compartir %s perquè els permisos excedeixen els permesos per a %s",
- "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "No s'ha pogut compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font",
- "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau",
- "%s shared »%s« with you" : "%s us ha compartit »%s«",
- "%s shared »%s« with you." : "%s us ha compartit »%s«.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L’aplicació \"%s\" no es pot instal·lar perquè no es compleixen les següents dependències: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "L'ID \"%s\" ja es fa servir pel proveïdor de la federació del núvol \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no existeix",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no és membre de cap grup dels que %3$s n'és membre",
"Sharing %1$s failed, because this item is already shared with %2$s" : "No s'ha pogut compartir %1$s, perquè aquest element ja està compartit amb %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "No s'ha pogut compartir %1$s, perquè l'element ja està compartit amb l'usuari %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè el grup %2$s no existeix",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "No s'ha pogut compartir %1$s, perquè %2$s no és membre del grup %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
+ "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
+ "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La compartició de %1$s ha fallat, no es pot trobar %2$s, potser el servidor és inaccessible actualment.",
"Share type %1$s is not valid for %2$s" : "La compartició tipus %1$s no és vàlida per %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
+ "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
+ "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "No s'ha pogut compartir %1$s perquè els permisos excedeixen els permesos per a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font"
+ "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font",
+ "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
index 1db9b09ea53..5643bb6f8e9 100644
--- a/lib/l10n/ca.json
+++ b/lib/l10n/ca.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Error de connexió d’emmagatzematge. %s",
"Storage is temporarily not available" : "Emmagatzematge temporalment no disponible",
"Storage connection timeout. %s" : "Temps d’espera exhaurit en la connexió d’emmagatzematge. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Es requereix la llibreria %s amb una versió superior a %s - la versió disponible és %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Es requereix la llibreria %s amb una versió inferior a %s - la versió disponible és %s.",
"Create" : "Crea",
"Change" : "Canvia",
"Delete" : "Suprimeix",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "No s'ha pogut compartir %s perquè l'aplicació de fons no permet comparticions del tipus %i",
"Sharing %s failed, because the file does not exist" : "No s'ha pogut compartir %s, perquè el fitxer no existeix",
"Sharing %s failed, because you can not share with yourself" : "No s'ha pogut compartir %s, perquè no us podeu auto-compartir.",
- "Sharing %s failed, because the user %s does not exist" : "No s'ha pogut compartir %s, perquè l'usuari %s no existeix",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "No s'ha pogut compartir %s, perquè l'usuari %s no és membre de cap grup dels que %s n'és membre",
- "Sharing %s failed, because this item is already shared with %s" : "No s'ha pogut compartir %s, perquè l'element ja està compartit amb %s",
- "Sharing %s failed, because this item is already shared with user %s" : "No s'ha pogut compartir %s, perquè l'element ja està compartit amb l'usuari %s",
- "Sharing %s failed, because the group %s does not exist" : "No s'ha pogut compartir %s, perquè el grup %s no existeix",
- "Sharing %s failed, because %s is not a member of the group %s" : "No s'ha pogut compartir %s, perquè %s no és membre del grup %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
- "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
- "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor és inaccessible actualment.",
- "Share type %s is not valid for %s" : "La compartició tipus %s no és vàlida per %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
- "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
- "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "No s'ha pogut compartir %s perquè els permisos excedeixen els permesos per a %s",
- "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "No s'ha pogut compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font",
- "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau",
- "%s shared »%s« with you" : "%s us ha compartit »%s«",
- "%s shared »%s« with you." : "%s us ha compartit »%s«.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L’aplicació \"%s\" no es pot instal·lar perquè no es compleixen les següents dependències: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "L'ID \"%s\" ja es fa servir pel proveïdor de la federació del núvol \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no existeix",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no és membre de cap grup dels que %3$s n'és membre",
"Sharing %1$s failed, because this item is already shared with %2$s" : "No s'ha pogut compartir %1$s, perquè aquest element ja està compartit amb %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "No s'ha pogut compartir %1$s, perquè l'element ja està compartit amb l'usuari %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè el grup %2$s no existeix",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "No s'ha pogut compartir %1$s, perquè %2$s no és membre del grup %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
+ "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
+ "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La compartició de %1$s ha fallat, no es pot trobar %2$s, potser el servidor és inaccessible actualment.",
"Share type %1$s is not valid for %2$s" : "La compartició tipus %1$s no és vàlida per %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
+ "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
+ "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "No s'ha pogut compartir %1$s perquè els permisos excedeixen els permesos per a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font"
+ "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font",
+ "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 87ede49c9c4..7493f63e6f2 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -7,7 +7,7 @@ OC.L10N.register(
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true.",
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true. Viz %s",
- "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly řádně nahrazeny. Ověřte, že je to verze kompatibilní se serverem.",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly nahrazeny řádně. Ověřte, že se jedná o verzi, která je kompatibilní se serverem.",
"Sample configuration detected" : "Bylo zjištěno setrvání u předváděcího nastavení",
"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" : "Pravděpodobně byla zkopírována nastavení ze vzorových souborů. Toto není podporováno a může poškodit vaši instalaci. Před prováděním změn v souboru config.php si přečtěte dokumentaci",
"%1$s and %2$s" : "%1$s a %2$s",
@@ -18,7 +18,7 @@ OC.L10N.register(
"Enterprise bundle" : "Sada pro organizace",
"Groupware bundle" : "Sada pro podporu spolupráce",
"Social sharing bundle" : "Balíček sociálního sdílení",
- "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.",
+ "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo novější.",
"PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.",
"%sbit or higher PHP required." : "Je vyžadováno PHP %sbit nebo vyšší.",
"Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
@@ -27,16 +27,26 @@ OC.L10N.register(
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
"Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
- "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo vyšší.",
- "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo nižší.",
- "Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či dílčím správcem",
+ "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.",
+ "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.",
+ "Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či správcem pro dílčí oblast",
"Logged in user must be an admin" : "Je třeba, aby přihlášený uživatel byl správce",
+ "Wiping of device %s has started" : "Vymazávání zařízení %s zahájeno",
+ "Wiping of device »%s« has started" : "Vymazávání zařízení „%s“ zahájeno",
+ "»%s« started remote wipe" : "„%s“ zahájilo vymazávání na dálku",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Přístroj či aplikace »%s« spustila proces vzdáleného vymazání. Obdržíte další e-mail poté co bude proces ukončen",
+ "Wiping of device %s has finished" : "Vymazávání zařízení %s dokončeno",
+ "Wiping of device »%s« has finished" : "Vymazávání zařízení „%s“ dokončeno",
+ "»%s« finished remote wipe" : "„%s“ dokončilo vymazání na dálku",
+ "Device or application »%s« has finished the remote wipe process." : "Přístroj či aplikace „%s“ dokončila proces vymazání na dálku.",
"Remote wipe started" : "Vymazání na dálku zahájeno",
+ "A remote wipe was started on device %s" : "Na zařízení %s bylo spuštěno vymazání na dálku",
"Remote wipe finished" : "Vymazání na dálku dokončeno",
+ "The remote wipe on %s has finished" : "Vymazání %s na dálku dokončeno",
"Authentication" : "Ověření",
"Unknown filetype" : "Neznámý typ souboru",
- "Invalid image" : "Chybný obrázek",
- "Avatar image is not square" : "Avatar není čtvercový",
+ "Invalid image" : "Neplatný obrázek",
+ "Avatar image is not square" : "Obrázek s avatarem není čtvercový",
"today" : "dnes",
"tomorrow" : "zítra",
"yesterday" : "včera",
@@ -56,7 +66,7 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami","před %n minutami"],
"in a few seconds" : "během několika sekund",
"seconds ago" : "před pár sekundami",
- "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 v nastavení aplikací, nebo kontaktujte vašeho administrátora.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s identifikátorem: %s neexistuje. Povolte ho v nastavení aplikací, nebo se obraťte na správce.",
"File name is a reserved word" : "Název souboru je rezervované slovo",
"File name contains at least one invalid character" : "Název souboru obsahuje nejméně jeden neplatný znak",
"File name is too long" : "Název souboru je příliš dlouhý",
@@ -65,7 +75,7 @@ OC.L10N.register(
"App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikace „%s“ nemůže být nainstalována protože soubor appinfo nelze přečíst.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikaci „%s“ nelze nainstalovat, protože není kompatibilní s touto verzí serveru.",
"__language_name__" : "čeština",
- "This is an automatically sent email, please do not reply." : "Toto je automaticky odesílaný email, neodpovídejte na něj.",
+ "This is an automatically sent email, please do not reply." : "Toto je automaticky odesílaný e-mail, neodpovídejte na něj.",
"Help" : "Nápověda",
"Apps" : "Aplikace",
"Settings" : "Nastavení",
@@ -85,23 +95,23 @@ OC.L10N.register(
"%s enter the database name." : "Zadejte název databáze pro %s databáze.",
"%s you may not use dots in the database name" : "V názvu databáze %s není možné používat tečky.",
"Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno",
- "Oracle username and/or password not valid" : "Uživatelské jméno nebo heslo do Oracle není platné",
- "PostgreSQL username and/or password not valid" : "Uživatelské jméno nebo heslo do PostgreSQL není platné",
+ "Oracle username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do Oracle",
+ "PostgreSQL username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do PostgreSQL",
"You need to enter details of an existing account." : "Je třeba zadat podrobnosti existujícího účtu.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
"For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.",
"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." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.",
- "Set an admin username." : "Zadejte uživatelské jméno správce.",
+ "Set an admin username." : "Nastavte uživatelské jméno správce.",
"Set an admin password." : "Zadejte heslo správce.",
"Can't create or write into the data directory %s" : "Nedaří se vytvořit nebo zapisovat do datového adresáře %s",
"Invalid Federated Cloud ID" : "Neplatné sdružené cloud ID",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend",
"Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno",
"Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat",
- "»%s« added a note to a file shared with you" : "„%s“ přidal(a) poznámku k souboru, který je s vámi sdílený",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s sdílí „%2$s“ a dodává:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s sdílí „%2$s“ a dodává",
+ "»%s« added a note to a file shared with you" : "„%s“ dodává poznámku k nasdílenému souboru ",
"Open »%s«" : "Otevřít „%s“",
"%1$s via %2$s" : "%1$s prostřednictvím %2$s",
"You are not allowed to share %s" : "Nemáte povoleno sdílet %s",
@@ -109,61 +119,61 @@ OC.L10N.register(
"Files can’t be shared with delete permissions" : "Soubory nelze sdílet s oprávněními k odstranění",
"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 skončení platnosti 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",
+ "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum skončení platnosti více než %s dní v budoucnu",
"%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
- "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
+ "Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
- "Sunday" : "Neděle",
- "Monday" : "Pondělí",
- "Tuesday" : "Úterý",
- "Wednesday" : "Středa",
- "Thursday" : "Čtvrtek",
- "Friday" : "Pátek",
- "Saturday" : "Sobota",
- "Sun." : "Ne",
- "Mon." : "Po",
- "Tue." : "Út",
- "Wed." : "St",
- "Thu." : "Čt",
- "Fri." : "Pá",
- "Sat." : "So",
- "Su" : "Ne",
- "Mo" : "Po",
- "Tu" : "Út",
- "We" : "St",
- "Th" : "Čt",
- "Fr" : "Pá",
- "Sa" : "So",
- "January" : "Leden",
- "February" : "Únor",
- "March" : "Březen",
- "April" : "Duben",
- "May" : "Květen",
- "June" : "Červen",
- "July" : "Červenec",
- "August" : "Srpen",
- "September" : "Září",
- "October" : "Říjen",
- "November" : "Listopad",
- "December" : "Prosinec",
- "Jan." : "leden",
- "Feb." : "únor",
- "Mar." : "březen",
- "Apr." : "duben",
- "May." : "květen",
- "Jun." : "červen",
- "Jul." : "červenec",
- "Aug." : "srpen",
- "Sep." : "září",
- "Oct." : "říjen",
- "Nov." : "listopad",
- "Dec." : "prosinec",
+ "Sunday" : "neděle",
+ "Monday" : "pondělí",
+ "Tuesday" : "úterý",
+ "Wednesday" : "středa",
+ "Thursday" : "čtvrtek",
+ "Friday" : "pátek",
+ "Saturday" : "sobota",
+ "Sun." : "ne",
+ "Mon." : "po",
+ "Tue." : "út",
+ "Wed." : "st",
+ "Thu." : "čt",
+ "Fri." : "pá",
+ "Sat." : "so",
+ "Su" : "ne",
+ "Mo" : "po",
+ "Tu" : "út",
+ "We" : "st",
+ "Th" : "čt",
+ "Fr" : "pá",
+ "Sa" : "so",
+ "January" : "leden",
+ "February" : "únor",
+ "March" : "březen",
+ "April" : "duben",
+ "May" : "květen",
+ "June" : "červen",
+ "July" : "červenec",
+ "August" : "srpen",
+ "September" : "září",
+ "October" : "říjen",
+ "November" : "listopad",
+ "December" : "prosinec",
+ "Jan." : "led.",
+ "Feb." : "úno.",
+ "Mar." : "bře.",
+ "Apr." : "dub.",
+ "May." : "kvě.",
+ "Jun." : "čvn.",
+ "Jul." : "čvc.",
+ "Aug." : "srp.",
+ "Sep." : "zář.",
+ "Oct." : "říj.",
+ "Nov." : "list.",
+ "Dec." : "pro.",
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Pouze následující znaky jsou povoleny pro uživatelské jméno: „a-z“, „A-Z“, „0-9“, a „_.@-'“",
"A valid username must be provided" : "Je třeba zadat platné uživatelské jméno",
"Username contains whitespace at the beginning or at the end" : "Uživatelské jméno obsahuje mezery na svém začátku nebo konci",
- "Username must not consist of dots only" : "Uživatelské jméno se nemůže skládat ze samých teček",
+ "Username must not consist of dots only" : "Uživatelské jméno se nemůže skládat pouze ze samých teček",
"A valid password must be provided" : "Je třeba zadat platné heslo",
"The username is already being used" : "Uživatelské jméno už je využíváno",
"Could not create user" : "Nepodařilo se vytvořit uživatele",
@@ -180,7 +190,7 @@ OC.L10N.register(
"Cannot write into \"config\" directory" : "Nelze zapisovat do adresáře „config“",
"Cannot write into \"apps\" directory" : "Nedaří se zapisovat do adresáře „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" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s",
- "Cannot create \"data\" directory" : "Nelze vytvořit datový adresář",
+ "Cannot create \"data\" directory" : "Nedaří se vytvořit adresář „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnění lze obvykle napravit umožněním zápisu do kořene webu pro účet, pod kterým je provozován webový server. Viz %s.",
"Setting locale to %s failed" : "Nastavení jazyka na %s se nezdařilo",
@@ -200,10 +210,10 @@ OC.L10N.register(
"PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL verze 9 a novější",
"Please upgrade your database version" : "Aktualizujte verzi své databáze",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Změňte práva na 0770, aby obsah adresáře nemohl být vypisován ostatními uživateli.",
- "Your data directory is readable by other users" : "Váš datový adresář mohou číst ostatní uživatelé",
- "Your data directory must be an absolute path" : "Je třeba, aby váš datový adresář byl zadán jako úplný popis umístění",
+ "Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
+ "Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš datový adresář není platný",
+ "Your data directory is invalid" : "Váš adresář data není plantý",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“.",
"Action \"%s\" not supported or implemented." : "Akce „%s“ není podporována nebo implementována.",
"Authentication failed, wrong token or provider ID given" : "Ověření se nezdařilo, předán chybný token nebo identifikátor poskytovatele",
@@ -216,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Chyba připojení úložiště. %s",
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage connection timeout. %s" : "Překročen časový limit připojování k úložišti. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Je vyžadována knihovna %s ve verzi vyšší než %s - dostupná verze %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Je vyžadována knihovna %s ve verzi nižší než %s - dostupná verze %s.",
"Create" : "Vytvořit",
"Change" : "Změnit",
"Delete" : "Smazat",
@@ -229,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sdílení %s se nezdařilo, podpůrná vrstva nepodporuje typ sdílení %i",
"Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
"Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
- "Sharing %s failed, because the user %s does not exist" : "Sdílení položky %s se nezdařilo, protože uživatel %s neexistuje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sdílení položky %s se nezdařilo, protože uživatel %s není členem žádné skupiny společné s uživatelem %s",
- "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s se nezdařilo, protože položka už je s uživatelem %s sdílena",
- "Sharing %s failed, because this item is already shared with user %s" : "Sdílení položky %s se nezdařilo, protože ta je už s uživatelem %s sdílena",
- "Sharing %s failed, because the group %s does not exist" : "Sdílení položky %s se nezdařilo, protože skupina %s neexistuje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sdílení položky %s se nezdařilo, protože uživatel %s není členem skupiny %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
- "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
- "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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sdílení %s se nezdařilo, %s se nepodařilo nalézt, server pravděpodobně právě není dostupný.",
- "Share type %s is not valid for %s" : "Sdílení typu %s není korektní pro %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
- "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
- "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sdílení položky %s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %s povolena.",
- "Sharing %s failed, because resharing is not allowed" : "Sdílení položky %s se nezdařilo, protože znovu-sdílení není povoleno",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sdílení položky %s selhalo, protože úložiště sdílení %s nenalezla zdroj",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti",
- "%s shared »%s« with you" : "%s s vámi sdílí „%s“",
- "%s shared »%s« with you." : "%s s vámi sdílel(a) „%s“",
- "%s via %s" : "%s pomocí %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikaci „%s“ nelze nainstalovat, protože nejsou splněny následující závislosti: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Identifikátor „%s“ je už použitý poskytovatelem federování cloudu „%s“",
"Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
"Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
+ "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
+ "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",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
"Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
+ "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
+ "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj"
+ "Sharing %s failed, because resharing is not allowed" : "%s nejde sdílet, protože vám bylo nasdíleno s tím, že není umožněno sdílet dále dalším",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index f5dfaef9c3f..322b3bc62f2 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -5,7 +5,7 @@
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true.",
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true. Viz %s",
- "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly řádně nahrazeny. Ověřte, že je to verze kompatibilní se serverem.",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly nahrazeny řádně. Ověřte, že se jedná o verzi, která je kompatibilní se serverem.",
"Sample configuration detected" : "Bylo zjištěno setrvání u předváděcího nastavení",
"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" : "Pravděpodobně byla zkopírována nastavení ze vzorových souborů. Toto není podporováno a může poškodit vaši instalaci. Před prováděním změn v souboru config.php si přečtěte dokumentaci",
"%1$s and %2$s" : "%1$s a %2$s",
@@ -16,7 +16,7 @@
"Enterprise bundle" : "Sada pro organizace",
"Groupware bundle" : "Sada pro podporu spolupráce",
"Social sharing bundle" : "Balíček sociálního sdílení",
- "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.",
+ "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo novější.",
"PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.",
"%sbit or higher PHP required." : "Je vyžadováno PHP %sbit nebo vyšší.",
"Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
@@ -25,16 +25,26 @@
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
"Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
- "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo vyšší.",
- "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo nižší.",
- "Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či dílčím správcem",
+ "Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.",
+ "Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.",
+ "Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či správcem pro dílčí oblast",
"Logged in user must be an admin" : "Je třeba, aby přihlášený uživatel byl správce",
+ "Wiping of device %s has started" : "Vymazávání zařízení %s zahájeno",
+ "Wiping of device »%s« has started" : "Vymazávání zařízení „%s“ zahájeno",
+ "»%s« started remote wipe" : "„%s“ zahájilo vymazávání na dálku",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Přístroj či aplikace »%s« spustila proces vzdáleného vymazání. Obdržíte další e-mail poté co bude proces ukončen",
+ "Wiping of device %s has finished" : "Vymazávání zařízení %s dokončeno",
+ "Wiping of device »%s« has finished" : "Vymazávání zařízení „%s“ dokončeno",
+ "»%s« finished remote wipe" : "„%s“ dokončilo vymazání na dálku",
+ "Device or application »%s« has finished the remote wipe process." : "Přístroj či aplikace „%s“ dokončila proces vymazání na dálku.",
"Remote wipe started" : "Vymazání na dálku zahájeno",
+ "A remote wipe was started on device %s" : "Na zařízení %s bylo spuštěno vymazání na dálku",
"Remote wipe finished" : "Vymazání na dálku dokončeno",
+ "The remote wipe on %s has finished" : "Vymazání %s na dálku dokončeno",
"Authentication" : "Ověření",
"Unknown filetype" : "Neznámý typ souboru",
- "Invalid image" : "Chybný obrázek",
- "Avatar image is not square" : "Avatar není čtvercový",
+ "Invalid image" : "Neplatný obrázek",
+ "Avatar image is not square" : "Obrázek s avatarem není čtvercový",
"today" : "dnes",
"tomorrow" : "zítra",
"yesterday" : "včera",
@@ -54,7 +64,7 @@
"_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami","před %n minutami"],
"in a few seconds" : "během několika sekund",
"seconds ago" : "před pár sekundami",
- "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 v nastavení aplikací, nebo kontaktujte vašeho administrátora.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s identifikátorem: %s neexistuje. Povolte ho v nastavení aplikací, nebo se obraťte na správce.",
"File name is a reserved word" : "Název souboru je rezervované slovo",
"File name contains at least one invalid character" : "Název souboru obsahuje nejméně jeden neplatný znak",
"File name is too long" : "Název souboru je příliš dlouhý",
@@ -63,7 +73,7 @@
"App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikace „%s“ nemůže být nainstalována protože soubor appinfo nelze přečíst.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikaci „%s“ nelze nainstalovat, protože není kompatibilní s touto verzí serveru.",
"__language_name__" : "čeština",
- "This is an automatically sent email, please do not reply." : "Toto je automaticky odesílaný email, neodpovídejte na něj.",
+ "This is an automatically sent email, please do not reply." : "Toto je automaticky odesílaný e-mail, neodpovídejte na něj.",
"Help" : "Nápověda",
"Apps" : "Aplikace",
"Settings" : "Nastavení",
@@ -83,23 +93,23 @@
"%s enter the database name." : "Zadejte název databáze pro %s databáze.",
"%s you may not use dots in the database name" : "V názvu databáze %s není možné používat tečky.",
"Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno",
- "Oracle username and/or password not valid" : "Uživatelské jméno nebo heslo do Oracle není platné",
- "PostgreSQL username and/or password not valid" : "Uživatelské jméno nebo heslo do PostgreSQL není platné",
+ "Oracle username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do Oracle",
+ "PostgreSQL username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do PostgreSQL",
"You need to enter details of an existing account." : "Je třeba zadat podrobnosti existujícího účtu.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
"For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.",
"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." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.",
- "Set an admin username." : "Zadejte uživatelské jméno správce.",
+ "Set an admin username." : "Nastavte uživatelské jméno správce.",
"Set an admin password." : "Zadejte heslo správce.",
"Can't create or write into the data directory %s" : "Nedaří se vytvořit nebo zapisovat do datového adresáře %s",
"Invalid Federated Cloud ID" : "Neplatné sdružené cloud ID",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend",
"Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno",
"Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat",
- "»%s« added a note to a file shared with you" : "„%s“ přidal(a) poznámku k souboru, který je s vámi sdílený",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s sdílí „%2$s“ a dodává:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s sdílí „%2$s“ a dodává",
+ "»%s« added a note to a file shared with you" : "„%s“ dodává poznámku k nasdílenému souboru ",
"Open »%s«" : "Otevřít „%s“",
"%1$s via %2$s" : "%1$s prostřednictvím %2$s",
"You are not allowed to share %s" : "Nemáte povoleno sdílet %s",
@@ -107,61 +117,61 @@
"Files can’t be shared with delete permissions" : "Soubory nelze sdílet s oprávněními k odstranění",
"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 skončení platnosti 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",
+ "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum skončení platnosti více než %s dní v budoucnu",
"%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
- "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
+ "Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
- "Sunday" : "Neděle",
- "Monday" : "Pondělí",
- "Tuesday" : "Úterý",
- "Wednesday" : "Středa",
- "Thursday" : "Čtvrtek",
- "Friday" : "Pátek",
- "Saturday" : "Sobota",
- "Sun." : "Ne",
- "Mon." : "Po",
- "Tue." : "Út",
- "Wed." : "St",
- "Thu." : "Čt",
- "Fri." : "Pá",
- "Sat." : "So",
- "Su" : "Ne",
- "Mo" : "Po",
- "Tu" : "Út",
- "We" : "St",
- "Th" : "Čt",
- "Fr" : "Pá",
- "Sa" : "So",
- "January" : "Leden",
- "February" : "Únor",
- "March" : "Březen",
- "April" : "Duben",
- "May" : "Květen",
- "June" : "Červen",
- "July" : "Červenec",
- "August" : "Srpen",
- "September" : "Září",
- "October" : "Říjen",
- "November" : "Listopad",
- "December" : "Prosinec",
- "Jan." : "leden",
- "Feb." : "únor",
- "Mar." : "březen",
- "Apr." : "duben",
- "May." : "květen",
- "Jun." : "červen",
- "Jul." : "červenec",
- "Aug." : "srpen",
- "Sep." : "září",
- "Oct." : "říjen",
- "Nov." : "listopad",
- "Dec." : "prosinec",
+ "Sunday" : "neděle",
+ "Monday" : "pondělí",
+ "Tuesday" : "úterý",
+ "Wednesday" : "středa",
+ "Thursday" : "čtvrtek",
+ "Friday" : "pátek",
+ "Saturday" : "sobota",
+ "Sun." : "ne",
+ "Mon." : "po",
+ "Tue." : "út",
+ "Wed." : "st",
+ "Thu." : "čt",
+ "Fri." : "pá",
+ "Sat." : "so",
+ "Su" : "ne",
+ "Mo" : "po",
+ "Tu" : "út",
+ "We" : "st",
+ "Th" : "čt",
+ "Fr" : "pá",
+ "Sa" : "so",
+ "January" : "leden",
+ "February" : "únor",
+ "March" : "březen",
+ "April" : "duben",
+ "May" : "květen",
+ "June" : "červen",
+ "July" : "červenec",
+ "August" : "srpen",
+ "September" : "září",
+ "October" : "říjen",
+ "November" : "listopad",
+ "December" : "prosinec",
+ "Jan." : "led.",
+ "Feb." : "úno.",
+ "Mar." : "bře.",
+ "Apr." : "dub.",
+ "May." : "kvě.",
+ "Jun." : "čvn.",
+ "Jul." : "čvc.",
+ "Aug." : "srp.",
+ "Sep." : "zář.",
+ "Oct." : "říj.",
+ "Nov." : "list.",
+ "Dec." : "pro.",
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Pouze následující znaky jsou povoleny pro uživatelské jméno: „a-z“, „A-Z“, „0-9“, a „_.@-'“",
"A valid username must be provided" : "Je třeba zadat platné uživatelské jméno",
"Username contains whitespace at the beginning or at the end" : "Uživatelské jméno obsahuje mezery na svém začátku nebo konci",
- "Username must not consist of dots only" : "Uživatelské jméno se nemůže skládat ze samých teček",
+ "Username must not consist of dots only" : "Uživatelské jméno se nemůže skládat pouze ze samých teček",
"A valid password must be provided" : "Je třeba zadat platné heslo",
"The username is already being used" : "Uživatelské jméno už je využíváno",
"Could not create user" : "Nepodařilo se vytvořit uživatele",
@@ -178,7 +188,7 @@
"Cannot write into \"config\" directory" : "Nelze zapisovat do adresáře „config“",
"Cannot write into \"apps\" directory" : "Nedaří se zapisovat do adresáře „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" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s",
- "Cannot create \"data\" directory" : "Nelze vytvořit datový adresář",
+ "Cannot create \"data\" directory" : "Nedaří se vytvořit adresář „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnění lze obvykle napravit umožněním zápisu do kořene webu pro účet, pod kterým je provozován webový server. Viz %s.",
"Setting locale to %s failed" : "Nastavení jazyka na %s se nezdařilo",
@@ -198,10 +208,10 @@
"PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL verze 9 a novější",
"Please upgrade your database version" : "Aktualizujte verzi své databáze",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Změňte práva na 0770, aby obsah adresáře nemohl být vypisován ostatními uživateli.",
- "Your data directory is readable by other users" : "Váš datový adresář mohou číst ostatní uživatelé",
- "Your data directory must be an absolute path" : "Je třeba, aby váš datový adresář byl zadán jako úplný popis umístění",
+ "Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
+ "Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš datový adresář není platný",
+ "Your data directory is invalid" : "Váš adresář data není plantý",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Ověřte, že v kořeni datového adresáře je soubor s názvem „.ocdata“.",
"Action \"%s\" not supported or implemented." : "Akce „%s“ není podporována nebo implementována.",
"Authentication failed, wrong token or provider ID given" : "Ověření se nezdařilo, předán chybný token nebo identifikátor poskytovatele",
@@ -214,8 +224,6 @@
"Storage connection error. %s" : "Chyba připojení úložiště. %s",
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage connection timeout. %s" : "Překročen časový limit připojování k úložišti. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Je vyžadována knihovna %s ve verzi vyšší než %s - dostupná verze %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Je vyžadována knihovna %s ve verzi nižší než %s - dostupná verze %s.",
"Create" : "Vytvořit",
"Change" : "Změnit",
"Delete" : "Smazat",
@@ -227,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sdílení %s se nezdařilo, podpůrná vrstva nepodporuje typ sdílení %i",
"Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
"Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
- "Sharing %s failed, because the user %s does not exist" : "Sdílení položky %s se nezdařilo, protože uživatel %s neexistuje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sdílení položky %s se nezdařilo, protože uživatel %s není členem žádné skupiny společné s uživatelem %s",
- "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s se nezdařilo, protože položka už je s uživatelem %s sdílena",
- "Sharing %s failed, because this item is already shared with user %s" : "Sdílení položky %s se nezdařilo, protože ta je už s uživatelem %s sdílena",
- "Sharing %s failed, because the group %s does not exist" : "Sdílení položky %s se nezdařilo, protože skupina %s neexistuje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sdílení položky %s se nezdařilo, protože uživatel %s není členem skupiny %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
- "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
- "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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sdílení %s se nezdařilo, %s se nepodařilo nalézt, server pravděpodobně právě není dostupný.",
- "Share type %s is not valid for %s" : "Sdílení typu %s není korektní pro %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
- "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
- "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sdílení položky %s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %s povolena.",
- "Sharing %s failed, because resharing is not allowed" : "Sdílení položky %s se nezdařilo, protože znovu-sdílení není povoleno",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sdílení položky %s selhalo, protože úložiště sdílení %s nenalezla zdroj",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti",
- "%s shared »%s« with you" : "%s s vámi sdílí „%s“",
- "%s shared »%s« with you." : "%s s vámi sdílel(a) „%s“",
- "%s via %s" : "%s pomocí %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikaci „%s“ nelze nainstalovat, protože nejsou splněny následující závislosti: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Identifikátor „%s“ je už použitý poskytovatelem federování cloudu „%s“",
"Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
"Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
+ "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
+ "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",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
"Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
+ "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
+ "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj"
+ "Sharing %s failed, because resharing is not allowed" : "%s nejde sdílet, protože vám bylo nasdíleno s tím, že není umožněno sdílet dále dalším",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index deed418cad9..316afca4fbe 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -162,8 +162,6 @@ OC.L10N.register(
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Tilpas venligst rettigheder til 0770, så mappen ikke fremvises for andre brugere.",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
"Could not obtain lock type %d on \"%s\"." : "Kunne ikke opnå en låsetype %d på \"%s\".",
- "Library %s with a version higher than %s is required - available version %s." : "Der kræves en version af biblioteket %s, der er højere end %s - tilgængelig version er %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Der kræves en version af biblioteket %s, der er lavere end %s - tilgængelig version er %s.",
"Create" : "Opret",
"Delete" : "Slet",
"Share" : "Del",
@@ -174,26 +172,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i",
"Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer",
"Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv",
- "Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af",
- "Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deling af %s mislykkedes, fordi dette element allerede er delt med brugeren %s",
- "Sharing %s failed, because the group %s does not exist" : "Der skete en fejl ved deling af %s, gruppen %s eksistere ikke",
- "Sharing %s failed, because %s is not a member of the group %s" : "Der skete en fejl ved deling af %s, fordi %s ikke er medlem af gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
"Sharing %s failed, because sharing with links is not allowed" : "Der skete en fejl ved deling af %s, det er ikke tilladt at dele links",
"Not allowed to create a federated share with the same user" : "Det er ikke tilladt at danne et datafællesskab med samme bruger",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling af %s mislykkedes - kunne ikke finde %s. Måske er serveren ikke tilgængelig i øjeblikket.",
- "Share type %s is not valid for %s" : "Delingstypen %s er ikke gyldig for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret",
"Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling af %s mislykkedes, fordi tilladelserne overskred de tillaldelser som %s var tildelt",
"Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling af %s mislykkedes, fordi back-enden ikke kunne finde kilden til %s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen",
- "%s shared »%s« with you" : "%s delte »%s« med dig",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App'en \"%s\" kan ikke installeres, da følgende krav ikke er opfyldt: %s "
+ "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index 1595d108343..78e9e011e5c 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -160,8 +160,6 @@
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Tilpas venligst rettigheder til 0770, så mappen ikke fremvises for andre brugere.",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
"Could not obtain lock type %d on \"%s\"." : "Kunne ikke opnå en låsetype %d på \"%s\".",
- "Library %s with a version higher than %s is required - available version %s." : "Der kræves en version af biblioteket %s, der er højere end %s - tilgængelig version er %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Der kræves en version af biblioteket %s, der er lavere end %s - tilgængelig version er %s.",
"Create" : "Opret",
"Delete" : "Slet",
"Share" : "Del",
@@ -172,26 +170,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i",
"Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer",
"Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv",
- "Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af",
- "Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deling af %s mislykkedes, fordi dette element allerede er delt med brugeren %s",
- "Sharing %s failed, because the group %s does not exist" : "Der skete en fejl ved deling af %s, gruppen %s eksistere ikke",
- "Sharing %s failed, because %s is not a member of the group %s" : "Der skete en fejl ved deling af %s, fordi %s ikke er medlem af gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
"Sharing %s failed, because sharing with links is not allowed" : "Der skete en fejl ved deling af %s, det er ikke tilladt at dele links",
"Not allowed to create a federated share with the same user" : "Det er ikke tilladt at danne et datafællesskab med samme bruger",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling af %s mislykkedes - kunne ikke finde %s. Måske er serveren ikke tilgængelig i øjeblikket.",
- "Share type %s is not valid for %s" : "Delingstypen %s er ikke gyldig for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret",
"Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling af %s mislykkedes, fordi tilladelserne overskred de tillaldelser som %s var tildelt",
"Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling af %s mislykkedes, fordi back-enden ikke kunne finde kilden til %s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen",
- "%s shared »%s« with you" : "%s delte »%s« med dig",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App'en \"%s\" kan ikke installeres, da følgende krav ikke er opfyldt: %s "
+ "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index c6f4b599983..d6b8c1548d1 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -4,9 +4,9 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
"See %s" : "Siehe %s",
- "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf True.",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true.",
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
- "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf True. Siehe %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$swurden nicht korrekt ersetzt. Stelle sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
"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" : "Es wurde festgestellt, dass die Beispielkonfiguration kopiert wurde. Dies kann Deine Installation zerstören und wird nicht unterstützt. Bitte die Dokumentation lesen, bevor Änderungen an der config.php vorgenommen werden.",
@@ -119,7 +119,7 @@ OC.L10N.register(
"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",
"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",
+ "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in der Zukunft liegen",
"%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
@@ -216,8 +216,8 @@ OC.L10N.register(
"Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert.",
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
- "Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
- "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder falsche Provider-ID wurde übertragen.",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter, um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Die Bibliothek %s wird in einer neueren Version als %s benötigt - verfügbare Version ist %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Die Bibliothek %s wird in einer früheren Version als %s benötigt - verfügbare Version ist %s.",
"Create" : "Anlegen",
"Change" : "Ändern",
"Delete" : "Löschen",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da Du nichts mit Dir selbst teilen kannst",
- "Sharing %s failed, because the user %s does not exist" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s nicht existiert",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s kein Gruppenmitglied einer der Gruppen von %s ist",
- "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit %s geteilt wird",
- "Sharing %s failed, because this item is already shared with user %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit dem Benutzer %s geteilt wird",
- "Sharing %s failed, because the group %s does not exist" : "Freigabe von %s fehlgeschlagen, da die Gruppe %s nicht existiert",
- "Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Freigabe von %s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Freigabe von %s fehlgeschlagen, da das Freigabe-Backend für %s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
- "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wird bereits von Cloud-Federation-Provider \"%s\" verwendet",
"Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
"Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
+ "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
+ "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte"
+ "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index 73527e92a6e..567fe47ae3f 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -2,9 +2,9 @@
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
"See %s" : "Siehe %s",
- "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf True.",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true.",
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
- "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf True. Siehe %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$swurden nicht korrekt ersetzt. Stelle sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
"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" : "Es wurde festgestellt, dass die Beispielkonfiguration kopiert wurde. Dies kann Deine Installation zerstören und wird nicht unterstützt. Bitte die Dokumentation lesen, bevor Änderungen an der config.php vorgenommen werden.",
@@ -117,7 +117,7 @@
"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",
"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",
+ "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in der Zukunft liegen",
"%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
@@ -214,8 +214,8 @@
"Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Stelle sicher, dass eine Datei \".ocdata\" im Wurzelverzeichnis des data-Verzeichnisses existiert.",
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
- "Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
- "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder falsche Provider-ID wurde übertragen.",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter, um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Die Bibliothek %s wird in einer neueren Version als %s benötigt - verfügbare Version ist %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Die Bibliothek %s wird in einer früheren Version als %s benötigt - verfügbare Version ist %s.",
"Create" : "Anlegen",
"Change" : "Ändern",
"Delete" : "Löschen",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da Du nichts mit Dir selbst teilen kannst",
- "Sharing %s failed, because the user %s does not exist" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s nicht existiert",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s kein Gruppenmitglied einer der Gruppen von %s ist",
- "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit %s geteilt wird",
- "Sharing %s failed, because this item is already shared with user %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit dem Benutzer %s geteilt wird",
- "Sharing %s failed, because the group %s does not exist" : "Freigabe von %s fehlgeschlagen, da die Gruppe %s nicht existiert",
- "Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Freigabe von %s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Freigabe von %s fehlgeschlagen, da das Freigabe-Backend für %s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt",
- "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wird bereits von Cloud-Federation-Provider \"%s\" verwendet",
"Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
"Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
+ "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
+ "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte"
+ "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index b38bef6fe43..2cc4efe6575 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"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",
"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",
+ "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in der Zukunft liegen",
"%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Die Bibliothek %s wird in einer neueren Version als %s benötigt - verfügbare Version ist %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Die Bibliothek %s wird in einer früheren Version als %s benötigt - verfügbare Version ist %s.",
"Create" : "Erstellen",
"Change" : "Ändern",
"Delete" : "Löschen",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
- "Sharing %s failed, because the user %s does not exist" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s nicht existiert",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s kein Gruppenmitglied einer der Gruppen von %s ist",
- "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit %s geteilt wird",
- "Sharing %s failed, because this item is already shared with user %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit dem Benutzer %s geteilt wird",
- "Sharing %s failed, because the group %s does not exist" : "Freigabe von %s fehlgeschlagen, da die Gruppe %s nicht existiert",
- "Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Freigabe von %s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Freigabe von %s fehlgeschlagen, da das Freigabe-Backend für %s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
- "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wird bereits von Cloud-Federation-Provider \"%s\" verwendet.",
"Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
"Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
+ "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
+ "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte"
+ "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index b2d13f0d2d4..8fef1ff0606 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -117,7 +117,7 @@
"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",
"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",
+ "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in der Zukunft liegen",
"%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Die Bibliothek %s wird in einer neueren Version als %s benötigt - verfügbare Version ist %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Die Bibliothek %s wird in einer früheren Version als %s benötigt - verfügbare Version ist %s.",
"Create" : "Erstellen",
"Change" : "Ändern",
"Delete" : "Löschen",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
- "Sharing %s failed, because the user %s does not exist" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s nicht existiert",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Freigabe von %s fehlgeschlagen, da der Benutzer %s kein Gruppenmitglied einer der Gruppen von %s ist",
- "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit %s geteilt wird",
- "Sharing %s failed, because this item is already shared with user %s" : "Freigabe von %s fehlgeschlagen, da dieses Element schon mit dem Benutzer %s geteilt wird",
- "Sharing %s failed, because the group %s does not exist" : "Freigabe von %s fehlgeschlagen, da die Gruppe %s nicht existiert",
- "Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Freigabe von %s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Freigabe von %s fehlgeschlagen, da das Freigabe-Backend für %s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt",
- "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wird bereits von Cloud-Federation-Provider \"%s\" verwendet.",
"Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
"Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
+ "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
+ "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte"
+ "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index 69f4ec16c4c..91128de1dc6 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -185,8 +185,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
- "Library %s with a version higher than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s νεότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
- "Library %s with a version lower than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s παλαιότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
"Create" : "Δημιουργία",
"Delete" : "Διαγραφή",
"Unlimited" : "Απεριόριστα",
@@ -196,26 +194,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
"Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
"Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
- "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
- "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
- "Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
"Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
"Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
"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 απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
- "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
- "%s via %s" : "%s μέσω %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index 962cb2fc96f..7043264e475 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -183,8 +183,6 @@
"Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
- "Library %s with a version higher than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s νεότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
- "Library %s with a version lower than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s παλαιότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
"Create" : "Δημιουργία",
"Delete" : "Διαγραφή",
"Unlimited" : "Απεριόριστα",
@@ -194,26 +192,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
"Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
"Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
- "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
- "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
- "Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
"Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
"Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
"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 απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
- "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
- "%s via %s" : "%s μέσω %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index ab013de98b1..0e4d05225a7 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -194,8 +194,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Storage connection error. %s",
"Storage is temporarily not available" : "Storage is temporarily not available",
"Storage connection timeout. %s" : "Storage connection timeout. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Library %s with a version higher than %s is required - available version %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Library %s with a version lower than %s is required - available version %s.",
"Create" : "Create",
"Change" : "Change",
"Delete" : "Delete",
@@ -207,27 +205,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sharing %s failed, because the backend does not allow shares from type %i",
"Sharing %s failed, because the file does not exist" : "Sharing %s failed, because the file does not exist",
"Sharing %s failed, because you can not share with yourself" : "Sharing %s failed, because you can not share with yourself",
- "Sharing %s failed, because the user %s does not exist" : "Sharing %s failed, because the user %s does not exist",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of",
- "Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Sharing %s failed, because this item is already shared with user %s",
- "Sharing %s failed, because the group %s does not exist" : "Sharing %s failed, because the group %s does not exist",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sharing %s failed, because %s is not a member of the group %s",
"You need to provide a password to create a public link, only protected links are allowed" : "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" : "Sharing %s failed, because sharing with links is not allowed",
"Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sharing %s failed, could not find %s, maybe the server is currently unreachable.",
- "Share type %s is not valid for %s" : "Share type %s is not valid for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Cannot set expiry date. Shares cannot expire later than %s after they have been shared",
"Cannot set expiration date. Expiration date is in the past" : "Cannot set expiry date. Expiry date is in the past",
"Sharing failed, because the user %s is the original sharer" : "Sharing failed, because the user %s is the original sharer",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sharing %s failed, because the permissions exceed permissions granted to %s",
"Sharing %s failed, because resharing is not allowed" : "Sharing %s failed, because resharing is not allowed",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sharing %s failed, because the sharing backend for %s could not find its source",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache",
- "%s shared »%s« with you" : "%s shared \"%s\" with you",
- "%s shared »%s« with you." : "%s shared »%s« with you.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index 6db2505b1ea..fbc4418a30d 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -192,8 +192,6 @@
"Storage connection error. %s" : "Storage connection error. %s",
"Storage is temporarily not available" : "Storage is temporarily not available",
"Storage connection timeout. %s" : "Storage connection timeout. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Library %s with a version higher than %s is required - available version %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Library %s with a version lower than %s is required - available version %s.",
"Create" : "Create",
"Change" : "Change",
"Delete" : "Delete",
@@ -205,27 +203,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sharing %s failed, because the backend does not allow shares from type %i",
"Sharing %s failed, because the file does not exist" : "Sharing %s failed, because the file does not exist",
"Sharing %s failed, because you can not share with yourself" : "Sharing %s failed, because you can not share with yourself",
- "Sharing %s failed, because the user %s does not exist" : "Sharing %s failed, because the user %s does not exist",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of",
- "Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Sharing %s failed, because this item is already shared with user %s",
- "Sharing %s failed, because the group %s does not exist" : "Sharing %s failed, because the group %s does not exist",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sharing %s failed, because %s is not a member of the group %s",
"You need to provide a password to create a public link, only protected links are allowed" : "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" : "Sharing %s failed, because sharing with links is not allowed",
"Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sharing %s failed, could not find %s, maybe the server is currently unreachable.",
- "Share type %s is not valid for %s" : "Share type %s is not valid for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Cannot set expiry date. Shares cannot expire later than %s after they have been shared",
"Cannot set expiration date. Expiration date is in the past" : "Cannot set expiry date. Expiry date is in the past",
"Sharing failed, because the user %s is the original sharer" : "Sharing failed, because the user %s is the original sharer",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sharing %s failed, because the permissions exceed permissions granted to %s",
"Sharing %s failed, because resharing is not allowed" : "Sharing %s failed, because resharing is not allowed",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sharing %s failed, because the sharing backend for %s could not find its source",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache",
- "%s shared »%s« with you" : "%s shared \"%s\" with you",
- "%s shared »%s« with you." : "%s shared »%s« with you.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/eo.js b/lib/l10n/eo.js
index 299a737a582..4ae17009f00 100644
--- a/lib/l10n/eo.js
+++ b/lib/l10n/eo.js
@@ -226,51 +226,34 @@ OC.L10N.register(
"Storage connection error. %s" : "Konekta eraro al konservejo. %s",
"Storage is temporarily not available" : "Konservejo provizore ne disponeblas",
"Storage connection timeout. %s" : "Konekto al konservejo eltempiĝis. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteko %s kun versio pli ol %s bezoniĝas. Nuna versio estas %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteko %s kun versio malpli ol %s bezoniĝas. Nuna versio estas %s.",
"Create" : "Krei",
"Change" : "Ŝanĝi",
"Delete" : "Forigi",
"Share" : "Kunhavigi",
"Unlimited" : "Senlima",
- "Verifying" : "Kontrolante",
- "Verifying …" : "Kontrolante...",
+ "Verifying" : "Kontrolado",
+ "Verifying …" : "Kontrolado...",
"Verify" : "Kontroli",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Kunhavigo de %s malsukcesis, ĉar la interna servo ne permesas kunhavon de tipo %i",
"Sharing %s failed, because the file does not exist" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne ekzistas",
"Sharing %s failed, because you can not share with yourself" : "Kunhavigo de %s malsukcesis, ĉar vi ne povas kunhavigi kun vi mem",
- "Sharing %s failed, because the user %s does not exist" : "Kunhavigo de %s malsukcesis, ĉar la uzanto %s ne ekzistas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Kunhavigo de %s malsukcesis, ĉar la uzanto %s estas ano de neniu grupo, de kiu %s estas ano",
- "Sharing %s failed, because this item is already shared with %s" : "Kunhavigo de %s malsukcesis, ĉar la ero jam kunhavatas kun %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Kunhavigo de %s malsukcesis, ĉar la ero jam kunhaviĝis kun %s",
- "Sharing %s failed, because the group %s does not exist" : "Kunhavigo de %s malsukcesis, ĉar la grupo %s ne ekzistas",
- "Sharing %s failed, because %s is not a member of the group %s" : "Kunhavigo de %s malsukcesis, ĉar %s ne estas ano de la grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
- "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
- "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kunhavigo de %s malsukcesis, ne eblis trovi %s; eble la servilo estas provizore neatingebla.",
- "Share type %s is not valid for %s" : "Kunhava tipo %s ne validas por %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
- "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
- "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Kunhavigo de %s malsukcesis, ĉar la permesoj transpasas tiujn de %s",
- "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Kunhavigo de %s malsukcesis, ĉar la kunhava interna servo por %s ne povis trovi ĝian fonton",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro",
- "%s shared »%s« with you" : "%s kunhavigis „%s“ kun vi",
- "%s shared »%s« with you." : "%s kunhavigis „%s“ kun vi.",
- "%s via %s" : "%s pere de %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplikaĵo „%s“ ne instaliĝis, ĉar la jenaj dependecoj ne plenumiĝas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Identigilo „%s“ jam uziĝas de federnuba provizanto „%s“",
"Sharing %1$s failed, because the user %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s ne ekzistas",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s estas ano de neniu grupo, de kiu %3$s estas ano",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar tiu elemento jam kunhaviĝas kun %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la ero jam kunhaviĝis kun uzanto %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la grupo %2$s ne ekzistas",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Kunhavigo de %1$s malsukcesis, ĉar %2$s ne estas ano de la grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
+ "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
+ "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Kunhavigo de %1$s malsukcesis, ne eblis trovi %2$s; eble la servilo estas provizore neatingebla.",
"Share type %1$s is not valid for %2$s" : "Kunhava tipo %1$s ne validas por %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
+ "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la permesoj transpasas tiujn de %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton"
+ "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eo.json b/lib/l10n/eo.json
index 13a231e1697..080df7ce0c1 100644
--- a/lib/l10n/eo.json
+++ b/lib/l10n/eo.json
@@ -224,51 +224,34 @@
"Storage connection error. %s" : "Konekta eraro al konservejo. %s",
"Storage is temporarily not available" : "Konservejo provizore ne disponeblas",
"Storage connection timeout. %s" : "Konekto al konservejo eltempiĝis. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteko %s kun versio pli ol %s bezoniĝas. Nuna versio estas %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteko %s kun versio malpli ol %s bezoniĝas. Nuna versio estas %s.",
"Create" : "Krei",
"Change" : "Ŝanĝi",
"Delete" : "Forigi",
"Share" : "Kunhavigi",
"Unlimited" : "Senlima",
- "Verifying" : "Kontrolante",
- "Verifying …" : "Kontrolante...",
+ "Verifying" : "Kontrolado",
+ "Verifying …" : "Kontrolado...",
"Verify" : "Kontroli",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Kunhavigo de %s malsukcesis, ĉar la interna servo ne permesas kunhavon de tipo %i",
"Sharing %s failed, because the file does not exist" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne ekzistas",
"Sharing %s failed, because you can not share with yourself" : "Kunhavigo de %s malsukcesis, ĉar vi ne povas kunhavigi kun vi mem",
- "Sharing %s failed, because the user %s does not exist" : "Kunhavigo de %s malsukcesis, ĉar la uzanto %s ne ekzistas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Kunhavigo de %s malsukcesis, ĉar la uzanto %s estas ano de neniu grupo, de kiu %s estas ano",
- "Sharing %s failed, because this item is already shared with %s" : "Kunhavigo de %s malsukcesis, ĉar la ero jam kunhavatas kun %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Kunhavigo de %s malsukcesis, ĉar la ero jam kunhaviĝis kun %s",
- "Sharing %s failed, because the group %s does not exist" : "Kunhavigo de %s malsukcesis, ĉar la grupo %s ne ekzistas",
- "Sharing %s failed, because %s is not a member of the group %s" : "Kunhavigo de %s malsukcesis, ĉar %s ne estas ano de la grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
- "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
- "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kunhavigo de %s malsukcesis, ne eblis trovi %s; eble la servilo estas provizore neatingebla.",
- "Share type %s is not valid for %s" : "Kunhava tipo %s ne validas por %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
- "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
- "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Kunhavigo de %s malsukcesis, ĉar la permesoj transpasas tiujn de %s",
- "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Kunhavigo de %s malsukcesis, ĉar la kunhava interna servo por %s ne povis trovi ĝian fonton",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro",
- "%s shared »%s« with you" : "%s kunhavigis „%s“ kun vi",
- "%s shared »%s« with you." : "%s kunhavigis „%s“ kun vi.",
- "%s via %s" : "%s pere de %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplikaĵo „%s“ ne instaliĝis, ĉar la jenaj dependecoj ne plenumiĝas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Identigilo „%s“ jam uziĝas de federnuba provizanto „%s“",
"Sharing %1$s failed, because the user %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s ne ekzistas",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s estas ano de neniu grupo, de kiu %3$s estas ano",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar tiu elemento jam kunhaviĝas kun %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la ero jam kunhaviĝis kun uzanto %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la grupo %2$s ne ekzistas",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Kunhavigo de %1$s malsukcesis, ĉar %2$s ne estas ano de la grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
+ "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
+ "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Kunhavigo de %1$s malsukcesis, ne eblis trovi %2$s; eble la servilo estas provizore neatingebla.",
"Share type %1$s is not valid for %2$s" : "Kunhava tipo %1$s ne validas por %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
+ "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la permesoj transpasas tiujn de %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton"
+ "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 5a82eec6b74..fb6689fb9d5 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Error de conexión de almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteca %s con una versión superior que %s la requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteca %s con una versión inferior que %s la requerida - versión disponible %s.",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Eliminar",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i",
"Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Fallo al compartir %s, ya que este elemento ya está compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Fallo al compartir %s, porque este objeto ya se comparte con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Fallo al compartir %s, ya que el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Fallo al compartir %s, ya que %s no es miembro del grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
- "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Fallo al compartir %s. No se ha podido encontrar %s, quizás haya un problema de conexión con el servidor.",
- "Share type %s is not valid for %s" : "El tipo de recurso compartido %s no es válido para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se ha fallado al compartir %s, ya que los permisos superan los permisos otorgados a %s",
- "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se ha fallado al compartir %s porque el motor compartido para %s podría no encontrar su origen",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s vía %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La app \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "La ID \"%s\" ya es usada por el proveedor de federación en la nube \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
+ "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
+ "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
"Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
+ "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
+ "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen"
+ "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index ebc35c77216..7df712d222b 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Error de conexión de almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteca %s con una versión superior que %s la requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteca %s con una versión inferior que %s la requerida - versión disponible %s.",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Eliminar",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i",
"Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Fallo al compartir %s, ya que este elemento ya está compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Fallo al compartir %s, porque este objeto ya se comparte con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Fallo al compartir %s, ya que el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Fallo al compartir %s, ya que %s no es miembro del grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
- "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Fallo al compartir %s. No se ha podido encontrar %s, quizás haya un problema de conexión con el servidor.",
- "Share type %s is not valid for %s" : "El tipo de recurso compartido %s no es válido para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se ha fallado al compartir %s, ya que los permisos superan los permisos otorgados a %s",
- "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se ha fallado al compartir %s porque el motor compartido para %s podría no encontrar su origen",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s ha compartido »%s« contigo",
- "%s via %s" : "%s vía %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La app \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "La ID \"%s\" ya es usada por el proveedor de federación en la nube \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
+ "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
+ "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
"Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
+ "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
+ "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen"
+ "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_419.js b/lib/l10n/es_419.js
index 7f12d346a70..5233e7e4bf3 100644
--- a/lib/l10n/es_419.js
+++ b/lib/l10n/es_419.js
@@ -192,8 +192,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -201,27 +199,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_419.json b/lib/l10n/es_419.json
index 99f44575875..929963fb48f 100644
--- a/lib/l10n/es_419.json
+++ b/lib/l10n/es_419.json
@@ -190,8 +190,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -199,27 +197,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index 41d713a405f..bbaad943452 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -170,31 +170,16 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presento una falla al compartir %s, porque no puede compartir con usted mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s proque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear un link público, sólo los links protegidos están permitidos. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con links",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido federado con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presento una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index 33e9e8afaa5..284cbbaf0b5 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -168,31 +168,16 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presento una falla al compartir %s, porque no puede compartir con usted mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s proque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear un link público, sólo los links protegidos están permitidos. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con links",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido federado con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presento una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« con usted",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CL.js b/lib/l10n/es_CL.js
index 66d87b75332..b711da2797d 100644
--- a/lib/l10n/es_CL.js
+++ b/lib/l10n/es_CL.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CL.json b/lib/l10n/es_CL.json
index ca6cc35a2cd..c58e8e56952 100644
--- a/lib/l10n/es_CL.json
+++ b/lib/l10n/es_CL.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CO.js b/lib/l10n/es_CO.js
index abcf63dd658..da72e3090ec 100644
--- a/lib/l10n/es_CO.js
+++ b/lib/l10n/es_CO.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CO.json b/lib/l10n/es_CO.json
index e2e0c7ff2aa..db398beea75 100644
--- a/lib/l10n/es_CO.json
+++ b/lib/l10n/es_CO.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CR.js b/lib/l10n/es_CR.js
index 99dcc834960..faea2789541 100644
--- a/lib/l10n/es_CR.js
+++ b/lib/l10n/es_CR.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CR.json b/lib/l10n/es_CR.json
index bc090af1623..0a6cfaa32da 100644
--- a/lib/l10n/es_CR.json
+++ b/lib/l10n/es_CR.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_DO.js b/lib/l10n/es_DO.js
index dd52672c821..3af37f5c851 100644
--- a/lib/l10n/es_DO.js
+++ b/lib/l10n/es_DO.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_DO.json b/lib/l10n/es_DO.json
index 62865436de8..35a875c0fce 100644
--- a/lib/l10n/es_DO.json
+++ b/lib/l10n/es_DO.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_EC.js b/lib/l10n/es_EC.js
index b39792ac235..c4a1693131b 100644
--- a/lib/l10n/es_EC.js
+++ b/lib/l10n/es_EC.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_EC.json b/lib/l10n/es_EC.json
index 65c16053c69..1369378370b 100644
--- a/lib/l10n/es_EC.json
+++ b/lib/l10n/es_EC.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_GT.js b/lib/l10n/es_GT.js
index 23aa1b1ff1a..d33ad218748 100644
--- a/lib/l10n/es_GT.js
+++ b/lib/l10n/es_GT.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_GT.json b/lib/l10n/es_GT.json
index 0ae23a36e50..87fcb8bc85c 100644
--- a/lib/l10n/es_GT.json
+++ b/lib/l10n/es_GT.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_HN.js b/lib/l10n/es_HN.js
index 2aaaa952a26..4211186ae40 100644
--- a/lib/l10n/es_HN.js
+++ b/lib/l10n/es_HN.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_HN.json b/lib/l10n/es_HN.json
index c0493a70f3b..c760c0482e5 100644
--- a/lib/l10n/es_HN.json
+++ b/lib/l10n/es_HN.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js
index 70495639394..2e7ad595049 100644
--- a/lib/l10n/es_MX.js
+++ b/lib/l10n/es_MX.js
@@ -194,8 +194,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -207,27 +205,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json
index 1aa3955624b..2d04788c2e8 100644
--- a/lib/l10n/es_MX.json
+++ b/lib/l10n/es_MX.json
@@ -192,8 +192,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -205,27 +203,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_NI.js b/lib/l10n/es_NI.js
index 19d6f392395..d3d7939bfc8 100644
--- a/lib/l10n/es_NI.js
+++ b/lib/l10n/es_NI.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_NI.json b/lib/l10n/es_NI.json
index 20ec6b75e33..6c81087fdd1 100644
--- a/lib/l10n/es_NI.json
+++ b/lib/l10n/es_NI.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PA.js b/lib/l10n/es_PA.js
index 5162940a466..3f332505fe3 100644
--- a/lib/l10n/es_PA.js
+++ b/lib/l10n/es_PA.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PA.json b/lib/l10n/es_PA.json
index b1bc2db9281..a228a557a02 100644
--- a/lib/l10n/es_PA.json
+++ b/lib/l10n/es_PA.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PE.js b/lib/l10n/es_PE.js
index 84c5ee147d1..e3dc3b5de88 100644
--- a/lib/l10n/es_PE.js
+++ b/lib/l10n/es_PE.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PE.json b/lib/l10n/es_PE.json
index 2187a2049b4..4c527b8fa3e 100644
--- a/lib/l10n/es_PE.json
+++ b/lib/l10n/es_PE.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PR.js b/lib/l10n/es_PR.js
index edcaf317a87..90026b5acd4 100644
--- a/lib/l10n/es_PR.js
+++ b/lib/l10n/es_PR.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PR.json b/lib/l10n/es_PR.json
index e67eab10aca..4a2f8d9413d 100644
--- a/lib/l10n/es_PR.json
+++ b/lib/l10n/es_PR.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PY.js b/lib/l10n/es_PY.js
index 1a244bb3d14..1c097adebaa 100644
--- a/lib/l10n/es_PY.js
+++ b/lib/l10n/es_PY.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PY.json b/lib/l10n/es_PY.json
index 75f29592db5..a430e4cde20 100644
--- a/lib/l10n/es_PY.json
+++ b/lib/l10n/es_PY.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_SV.js b/lib/l10n/es_SV.js
index a36aed24721..66870e50e6e 100644
--- a/lib/l10n/es_SV.js
+++ b/lib/l10n/es_SV.js
@@ -193,8 +193,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -206,27 +204,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_SV.json b/lib/l10n/es_SV.json
index 3c6e1bcb3a5..7709b181e82 100644
--- a/lib/l10n/es_SV.json
+++ b/lib/l10n/es_SV.json
@@ -191,8 +191,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Borrar",
@@ -204,27 +202,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_UY.js b/lib/l10n/es_UY.js
index 4306a0488c5..e2e6b13cc2b 100644
--- a/lib/l10n/es_UY.js
+++ b/lib/l10n/es_UY.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_UY.json b/lib/l10n/es_UY.json
index cdf75a04abe..31865dc8903 100644
--- a/lib/l10n/es_UY.json
+++ b/lib/l10n/es_UY.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
"Unlimited" : "Ilimitado",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
"Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
"Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
- "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
"Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
"Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
- "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
"Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
"Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "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",
- "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
- "%s shared »%s« with you." : "%s compartió contigo »%s«.",
- "%s via %s" : "%s por %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s "
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index f2f84c331f7..0ba8fe317d3 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -158,27 +158,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s jagamine ebaõnnestus sest server ei luba %i tüüpi jagamisi",
"Sharing %s failed, because the file does not exist" : "%s jagamine ebaõnnestus, kuna faili pole olemas",
"Sharing %s failed, because you can not share with yourself" : "%s jagamine ebaõnnestus, kuna sa ei saa jagada iseendaga",
- "Sharing %s failed, because the user %s does not exist" : "%s jagamine ebaõnnestus, kuna kasutajat %s pole olemas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s jagamine ebaõnnestus, kuna kasutaja %s pole ühegi grupi liige, millede liige on %s",
- "Sharing %s failed, because this item is already shared with %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud kasutajaga %s",
- "Sharing %s failed, because the group %s does not exist" : "%s jagamine ebaõnnestus, kuna gruppi %s pole olemas",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s jagamine ebaõnnestus, kuna %s pole grupi %s liige",
"You need to provide a password to create a public link, only protected links are allowed" : "Avaliku viite tekitamiseks pead sisestama parooli, ainult kaitstud viited on lubatud",
"Sharing %s failed, because sharing with links is not allowed" : "%s jagamine ebaõnnestus, kuna linkidega jagamine pole lubatud",
"Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s jagamine ebaõnnestus, ei suutnud %s leida, ehk ei ole server hetkel kättesaadav.",
- "Share type %s is not valid for %s" : "Jagamise tüüp %s ei ole õige %s jaoks",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Aegumise kuupäeva ei saa määrata. Jagamised ei saa aeguda hiljem kui %s peale jagamist.",
"Cannot set expiration date. Expiration date is in the past" : "Aegumiskuupäeva ei saa määrata. Aegumise kuupäev on minevikus",
"Sharing failed, because the user %s is the original sharer" : "Jagamine ebaõnnestus kuna kasutaja %s on algne jagaja",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s jagamine ebaõnnestus, kuna antud õigused ületavad %s jaoks määratud õigusi",
"Sharing %s failed, because resharing is not allowed" : "%s jagamine ebaõnnestus, kuna edasijagamine pole lubatud",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s jagamine ebaõnnestus, kuna jagamise tagarakend ei suutnud leida %s jaoks lähteallikat",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist",
- "%s shared »%s« with you" : "%s jagas sinuga »%s«",
- "%s shared »%s« with you." : "%s jagas »%s« sinuga.",
- "%s via %s" : "%s läbi %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Rakendust \"%s\" ei saa paigaldada sest järgmised sõltuvused ei ole täidetud: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index de8bbb9c71e..5aab6554b54 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -156,27 +156,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s jagamine ebaõnnestus sest server ei luba %i tüüpi jagamisi",
"Sharing %s failed, because the file does not exist" : "%s jagamine ebaõnnestus, kuna faili pole olemas",
"Sharing %s failed, because you can not share with yourself" : "%s jagamine ebaõnnestus, kuna sa ei saa jagada iseendaga",
- "Sharing %s failed, because the user %s does not exist" : "%s jagamine ebaõnnestus, kuna kasutajat %s pole olemas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s jagamine ebaõnnestus, kuna kasutaja %s pole ühegi grupi liige, millede liige on %s",
- "Sharing %s failed, because this item is already shared with %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud kasutajaga %s",
- "Sharing %s failed, because the group %s does not exist" : "%s jagamine ebaõnnestus, kuna gruppi %s pole olemas",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s jagamine ebaõnnestus, kuna %s pole grupi %s liige",
"You need to provide a password to create a public link, only protected links are allowed" : "Avaliku viite tekitamiseks pead sisestama parooli, ainult kaitstud viited on lubatud",
"Sharing %s failed, because sharing with links is not allowed" : "%s jagamine ebaõnnestus, kuna linkidega jagamine pole lubatud",
"Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s jagamine ebaõnnestus, ei suutnud %s leida, ehk ei ole server hetkel kättesaadav.",
- "Share type %s is not valid for %s" : "Jagamise tüüp %s ei ole õige %s jaoks",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Aegumise kuupäeva ei saa määrata. Jagamised ei saa aeguda hiljem kui %s peale jagamist.",
"Cannot set expiration date. Expiration date is in the past" : "Aegumiskuupäeva ei saa määrata. Aegumise kuupäev on minevikus",
"Sharing failed, because the user %s is the original sharer" : "Jagamine ebaõnnestus kuna kasutaja %s on algne jagaja",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s jagamine ebaõnnestus, kuna antud õigused ületavad %s jaoks määratud õigusi",
"Sharing %s failed, because resharing is not allowed" : "%s jagamine ebaõnnestus, kuna edasijagamine pole lubatud",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s jagamine ebaõnnestus, kuna jagamise tagarakend ei suutnud leida %s jaoks lähteallikat",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist",
- "%s shared »%s« with you" : "%s jagas sinuga »%s«",
- "%s shared »%s« with you." : "%s jagas »%s« sinuga.",
- "%s via %s" : "%s läbi %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Rakendust \"%s\" ei saa paigaldada sest järgmised sõltuvused ei ole täidetud: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
index 78c27b168ad..7299122e532 100644
--- a/lib/l10n/eu.js
+++ b/lib/l10n/eu.js
@@ -118,6 +118,7 @@ OC.L10N.register(
"The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
"User disabled" : "Erabiltzaile desgaituta",
"Login canceled by app" : "Aplikazioa saioa bertan behera utzi du",
+ "File is currently busy, please try again later" : "Fitxategia lanpetuta dago, saiatu berriro geroago",
"Can't read file" : "Ezin da fitxategia irakurri",
"Application is not enabled" : "Aplikazioa ez dago gaituta",
"Authentication error" : "Autentifikazio errorea",
@@ -129,6 +130,7 @@ OC.L10N.register(
"Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
"Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
"PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Ezarpen hau php.ini fitxategian doitzen bada, Nextcloud berriro exekutatuko da",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP moduluak instalatu dira, baina oraindik faltan bezala markatuta daude?",
"Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.",
@@ -136,8 +138,6 @@ OC.L10N.register(
"Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
"Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
- "Library %s with a version higher than %s is required - available version %s." : "%s liburutegiak %s baino bertsio handiagoa izan behar du - dagoen bertsioa %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s liburutegiak %s baino bertsio txikiagoa izan behar du - dagoen bertsioa %s.",
"Create" : "Sortu",
"Change" : "Aldatu",
"Delete" : "Ezabatu",
@@ -147,22 +147,11 @@ OC.L10N.register(
"Verify" : "Egiaztatu",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
"Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
- "Sharing %s failed, because the user %s does not exist" : "%s elkarbanatzeak huts egin du, %s erabiltzailea existitzen ez delako",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s elkarbanatzeak huts egin du, %s erabiltzailea ez delako %s partaide den talderen bateko partaidea",
- "Sharing %s failed, because this item is already shared with %s" : "%s elkarbanatzeak huts egin du, dagoeneko %s erabiltzailearekin elkarbanatuta dagoelako",
- "Sharing %s failed, because the group %s does not exist" : "%s elkarbanatzeak huts egin du, %s taldea ez delako existitzen",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s elkarbanatzeak huts egin du, %s ez delako %s taldearen partaidea",
"You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
"Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s partekatzeak huts egin du, ezin da %s aurkitu, agian zerbitzaria orain ez dago eskuragarri.",
- "Share type %s is not valid for %s" : "%s elkarbanaketa mota ez da %srentzako egokia",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da iraungitze-data ezarri. Partekatzeak ezin dira partekatu eta %s baino beranduago iraungi.",
"Cannot set expiration date. Expiration date is in the past" : "Ezin izan da iraungitze data ezarri. Iraungitze data iraganean dago.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s elkarbanatzeak huts egin du, baimenak %sri emandakoak baino gehiago direlako",
"Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s elkarbanatzeak huts egin du, %sren elkarbanaketa motorrak bere iturria aurkitu ezin duelako",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako",
- "%s shared »%s« with you" : "%s-ek »%s« zurekin partekatu du",
- "%s via %s" : "%s %s bidez"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
index aeb0ef7adab..034bbc306fe 100644
--- a/lib/l10n/eu.json
+++ b/lib/l10n/eu.json
@@ -116,6 +116,7 @@
"The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
"User disabled" : "Erabiltzaile desgaituta",
"Login canceled by app" : "Aplikazioa saioa bertan behera utzi du",
+ "File is currently busy, please try again later" : "Fitxategia lanpetuta dago, saiatu berriro geroago",
"Can't read file" : "Ezin da fitxategia irakurri",
"Application is not enabled" : "Aplikazioa ez dago gaituta",
"Authentication error" : "Autentifikazio errorea",
@@ -127,6 +128,7 @@
"Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
"Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
"PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Ezarpen hau php.ini fitxategian doitzen bada, Nextcloud berriro exekutatuko da",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP moduluak instalatu dira, baina oraindik faltan bezala markatuta daude?",
"Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.",
@@ -134,8 +136,6 @@
"Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
"Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
- "Library %s with a version higher than %s is required - available version %s." : "%s liburutegiak %s baino bertsio handiagoa izan behar du - dagoen bertsioa %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s liburutegiak %s baino bertsio txikiagoa izan behar du - dagoen bertsioa %s.",
"Create" : "Sortu",
"Change" : "Aldatu",
"Delete" : "Ezabatu",
@@ -145,22 +145,11 @@
"Verify" : "Egiaztatu",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
"Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
- "Sharing %s failed, because the user %s does not exist" : "%s elkarbanatzeak huts egin du, %s erabiltzailea existitzen ez delako",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s elkarbanatzeak huts egin du, %s erabiltzailea ez delako %s partaide den talderen bateko partaidea",
- "Sharing %s failed, because this item is already shared with %s" : "%s elkarbanatzeak huts egin du, dagoeneko %s erabiltzailearekin elkarbanatuta dagoelako",
- "Sharing %s failed, because the group %s does not exist" : "%s elkarbanatzeak huts egin du, %s taldea ez delako existitzen",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s elkarbanatzeak huts egin du, %s ez delako %s taldearen partaidea",
"You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
"Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s partekatzeak huts egin du, ezin da %s aurkitu, agian zerbitzaria orain ez dago eskuragarri.",
- "Share type %s is not valid for %s" : "%s elkarbanaketa mota ez da %srentzako egokia",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da iraungitze-data ezarri. Partekatzeak ezin dira partekatu eta %s baino beranduago iraungi.",
"Cannot set expiration date. Expiration date is in the past" : "Ezin izan da iraungitze data ezarri. Iraungitze data iraganean dago.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s elkarbanatzeak huts egin du, baimenak %sri emandakoak baino gehiago direlako",
"Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s elkarbanatzeak huts egin du, %sren elkarbanaketa motorrak bere iturria aurkitu ezin duelako",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako",
- "%s shared »%s« with you" : "%s-ek »%s« zurekin partekatu du",
- "%s via %s" : "%s %s bidez"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js
index ca65b7be22e..0ca28d50168 100644
--- a/lib/l10n/fa.js
+++ b/lib/l10n/fa.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"A valid username must be provided" : "نام کاربری صحیح باید وارد شود",
"A valid password must be provided" : "رمز عبور صحیح باید وارد شود",
"The username is already being used" : "نام‌کاربری قبلا استفاده شده است",
+ "User disabled" : "کاربر غیرفعال",
"File is currently busy, please try again later" : "فایل در حال حاضر مشغول است، لطفا مجددا تلاش کنید",
"Can't read file" : "امکان خواندن فایل وجود ندارد",
"Application is not enabled" : "برنامه فعال نشده است",
@@ -49,10 +50,6 @@ OC.L10N.register(
"Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.",
"PHP module %s not installed." : "ماژول PHP %s نصب نشده است.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است",
- "Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید",
- "Library %s with a version higher than %s is required - available version %s." : "کتابخانه %s با نسخه‎‌ی بالاتر از %s نیاز است - نسخه‎ی موجود %s.",
- "Library %s with a version lower than %s is required - available version %s." : "کتابخانه %s با نسخه‎‌ی پایین‌تر از %s نیاز است - نسخه‎ی موجود %s.",
- "%s shared »%s« with you" : "%s به اشتراک گذاشته شده است »%s« توسط شما",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "امکان نصب برنامه \"%s\" با توجه به برآورده نکردن نیازمندی زیر وجود ندارد: %s"
+ "Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json
index 88cd34e8b9a..1f2b60c9d67 100644
--- a/lib/l10n/fa.json
+++ b/lib/l10n/fa.json
@@ -38,6 +38,7 @@
"A valid username must be provided" : "نام کاربری صحیح باید وارد شود",
"A valid password must be provided" : "رمز عبور صحیح باید وارد شود",
"The username is already being used" : "نام‌کاربری قبلا استفاده شده است",
+ "User disabled" : "کاربر غیرفعال",
"File is currently busy, please try again later" : "فایل در حال حاضر مشغول است، لطفا مجددا تلاش کنید",
"Can't read file" : "امکان خواندن فایل وجود ندارد",
"Application is not enabled" : "برنامه فعال نشده است",
@@ -47,10 +48,6 @@
"Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.",
"PHP module %s not installed." : "ماژول PHP %s نصب نشده است.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است",
- "Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید",
- "Library %s with a version higher than %s is required - available version %s." : "کتابخانه %s با نسخه‎‌ی بالاتر از %s نیاز است - نسخه‎ی موجود %s.",
- "Library %s with a version lower than %s is required - available version %s." : "کتابخانه %s با نسخه‎‌ی پایین‌تر از %s نیاز است - نسخه‎ی موجود %s.",
- "%s shared »%s« with you" : "%s به اشتراک گذاشته شده است »%s« توسط شما",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "امکان نصب برنامه \"%s\" با توجه به برآورده نکردن نیازمندی زیر وجود ندارد: %s"
+ "Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js
index ee0e708c508..9cb94f725d1 100644
--- a/lib/l10n/fi.js
+++ b/lib/l10n/fi.js
@@ -179,8 +179,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Tallennustilan yhteysvirhe. %s",
"Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Storage connection timeout. %s" : "Tallennustilan yhteyden aikakatkaisu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Kirjasto %s versiota %s tai uudempi vaaditaan - käytettävissä oleva versio %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Kirjasto %s versiota alempi %s tarvitaan - käytettävissä oleva versio %s.",
"Create" : "Luo",
"Change" : "Muuta",
"Delete" : "Poista",
@@ -192,22 +190,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Kohteen %s jakaminen epäonnistui, koska tietovarasto ei salli %i tyyppisiä jakoja",
"Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
"Sharing %s failed, because you can not share with yourself" : "Kohteen %s jakaminen epäonnistui, koska et voi jakaa itsesi kanssa",
- "Sharing %s failed, because the user %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska käyttäjää %s ei ole olemassa",
- "Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
- "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
- "Sharing %s failed, because the group %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska ryhmää %s ei ole olemassa",
- "Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen",
"You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
"Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu",
"Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kohteen %s jakaminen epäonnistui, kohdetta %s ei löytynyt. Kenties palvelin ei ole juuri nyt tavoitettavissa.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Vanhenemispäivää ei voi asettaa. Jako ei voi vanhentua myöhemmin kuin %s päivää sen jälkeen kun se on jaettu",
"Cannot set expiration date. Expiration date is in the past" : "Vanhenemispäivää ei voi asettaa. Vanhenemispäivä on jo mennyt",
"Sharing failed, because the user %s is the original sharer" : "Jakaminen epäonnistui, koska käyttäjä %s ei ole alkuperäinen jakaja",
"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",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
- "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Sovelluksen \"%s\" asennus ei onnistu, koska seuraavia riippuvuuksia ei ole täytetty: %s"
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json
index f953de6ac12..48ba8e0ee6b 100644
--- a/lib/l10n/fi.json
+++ b/lib/l10n/fi.json
@@ -177,8 +177,6 @@
"Storage connection error. %s" : "Tallennustilan yhteysvirhe. %s",
"Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Storage connection timeout. %s" : "Tallennustilan yhteyden aikakatkaisu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Kirjasto %s versiota %s tai uudempi vaaditaan - käytettävissä oleva versio %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Kirjasto %s versiota alempi %s tarvitaan - käytettävissä oleva versio %s.",
"Create" : "Luo",
"Change" : "Muuta",
"Delete" : "Poista",
@@ -190,22 +188,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Kohteen %s jakaminen epäonnistui, koska tietovarasto ei salli %i tyyppisiä jakoja",
"Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
"Sharing %s failed, because you can not share with yourself" : "Kohteen %s jakaminen epäonnistui, koska et voi jakaa itsesi kanssa",
- "Sharing %s failed, because the user %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska käyttäjää %s ei ole olemassa",
- "Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
- "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
- "Sharing %s failed, because the group %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska ryhmää %s ei ole olemassa",
- "Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen",
"You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
"Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu",
"Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kohteen %s jakaminen epäonnistui, kohdetta %s ei löytynyt. Kenties palvelin ei ole juuri nyt tavoitettavissa.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Vanhenemispäivää ei voi asettaa. Jako ei voi vanhentua myöhemmin kuin %s päivää sen jälkeen kun se on jaettu",
"Cannot set expiration date. Expiration date is in the past" : "Vanhenemispäivää ei voi asettaa. Vanhenemispäivä on jo mennyt",
"Sharing failed, because the user %s is the original sharer" : "Jakaminen epäonnistui, koska käyttäjä %s ei ole alkuperäinen jakaja",
"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",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
- "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Sovelluksen \"%s\" asennus ei onnistu, koska seuraavia riippuvuuksia ei ole täytetty: %s"
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 181e8e24f9d..57158a64c6b 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La librairie %s doit être au moins à la version %s. Version disponible : %s.",
- "Library %s with a version lower than %s is required - available version %s." : "La librairie %s doit avoir une version antérieure à %s. Version disponible : %s.",
"Create" : "Créer",
"Change" : "Modifier",
"Delete" : "Supprimer",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Le partage de %s a échoué car l’infrastructure n'autorise pas les partages de type %i",
"Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
"Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
- "Sharing %s failed, because the user %s does not exist" : "Le partage de %s a échoué car l'utilisateur %s n'existe pas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Le partage de %s a échoué car l'utilisateur %s n'est membre d'aucun groupe auquel %s appartient",
- "Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet objet est déjà partagé avec %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec l'utilisateur %s",
- "Sharing %s failed, because the group %s does not exist" : "Le partage de %s a échoué car le groupe %s n'existe pas",
- "Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
- "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
- "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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.",
- "Share type %s is not valid for %s" : "Le type de partage %s n'est pas valide pour %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
- "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
- "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Le partage de %s a échoué car les permissions dépassent celles accordées à %s",
- "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car le service %s n'a pas trouvé sa source..",
- "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
- "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
- "%s shared »%s« with you." : "%s a partagé «%s» avec vous.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'application \"%s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "L'identifiant \"%s\" est déjà utilisé par le fournisseur de cloud \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
+ "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",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
"Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
+ "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
+ "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source.."
+ "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache."
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 87bd6404a9d..990900c57e9 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
- "Library %s with a version higher than %s is required - available version %s." : "La librairie %s doit être au moins à la version %s. Version disponible : %s.",
- "Library %s with a version lower than %s is required - available version %s." : "La librairie %s doit avoir une version antérieure à %s. Version disponible : %s.",
"Create" : "Créer",
"Change" : "Modifier",
"Delete" : "Supprimer",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Le partage de %s a échoué car l’infrastructure n'autorise pas les partages de type %i",
"Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
"Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
- "Sharing %s failed, because the user %s does not exist" : "Le partage de %s a échoué car l'utilisateur %s n'existe pas",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Le partage de %s a échoué car l'utilisateur %s n'est membre d'aucun groupe auquel %s appartient",
- "Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet objet est déjà partagé avec %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec l'utilisateur %s",
- "Sharing %s failed, because the group %s does not exist" : "Le partage de %s a échoué car le groupe %s n'existe pas",
- "Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
- "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
- "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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.",
- "Share type %s is not valid for %s" : "Le type de partage %s n'est pas valide pour %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
- "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
- "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Le partage de %s a échoué car les permissions dépassent celles accordées à %s",
- "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car le service %s n'a pas trouvé sa source..",
- "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
- "%s shared »%s« with you" : "%s a partagé «%s» avec vous",
- "%s shared »%s« with you." : "%s a partagé «%s» avec vous.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'application \"%s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "L'identifiant \"%s\" est déjà utilisé par le fournisseur de cloud \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
+ "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",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
"Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
+ "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
+ "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source.."
+ "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js
index ebb9d5b3738..0eee0155f15 100644
--- a/lib/l10n/gl.js
+++ b/lib/l10n/gl.js
@@ -34,11 +34,11 @@ OC.L10N.register(
"Wiping of device %s has started" : "Iniciouse a limpeza do dispositivo %s",
"Wiping of device »%s« has started" : "Iniciouse a limpeza do dispositivo «%s»",
"»%s« started remote wipe" : "«%s» iniciou a limpeza remota",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "O dispositivo ou aplicativo «%s» iniciou o proceso remoto de limpeza. Recibirá outro correo cando remate o proceso",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "O dispositivo ou aplicación «%s» iniciou o proceso remoto de limpeza. Recibirá outro correo cando remate o proceso",
"Wiping of device %s has finished" : "Rematou a limpeza do dispositivo %s",
"Wiping of device »%s« has finished" : "Rematou a limpeza do dispositivo «%s»",
"»%s« finished remote wipe" : "«%s» rematou a limpeza remota",
- "Device or application »%s« has finished the remote wipe process." : "O dispositivo ou aplicativo «%s» rematou o proceso remoto de limpeza.",
+ "Device or application »%s« has finished the remote wipe process." : "O dispositivo ou aplicación «%s» rematou o proceso remoto de limpeza.",
"Remote wipe started" : "Iniciouse a limpeza remota",
"A remote wipe was started on device %s" : "Iniciouse unha limpeza remota no dispositivo %s",
"Remote wipe finished" : "Rematou a limpeza remota",
@@ -66,18 +66,18 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["hai %n minuto","hai %n minutos"],
"in a few seconds" : "en poucos segundos",
"seconds ago" : "segundos atrás",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Non existe o módulo co ID: %s. Actíveo nos axustes dos aplicativos ou contacte co administrador.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Non existe o módulo co ID: %s. Actíveo nos axustes das aplicacións ou contacte co administrador.",
"File name is a reserved word" : "O nome de ficheiro é unha palabra reservada",
"File name contains at least one invalid character" : "O nome de ficheiro contén algún carácter incorrecto",
"File name is too long" : "O nome de ficheiro é longo de máis",
"Dot files are not allowed" : "Non se admiten os ficheiros con punto",
"Empty filename is not allowed" : "Non está permitido deixar baleiro o nome de ficheiro",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Non é posíbel instalar o aplicativo «%s» por mor de non poder ler o ficheiro appinfo.",
- "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Non é posíbel instalar o aplicativo «%s» por mor de non ser compatíbel con esta versión do servidor.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Non é posíbel instalar a aplicación «%s» por mor de non poder ler o ficheiro appinfo.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Non é posíbel instalar a aplicación «%s» por mor de non ser compatíbel con esta versión do servidor.",
"__language_name__" : "Galego",
"This is an automatically sent email, please do not reply." : "Este é un correo enviado automaticamente, non responda.",
"Help" : "Axuda",
- "Apps" : "Aplicativos",
+ "Apps" : "Aplicacións",
"Settings" : "Axustes",
"Log out" : "Saír",
"Users" : "Usuarios",
@@ -178,18 +178,18 @@ OC.L10N.register(
"The username is already being used" : "Este nome de usuario xa está a ser usado",
"Could not create user" : "Non foi posíbel crear o usuario",
"User disabled" : "Usuario desactivado",
- "Login canceled by app" : "Acceso cancelado polo aplicativo",
- "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Non é posíbel instalar o aplicativo «%1$s» por mor de non cumprirse as dependencias: %2$s",
+ "Login canceled by app" : "Acceso cancelado pola aplicación",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Non é posíbel instalar a aplicación «%1$s» por mor de non cumprirse as dependencias: %2$s",
"a safe home for all your data" : "un lugar seguro para todos os seus datos",
"File is currently busy, please try again later" : "O ficheiro está ocupado neste momento, ténteo máis tarde.",
"Can't read file" : "Non é posíbel ler o ficheiro",
- "Application is not enabled" : "O aplicativo non está activado",
+ "Application is not enabled" : "A aplicación non está activada",
"Authentication error" : "Produciuse un erro de autenticación",
"Token expired. Please reload page." : "Marca caducada. Recargue a páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Non hai controladores de base de datos (sqlite, mysql, ou postgresql) instalados.",
"Cannot write into \"config\" directory" : "Non é posíbel escribir no directorio «config»",
"Cannot write into \"apps\" directory" : "Non é posíbel escribir no directorio «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" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio dos aplicativos ou desactivando a tenda de aplicativos no ficheiro de configuración. Vexa %s",
+ "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" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s",
"Cannot create \"data\" directory" : "Non é posíbel crear o directorio «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Polo xeral, pódense corrixir os permisos dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
@@ -203,7 +203,7 @@ OC.L10N.register(
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para arranxar este incidente, estabeleza <code>mbstring.func_overload</code> a <code>0</code> no ficheiro php.ini",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "Requírese cando menos libxml2 2.7.0. Actualmente esta instalado %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Para arranxar este incidente, actualice a versión de libxml2 e reinicie o servidor web. ",
- "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Semella que PHP foi configurado para quitar bloques de documentos en liña. Isto fará que varios aplicativos sexan inaccesíbeis.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Semella que PHP foi configurado para quitar bloques de documentos en liña. Isto fará que varias aplicacións sexan inaccesíbeis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto probabelmente se debe unha caché/acelerador como Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Instaláronse os módulos de PHP, mais aínda aparecen listados como perdidos?",
"Please ask your server administrator to restart the web server." : "Pregúntelle ao administrador do servidor polo reinicio do servidor web..",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Produciuse un erro na conexión ao almacenamento. %s",
"Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Storage connection timeout. %s" : "Esgotouse o tempo de conexión co almacenamento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Requírese a biblioteca %s cunha versión superior a %s - dispoñíbel a versión %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Requírese a biblioteca %s cunha versión inferior a %s - dispoñíbel a versión %s.",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Eliminar",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Fallou a compartición de %s, xa que a infraestrutura non permite accións do tipo %i",
"Sharing %s failed, because the file does not exist" : "Fallou a compartición de %s, o ficheiro non existe",
"Sharing %s failed, because you can not share with yourself" : "Fallou a compartición de %s por mor de que non pode compartir con vostede mesmo",
- "Sharing %s failed, because the user %s does not exist" : "Fallou a compartición de %s, o usuario %s non existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Fallou a compartición de %s, o usuario %s non é membro en ningún grupo no que sexa membro %s",
- "Sharing %s failed, because this item is already shared with %s" : "Fallou a compartición de %s, este elemento xa está compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Fallou a compartición de %s por mor de que este elemento xa foi compartido co usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Fallou a compartición de %s, o grupo %s non existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Fallou a compartición de %s, %s non é membro do grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
- "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Fallou a compartición de %s, non foi posíbel atopar %s,é probábel que o servidor non estea accesíbel.",
- "Share type %s is not valid for %s" : "Non se admite a compartición do tipo %s para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
- "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Fallou a compartición de %s, os permisos superan os permisos concedidos a %s",
- "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Fallou a compartición de %s, a infraestrutura de compartición para %s non foi quen de atopar a orixe",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros",
- "%s shared »%s« with you" : "%s compartiu «%s» con vostede",
- "%s shared »%s« with you." : "%s compartiu «%s» con vostede.",
- "%s via %s" : "%s mediante %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Non é posíbel instalar o aplicativo «%s» por mor de non cumprirse as dependencias: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "O ID «%s» xa está a ser usado polo provedor da nube federada «%s»",
"Sharing %1$s failed, because the user %2$s does not exist" : "Fallou a compartición de %1$s, o usuario %2$s non existe",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallou a compartición de %1$s, o usuario %2$s non é membro en ningún grupo no que sexa membro %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Produciuse un fallou na compartición de %1$s, este elemento xa está compartido con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Fallou a compartición de %1$s, o grupo %2$s non existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallou a compartición de %1$s, %2$s non é membro do grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
+ "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
+ "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallou a compartición de %1$s, non foi posíbel atopar %2$s,é probábel que o servidor non estea accesíbel.",
"Share type %1$s is not valid for %2$s" : "Non se admite a compartición do tipo %1$s para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
+ "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
+ "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallou a compartición de %1$s, os permisos superan os permisos concedidos a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe"
+ "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json
index e1caf6e367d..00447bb916c 100644
--- a/lib/l10n/gl.json
+++ b/lib/l10n/gl.json
@@ -32,11 +32,11 @@
"Wiping of device %s has started" : "Iniciouse a limpeza do dispositivo %s",
"Wiping of device »%s« has started" : "Iniciouse a limpeza do dispositivo «%s»",
"»%s« started remote wipe" : "«%s» iniciou a limpeza remota",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "O dispositivo ou aplicativo «%s» iniciou o proceso remoto de limpeza. Recibirá outro correo cando remate o proceso",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "O dispositivo ou aplicación «%s» iniciou o proceso remoto de limpeza. Recibirá outro correo cando remate o proceso",
"Wiping of device %s has finished" : "Rematou a limpeza do dispositivo %s",
"Wiping of device »%s« has finished" : "Rematou a limpeza do dispositivo «%s»",
"»%s« finished remote wipe" : "«%s» rematou a limpeza remota",
- "Device or application »%s« has finished the remote wipe process." : "O dispositivo ou aplicativo «%s» rematou o proceso remoto de limpeza.",
+ "Device or application »%s« has finished the remote wipe process." : "O dispositivo ou aplicación «%s» rematou o proceso remoto de limpeza.",
"Remote wipe started" : "Iniciouse a limpeza remota",
"A remote wipe was started on device %s" : "Iniciouse unha limpeza remota no dispositivo %s",
"Remote wipe finished" : "Rematou a limpeza remota",
@@ -64,18 +64,18 @@
"_%n minute ago_::_%n minutes ago_" : ["hai %n minuto","hai %n minutos"],
"in a few seconds" : "en poucos segundos",
"seconds ago" : "segundos atrás",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Non existe o módulo co ID: %s. Actíveo nos axustes dos aplicativos ou contacte co administrador.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Non existe o módulo co ID: %s. Actíveo nos axustes das aplicacións ou contacte co administrador.",
"File name is a reserved word" : "O nome de ficheiro é unha palabra reservada",
"File name contains at least one invalid character" : "O nome de ficheiro contén algún carácter incorrecto",
"File name is too long" : "O nome de ficheiro é longo de máis",
"Dot files are not allowed" : "Non se admiten os ficheiros con punto",
"Empty filename is not allowed" : "Non está permitido deixar baleiro o nome de ficheiro",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Non é posíbel instalar o aplicativo «%s» por mor de non poder ler o ficheiro appinfo.",
- "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Non é posíbel instalar o aplicativo «%s» por mor de non ser compatíbel con esta versión do servidor.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Non é posíbel instalar a aplicación «%s» por mor de non poder ler o ficheiro appinfo.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Non é posíbel instalar a aplicación «%s» por mor de non ser compatíbel con esta versión do servidor.",
"__language_name__" : "Galego",
"This is an automatically sent email, please do not reply." : "Este é un correo enviado automaticamente, non responda.",
"Help" : "Axuda",
- "Apps" : "Aplicativos",
+ "Apps" : "Aplicacións",
"Settings" : "Axustes",
"Log out" : "Saír",
"Users" : "Usuarios",
@@ -176,18 +176,18 @@
"The username is already being used" : "Este nome de usuario xa está a ser usado",
"Could not create user" : "Non foi posíbel crear o usuario",
"User disabled" : "Usuario desactivado",
- "Login canceled by app" : "Acceso cancelado polo aplicativo",
- "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Non é posíbel instalar o aplicativo «%1$s» por mor de non cumprirse as dependencias: %2$s",
+ "Login canceled by app" : "Acceso cancelado pola aplicación",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Non é posíbel instalar a aplicación «%1$s» por mor de non cumprirse as dependencias: %2$s",
"a safe home for all your data" : "un lugar seguro para todos os seus datos",
"File is currently busy, please try again later" : "O ficheiro está ocupado neste momento, ténteo máis tarde.",
"Can't read file" : "Non é posíbel ler o ficheiro",
- "Application is not enabled" : "O aplicativo non está activado",
+ "Application is not enabled" : "A aplicación non está activada",
"Authentication error" : "Produciuse un erro de autenticación",
"Token expired. Please reload page." : "Marca caducada. Recargue a páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Non hai controladores de base de datos (sqlite, mysql, ou postgresql) instalados.",
"Cannot write into \"config\" directory" : "Non é posíbel escribir no directorio «config»",
"Cannot write into \"apps\" directory" : "Non é posíbel escribir no directorio «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" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio dos aplicativos ou desactivando a tenda de aplicativos no ficheiro de configuración. Vexa %s",
+ "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" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s",
"Cannot create \"data\" directory" : "Non é posíbel crear o directorio «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Polo xeral, pódense corrixir os permisos dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
@@ -201,7 +201,7 @@
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para arranxar este incidente, estabeleza <code>mbstring.func_overload</code> a <code>0</code> no ficheiro php.ini",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "Requírese cando menos libxml2 2.7.0. Actualmente esta instalado %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Para arranxar este incidente, actualice a versión de libxml2 e reinicie o servidor web. ",
- "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Semella que PHP foi configurado para quitar bloques de documentos en liña. Isto fará que varios aplicativos sexan inaccesíbeis.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Semella que PHP foi configurado para quitar bloques de documentos en liña. Isto fará que varias aplicacións sexan inaccesíbeis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto probabelmente se debe unha caché/acelerador como Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Instaláronse os módulos de PHP, mais aínda aparecen listados como perdidos?",
"Please ask your server administrator to restart the web server." : "Pregúntelle ao administrador do servidor polo reinicio do servidor web..",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Produciuse un erro na conexión ao almacenamento. %s",
"Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Storage connection timeout. %s" : "Esgotouse o tempo de conexión co almacenamento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Requírese a biblioteca %s cunha versión superior a %s - dispoñíbel a versión %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Requírese a biblioteca %s cunha versión inferior a %s - dispoñíbel a versión %s.",
"Create" : "Crear",
"Change" : "Cambiar",
"Delete" : "Eliminar",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Fallou a compartición de %s, xa que a infraestrutura non permite accións do tipo %i",
"Sharing %s failed, because the file does not exist" : "Fallou a compartición de %s, o ficheiro non existe",
"Sharing %s failed, because you can not share with yourself" : "Fallou a compartición de %s por mor de que non pode compartir con vostede mesmo",
- "Sharing %s failed, because the user %s does not exist" : "Fallou a compartición de %s, o usuario %s non existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Fallou a compartición de %s, o usuario %s non é membro en ningún grupo no que sexa membro %s",
- "Sharing %s failed, because this item is already shared with %s" : "Fallou a compartición de %s, este elemento xa está compartido con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Fallou a compartición de %s por mor de que este elemento xa foi compartido co usuario %s",
- "Sharing %s failed, because the group %s does not exist" : "Fallou a compartición de %s, o grupo %s non existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "Fallou a compartición de %s, %s non é membro do grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
- "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Fallou a compartición de %s, non foi posíbel atopar %s,é probábel que o servidor non estea accesíbel.",
- "Share type %s is not valid for %s" : "Non se admite a compartición do tipo %s para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
- "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Fallou a compartición de %s, os permisos superan os permisos concedidos a %s",
- "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Fallou a compartición de %s, a infraestrutura de compartición para %s non foi quen de atopar a orixe",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros",
- "%s shared »%s« with you" : "%s compartiu «%s» con vostede",
- "%s shared »%s« with you." : "%s compartiu «%s» con vostede.",
- "%s via %s" : "%s mediante %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Non é posíbel instalar o aplicativo «%s» por mor de non cumprirse as dependencias: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "O ID «%s» xa está a ser usado polo provedor da nube federada «%s»",
"Sharing %1$s failed, because the user %2$s does not exist" : "Fallou a compartición de %1$s, o usuario %2$s non existe",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallou a compartición de %1$s, o usuario %2$s non é membro en ningún grupo no que sexa membro %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Produciuse un fallou na compartición de %1$s, este elemento xa está compartido con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Fallou a compartición de %1$s, o grupo %2$s non existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallou a compartición de %1$s, %2$s non é membro do grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
+ "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
+ "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallou a compartición de %1$s, non foi posíbel atopar %2$s,é probábel que o servidor non estea accesíbel.",
"Share type %1$s is not valid for %2$s" : "Non se admite a compartición do tipo %1$s para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
+ "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
+ "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallou a compartición de %1$s, os permisos superan os permisos concedidos a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe"
+ "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/he.js b/lib/l10n/he.js
index 2ad91109d42..7c3d81a9c38 100644
--- a/lib/l10n/he.js
+++ b/lib/l10n/he.js
@@ -198,8 +198,6 @@ OC.L10N.register(
"Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
"Storage is temporarily not available" : "האחסון אינו זמין כרגע",
"Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
- "Library %s with a version higher than %s is required - available version %s." : "ספריה %s בגרסה גבוהה מ- %s נדרשת - גרסה זמינה %s.",
- "Library %s with a version lower than %s is required - available version %s." : "ספריה %s בגרסה נמוכה מ- %s נדרשת - גרסה זמינה %s.",
"Create" : "יצירה",
"Change" : "שינוי",
"Delete" : "מחיקה",
@@ -211,28 +209,15 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
"Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
"Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
- "Sharing %s failed, because the user %s does not exist" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו קיים",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו חבר בקבוצות ש- %s חבר ב-",
- "Sharing %s failed, because this item is already shared with %s" : "שיתוף %s נכשל, כיוון שפריט זה כבר משותף עם %s",
- "Sharing %s failed, because this item is already shared with user %s" : "השיתוף %s נכשל, כיוון שהפריט כבר משותף עם משתמש %s",
- "Sharing %s failed, because the group %s does not exist" : "השיתוף %s נכשל, כיוון שהקבוצה %s אינה קיימת",
- "Sharing %s failed, because %s is not a member of the group %s" : "השיתוף %s נכשל, כיוון ש- %s אינו חבר בקבוצה %s",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$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" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
"Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
"Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "השיתוף %s נכשל, כיוון שההרשאות עלו על ההרשאות שניתנו ל- %s",
"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 נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
- "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
- "%s via %s" : "%s על בסיס %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "היישום \"%s\" לא ניתן להתקנה כיוון שיחסי התלות הבאים אינם מתקיימים: %s",
- "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$s חברות בה"
+ "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/lib/l10n/he.json b/lib/l10n/he.json
index b6d313dc56d..b4c07d92fd7 100644
--- a/lib/l10n/he.json
+++ b/lib/l10n/he.json
@@ -196,8 +196,6 @@
"Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
"Storage is temporarily not available" : "האחסון אינו זמין כרגע",
"Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
- "Library %s with a version higher than %s is required - available version %s." : "ספריה %s בגרסה גבוהה מ- %s נדרשת - גרסה זמינה %s.",
- "Library %s with a version lower than %s is required - available version %s." : "ספריה %s בגרסה נמוכה מ- %s נדרשת - גרסה זמינה %s.",
"Create" : "יצירה",
"Change" : "שינוי",
"Delete" : "מחיקה",
@@ -209,28 +207,15 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
"Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
"Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
- "Sharing %s failed, because the user %s does not exist" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו קיים",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו חבר בקבוצות ש- %s חבר ב-",
- "Sharing %s failed, because this item is already shared with %s" : "שיתוף %s נכשל, כיוון שפריט זה כבר משותף עם %s",
- "Sharing %s failed, because this item is already shared with user %s" : "השיתוף %s נכשל, כיוון שהפריט כבר משותף עם משתמש %s",
- "Sharing %s failed, because the group %s does not exist" : "השיתוף %s נכשל, כיוון שהקבוצה %s אינה קיימת",
- "Sharing %s failed, because %s is not a member of the group %s" : "השיתוף %s נכשל, כיוון ש- %s אינו חבר בקבוצה %s",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$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" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
"Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
"Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "השיתוף %s נכשל, כיוון שההרשאות עלו על ההרשאות שניתנו ל- %s",
"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 נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
- "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
- "%s via %s" : "%s על בסיס %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "היישום \"%s\" לא ניתן להתקנה כיוון שיחסי התלות הבאים אינם מתקיימים: %s",
- "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$s חברות בה"
+ "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/hr.js b/lib/l10n/hr.js
index 425f9cb0fc0..3fa5b86be27 100644
--- a/lib/l10n/hr.js
+++ b/lib/l10n/hr.js
@@ -1,82 +1,259 @@
OC.L10N.register(
"lib",
{
- "Cannot write into \"config\" directory!" : "Pisanje u \"config\" direktoriju nije moguće!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može popraviti tako da se Web poslužitelju dopusti pristup za pisanje u config direktoriju",
- "See %s" : "Vidite %s",
- "Sample configuration detected" : "Nađena ogledna konfiguracija",
- "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" : "Otkriveno je da je ogledna konfiguracija kopirana. To može vašu instalaciju prekinuti i nije podržano.Molimo pročitajte dokumentaciju prije nego li izvršite promjene na config.php",
- "PHP %s or higher is required." : "PHP verzija treba biti %s ili viša.",
- "PHP with a version lower than %s is required." : "PHP sa verzijom manjom od %s je potrebna.",
- "Following databases are supported: %s" : "Sljedece baza podataka je podrzana: %s",
- "The library %s is not available." : "Knjiznica %s nije dostupna.",
- "Following platforms are supported: %s" : "Sljedece platforme su podrzane: %s",
+ "Cannot write into \"config\" directory!" : "Pisanje u direktorij „config” nije moguće!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može ispraviti tako da se web poslužitelju dopusti pristup za pisanje u direktoriju config",
+ "See %s" : "Pogledajte %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”.",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”. Pogledajte %s",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Datoteke aplikacije %1$s nisu ispravno zamijenjene. Provjerite je li inačica kompatibilna s poslužiteljem.",
+ "Sample configuration detected" : "Pronađena ogledna konfiguracija",
+ "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" : "Otkriveno je kopiranje ogledne konfiguracije. To može dovesti do poteškoća u radu vaše instalacije i nije podržano. Pročitajte dokumentaciju prije nego što izvršite promjene u config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
+ "Education Edition" : "Obrazovno izdanje",
+ "Enterprise bundle" : "Enterprise paket",
+ "Groupware bundle" : "Paket grupnog softvera",
+ "Social sharing bundle" : "Paket dijeljenja na društvenim mrežama",
+ "PHP %s or higher is required." : "PHP inačica treba biti %s ili viša.",
+ "PHP with a version lower than %s is required." : "Potreban je PHP inačice manje od %s.",
+ "%sbit or higher PHP required." : "Potreban je %s-bitni ili viši PHP.",
+ "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
+ "The command line tool %s could not be found" : "Alat naredbenog retka %s nije pronađen",
+ "The library %s is not available." : "Biblioteka %s nije dostupna.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice veće od %2$s – dostupna je inačica %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice manje od %2$s – dostupna je inačica %3$s.",
+ "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
+ "Server version %s or higher is required." : "Inačica poslužitelja treba biti %s ili viša.",
+ "Server version %s or lower is required." : "Potrebna je inačica poslužitelja %s ili niža.",
+ "Logged in user must be an admin or sub admin" : "Prijavljeni korisnik mora biti administrator ili podadministrator",
+ "Logged in user must be an admin" : "Korisnik koji je prijavljen mora biti administrator",
+ "Wiping of device %s has started" : "Počelo je brisanje sadržaja s uređaja %s",
+ "Wiping of device »%s« has started" : "Počelo je brisanje sadržaja s uređaja »%s«",
+ "»%s« started remote wipe" : "»%s« je počeo daljinsko brisanje",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Uređaj ili aplikacija »%s« započela je postupak daljinskog brisanja. Primit ćete još jednu poruku e-pošte nakon završetka postupka",
+ "Wiping of device %s has finished" : "Završilo je brisanje sadržaja s uređaja %s",
+ "Wiping of device »%s« has finished" : "Završilo je brisanje sadržaja s uređaja »%s«",
+ "»%s« finished remote wipe" : "»%s« je završio daljinsko brisanje",
+ "Device or application »%s« has finished the remote wipe process." : "Uređaj ili aplikacija »%s« završila je postupak daljinskog brisanja.",
+ "Remote wipe started" : "Pokrenuto je udaljeno brisanje",
+ "A remote wipe was started on device %s" : "Pokrenuto je udaljeno brisanje na uređaju %s",
+ "Remote wipe finished" : "Udaljeno brisanje je završeno",
+ "The remote wipe on %s has finished" : "Udaljeno brisanje %s je završeno",
+ "Authentication" : "Autentifikacija",
"Unknown filetype" : "Vrsta datoteke nepoznata",
- "Invalid image" : "Neispravna slika",
- "today" : "Danas",
- "yesterday" : "Jučer",
- "last month" : "Prošli mjesec",
- "_%n month ago_::_%n months ago_" : ["prije %n mjeseca","prije %n mjeseci","prije %n mjeseci"],
- "last year" : "Prošle godine",
- "_%n hour ago_::_%n hours ago_" : ["prije %n sata","prije %n sati","prije %n sati"],
- "_%n minute ago_::_%n minutes ago_" : ["prije %n minute","prije %n minuta","prije %n minuta"],
- "seconds ago" : "prije par sekundi",
- "__language_name__" : "Hrvatski",
+ "Invalid image" : "Slika neispravna",
+ "Avatar image is not square" : "Slika avatara nije kvadratna",
+ "today" : "danas",
+ "tomorrow" : "sutra",
+ "yesterday" : "jučer",
+ "_in %n day_::_in %n days_" : ["za %n dan","za %n dana","za %n dana"],
+ "_%n day ago_::_%n days ago_" : ["Prije %n dana","Prije %n dana","Prije %n dana"],
+ "next month" : "sljedeći mjesec",
+ "last month" : "prošli mjesec",
+ "_in %n month_::_in %n months_" : ["za %n mjesec","za %n mjeseci","za %n mjeseci"],
+ "_%n month ago_::_%n months ago_" : ["prije %n mjeseci","prije %n mjeseci","prije %n mjeseci"],
+ "next year" : "sljedeće godine",
+ "last year" : "prošle godine",
+ "_in %n year_::_in %n years_" : ["za %n godinu","za %n godina","za %n godina"],
+ "_%n year ago_::_%n years ago_" : ["Prije %n godine","Prije %n godina","Prije %n godina"],
+ "_in %n hour_::_in %n hours_" : ["za %n sat","za %n sati","za %n sati"],
+ "_%n hour ago_::_%n hours ago_" : ["Prije %n sata","Prije %n sati","Prije %n sati"],
+ "_in %n minute_::_in %n minutes_" : ["za %n minutu","za %n minuta","za %n minuta"],
+ "_%n minute ago_::_%n minutes ago_" : ["Prije %n minute","Prije %n minuta","Prije %n minuta"],
+ "in a few seconds" : "za nekoliko sekundi",
+ "seconds ago" : "prije nekoliko sekundi",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID-om: %s ne postoji. Omogućite ga u postavkama svojih aplikacija ili se obratite administratoru.",
+ "File name is a reserved word" : "Naziv datoteke je rezervirana riječ",
+ "File name contains at least one invalid character" : "Naziv datoteke sadrži barem jedan nevažeći znak",
+ "File name is too long" : "Naziv datoteke je predugačak",
+ "Dot files are not allowed" : "Datoteke s točkama nisu dopuštene",
+ "Empty filename is not allowed" : "Datoteke bez naziva nisu dopuštene",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikaciju „%s” nije moguće instalirati jer se ne može pročitati datoteka s podacima o aplikaciji.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikaciju „%s” nije moguće instalirati jer nije kompatibilna s ovom inačicom poslužitelja.",
+ "__language_name__" : "__language_name__",
+ "This is an automatically sent email, please do not reply." : "Ovo je automatski poslana poruka e-pošte, nemojte odgovarati.",
+ "Help" : "Pomoć",
"Apps" : "Aplikacije",
+ "Settings" : "Postavke",
+ "Log out" : "Odjava",
"Users" : "Korisnici",
- "Unknown user" : "Korisnik nepoznat",
- "%s enter the database username." : "%s unesite naziva korisnika baze podataka.",
- "%s enter the database name." : "%s unesite naziv baze podataka",
+ "Unknown user" : "Nepoznat korisnik",
+ "Overview" : "Pregled",
+ "Basic settings" : "Osnovne postavke",
+ "Sharing" : "Dijeljenje",
+ "Security" : "Sigurnost",
+ "Groupware" : "Groupware",
+ "Additional settings" : "Dodatne postavke",
+ "Personal info" : "Osobne informacije",
+ "Mobile & desktop" : "Mobilni uređaji i osobna računala",
+ "%s enter the database username and name." : "%s unesite korisničko ime i naziv baze podataka.",
+ "%s enter the database username." : "%s unesite korisničko ime baze podataka.",
+ "%s enter the database name." : "%s unesite naziv baze podataka.",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
- "Oracle connection could not be established" : "Vezu Oracle nije moguće uspostaviti",
- "Oracle username and/or password not valid" : "Korisničko ime i/ili lozinka Oracle neispravni",
- "PostgreSQL username and/or password not valid" : "Korisničko ime i/ili lozinka PostgreSQL neispravni",
- "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.",
- "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Molimo uklonite postavke za open_basedir setting iz datoteke php.ini ili se prebacite na 64-bitni PHP.",
- "Set an admin username." : "Navedite admin korisničko ime.",
- "Set an admin password." : "Navedite admin lozinku.",
- "Can't create or write into the data directory %s" : "Ne moze se kreirati ili napisati u imenik podataka %s",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Dijeljenje pozadine %s mora implementirati sučelje OCP\\Share_Backend",
- "Sharing backend %s not found" : "Dijeljenje pozadine %s nije nađeno",
- "Sharing backend for %s not found" : "Dijeljenje pozadine za %s nije nađeno",
+ "Oracle connection could not be established" : "Nije moguće uspostaviti vezu s bazom podataka Oracle",
+ "Oracle username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka Oracle",
+ "PostgreSQL username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka PostgreSQL",
+ "You need to enter details of an existing account." : "Trebate unijeti informacije o postojećem računu.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba. Koristite na vlastiti rizik!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate razmotrite mogućnost korištenja poslužitelja GNU/Linux.",
+ "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." : "Čini se da se ova %s instanca izvodi u 32-bitnom PHP okruženju, a open_basedir je konfiguriran u php.ini. To će dovesti do problema s datotekama većim od 4 GB i stoga se ne preporučuje.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Uklonite postavku open_basedir iz datoteke php.ini ili se prebacite na 64-bitni PHP.",
+ "Set an admin username." : "Postavite korisničko ime administratora.",
+ "Set an admin password." : "Postavite zaporku administratora.",
+ "Can't create or write into the data directory %s" : "Nije moguće stvoriti ili pisati u direktorij s podacima %s",
+ "Invalid Federated Cloud ID" : "Nevažeći ID udruženog oblaka",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Pozadina za dijeljenje %s mora implementirati sučelje OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Pozadina za dijeljenje %s nije pronađena",
+ "Sharing backend for %s not found" : "Pozadina za dijeljenje za %s nije pronađena",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s dijeli »%2$s« s vama i želi dodati:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s dijeli »%2$s« s vama i želi dodati",
+ "»%s« added a note to a file shared with you" : "»%s« je dodao bilješku datoteci koju dijeli s vama",
+ "Open »%s«" : "Otvori »%s«",
+ "%1$s via %2$s" : "%1$s putem %2$s",
"You are not allowed to share %s" : "Nije vam dopušteno dijeliti %s",
- "Could not find category \"%s\"" : "Kategorija \"%s\" nije nađena",
+ "Can’t increase permissions of %s" : "Nije moguće povećati dopuštenja za %s",
+ "Files can’t be shared with delete permissions" : "Datoteke se ne mogu dijeliti s dopuštenjima za brisanje",
+ "Files can’t be shared with create permissions" : "Datoteke se ne mogu dijeliti s dopuštenjima za stvaranje",
+ "Expiration date is in the past" : "Datum isteka je u prošlosti",
+ "Can’t set expiration date more than %s days in the future" : "Ne može se postaviti datum isteka više od %s dana u budućnosti",
+ "%1$s shared »%2$s« with you" : "%1$s dijeli »%2$s« s vama",
+ "%1$s shared »%2$s« with you." : "%1$s dijeli »%2$s« s vama.",
+ "Click the button below to open it." : "Kliknite gumb u nastavku za otvaranje.",
+ "The requested share does not exist anymore" : "Zatraženo dijeljenje više ne postoji",
+ "Could not find category \"%s\"" : "Kategorija „%s” nije pronađena",
+ "Sunday" : "Nedjelja",
+ "Monday" : "Ponedjeljak",
+ "Tuesday" : "Utorak",
+ "Wednesday" : "Srijeda",
+ "Thursday" : "Četvrtak",
+ "Friday" : "Petak",
+ "Saturday" : "Subota",
+ "Sun." : "Ned.",
+ "Mon." : "Pon.",
+ "Tue." : "Uto.",
+ "Wed." : "Sri.",
+ "Thu." : "Čet.",
+ "Fri." : "Pet.",
+ "Sat." : "Sub.",
+ "Su" : "Ne.",
+ "Mo" : "Po.",
+ "Tu" : "Ut.",
+ "We" : "Sr.",
+ "Th" : "Če.",
+ "Fr" : "Pe.",
+ "Sa" : "Su.",
+ "January" : "Siječanj",
+ "February" : "Veljača",
+ "March" : "Ožujak",
+ "April" : "Travanj",
+ "May" : "Svibanj",
+ "June" : "Lipanj",
+ "July" : "Srpanj",
+ "August" : "Kolovoz",
+ "September" : "Rujan",
+ "October" : "Listopad",
+ "November" : "Studeni",
+ "December" : "Prosinac",
+ "Jan." : "Sij.",
+ "Feb." : "Velj.",
+ "Mar." : "Ožu.",
+ "Apr." : "Tra.",
+ "May." : "Svi.",
+ "Jun." : "Lip.",
+ "Jul." : "Srp.",
+ "Aug." : "Kol.",
+ "Sep." : "Ruj.",
+ "Oct." : "Lis.",
+ "Nov." : "Stu.",
+ "Dec." : "Pro.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "U korisničkom imenu dopušteni su samo sljedeći znakovi: „a – z”, „A – Z”, „0 – 9” i „_.@-'”",
"A valid username must be provided" : "Nužno je navesti ispravno korisničko ime",
- "A valid password must be provided" : "Nužno je navesti ispravnu lozinku",
+ "Username contains whitespace at the beginning or at the end" : "Korisničko ime sadrži bijeli prostor na početku ili na kraju",
+ "Username must not consist of dots only" : "Korisničko ime ne smije se sastojati samo od točkica",
+ "A valid password must be provided" : "Nužno je navesti ispravnu zaporku",
"The username is already being used" : "Korisničko ime se već koristi",
- "Application is not enabled" : "Aplikacija nije aktivirana",
- "Authentication error" : "Pogrešna autentikacija",
- "Token expired. Please reload page." : "Token je istekao. Molimo, ponovno učitajte stranicu.",
- "No database drivers (sqlite, mysql, or postgresql) installed." : "Pogonski programi baze podataka (sqlite, mysql, ili postgresql) nisu instalirani.",
- "Cannot write into \"config\" directory" : "Nije moguće zapisivati u \"config\" direktorij",
- "Cannot write into \"apps\" directory" : "Nije moguće zapisivati u \"apps\" direktorij",
- "Setting locale to %s failed" : "Postavljanje regionalne sheme u %s nije uspjelo",
- "Please install one of these locales on your system and restart your webserver." : "Molimo instalirajte jednu od ovih regionalnih shema u svoj sustav i ponovno pokrenite svoj web poslužitelj.",
- "Please ask your server administrator to install the module." : "Molimo zamolite svog administratora poslužitelja da instalira modul.",
+ "Could not create user" : "Nije moguće stvoriti korisnika",
+ "User disabled" : "Korisnik je onemogućen",
+ "Login canceled by app" : "Prijava je otkazana putem aplikacije",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikaciju „%1$s” nije moguće instalirati jer nisu ispunjene sljedeće ovisnosti: %2$s",
+ "a safe home for all your data" : "siguran dom za sve vaše podatke",
+ "File is currently busy, please try again later" : "Datoteka je trenutno zauzeta, pokušajte ponovo kasnije",
+ "Can't read file" : "Datoteka se ne može pročitati",
+ "Application is not enabled" : "Aplikacija nije omogućena",
+ "Authentication error" : "Pogrešna autentifikacija",
+ "Token expired. Please reload page." : "Token je istekao. Ponovno učitajte stranicu.",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Nisu instalirani upravljački programi baze podataka (sqlite, mysql ili postgresql).",
+ "Cannot write into \"config\" directory" : "Pisanje u direktorij „config” nije moguće",
+ "Cannot write into \"apps\" directory" : "Nije moguće pisati u direktorij „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" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s",
+ "Cannot create \"data\" directory" : "Nije moguće stvoriti direktorij „data”",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Dopuštenja se obično mogu popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s.",
+ "Setting locale to %s failed" : "Neuspješno postavljanje regionalne sheme na %s",
+ "Please install one of these locales on your system and restart your webserver." : "Instalirajte jednu od ovih regionalnih shema u svoj sustav i ponovno pokrenite svoj web poslužitelj.",
+ "Please ask your server administrator to install the module." : "Zamolite svog administratora poslužitelja da instalira modul.",
"PHP module %s not installed." : "PHP modul %s nije instaliran.",
- "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemoriranja kao što je Zend OPcache ilieAccelerator.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP postavka „%s” nije postavljena na „%s”.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Podešavanjem ove postavke u php.ini možete ponovno pokrenuti Nextcloud",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je postavljen na „%s” umjesto očekivane vrijednosti „0”",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Kako biste riješili ovaj problem, postavite <code>mbstring.func_overload</code> na <code>0</code> u datoteci php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Potreban je barem Libxml2 2.7.0. Trenutno je instalirana inačica %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "Kako biste riješili ovaj problem, ažurirajte svoju inačicu libxml2 i ponovno pokrenite web poslužitelj.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je očigledno postavljen za uklanjanje inline doc blokova. Zbog toga će nekoliko osnovnih aplikacija biti nedostupne.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemoriranja kao što je Zend OPcache ili eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP moduli su instalirani, ali još uvijek su na popisu onih koji nedostaju?",
- "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.",
+ "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.",
"PostgreSQL >= 9 required" : "Potreban je PostgreSQL >= 9",
- "Please upgrade your database version" : "Molimo, ažurirajte svoju verziju baze podataka",
- "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Molimo promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici",
- "Could not obtain lock type %d on \"%s\"." : "Nije moguće dobiti lock tip %d na \"%s\".",
+ "Please upgrade your database version" : "Ažurirajte svoju inačicu baze podataka",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici.",
+ "Your data directory is readable by other users" : "Vaš podatkovni direktorij mogu čitati drugi korisnici",
+ "Your data directory must be an absolute path" : "Vaš podatkovni direktorij mora imati apsolutni put",
+ "Check the value of \"datadirectory\" in your configuration" : "Provjerite vrijednost „datadirectory” u svojoj konfiguraciji",
+ "Your data directory is invalid" : "Vaš je podatkovni direktorij nevažeći",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Provjerite postoji li datoteka pod nazivom „.ocdata” u korijenu podatkovnog direktorija.",
+ "Action \"%s\" not supported or implemented." : "Radnja „%s” nije podržana ili provedena.",
+ "Authentication failed, wrong token or provider ID given" : "Autentifikacija nije uspjela, dan je pogrešan token ili ID davatelja usluge",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Nedostaju parametri za ispunjavanje zahtjeva. Nedostaju parametri: „%s”",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID „%1$s” već koristi davatelj usluga udruženog oblaka „%2$s”",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Davatelj usluga udruženog oblaka s ID-om: „%s” ne postoji.",
+ "Could not obtain lock type %d on \"%s\"." : "Nije moguće dobiti vrstu zaključavanja %d na „%s”.",
+ "Storage unauthorized. %s" : "Neovlaštena pohrana. %s",
+ "Storage incomplete configuration. %s" : "Nepotpuna konfiguracija pohrane. %s",
+ "Storage connection error. %s" : "Pogreška veze pohrane. %s",
+ "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
+ "Storage connection timeout. %s" : "Istek veze pohrane. %s",
+ "Create" : "Stvori",
+ "Change" : "Promijeni",
+ "Delete" : "Izbriši",
+ "Share" : "Dijeli",
+ "Unlimited" : "Neograničeno",
+ "Verifying" : "Provjeravanje",
+ "Verifying …" : "Provjeravanje…",
+ "Verify" : "Provjeri",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Dijeljenje %s nije uspjelo jer pozadina ne dopušta dijeljenja iz vrste %i",
"Sharing %s failed, because the file does not exist" : "Dijeljenje %s nije uspjelo jer ta datoteka ne postoji",
- "Sharing %s failed, because the user %s does not exist" : "Dijeljenje %s nije uspjelo jer korisnik %s ne postoji",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Dijeljenje %s nije uspjelo jer korisnik %s nije član niti jedne grupe u kojoj je %s član",
- "Sharing %s failed, because this item is already shared with %s" : "Dijeljenje %s nije uspjelo jer je ova stavka već podijeljena s %s",
- "Sharing %s failed, because the group %s does not exist" : "Dijeljenje %s nije uspjelo jer grupa %s ne postoji",
- "Sharing %s failed, because %s is not a member of the group %s" : "Dijeljenje %s nije uspjelo jer %s nije član grupe %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Da biste kreirali javnu vezu, morate navesti lozinku, samo zaštićene veze su dopuštene.",
- "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje s vezama nije dopušteno.",
- "Share type %s is not valid for %s" : "Tip dijeljenja %s nije dopušteni tip za %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su podijeljeni, resursi ne mogu isteći kasnije nego %s ",
+ "Sharing %s failed, because you can not share with yourself" : "Dijeljenje %s nije uspjelo jer ne možete dijeliti sa sobom",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s ne postoji",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s nije član niti jedne grupe u kojoj je %3$s član",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s korisnikom %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer grupa %2$s ne postoji",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Dijeljenje %1$s nije uspjelo jer %2$s nije član grupe %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Kako biste stvorili javnu poveznicu prvo morate navesti zaporku, dopuštene su samo zaštićene poveznice",
+ "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje putem poveznica nije dopušteno",
+ "Not allowed to create a federated share with the same user" : "Nije dopušteno stvaranje udruženog dijeljenja s istim korisnikom",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Dijeljenje %1$s nije uspjelo, nije bilo moguće pronaći %2$s, možda je poslužitelj trenutno nedostupan.",
+ "Share type %1$s is not valid for %2$s" : "Vrsta dijeljenja %1$s ne vrijedi za %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su dijeljeni, ne mogu isteći kasnije od %s",
"Cannot set expiration date. Expiration date is in the past" : "Nije moguće postaviti datum isteka. Datum isteka je u prošlosti",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Dijeljenje %s nije uspjelo jer dozvole premašuju dozvole za koje %s ima odobrenje.",
- "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno.",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Dijeljenje %s nije uspjelo jer pozadina za %s nije mogla pronaći svoj izvor",
- "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke datoteka nije nađena.",
- "%s shared »%s« with you" : "%s je s vama podijelio »%s«"
+ "Sharing failed, because the user %s is the original sharer" : "Dijeljenje nije uspjelo jer je korisnik %s izvorni dionik",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Dijeljenje %1$s nije uspjelo jer dopuštenja premašuju dopuštenja za koje %2$s ima odobrenje",
+ "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Dijeljenje %1$s nije uspjelo jer pozadina za %2$s nije mogla pronaći svoj izvor",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke nije nađena datoteka"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/lib/l10n/hr.json b/lib/l10n/hr.json
index 91f6e431719..b5d2f7950ad 100644
--- a/lib/l10n/hr.json
+++ b/lib/l10n/hr.json
@@ -1,80 +1,257 @@
{ "translations": {
- "Cannot write into \"config\" directory!" : "Pisanje u \"config\" direktoriju nije moguće!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može popraviti tako da se Web poslužitelju dopusti pristup za pisanje u config direktoriju",
- "See %s" : "Vidite %s",
- "Sample configuration detected" : "Nađena ogledna konfiguracija",
- "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" : "Otkriveno je da je ogledna konfiguracija kopirana. To može vašu instalaciju prekinuti i nije podržano.Molimo pročitajte dokumentaciju prije nego li izvršite promjene na config.php",
- "PHP %s or higher is required." : "PHP verzija treba biti %s ili viša.",
- "PHP with a version lower than %s is required." : "PHP sa verzijom manjom od %s je potrebna.",
- "Following databases are supported: %s" : "Sljedece baza podataka je podrzana: %s",
- "The library %s is not available." : "Knjiznica %s nije dostupna.",
- "Following platforms are supported: %s" : "Sljedece platforme su podrzane: %s",
+ "Cannot write into \"config\" directory!" : "Pisanje u direktorij „config” nije moguće!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može ispraviti tako da se web poslužitelju dopusti pristup za pisanje u direktoriju config",
+ "See %s" : "Pogledajte %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”.",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
+ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”. Pogledajte %s",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Datoteke aplikacije %1$s nisu ispravno zamijenjene. Provjerite je li inačica kompatibilna s poslužiteljem.",
+ "Sample configuration detected" : "Pronađena ogledna konfiguracija",
+ "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" : "Otkriveno je kopiranje ogledne konfiguracije. To može dovesti do poteškoća u radu vaše instalacije i nije podržano. Pročitajte dokumentaciju prije nego što izvršite promjene u config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
+ "Education Edition" : "Obrazovno izdanje",
+ "Enterprise bundle" : "Enterprise paket",
+ "Groupware bundle" : "Paket grupnog softvera",
+ "Social sharing bundle" : "Paket dijeljenja na društvenim mrežama",
+ "PHP %s or higher is required." : "PHP inačica treba biti %s ili viša.",
+ "PHP with a version lower than %s is required." : "Potreban je PHP inačice manje od %s.",
+ "%sbit or higher PHP required." : "Potreban je %s-bitni ili viši PHP.",
+ "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
+ "The command line tool %s could not be found" : "Alat naredbenog retka %s nije pronađen",
+ "The library %s is not available." : "Biblioteka %s nije dostupna.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice veće od %2$s – dostupna je inačica %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice manje od %2$s – dostupna je inačica %3$s.",
+ "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
+ "Server version %s or higher is required." : "Inačica poslužitelja treba biti %s ili viša.",
+ "Server version %s or lower is required." : "Potrebna je inačica poslužitelja %s ili niža.",
+ "Logged in user must be an admin or sub admin" : "Prijavljeni korisnik mora biti administrator ili podadministrator",
+ "Logged in user must be an admin" : "Korisnik koji je prijavljen mora biti administrator",
+ "Wiping of device %s has started" : "Počelo je brisanje sadržaja s uređaja %s",
+ "Wiping of device »%s« has started" : "Počelo je brisanje sadržaja s uređaja »%s«",
+ "»%s« started remote wipe" : "»%s« je počeo daljinsko brisanje",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Uređaj ili aplikacija »%s« započela je postupak daljinskog brisanja. Primit ćete još jednu poruku e-pošte nakon završetka postupka",
+ "Wiping of device %s has finished" : "Završilo je brisanje sadržaja s uređaja %s",
+ "Wiping of device »%s« has finished" : "Završilo je brisanje sadržaja s uređaja »%s«",
+ "»%s« finished remote wipe" : "»%s« je završio daljinsko brisanje",
+ "Device or application »%s« has finished the remote wipe process." : "Uređaj ili aplikacija »%s« završila je postupak daljinskog brisanja.",
+ "Remote wipe started" : "Pokrenuto je udaljeno brisanje",
+ "A remote wipe was started on device %s" : "Pokrenuto je udaljeno brisanje na uređaju %s",
+ "Remote wipe finished" : "Udaljeno brisanje je završeno",
+ "The remote wipe on %s has finished" : "Udaljeno brisanje %s je završeno",
+ "Authentication" : "Autentifikacija",
"Unknown filetype" : "Vrsta datoteke nepoznata",
- "Invalid image" : "Neispravna slika",
- "today" : "Danas",
- "yesterday" : "Jučer",
- "last month" : "Prošli mjesec",
- "_%n month ago_::_%n months ago_" : ["prije %n mjeseca","prije %n mjeseci","prije %n mjeseci"],
- "last year" : "Prošle godine",
- "_%n hour ago_::_%n hours ago_" : ["prije %n sata","prije %n sati","prije %n sati"],
- "_%n minute ago_::_%n minutes ago_" : ["prije %n minute","prije %n minuta","prije %n minuta"],
- "seconds ago" : "prije par sekundi",
- "__language_name__" : "Hrvatski",
+ "Invalid image" : "Slika neispravna",
+ "Avatar image is not square" : "Slika avatara nije kvadratna",
+ "today" : "danas",
+ "tomorrow" : "sutra",
+ "yesterday" : "jučer",
+ "_in %n day_::_in %n days_" : ["za %n dan","za %n dana","za %n dana"],
+ "_%n day ago_::_%n days ago_" : ["Prije %n dana","Prije %n dana","Prije %n dana"],
+ "next month" : "sljedeći mjesec",
+ "last month" : "prošli mjesec",
+ "_in %n month_::_in %n months_" : ["za %n mjesec","za %n mjeseci","za %n mjeseci"],
+ "_%n month ago_::_%n months ago_" : ["prije %n mjeseci","prije %n mjeseci","prije %n mjeseci"],
+ "next year" : "sljedeće godine",
+ "last year" : "prošle godine",
+ "_in %n year_::_in %n years_" : ["za %n godinu","za %n godina","za %n godina"],
+ "_%n year ago_::_%n years ago_" : ["Prije %n godine","Prije %n godina","Prije %n godina"],
+ "_in %n hour_::_in %n hours_" : ["za %n sat","za %n sati","za %n sati"],
+ "_%n hour ago_::_%n hours ago_" : ["Prije %n sata","Prije %n sati","Prije %n sati"],
+ "_in %n minute_::_in %n minutes_" : ["za %n minutu","za %n minuta","za %n minuta"],
+ "_%n minute ago_::_%n minutes ago_" : ["Prije %n minute","Prije %n minuta","Prije %n minuta"],
+ "in a few seconds" : "za nekoliko sekundi",
+ "seconds ago" : "prije nekoliko sekundi",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID-om: %s ne postoji. Omogućite ga u postavkama svojih aplikacija ili se obratite administratoru.",
+ "File name is a reserved word" : "Naziv datoteke je rezervirana riječ",
+ "File name contains at least one invalid character" : "Naziv datoteke sadrži barem jedan nevažeći znak",
+ "File name is too long" : "Naziv datoteke je predugačak",
+ "Dot files are not allowed" : "Datoteke s točkama nisu dopuštene",
+ "Empty filename is not allowed" : "Datoteke bez naziva nisu dopuštene",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikaciju „%s” nije moguće instalirati jer se ne može pročitati datoteka s podacima o aplikaciji.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikaciju „%s” nije moguće instalirati jer nije kompatibilna s ovom inačicom poslužitelja.",
+ "__language_name__" : "__language_name__",
+ "This is an automatically sent email, please do not reply." : "Ovo je automatski poslana poruka e-pošte, nemojte odgovarati.",
+ "Help" : "Pomoć",
"Apps" : "Aplikacije",
+ "Settings" : "Postavke",
+ "Log out" : "Odjava",
"Users" : "Korisnici",
- "Unknown user" : "Korisnik nepoznat",
- "%s enter the database username." : "%s unesite naziva korisnika baze podataka.",
- "%s enter the database name." : "%s unesite naziv baze podataka",
+ "Unknown user" : "Nepoznat korisnik",
+ "Overview" : "Pregled",
+ "Basic settings" : "Osnovne postavke",
+ "Sharing" : "Dijeljenje",
+ "Security" : "Sigurnost",
+ "Groupware" : "Groupware",
+ "Additional settings" : "Dodatne postavke",
+ "Personal info" : "Osobne informacije",
+ "Mobile & desktop" : "Mobilni uređaji i osobna računala",
+ "%s enter the database username and name." : "%s unesite korisničko ime i naziv baze podataka.",
+ "%s enter the database username." : "%s unesite korisničko ime baze podataka.",
+ "%s enter the database name." : "%s unesite naziv baze podataka.",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
- "Oracle connection could not be established" : "Vezu Oracle nije moguće uspostaviti",
- "Oracle username and/or password not valid" : "Korisničko ime i/ili lozinka Oracle neispravni",
- "PostgreSQL username and/or password not valid" : "Korisničko ime i/ili lozinka PostgreSQL neispravni",
- "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.",
- "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Molimo uklonite postavke za open_basedir setting iz datoteke php.ini ili se prebacite na 64-bitni PHP.",
- "Set an admin username." : "Navedite admin korisničko ime.",
- "Set an admin password." : "Navedite admin lozinku.",
- "Can't create or write into the data directory %s" : "Ne moze se kreirati ili napisati u imenik podataka %s",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Dijeljenje pozadine %s mora implementirati sučelje OCP\\Share_Backend",
- "Sharing backend %s not found" : "Dijeljenje pozadine %s nije nađeno",
- "Sharing backend for %s not found" : "Dijeljenje pozadine za %s nije nađeno",
+ "Oracle connection could not be established" : "Nije moguće uspostaviti vezu s bazom podataka Oracle",
+ "Oracle username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka Oracle",
+ "PostgreSQL username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka PostgreSQL",
+ "You need to enter details of an existing account." : "Trebate unijeti informacije o postojećem računu.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba. Koristite na vlastiti rizik!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate razmotrite mogućnost korištenja poslužitelja GNU/Linux.",
+ "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." : "Čini se da se ova %s instanca izvodi u 32-bitnom PHP okruženju, a open_basedir je konfiguriran u php.ini. To će dovesti do problema s datotekama većim od 4 GB i stoga se ne preporučuje.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Uklonite postavku open_basedir iz datoteke php.ini ili se prebacite na 64-bitni PHP.",
+ "Set an admin username." : "Postavite korisničko ime administratora.",
+ "Set an admin password." : "Postavite zaporku administratora.",
+ "Can't create or write into the data directory %s" : "Nije moguće stvoriti ili pisati u direktorij s podacima %s",
+ "Invalid Federated Cloud ID" : "Nevažeći ID udruženog oblaka",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Pozadina za dijeljenje %s mora implementirati sučelje OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Pozadina za dijeljenje %s nije pronađena",
+ "Sharing backend for %s not found" : "Pozadina za dijeljenje za %s nije pronađena",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s dijeli »%2$s« s vama i želi dodati:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s dijeli »%2$s« s vama i želi dodati",
+ "»%s« added a note to a file shared with you" : "»%s« je dodao bilješku datoteci koju dijeli s vama",
+ "Open »%s«" : "Otvori »%s«",
+ "%1$s via %2$s" : "%1$s putem %2$s",
"You are not allowed to share %s" : "Nije vam dopušteno dijeliti %s",
- "Could not find category \"%s\"" : "Kategorija \"%s\" nije nađena",
+ "Can’t increase permissions of %s" : "Nije moguće povećati dopuštenja za %s",
+ "Files can’t be shared with delete permissions" : "Datoteke se ne mogu dijeliti s dopuštenjima za brisanje",
+ "Files can’t be shared with create permissions" : "Datoteke se ne mogu dijeliti s dopuštenjima za stvaranje",
+ "Expiration date is in the past" : "Datum isteka je u prošlosti",
+ "Can’t set expiration date more than %s days in the future" : "Ne može se postaviti datum isteka više od %s dana u budućnosti",
+ "%1$s shared »%2$s« with you" : "%1$s dijeli »%2$s« s vama",
+ "%1$s shared »%2$s« with you." : "%1$s dijeli »%2$s« s vama.",
+ "Click the button below to open it." : "Kliknite gumb u nastavku za otvaranje.",
+ "The requested share does not exist anymore" : "Zatraženo dijeljenje više ne postoji",
+ "Could not find category \"%s\"" : "Kategorija „%s” nije pronađena",
+ "Sunday" : "Nedjelja",
+ "Monday" : "Ponedjeljak",
+ "Tuesday" : "Utorak",
+ "Wednesday" : "Srijeda",
+ "Thursday" : "Četvrtak",
+ "Friday" : "Petak",
+ "Saturday" : "Subota",
+ "Sun." : "Ned.",
+ "Mon." : "Pon.",
+ "Tue." : "Uto.",
+ "Wed." : "Sri.",
+ "Thu." : "Čet.",
+ "Fri." : "Pet.",
+ "Sat." : "Sub.",
+ "Su" : "Ne.",
+ "Mo" : "Po.",
+ "Tu" : "Ut.",
+ "We" : "Sr.",
+ "Th" : "Če.",
+ "Fr" : "Pe.",
+ "Sa" : "Su.",
+ "January" : "Siječanj",
+ "February" : "Veljača",
+ "March" : "Ožujak",
+ "April" : "Travanj",
+ "May" : "Svibanj",
+ "June" : "Lipanj",
+ "July" : "Srpanj",
+ "August" : "Kolovoz",
+ "September" : "Rujan",
+ "October" : "Listopad",
+ "November" : "Studeni",
+ "December" : "Prosinac",
+ "Jan." : "Sij.",
+ "Feb." : "Velj.",
+ "Mar." : "Ožu.",
+ "Apr." : "Tra.",
+ "May." : "Svi.",
+ "Jun." : "Lip.",
+ "Jul." : "Srp.",
+ "Aug." : "Kol.",
+ "Sep." : "Ruj.",
+ "Oct." : "Lis.",
+ "Nov." : "Stu.",
+ "Dec." : "Pro.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "U korisničkom imenu dopušteni su samo sljedeći znakovi: „a – z”, „A – Z”, „0 – 9” i „_.@-'”",
"A valid username must be provided" : "Nužno je navesti ispravno korisničko ime",
- "A valid password must be provided" : "Nužno je navesti ispravnu lozinku",
+ "Username contains whitespace at the beginning or at the end" : "Korisničko ime sadrži bijeli prostor na početku ili na kraju",
+ "Username must not consist of dots only" : "Korisničko ime ne smije se sastojati samo od točkica",
+ "A valid password must be provided" : "Nužno je navesti ispravnu zaporku",
"The username is already being used" : "Korisničko ime se već koristi",
- "Application is not enabled" : "Aplikacija nije aktivirana",
- "Authentication error" : "Pogrešna autentikacija",
- "Token expired. Please reload page." : "Token je istekao. Molimo, ponovno učitajte stranicu.",
- "No database drivers (sqlite, mysql, or postgresql) installed." : "Pogonski programi baze podataka (sqlite, mysql, ili postgresql) nisu instalirani.",
- "Cannot write into \"config\" directory" : "Nije moguće zapisivati u \"config\" direktorij",
- "Cannot write into \"apps\" directory" : "Nije moguće zapisivati u \"apps\" direktorij",
- "Setting locale to %s failed" : "Postavljanje regionalne sheme u %s nije uspjelo",
- "Please install one of these locales on your system and restart your webserver." : "Molimo instalirajte jednu od ovih regionalnih shema u svoj sustav i ponovno pokrenite svoj web poslužitelj.",
- "Please ask your server administrator to install the module." : "Molimo zamolite svog administratora poslužitelja da instalira modul.",
+ "Could not create user" : "Nije moguće stvoriti korisnika",
+ "User disabled" : "Korisnik je onemogućen",
+ "Login canceled by app" : "Prijava je otkazana putem aplikacije",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikaciju „%1$s” nije moguće instalirati jer nisu ispunjene sljedeće ovisnosti: %2$s",
+ "a safe home for all your data" : "siguran dom za sve vaše podatke",
+ "File is currently busy, please try again later" : "Datoteka je trenutno zauzeta, pokušajte ponovo kasnije",
+ "Can't read file" : "Datoteka se ne može pročitati",
+ "Application is not enabled" : "Aplikacija nije omogućena",
+ "Authentication error" : "Pogrešna autentifikacija",
+ "Token expired. Please reload page." : "Token je istekao. Ponovno učitajte stranicu.",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Nisu instalirani upravljački programi baze podataka (sqlite, mysql ili postgresql).",
+ "Cannot write into \"config\" directory" : "Pisanje u direktorij „config” nije moguće",
+ "Cannot write into \"apps\" directory" : "Nije moguće pisati u direktorij „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" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s",
+ "Cannot create \"data\" directory" : "Nije moguće stvoriti direktorij „data”",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Dopuštenja se obično mogu popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s.",
+ "Setting locale to %s failed" : "Neuspješno postavljanje regionalne sheme na %s",
+ "Please install one of these locales on your system and restart your webserver." : "Instalirajte jednu od ovih regionalnih shema u svoj sustav i ponovno pokrenite svoj web poslužitelj.",
+ "Please ask your server administrator to install the module." : "Zamolite svog administratora poslužitelja da instalira modul.",
"PHP module %s not installed." : "PHP modul %s nije instaliran.",
- "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemoriranja kao što je Zend OPcache ilieAccelerator.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP postavka „%s” nije postavljena na „%s”.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Podešavanjem ove postavke u php.ini možete ponovno pokrenuti Nextcloud",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je postavljen na „%s” umjesto očekivane vrijednosti „0”",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Kako biste riješili ovaj problem, postavite <code>mbstring.func_overload</code> na <code>0</code> u datoteci php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Potreban je barem Libxml2 2.7.0. Trenutno je instalirana inačica %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "Kako biste riješili ovaj problem, ažurirajte svoju inačicu libxml2 i ponovno pokrenite web poslužitelj.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je očigledno postavljen za uklanjanje inline doc blokova. Zbog toga će nekoliko osnovnih aplikacija biti nedostupne.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemoriranja kao što je Zend OPcache ili eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP moduli su instalirani, ali još uvijek su na popisu onih koji nedostaju?",
- "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.",
+ "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.",
"PostgreSQL >= 9 required" : "Potreban je PostgreSQL >= 9",
- "Please upgrade your database version" : "Molimo, ažurirajte svoju verziju baze podataka",
- "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Molimo promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici",
- "Could not obtain lock type %d on \"%s\"." : "Nije moguće dobiti lock tip %d na \"%s\".",
+ "Please upgrade your database version" : "Ažurirajte svoju inačicu baze podataka",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici.",
+ "Your data directory is readable by other users" : "Vaš podatkovni direktorij mogu čitati drugi korisnici",
+ "Your data directory must be an absolute path" : "Vaš podatkovni direktorij mora imati apsolutni put",
+ "Check the value of \"datadirectory\" in your configuration" : "Provjerite vrijednost „datadirectory” u svojoj konfiguraciji",
+ "Your data directory is invalid" : "Vaš je podatkovni direktorij nevažeći",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Provjerite postoji li datoteka pod nazivom „.ocdata” u korijenu podatkovnog direktorija.",
+ "Action \"%s\" not supported or implemented." : "Radnja „%s” nije podržana ili provedena.",
+ "Authentication failed, wrong token or provider ID given" : "Autentifikacija nije uspjela, dan je pogrešan token ili ID davatelja usluge",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Nedostaju parametri za ispunjavanje zahtjeva. Nedostaju parametri: „%s”",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID „%1$s” već koristi davatelj usluga udruženog oblaka „%2$s”",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Davatelj usluga udruženog oblaka s ID-om: „%s” ne postoji.",
+ "Could not obtain lock type %d on \"%s\"." : "Nije moguće dobiti vrstu zaključavanja %d na „%s”.",
+ "Storage unauthorized. %s" : "Neovlaštena pohrana. %s",
+ "Storage incomplete configuration. %s" : "Nepotpuna konfiguracija pohrane. %s",
+ "Storage connection error. %s" : "Pogreška veze pohrane. %s",
+ "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
+ "Storage connection timeout. %s" : "Istek veze pohrane. %s",
+ "Create" : "Stvori",
+ "Change" : "Promijeni",
+ "Delete" : "Izbriši",
+ "Share" : "Dijeli",
+ "Unlimited" : "Neograničeno",
+ "Verifying" : "Provjeravanje",
+ "Verifying …" : "Provjeravanje…",
+ "Verify" : "Provjeri",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Dijeljenje %s nije uspjelo jer pozadina ne dopušta dijeljenja iz vrste %i",
"Sharing %s failed, because the file does not exist" : "Dijeljenje %s nije uspjelo jer ta datoteka ne postoji",
- "Sharing %s failed, because the user %s does not exist" : "Dijeljenje %s nije uspjelo jer korisnik %s ne postoji",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Dijeljenje %s nije uspjelo jer korisnik %s nije član niti jedne grupe u kojoj je %s član",
- "Sharing %s failed, because this item is already shared with %s" : "Dijeljenje %s nije uspjelo jer je ova stavka već podijeljena s %s",
- "Sharing %s failed, because the group %s does not exist" : "Dijeljenje %s nije uspjelo jer grupa %s ne postoji",
- "Sharing %s failed, because %s is not a member of the group %s" : "Dijeljenje %s nije uspjelo jer %s nije član grupe %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Da biste kreirali javnu vezu, morate navesti lozinku, samo zaštićene veze su dopuštene.",
- "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje s vezama nije dopušteno.",
- "Share type %s is not valid for %s" : "Tip dijeljenja %s nije dopušteni tip za %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su podijeljeni, resursi ne mogu isteći kasnije nego %s ",
+ "Sharing %s failed, because you can not share with yourself" : "Dijeljenje %s nije uspjelo jer ne možete dijeliti sa sobom",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s ne postoji",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s nije član niti jedne grupe u kojoj je %3$s član",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s korisnikom %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer grupa %2$s ne postoji",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Dijeljenje %1$s nije uspjelo jer %2$s nije član grupe %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Kako biste stvorili javnu poveznicu prvo morate navesti zaporku, dopuštene su samo zaštićene poveznice",
+ "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje putem poveznica nije dopušteno",
+ "Not allowed to create a federated share with the same user" : "Nije dopušteno stvaranje udruženog dijeljenja s istim korisnikom",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Dijeljenje %1$s nije uspjelo, nije bilo moguće pronaći %2$s, možda je poslužitelj trenutno nedostupan.",
+ "Share type %1$s is not valid for %2$s" : "Vrsta dijeljenja %1$s ne vrijedi za %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su dijeljeni, ne mogu isteći kasnije od %s",
"Cannot set expiration date. Expiration date is in the past" : "Nije moguće postaviti datum isteka. Datum isteka je u prošlosti",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Dijeljenje %s nije uspjelo jer dozvole premašuju dozvole za koje %s ima odobrenje.",
- "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno.",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Dijeljenje %s nije uspjelo jer pozadina za %s nije mogla pronaći svoj izvor",
- "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke datoteka nije nađena.",
- "%s shared »%s« with you" : "%s je s vama podijelio »%s«"
+ "Sharing failed, because the user %s is the original sharer" : "Dijeljenje nije uspjelo jer je korisnik %s izvorni dionik",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Dijeljenje %1$s nije uspjelo jer dopuštenja premašuju dopuštenja za koje %2$s ima odobrenje",
+ "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Dijeljenje %1$s nije uspjelo jer pozadina za %2$s nije mogla pronaći svoj izvor",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke nije nađena datoteka"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 110e28cee2b..7208d92789d 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -211,8 +211,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Tároló kapcsolódási hiba. %s",
"Storage is temporarily not available" : "A tároló átmenetileg nem érthető el",
"Storage connection timeout. %s" : "Tároló kapcsolat időtúllépés. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s könyvtár %s vagy újabb verziója szükséges - elérhető verzió: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s könyvtár %s vagy régebbi verziója szükséges - elérhető verzió: %s.",
"Create" : "Létrehozás",
"Change" : "Változtatás",
"Delete" : "Törlés",
@@ -224,38 +222,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
"Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
"Sharing %s failed, because you can not share with yourself" : "%s megosztása sikertelen, mert magaddal nem oszthatod meg",
- "Sharing %s failed, because the user %s does not exist" : "%s megosztása nem sikerült, mert %s felhasználó nem létezik",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja egyik olyan csoportnak sem, aminek %s tagja",
- "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva %s-vel",
- "Sharing %s failed, because this item is already shared with user %s" : "%s megosztása sikertelen, mert már meg van osztva %s felhasználóval",
- "Sharing %s failed, because the group %s does not exist" : "%s megosztása nem sikerült, mert %s csoport nem létezik",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja a %s csoportnak",
- "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
- "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
- "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető.",
- "Share type %s is not valid for %s" : "A %s megosztási típus nem érvényes %s-re",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
- "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %s rendelkezésére áll",
- "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
- "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",
- "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
- "%s shared »%s« with you." : "%s megosztotta »%s«-t veled.",
- "%s via %s" : "%s - %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" alkalmazás nem lehet telepíteni, mert a következő függőségek nincsenek kielégítve: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" már hasznalatban van a Felhő szolgáltatónál: \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem létezik",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja egyik olyan csoportnak sem, aminek %3$s tagja",
"Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s megosztása nem sikerült, mert ez már meg van osztva vele: %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s megosztása sikertelen, mert már meg van osztva %2$s felhasználóval",
"Sharing %1$s failed, because the group %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s csoport nem létezik",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja a %3$s csoportnak",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s megosztása sikertelen, mert %2$s nem található; talán a szerver jelenleg nem elérhető.",
"Share type %1$s is not valid for %2$s" : "A %1$s megosztási típus nem érvényes %2$s-re",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
+ "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
+ "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %2$s rendelkezésére áll",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$s megosztási alrendszere nem találja"
+ "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index 525a455b628..38f72d2ac92 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -209,8 +209,6 @@
"Storage connection error. %s" : "Tároló kapcsolódási hiba. %s",
"Storage is temporarily not available" : "A tároló átmenetileg nem érthető el",
"Storage connection timeout. %s" : "Tároló kapcsolat időtúllépés. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s könyvtár %s vagy újabb verziója szükséges - elérhető verzió: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s könyvtár %s vagy régebbi verziója szükséges - elérhető verzió: %s.",
"Create" : "Létrehozás",
"Change" : "Változtatás",
"Delete" : "Törlés",
@@ -222,38 +220,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
"Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
"Sharing %s failed, because you can not share with yourself" : "%s megosztása sikertelen, mert magaddal nem oszthatod meg",
- "Sharing %s failed, because the user %s does not exist" : "%s megosztása nem sikerült, mert %s felhasználó nem létezik",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja egyik olyan csoportnak sem, aminek %s tagja",
- "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva %s-vel",
- "Sharing %s failed, because this item is already shared with user %s" : "%s megosztása sikertelen, mert már meg van osztva %s felhasználóval",
- "Sharing %s failed, because the group %s does not exist" : "%s megosztása nem sikerült, mert %s csoport nem létezik",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja a %s csoportnak",
- "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
- "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
- "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető.",
- "Share type %s is not valid for %s" : "A %s megosztási típus nem érvényes %s-re",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
- "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %s rendelkezésére áll",
- "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
- "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",
- "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
- "%s shared »%s« with you." : "%s megosztotta »%s«-t veled.",
- "%s via %s" : "%s - %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" alkalmazás nem lehet telepíteni, mert a következő függőségek nincsenek kielégítve: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" már hasznalatban van a Felhő szolgáltatónál: \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem létezik",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja egyik olyan csoportnak sem, aminek %3$s tagja",
"Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s megosztása nem sikerült, mert ez már meg van osztva vele: %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s megosztása sikertelen, mert már meg van osztva %2$s felhasználóval",
"Sharing %1$s failed, because the group %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s csoport nem létezik",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja a %3$s csoportnak",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s megosztása sikertelen, mert %2$s nem található; talán a szerver jelenleg nem elérhető.",
"Share type %1$s is not valid for %2$s" : "A %1$s megosztási típus nem érvényes %2$s-re",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
+ "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
+ "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %2$s rendelkezésére áll",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$s megosztási alrendszere nem találja"
+ "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/id.js b/lib/l10n/id.js
index 8593e299c64..d389647d3e5 100644
--- a/lib/l10n/id.js
+++ b/lib/l10n/id.js
@@ -100,31 +100,16 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s",
"Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s",
"Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih tinggi dari %s - versi yang tersedia %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih rendah dari %s - versi yang tersedia %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Gagal berbagi %s, karena backend tidak mengizinkan berbagi dengan tipe %i",
"Sharing %s failed, because the file does not exist" : "Gagal membagikan %s, karena berkas tidak ada",
"Sharing %s failed, because you can not share with yourself" : "Berbagi %s gagal, karena Anda tidak dapat berbagi dengan diri sendiri",
- "Sharing %s failed, because the user %s does not exist" : "Gagal membagikan %s, karena pengguna %s tidak ada",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Gagal membagikan %s, karena pengguna %s bukan merupakan anggota dari grup yang %s ikuti",
- "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Berbagi %s gagal karena item ini sudah dibagikan dengan pengguna %s",
- "Sharing %s failed, because the group %s does not exist" : "Gagal membagikan %s, karena grup %s tidak ada",
- "Sharing %s failed, because %s is not a member of the group %s" : "Gagal membagikan %s, karena %s bukan anggota dari grup %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan kata sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan",
"Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.",
- "Share type %s is not valid for %s" : "Barbagi tipe %s tidak sah untuk %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Tidak dapat menyetel tanggal kadaluarsa. Pembagian tidak dapat kadaluarsa lebih lambat dari %s setelah mereka dibagikan.",
"Cannot set expiration date. Expiration date is in the past" : "Tidak dapat menyetel tanggal kadaluarsa. Tanggal kadaluarsa dimasa lalu",
"Sharing failed, because the user %s is the original sharer" : "Berbagi gagal, karena pengguna %s adalah pembagi awal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Gagal membagikan %s, karena izin melebihi izin yang diberikan untuk %s",
"Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Berbagi %s gagal, karena backend berbagi untuk %s tidak menemukan sumbernya",
- "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache",
- "%s shared »%s« with you" : "%s membagikan »%s« dengan anda",
- "%s via %s" : "%s melalui %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "aplikasi \"%s\" tidak dapat dipasang karena dependensi berikut belum terpenuhi: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/id.json b/lib/l10n/id.json
index 6904db68118..cd44340029a 100644
--- a/lib/l10n/id.json
+++ b/lib/l10n/id.json
@@ -98,31 +98,16 @@
"Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s",
"Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s",
"Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih tinggi dari %s - versi yang tersedia %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih rendah dari %s - versi yang tersedia %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Gagal berbagi %s, karena backend tidak mengizinkan berbagi dengan tipe %i",
"Sharing %s failed, because the file does not exist" : "Gagal membagikan %s, karena berkas tidak ada",
"Sharing %s failed, because you can not share with yourself" : "Berbagi %s gagal, karena Anda tidak dapat berbagi dengan diri sendiri",
- "Sharing %s failed, because the user %s does not exist" : "Gagal membagikan %s, karena pengguna %s tidak ada",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Gagal membagikan %s, karena pengguna %s bukan merupakan anggota dari grup yang %s ikuti",
- "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Berbagi %s gagal karena item ini sudah dibagikan dengan pengguna %s",
- "Sharing %s failed, because the group %s does not exist" : "Gagal membagikan %s, karena grup %s tidak ada",
- "Sharing %s failed, because %s is not a member of the group %s" : "Gagal membagikan %s, karena %s bukan anggota dari grup %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan kata sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan",
"Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.",
- "Share type %s is not valid for %s" : "Barbagi tipe %s tidak sah untuk %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Tidak dapat menyetel tanggal kadaluarsa. Pembagian tidak dapat kadaluarsa lebih lambat dari %s setelah mereka dibagikan.",
"Cannot set expiration date. Expiration date is in the past" : "Tidak dapat menyetel tanggal kadaluarsa. Tanggal kadaluarsa dimasa lalu",
"Sharing failed, because the user %s is the original sharer" : "Berbagi gagal, karena pengguna %s adalah pembagi awal",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Gagal membagikan %s, karena izin melebihi izin yang diberikan untuk %s",
"Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Berbagi %s gagal, karena backend berbagi untuk %s tidak menemukan sumbernya",
- "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache",
- "%s shared »%s« with you" : "%s membagikan »%s« dengan anda",
- "%s via %s" : "%s melalui %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "aplikasi \"%s\" tidak dapat dipasang karena dependensi berikut belum terpenuhi: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
index e906c578b3d..890fa201687 100644
--- a/lib/l10n/is.js
+++ b/lib/l10n/is.js
@@ -212,8 +212,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
"Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Krafist er aðgerðasafns %s með útgáfu hærri en %s - tiltæk útgáfa er %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Krafist er aðgerðasafns %s með útgáfu lægri en %s - tiltæk útgáfa er %s.",
"Create" : "Búa til",
"Change" : "Breyta",
"Delete" : "Eyða",
@@ -225,38 +223,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
"Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
"Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
- "Sharing %s failed, because the user %s does not exist" : "Deiling %s mistókst, því notandinn %s er ekki til",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deiling %s mistókst, því notandinn %s er ekki meðlimur í neinum hópi sem %s er meðlimur í",
- "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með notandanum %s",
- "Sharing %s failed, because the group %s does not exist" : "Deiling %s mistókst, því hópurinn %s er ekki til",
- "Sharing %s failed, because %s is not a member of the group %s" : "Deiling %s mistókst, því %s er ekki meðlimur í hópnum %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
- "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
- "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
- "Share type %s is not valid for %s" : "Deiling af gerðinni %s er ekki gild fyrir %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
- "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
- "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deiling %s mistókst, því heimildirnar eru rétthærri en heimildir til handa %s",
- "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",
- "%s shared »%s« with you" : "%s deildi »%s« með þér",
- "%s shared »%s« with you." : "%s deildi »%s« með þér.",
- "%s via %s" : "%s með %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Ekki var hægt að setja upp \"%s\" forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Auðkennið \"%s\" er þegar notað af skýjasambandsveitunni \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Deiling %1$s mistókst, því notandinn %2$s er ekki til",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Deiling %1$s mistókst, því notandinn %2$s er ekki meðlimur í neinum hópi sem %3$s er meðlimur í",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með notandanum %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Deiling %1$s mistókst, því hópurinn %2$s er ekki til",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Deiling %1$s mistókst, því %2$s er ekki meðlimur í hópnum %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
+ "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Deiling %1s mistókst, gat ekki fundið %2$s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
"Share type %1$s is not valid for %2$s" : "Deiling af gerðinni %1$s er ekki gild fyrir %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
+ "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
+ "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Deiling %1$s mistókst, því heimildirnar eru rétthærri en heimildir til handa %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$s fann ekki upptök þess"
+ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$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"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
index e36d64a2bc8..23ab6f729b0 100644
--- a/lib/l10n/is.json
+++ b/lib/l10n/is.json
@@ -210,8 +210,6 @@
"Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
"Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Krafist er aðgerðasafns %s með útgáfu hærri en %s - tiltæk útgáfa er %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Krafist er aðgerðasafns %s með útgáfu lægri en %s - tiltæk útgáfa er %s.",
"Create" : "Búa til",
"Change" : "Breyta",
"Delete" : "Eyða",
@@ -223,38 +221,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
"Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
"Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
- "Sharing %s failed, because the user %s does not exist" : "Deiling %s mistókst, því notandinn %s er ekki til",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deiling %s mistókst, því notandinn %s er ekki meðlimur í neinum hópi sem %s er meðlimur í",
- "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með notandanum %s",
- "Sharing %s failed, because the group %s does not exist" : "Deiling %s mistókst, því hópurinn %s er ekki til",
- "Sharing %s failed, because %s is not a member of the group %s" : "Deiling %s mistókst, því %s er ekki meðlimur í hópnum %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
- "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
- "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
- "Share type %s is not valid for %s" : "Deiling af gerðinni %s er ekki gild fyrir %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
- "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
- "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deiling %s mistókst, því heimildirnar eru rétthærri en heimildir til handa %s",
- "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",
- "%s shared »%s« with you" : "%s deildi »%s« með þér",
- "%s shared »%s« with you." : "%s deildi »%s« með þér.",
- "%s via %s" : "%s með %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Ekki var hægt að setja upp \"%s\" forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Auðkennið \"%s\" er þegar notað af skýjasambandsveitunni \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Deiling %1$s mistókst, því notandinn %2$s er ekki til",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Deiling %1$s mistókst, því notandinn %2$s er ekki meðlimur í neinum hópi sem %3$s er meðlimur í",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með notandanum %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Deiling %1$s mistókst, því hópurinn %2$s er ekki til",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Deiling %1$s mistókst, því %2$s er ekki meðlimur í hópnum %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
+ "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Deiling %1s mistókst, gat ekki fundið %2$s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
"Share type %1$s is not valid for %2$s" : "Deiling af gerðinni %1$s er ekki gild fyrir %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
+ "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
+ "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Deiling %1$s mistókst, því heimildirnar eru rétthærri en heimildir til handa %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$s fann ekki upptök þess"
+ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$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"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index 6228466e4c7..86ab93c4610 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Errore di connessione all'archiviazione. %s",
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage connection timeout. %s" : "Timeout di connessione all'archiviazione. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Richiesta una versione della libreria %s maggiore di %s - versione disponibile %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Richiesta una versione della libreria %s minore di %s - versione disponibile %s.",
"Create" : "Crea",
"Change" : "Modifica",
"Delete" : "Elimina",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Condivisione di %s non riuscita, poiché il motore non consente condivisioni del tipo %i",
"Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
"Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
- "Sharing %s failed, because the user %s does not exist" : "Condivisione di %s non riuscita, poiché l'utente %s non esiste",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Condivisione di %s non riuscita, poiché l'utente %s non appartiene ad alcun gruppo di cui %s è membro",
- "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con l'utente %s",
- "Sharing %s failed, because the group %s does not exist" : "Condivisione di %s non riuscita, poiché il gruppo %s non esiste",
- "Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
- "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
- "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La condivisione di %s non è riuscita, impossibile trovare %s, è probabile che il server non sia al momento raggiungibile.",
- "Share type %s is not valid for %s" : "Il tipo di condivisione %s non è valido per %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
- "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
- "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Condivisione di %s non riuscita, poiché i permessi superano quelli accordati a %s",
- "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",
- "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
- "%s shared »%s« with you." : "%s ha condiviso «%s» con te.",
- "%s via %s" : "%s tramite %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'applicazione \"%s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" già utilizzato dal fornitore della federazione cloud \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
+ "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
+ "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
"Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
+ "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
+ "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte"
+ "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 8a62a86a93f..3f05dd223ef 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Errore di connessione all'archiviazione. %s",
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage connection timeout. %s" : "Timeout di connessione all'archiviazione. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Richiesta una versione della libreria %s maggiore di %s - versione disponibile %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Richiesta una versione della libreria %s minore di %s - versione disponibile %s.",
"Create" : "Crea",
"Change" : "Modifica",
"Delete" : "Elimina",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Condivisione di %s non riuscita, poiché il motore non consente condivisioni del tipo %i",
"Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
"Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
- "Sharing %s failed, because the user %s does not exist" : "Condivisione di %s non riuscita, poiché l'utente %s non esiste",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Condivisione di %s non riuscita, poiché l'utente %s non appartiene ad alcun gruppo di cui %s è membro",
- "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con l'utente %s",
- "Sharing %s failed, because the group %s does not exist" : "Condivisione di %s non riuscita, poiché il gruppo %s non esiste",
- "Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
- "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
- "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La condivisione di %s non è riuscita, impossibile trovare %s, è probabile che il server non sia al momento raggiungibile.",
- "Share type %s is not valid for %s" : "Il tipo di condivisione %s non è valido per %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
- "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
- "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Condivisione di %s non riuscita, poiché i permessi superano quelli accordati a %s",
- "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",
- "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
- "%s shared »%s« with you." : "%s ha condiviso «%s» con te.",
- "%s via %s" : "%s tramite %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'applicazione \"%s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" già utilizzato dal fornitore della federazione cloud \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
+ "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
+ "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
"Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
+ "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
+ "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte"
+ "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index f641c08a06b..166de7bf650 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -109,7 +109,7 @@ OC.L10N.register(
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "%s のバックエンドの共有には、OCP\\Share_Backend インターフェースを実装しなければなりません。",
"Sharing backend %s not found" : "共有バックエンド %s が見つかりません",
"Sharing backend for %s not found" : "%s のための共有バックエンドが見つかりません",
- "%1$s shared »%2$s« with you and wants to add" : "%1$sさんがあなたと »%2$s« を共有し、追加を希望しています",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add",
"»%s« added a note to a file shared with you" : "»%s« があなたと共有しているファイルにノートを追加しました。 ",
"Open »%s«" : "»%s«を開く",
"%1$s via %2$s" : "%1$s via %2$s",
@@ -225,8 +225,6 @@ OC.L10N.register(
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s ライブラリーは、%s よりも新しいバージョンが必要です。利用可能なバージョンは、 %s です。",
- "Library %s with a version lower than %s is required - available version %s." : "%s ライブラリーは、%s よりも古いバージョンが必要です。利用可能なバージョンは、 %s です。",
"Create" : "作成",
"Change" : "変更",
"Delete" : "削除",
@@ -238,38 +236,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s を共有できませんでした。%i タイプからの共有は許可されていません。",
"Sharing %s failed, because the file does not exist" : "%s を共有できませんでした。そのファイルは存在しません。",
"Sharing %s failed, because you can not share with yourself" : "%s を共有できませんでした。自分自身に共有することはできません。",
- "Sharing %s failed, because the user %s does not exist" : "%s を共有できませんでした。ユーザー %s が存在しません。",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s を共有できませんでした。ユーザー %s はどのグループにも属していません。%s は、次のグループのメンバーです",
- "Sharing %s failed, because this item is already shared with %s" : "%s を共有できませんでした。このアイテムはすでに %s に共有されています。",
- "Sharing %s failed, because this item is already shared with user %s" : "%s を共有できませんでした。このアイテムは、ユーザー %s によりすでに共有されています。",
- "Sharing %s failed, because the group %s does not exist" : "%s を共有できませんでした。グループ %s は存在しません。",
- "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" : "同じユーザーでフェデレーション共有は作成できません。",
- "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 には適用できません。",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
- "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
- "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s を共有できませんでした。%s に許可されている権限を越えています。",
- "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 を共有できませんでした。ファイルキャッシュにファイルがありませんでした",
- "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
- "%s shared »%s« with you." : "%sが あなたと »%s«を共有しました",
- "%s via %s" : "%s に %s から",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "次の依存関係が満たされないため、\"%s\" アプリをインストールできません:%s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID「%s」はクラウドフェデレーションプロバイダ「%s」によって既に使用されています",
"Sharing %1$s failed, because the user %2$s does not exist" : "ユーザー%2$sが存在しないため、%1$sの共有できませんでした",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "ユーザー%2$sは、%3$sがメンバーになっているグループのメンバーでないため、%1$sを共有できませんでした",
"Sharing %1$s failed, because this item is already shared with %2$s" : "このアイテムはすでに %2$s と共有されているため、%1$s を共有できませんでした",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "ユーザー%2$sによりすでに共有されているため%1$s を共有できませんでした。",
"Sharing %1$s failed, because the group %2$s does not exist" : "グループ%2$s が存在しないため、%1$s を共有できませんでした",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%2$s は、グループ %3$sのメンバーではないため%1$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" : "同じユーザーでフェデレーション共有は作成できません。",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s を共有できませんでした。%2$s が見つかりませんでした。現在サーバーに接続できないようです。",
"Share type %1$s is not valid for %2$s" : "共有方法%1$s は、%2$s には適用できません。",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
+ "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
+ "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "アクセス権が%2$sに付与されたアクセス権を超えているため、%1$sを共有できませんでした",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした"
+ "Sharing %s failed, because resharing is not allowed" : "%s を共有できませんでした。再共有は許可されていません。",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s を共有できませんでした。ファイルキャッシュにファイルがありませんでした"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index 80df16e2eaa..fc7a7ff00cb 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -107,7 +107,7 @@
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "%s のバックエンドの共有には、OCP\\Share_Backend インターフェースを実装しなければなりません。",
"Sharing backend %s not found" : "共有バックエンド %s が見つかりません",
"Sharing backend for %s not found" : "%s のための共有バックエンドが見つかりません",
- "%1$s shared »%2$s« with you and wants to add" : "%1$sさんがあなたと »%2$s« を共有し、追加を希望しています",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add",
"»%s« added a note to a file shared with you" : "»%s« があなたと共有しているファイルにノートを追加しました。 ",
"Open »%s«" : "»%s«を開く",
"%1$s via %2$s" : "%1$s via %2$s",
@@ -223,8 +223,6 @@
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s ライブラリーは、%s よりも新しいバージョンが必要です。利用可能なバージョンは、 %s です。",
- "Library %s with a version lower than %s is required - available version %s." : "%s ライブラリーは、%s よりも古いバージョンが必要です。利用可能なバージョンは、 %s です。",
"Create" : "作成",
"Change" : "変更",
"Delete" : "削除",
@@ -236,38 +234,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s を共有できませんでした。%i タイプからの共有は許可されていません。",
"Sharing %s failed, because the file does not exist" : "%s を共有できませんでした。そのファイルは存在しません。",
"Sharing %s failed, because you can not share with yourself" : "%s を共有できませんでした。自分自身に共有することはできません。",
- "Sharing %s failed, because the user %s does not exist" : "%s を共有できませんでした。ユーザー %s が存在しません。",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s を共有できませんでした。ユーザー %s はどのグループにも属していません。%s は、次のグループのメンバーです",
- "Sharing %s failed, because this item is already shared with %s" : "%s を共有できませんでした。このアイテムはすでに %s に共有されています。",
- "Sharing %s failed, because this item is already shared with user %s" : "%s を共有できませんでした。このアイテムは、ユーザー %s によりすでに共有されています。",
- "Sharing %s failed, because the group %s does not exist" : "%s を共有できませんでした。グループ %s は存在しません。",
- "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" : "同じユーザーでフェデレーション共有は作成できません。",
- "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 には適用できません。",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
- "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
- "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s を共有できませんでした。%s に許可されている権限を越えています。",
- "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 を共有できませんでした。ファイルキャッシュにファイルがありませんでした",
- "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました",
- "%s shared »%s« with you." : "%sが あなたと »%s«を共有しました",
- "%s via %s" : "%s に %s から",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "次の依存関係が満たされないため、\"%s\" アプリをインストールできません:%s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID「%s」はクラウドフェデレーションプロバイダ「%s」によって既に使用されています",
"Sharing %1$s failed, because the user %2$s does not exist" : "ユーザー%2$sが存在しないため、%1$sの共有できませんでした",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "ユーザー%2$sは、%3$sがメンバーになっているグループのメンバーでないため、%1$sを共有できませんでした",
"Sharing %1$s failed, because this item is already shared with %2$s" : "このアイテムはすでに %2$s と共有されているため、%1$s を共有できませんでした",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "ユーザー%2$sによりすでに共有されているため%1$s を共有できませんでした。",
"Sharing %1$s failed, because the group %2$s does not exist" : "グループ%2$s が存在しないため、%1$s を共有できませんでした",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%2$s は、グループ %3$sのメンバーではないため%1$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" : "同じユーザーでフェデレーション共有は作成できません。",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s を共有できませんでした。%2$s が見つかりませんでした。現在サーバーに接続できないようです。",
"Share type %1$s is not valid for %2$s" : "共有方法%1$s は、%2$s には適用できません。",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
+ "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
+ "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "アクセス権が%2$sに付与されたアクセス権を超えているため、%1$sを共有できませんでした",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした"
+ "Sharing %s failed, because resharing is not allowed" : "%s を共有できませんでした。再共有は許可されていません。",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s を共有できませんでした。ファイルキャッシュにファイルがありませんでした"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/ka_GE.js b/lib/l10n/ka_GE.js
index 81dc84aa986..c3514b2516a 100644
--- a/lib/l10n/ka_GE.js
+++ b/lib/l10n/ka_GE.js
@@ -192,8 +192,6 @@ OC.L10N.register(
"Storage connection error. %s" : "საცავის კავშირის შეცდომა. %s",
"Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Storage connection timeout. %s" : "საცავის კავშირის დროის ამოწურვა. %s",
- "Library %s with a version higher than %s is required - available version %s." : "საჭიროა ბიბლიოთკეა %s %s-ზე მაღალი ვერსიით - ნაპოვნია ვერსია %s.",
- "Library %s with a version lower than %s is required - available version %s." : "საჭიროა ბიბლიოთეკა %s %s-ზე მცირე ვერსიით - ნაპოვნია ვერსია %s.",
"Create" : "შექმნა",
"Change" : "შეცვლა",
"Delete" : "გაუქმება",
@@ -205,27 +203,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s-ის გაზიარება არ მოხერხდა, რადგანაც ბექენდი არ იღებს გაზიარებებს სახეობით %s",
"Sharing %s failed, because the file does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ფაილი არ არსებობს",
"Sharing %s failed, because you can not share with yourself" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან საკუთარ თავთან ვერ გააზიარებთ",
- "Sharing %s failed, because the user %s does not exist" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s არ არსებობს",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s-ის გაზიარება არ მოხერხდა, რადგან მომხმარებელი %s არ მიეკუთხვნება ჯგუფს რომელსაც მიეკუთვნება მომხმარებელი %s",
- "Sharing %s failed, because this item is already shared with %s" : "%s-ის გაზიარება არ მოხერხდა, რადგან ობიექტი %s-თან უკვე გაზიარებულია",
- "Sharing %s failed, because this item is already shared with user %s" : "%s-ის გაზიარება არ მოხერხდა, რადგან ობიექტი მომხმარებელ %s-თან უკვე გაზიარებულია",
- "Sharing %s failed, because the group %s does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ჯგუფი %s არ არსებობს",
- "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" : "იმავე მომხმარებელთან ფედერალური გაზიარება ვერ შეიქმნება",
- "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 არაა მართებული",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ვადის ამოწურვის დროის მითთება ვერ ხერხდება. გაზიარებები გაზიარების შემდეგ %s-ზე ადრე ვერ გაუქმდებიან",
"Cannot set expiration date. Expiration date is in the past" : "ვადის ამოწურვის დროის მითითება ვერ ხერხდება. ვადის გასვლის დრო წარსულია",
"Sharing failed, because the user %s is the original sharer" : "გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s თავდაპირველი გამზიარებელია",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s-ის გაზიარება ვერ მოხერხდა, უფლებები აჭარბებს უფლებებს, რომლებიც მინიჭებული აქვს %s-ს",
"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-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა",
- "%s shared »%s« with you" : "%s მომხმარებელმა თქვენთან გააზიარა »%s«",
- "%s shared »%s« with you." : "%s მომხმარებელმა თქვენთან გააზიარა »%s«.",
- "%s via %s" : "%s %s-ით",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "აპლიკაცია \"%s\" ვერ ყენდება, რადგან შემდეგი დამოკიდებულებები არაა დაკმაყოფილებული: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა"
},
"nplurals=2; plural=(n!=1);");
diff --git a/lib/l10n/ka_GE.json b/lib/l10n/ka_GE.json
index b07e19ac375..f07bab914b4 100644
--- a/lib/l10n/ka_GE.json
+++ b/lib/l10n/ka_GE.json
@@ -190,8 +190,6 @@
"Storage connection error. %s" : "საცავის კავშირის შეცდომა. %s",
"Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Storage connection timeout. %s" : "საცავის კავშირის დროის ამოწურვა. %s",
- "Library %s with a version higher than %s is required - available version %s." : "საჭიროა ბიბლიოთკეა %s %s-ზე მაღალი ვერსიით - ნაპოვნია ვერსია %s.",
- "Library %s with a version lower than %s is required - available version %s." : "საჭიროა ბიბლიოთეკა %s %s-ზე მცირე ვერსიით - ნაპოვნია ვერსია %s.",
"Create" : "შექმნა",
"Change" : "შეცვლა",
"Delete" : "გაუქმება",
@@ -203,27 +201,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s-ის გაზიარება არ მოხერხდა, რადგანაც ბექენდი არ იღებს გაზიარებებს სახეობით %s",
"Sharing %s failed, because the file does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ფაილი არ არსებობს",
"Sharing %s failed, because you can not share with yourself" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან საკუთარ თავთან ვერ გააზიარებთ",
- "Sharing %s failed, because the user %s does not exist" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s არ არსებობს",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s-ის გაზიარება არ მოხერხდა, რადგან მომხმარებელი %s არ მიეკუთხვნება ჯგუფს რომელსაც მიეკუთვნება მომხმარებელი %s",
- "Sharing %s failed, because this item is already shared with %s" : "%s-ის გაზიარება არ მოხერხდა, რადგან ობიექტი %s-თან უკვე გაზიარებულია",
- "Sharing %s failed, because this item is already shared with user %s" : "%s-ის გაზიარება არ მოხერხდა, რადგან ობიექტი მომხმარებელ %s-თან უკვე გაზიარებულია",
- "Sharing %s failed, because the group %s does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ჯგუფი %s არ არსებობს",
- "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" : "იმავე მომხმარებელთან ფედერალური გაზიარება ვერ შეიქმნება",
- "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 არაა მართებული",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ვადის ამოწურვის დროის მითთება ვერ ხერხდება. გაზიარებები გაზიარების შემდეგ %s-ზე ადრე ვერ გაუქმდებიან",
"Cannot set expiration date. Expiration date is in the past" : "ვადის ამოწურვის დროის მითითება ვერ ხერხდება. ვადის გასვლის დრო წარსულია",
"Sharing failed, because the user %s is the original sharer" : "გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s თავდაპირველი გამზიარებელია",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s-ის გაზიარება ვერ მოხერხდა, უფლებები აჭარბებს უფლებებს, რომლებიც მინიჭებული აქვს %s-ს",
"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-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა",
- "%s shared »%s« with you" : "%s მომხმარებელმა თქვენთან გააზიარა »%s«",
- "%s shared »%s« with you." : "%s მომხმარებელმა თქვენთან გააზიარა »%s«.",
- "%s via %s" : "%s %s-ით",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "აპლიკაცია \"%s\" ვერ ყენდება, რადგან შემდეგი დამოკიდებულებები არაა დაკმაყოფილებული: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა"
},"pluralForm" :"nplurals=2; plural=(n!=1);"
} \ No newline at end of file
diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js
index df15b2923f9..2d006ad6adb 100644
--- a/lib/l10n/ko.js
+++ b/lib/l10n/ko.js
@@ -204,8 +204,6 @@ OC.L10N.register(
"Storage connection error. %s" : "저장소 연결 오류입니다. %s",
"Storage is temporarily not available" : "저장소를 임시로 사용할 수 없음",
"Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s 라이브러리의 버전 %s 이상이 필요합니다. 사용 가능한 버전은 %s입니다.",
- "Library %s with a version lower than %s is required - available version %s." : "%s 라이브러리의 버전 %s 미만이 필요합니다. 사용 가능한 버전은 %s입니다.",
"Create" : "생성",
"Change" : "변경",
"Delete" : "삭제",
@@ -217,27 +215,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %i 형식의 공유를 허용하지 않습니다",
"Sharing %s failed, because the file does not exist" : "%s을(를) 공유할 수 없습니다. 파일이 존재하지 않습니다",
"Sharing %s failed, because you can not share with yourself" : "%s을(를) 공유할 수 없습니다. 자기 자신과 공유할 수 없습니다",
- "Sharing %s failed, because the user %s does not exist" : "%s을(를) 공유할 수 없습니다. 사용자 %s이(가) 존재하지 않습니다",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s을(를) 공유할 수 없습니다. 사용자 %s 님은 %s 님이 회원인 어떠한 그룹에도 속해 있지 않습니다",
- "Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다",
- "Sharing %s failed, because this item is already shared with user %s" : "%s을(를) 공유할 수 없습니다. 이 항목을 이미 %s 님과 공유하고 있습니다",
- "Sharing %s failed, because the group %s does not exist" : "%s을(를) 공유할 수 없습니다. 그룹 %s이(가) 존재하지 않습니다",
- "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" : "같은 사용자와 연합 공유를 만들 수 없음",
- "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에 대해서 사용할 수 없음",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "만료 날짜를 설정할 수 없습니다. 최대 공유 허용 기한이 %s입니다.",
"Cannot set expiration date. Expiration date is in the past" : "만료 날짜를 설정할 수 없습니다. 만료 날짜가 과거입니다",
"Sharing failed, because the user %s is the original sharer" : "공유할 수 없습니다. 사용자 %s이(가) 원 공유자입니다",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s을(를) 공유할 수 없습니다. %s 님에게 허용된 것 이상의 권한을 필요로 합니다",
"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을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
- "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
- "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.",
- "%s via %s" : "%s(%s 경유)",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "앱 \"%s\"의 다음 의존성을 만족하지 못하므로 설치할 수 없습니다: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json
index be427a404f5..22f0e7d20e0 100644
--- a/lib/l10n/ko.json
+++ b/lib/l10n/ko.json
@@ -202,8 +202,6 @@
"Storage connection error. %s" : "저장소 연결 오류입니다. %s",
"Storage is temporarily not available" : "저장소를 임시로 사용할 수 없음",
"Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s 라이브러리의 버전 %s 이상이 필요합니다. 사용 가능한 버전은 %s입니다.",
- "Library %s with a version lower than %s is required - available version %s." : "%s 라이브러리의 버전 %s 미만이 필요합니다. 사용 가능한 버전은 %s입니다.",
"Create" : "생성",
"Change" : "변경",
"Delete" : "삭제",
@@ -215,27 +213,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %i 형식의 공유를 허용하지 않습니다",
"Sharing %s failed, because the file does not exist" : "%s을(를) 공유할 수 없습니다. 파일이 존재하지 않습니다",
"Sharing %s failed, because you can not share with yourself" : "%s을(를) 공유할 수 없습니다. 자기 자신과 공유할 수 없습니다",
- "Sharing %s failed, because the user %s does not exist" : "%s을(를) 공유할 수 없습니다. 사용자 %s이(가) 존재하지 않습니다",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s을(를) 공유할 수 없습니다. 사용자 %s 님은 %s 님이 회원인 어떠한 그룹에도 속해 있지 않습니다",
- "Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다",
- "Sharing %s failed, because this item is already shared with user %s" : "%s을(를) 공유할 수 없습니다. 이 항목을 이미 %s 님과 공유하고 있습니다",
- "Sharing %s failed, because the group %s does not exist" : "%s을(를) 공유할 수 없습니다. 그룹 %s이(가) 존재하지 않습니다",
- "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" : "같은 사용자와 연합 공유를 만들 수 없음",
- "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에 대해서 사용할 수 없음",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "만료 날짜를 설정할 수 없습니다. 최대 공유 허용 기한이 %s입니다.",
"Cannot set expiration date. Expiration date is in the past" : "만료 날짜를 설정할 수 없습니다. 만료 날짜가 과거입니다",
"Sharing failed, because the user %s is the original sharer" : "공유할 수 없습니다. 사용자 %s이(가) 원 공유자입니다",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s을(를) 공유할 수 없습니다. %s 님에게 허용된 것 이상의 권한을 필요로 합니다",
"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을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
- "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
- "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.",
- "%s via %s" : "%s(%s 경유)",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "앱 \"%s\"의 다음 의존성을 만족하지 못하므로 설치할 수 없습니다: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/lb.js b/lib/l10n/lb.js
index 7c08ebafffc..f75461de8e6 100644
--- a/lib/l10n/lb.js
+++ b/lib/l10n/lb.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Apps" : "Applikatiounen",
"Users" : "Benotzer",
"Set an admin password." : "Admin Passwuert setzen",
- "Authentication error" : "Authentifikatioun's Fehler",
- "%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt"
+ "Authentication error" : "Authentifikatioun's Fehler"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/lb.json b/lib/l10n/lb.json
index 42628a8dc73..d9f23815021 100644
--- a/lib/l10n/lb.json
+++ b/lib/l10n/lb.json
@@ -20,7 +20,6 @@
"Apps" : "Applikatiounen",
"Users" : "Benotzer",
"Set an admin password." : "Admin Passwuert setzen",
- "Authentication error" : "Authentifikatioun's Fehler",
- "%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt"
+ "Authentication error" : "Authentifikatioun's Fehler"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index 6c898f78c62..f24fd6afc2c 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -20,6 +20,15 @@ OC.L10N.register(
"Server version %s or higher is required." : "Reikalinga %s arba aukštesnė serverio versija ",
"Server version %s or lower is required." : "Reikalinga %s arba žemesnė serverio versija. ",
"Logged in user must be an admin" : "Prisijungęs naudotojas privalo būti administratoriumi",
+ "»%s« started remote wipe" : "»%s« pradėjo nuotolinių duomenų ištrynimą",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Įrenginys ar programa »%s« pradėjo nuotolinių duomenų ištrynimo procesą. Procesui užsibaigus, gausite dar vieną el. laišką",
+ "»%s« finished remote wipe" : "»%s« užbaigė nuotolinių duomenų ištrynimą",
+ "Device or application »%s« has finished the remote wipe process." : "Įrenginys ar programa »%s« užbaigė nuotolinių duomenų ištrynimo procesą.",
+ "Remote wipe started" : "Nuotolinių duomenų ištrynimas pradėtas",
+ "A remote wipe was started on device %s" : "Nuotolinių duomenų ištrynimas buvo pradėtas įrenginyje %s",
+ "Remote wipe finished" : "Nuotolinių duomenų ištrynimas užbaigtas",
+ "The remote wipe on %s has finished" : "Nuotolinių duomenų ištrynimas ties %s yra užbaigtas",
+ "Authentication" : "Tapatybės nustatymas",
"Unknown filetype" : "Nežinomas failo tipas",
"Invalid image" : "Neteisingas paveikslas",
"Avatar image is not square" : "Avataro paveikslas nėra kvadratinis",
@@ -174,8 +183,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Saugyklos sujungimo ryšio klaida. %s",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Storage connection timeout. %s" : "Sujungimo su saugykla laikas baigėsi. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotekos %s versija turi būti aukštesnė nei %s - turima versija %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotekos %s versija turi būti žemesnė nei %s - turima versija %s.",
"Create" : "Sukurti",
"Delete" : "Ištrinti",
"Unlimited" : "Neribota",
@@ -185,26 +192,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo %i",
"Sharing %s failed, because the file does not exist" : "%s dalinimasis nepavyko, nes failas neegzistuoja. ",
"Sharing %s failed, because you can not share with yourself" : "%s bendrinimas nepavyko, jūs negalite bendrinti su savimi pačiu.",
- "Sharing %s failed, because the user %s does not exist" : "%s bendrinimas nepavyko, nes naudotojas %s neegzistuoja",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s bendrinimas nepavyko, nes naudotojas %s nėra tos pačios grupės, kaip %s, narys.",
- "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su naudotoju %s",
- "Sharing %s failed, because the group %s does not exist" : "%s bendrinimas nepavyko, nes grupė %s neegzistuoja",
- "Sharing %s failed, because %s is not a member of the group %s" : " %s bendrinimas nepavyko, nes %s nėra %s grupės narys.",
"You need to provide a password to create a public link, only protected links are allowed" : "Viešoms nuorodoms būtinas slaptažodis, leidžiamos tik apsaugotos nuorodos.",
"Sharing %s failed, because sharing with links is not allowed" : "Bendrinimas %s nepavyko, kadangi bendrinimas su nuorodomis yra neleidžiamas.",
"Not allowed to create a federated share with the same user" : "Negalima sukurti federacinį viešinį su tuo pačiu naudotoju",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas",
- "Share type %s is not valid for %s" : "Bendrinimo tipas %s netinka %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Negalima nustatyti galiojimo pabaigos datos. Bendrinimas negali pasibaigti vėliau nei %s po jo pasidalinimo",
"Cannot set expiration date. Expiration date is in the past" : "Nepavyko nustatyti galiojimo datos. Galiojimo data yra praėjęs laikas.",
"Sharing failed, because the user %s is the original sharer" : "Bendrinimas nepavyko, nes naudotojas %s yra bendrintojas.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s bendrinimas nepavyko, kadangi teisės viršijo %s suteiktas teises.",
"Sharing %s failed, because resharing is not allowed" : "%s bendrinimas nepavyko, nes perskirstymas yra neleidžiamas.",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. ",
- "%s shared »%s« with you" : "%s pasidalino »%s« su jumis",
- "%s shared »%s« with you." : "%s pasidalino »%s« su Jumis.",
- "%s via %s" : "%s per %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" negali būti įdiegta, nes nėra įvykdytos: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. "
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index e7b0fc5d7ee..125cd0ab0f5 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -18,6 +18,15 @@
"Server version %s or higher is required." : "Reikalinga %s arba aukštesnė serverio versija ",
"Server version %s or lower is required." : "Reikalinga %s arba žemesnė serverio versija. ",
"Logged in user must be an admin" : "Prisijungęs naudotojas privalo būti administratoriumi",
+ "»%s« started remote wipe" : "»%s« pradėjo nuotolinių duomenų ištrynimą",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Įrenginys ar programa »%s« pradėjo nuotolinių duomenų ištrynimo procesą. Procesui užsibaigus, gausite dar vieną el. laišką",
+ "»%s« finished remote wipe" : "»%s« užbaigė nuotolinių duomenų ištrynimą",
+ "Device or application »%s« has finished the remote wipe process." : "Įrenginys ar programa »%s« užbaigė nuotolinių duomenų ištrynimo procesą.",
+ "Remote wipe started" : "Nuotolinių duomenų ištrynimas pradėtas",
+ "A remote wipe was started on device %s" : "Nuotolinių duomenų ištrynimas buvo pradėtas įrenginyje %s",
+ "Remote wipe finished" : "Nuotolinių duomenų ištrynimas užbaigtas",
+ "The remote wipe on %s has finished" : "Nuotolinių duomenų ištrynimas ties %s yra užbaigtas",
+ "Authentication" : "Tapatybės nustatymas",
"Unknown filetype" : "Nežinomas failo tipas",
"Invalid image" : "Neteisingas paveikslas",
"Avatar image is not square" : "Avataro paveikslas nėra kvadratinis",
@@ -172,8 +181,6 @@
"Storage connection error. %s" : "Saugyklos sujungimo ryšio klaida. %s",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Storage connection timeout. %s" : "Sujungimo su saugykla laikas baigėsi. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotekos %s versija turi būti aukštesnė nei %s - turima versija %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotekos %s versija turi būti žemesnė nei %s - turima versija %s.",
"Create" : "Sukurti",
"Delete" : "Ištrinti",
"Unlimited" : "Neribota",
@@ -183,26 +190,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo %i",
"Sharing %s failed, because the file does not exist" : "%s dalinimasis nepavyko, nes failas neegzistuoja. ",
"Sharing %s failed, because you can not share with yourself" : "%s bendrinimas nepavyko, jūs negalite bendrinti su savimi pačiu.",
- "Sharing %s failed, because the user %s does not exist" : "%s bendrinimas nepavyko, nes naudotojas %s neegzistuoja",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s bendrinimas nepavyko, nes naudotojas %s nėra tos pačios grupės, kaip %s, narys.",
- "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su naudotoju %s",
- "Sharing %s failed, because the group %s does not exist" : "%s bendrinimas nepavyko, nes grupė %s neegzistuoja",
- "Sharing %s failed, because %s is not a member of the group %s" : " %s bendrinimas nepavyko, nes %s nėra %s grupės narys.",
"You need to provide a password to create a public link, only protected links are allowed" : "Viešoms nuorodoms būtinas slaptažodis, leidžiamos tik apsaugotos nuorodos.",
"Sharing %s failed, because sharing with links is not allowed" : "Bendrinimas %s nepavyko, kadangi bendrinimas su nuorodomis yra neleidžiamas.",
"Not allowed to create a federated share with the same user" : "Negalima sukurti federacinį viešinį su tuo pačiu naudotoju",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas",
- "Share type %s is not valid for %s" : "Bendrinimo tipas %s netinka %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Negalima nustatyti galiojimo pabaigos datos. Bendrinimas negali pasibaigti vėliau nei %s po jo pasidalinimo",
"Cannot set expiration date. Expiration date is in the past" : "Nepavyko nustatyti galiojimo datos. Galiojimo data yra praėjęs laikas.",
"Sharing failed, because the user %s is the original sharer" : "Bendrinimas nepavyko, nes naudotojas %s yra bendrintojas.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s bendrinimas nepavyko, kadangi teisės viršijo %s suteiktas teises.",
"Sharing %s failed, because resharing is not allowed" : "%s bendrinimas nepavyko, nes perskirstymas yra neleidžiamas.",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. ",
- "%s shared »%s« with you" : "%s pasidalino »%s« su jumis",
- "%s shared »%s« with you." : "%s pasidalino »%s« su Jumis.",
- "%s via %s" : "%s per %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" negali būti įdiegta, nes nėra įvykdytos: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. "
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index b8118116aef..f1857281ca0 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -32,11 +32,11 @@ OC.L10N.register(
"_%n hour ago_::_%n hours ago_" : ["%n stundas atpakaļ","%n stundas atpakaļ","%n stundām"],
"_%n minute ago_::_%n minutes ago_" : ["%n minūtes atpakaļ","%n minūtes atpakaļ","%n minūtēm"],
"seconds ago" : "sekundēm",
- "File name is too long" : "Faila nosaukums ir pārāk garš",
- "Empty filename is not allowed" : "Tukšs faila nosaukums nav atļauts",
+ "File name is too long" : "Datnes nosaukums ir pārāk garš",
+ "Empty filename is not allowed" : "Tukšs datnes nosaukums nav atļauts",
"__language_name__" : "Latviešu",
"Help" : "Palīdzība",
- "Apps" : "Programmas",
+ "Apps" : "Lietotnes",
"Users" : "Lietotāji",
"Unknown user" : "Nezināms lietotājs",
"Sharing" : "Koplietošana",
@@ -103,8 +103,8 @@ OC.L10N.register(
"Login canceled by app" : "Pieteikšanos atcelā lietotne",
"a safe home for all your data" : "droša vieta visiem jūsu datiem",
"File is currently busy, please try again later" : "Datne pašlaik ir aizņemta. Lūdzu, vēlāk mēģiniet vēlreiz",
- "Can't read file" : "Nevar nolasīt failu",
- "Application is not enabled" : "Programma nav aktivēta",
+ "Can't read file" : "Nevar nolasīt datni",
+ "Application is not enabled" : "Lietotne nav iespējota",
"Authentication error" : "Autentifikācijas kļūda",
"Token expired. Please reload page." : "Pilnvarai ir beidzies termiņš. Lūdzu, pārlādējiet lapu.",
"Please ask your server administrator to install the module." : "Lūdzu, palūdziet savam servera administratoram, lai instalē moduli.",
@@ -118,8 +118,6 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Storage incomplete configuration. %s",
"Storage connection error. %s" : "Datu savienojuma kļūda. %s",
"Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
- "Storage connection timeout. %s" : "Datu savienojuma taimauts. %s",
- "%s shared »%s« with you" : "%s kopīgots »%s« ar jums",
- "%s via %s" : "%s ar %s"
+ "Storage connection timeout. %s" : "Datu savienojuma taimauts. %s"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index 54e7603dcbc..c511bf7ba26 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -30,11 +30,11 @@
"_%n hour ago_::_%n hours ago_" : ["%n stundas atpakaļ","%n stundas atpakaļ","%n stundām"],
"_%n minute ago_::_%n minutes ago_" : ["%n minūtes atpakaļ","%n minūtes atpakaļ","%n minūtēm"],
"seconds ago" : "sekundēm",
- "File name is too long" : "Faila nosaukums ir pārāk garš",
- "Empty filename is not allowed" : "Tukšs faila nosaukums nav atļauts",
+ "File name is too long" : "Datnes nosaukums ir pārāk garš",
+ "Empty filename is not allowed" : "Tukšs datnes nosaukums nav atļauts",
"__language_name__" : "Latviešu",
"Help" : "Palīdzība",
- "Apps" : "Programmas",
+ "Apps" : "Lietotnes",
"Users" : "Lietotāji",
"Unknown user" : "Nezināms lietotājs",
"Sharing" : "Koplietošana",
@@ -101,8 +101,8 @@
"Login canceled by app" : "Pieteikšanos atcelā lietotne",
"a safe home for all your data" : "droša vieta visiem jūsu datiem",
"File is currently busy, please try again later" : "Datne pašlaik ir aizņemta. Lūdzu, vēlāk mēģiniet vēlreiz",
- "Can't read file" : "Nevar nolasīt failu",
- "Application is not enabled" : "Programma nav aktivēta",
+ "Can't read file" : "Nevar nolasīt datni",
+ "Application is not enabled" : "Lietotne nav iespējota",
"Authentication error" : "Autentifikācijas kļūda",
"Token expired. Please reload page." : "Pilnvarai ir beidzies termiņš. Lūdzu, pārlādējiet lapu.",
"Please ask your server administrator to install the module." : "Lūdzu, palūdziet savam servera administratoram, lai instalē moduli.",
@@ -116,8 +116,6 @@
"Storage incomplete configuration. %s" : "Storage incomplete configuration. %s",
"Storage connection error. %s" : "Datu savienojuma kļūda. %s",
"Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
- "Storage connection timeout. %s" : "Datu savienojuma taimauts. %s",
- "%s shared »%s« with you" : "%s kopīgots »%s« ar jums",
- "%s via %s" : "%s ar %s"
+ "Storage connection timeout. %s" : "Datu savienojuma taimauts. %s"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/mk.js b/lib/l10n/mk.js
index 5760acdb7a1..9ef06fd0f15 100644
--- a/lib/l10n/mk.js
+++ b/lib/l10n/mk.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Не можам да впишувам во \"config\" директориумот!",
"See %s" : "Види %s",
+ "Sample configuration detected" : "Детектирана е едноставна конфигурација",
"%1$s and %2$s" : "%1$s и %2$s",
"%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",
@@ -12,28 +13,34 @@ OC.L10N.register(
"Groupware bundle" : "Пакет со групни производи",
"Social sharing bundle" : "Пакет за споделување на социјални мрежи",
"PHP %s or higher is required." : "Потребно е PHP верзија %s или повисока.",
+ "Server version %s or higher is required." : "Потребна е верзија %s или поголема на серверот.",
+ "Server version %s or lower is required." : "Потербна е верзија %s или помала на серверот.",
+ "Logged in user must be an admin or sub admin" : "Најавениот корисник мора да биде администратор или заменик администратор",
+ "Logged in user must be an admin" : "Најавениот корисник мора да биде администратор",
"Authentication" : "Автентикација",
"Unknown filetype" : "Непознат тип на датотека",
"Invalid image" : "Невалидна фотографија",
"today" : "денес",
"tomorrow" : "утре",
"yesterday" : "вчера",
- "_in %n day_::_in %n days_" : ["за %n ден","за %n дена"],
- "_%n day ago_::_%n days ago_" : ["пред %n ден","пред %n дена"],
+ "_in %n day_::_in %n days_" : ["за 1 ден","за %n дена"],
+ "_%n day ago_::_%n days ago_" : ["пред 1 ден","пред %n дена"],
"next month" : "следниот месец",
"last month" : "предходниот месец",
- "_in %n month_::_in %n months_" : ["за %n месец","за %n месеца"],
- "_%n month ago_::_%n months ago_" : ["пред %n месец","пред %n месеци"],
+ "_in %n month_::_in %n months_" : ["за 1 месец","за %n месеца"],
+ "_%n month ago_::_%n months ago_" : ["пред 1 месец","пред %n месеци"],
"next year" : "следниот месец",
"last year" : "предходната година",
- "_in %n year_::_in %n years_" : ["за %n година","за %n години"],
- "_%n year ago_::_%n years ago_" : ["пред %n година","пред %n години"],
- "_in %n hour_::_in %n hours_" : ["за %n час","за %n часа"],
- "_%n hour ago_::_%n hours ago_" : ["пред %n час","пред %n часа"],
- "_in %n minute_::_in %n minutes_" : ["за %n минута","за %n минути"],
- "_%n minute ago_::_%n minutes ago_" : ["Пред %n минута","пред %n минути"],
+ "_in %n year_::_in %n years_" : ["за 1 година","за %n години"],
+ "_%n year ago_::_%n years ago_" : ["пред 1 година","пред %n години"],
+ "_in %n hour_::_in %n hours_" : ["за 1 час","за %n часа"],
+ "_%n hour ago_::_%n hours ago_" : ["пред 1 час","пред %n часа"],
+ "_in %n minute_::_in %n minutes_" : ["за 1 минута","за %n минути"],
+ "_%n minute ago_::_%n minutes ago_" : ["пред 1 минута","пред %n минути"],
"in a few seconds" : "за неколку секунди",
"seconds ago" : "пред неколку секунди",
+ "File name is too long" : "Името на датотеката е премногу долго",
+ "Empty filename is not allowed" : "Датотеки без име не се дозболени",
"__language_name__" : "Македонски",
"This is an automatically sent email, please do not reply." : "Ова е автоматски испратена порака, не одговарајте на истата.",
"Help" : "Помош",
@@ -50,6 +57,7 @@ OC.L10N.register(
"Additional settings" : "Дополнителни параметри",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
+ "%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 не можеш да користиш точки во името на базата",
@@ -122,9 +130,11 @@ OC.L10N.register(
"The username is already being used" : "Корисничкото име е веќе во употреба",
"User disabled" : "Оневозможен корисник",
"a safe home for all your data" : "безбеден дом за сите ваши податоци",
+ "Can't read file" : "Неможе да се прочита датотеката",
"Application is not enabled" : "Апликацијата не е овозможена",
"Authentication error" : "Грешка во автентикација",
"Token expired. Please reload page." : "Жетонот е истечен. Ве молам превчитајте ја страницата.",
+ "PostgreSQL >= 9 required" : "Потребно е PostgreSQL >= 9 ",
"Create" : "Креирај",
"Change" : "Измени",
"Delete" : "Избриши",
@@ -133,8 +143,7 @@ OC.L10N.register(
"Verifying" : "Потврдување",
"Verifying …" : "Потврдување …",
"Verify" : "Потврди",
- "%s shared »%s« with you" : "%s сподели »%s« со вас",
- "%s shared »%s« with you." : "%s сподели »%s« со вас.",
- "%s via %s" : "%s преку %s"
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен.",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Споделувањето на %1$s е неуспешно, бидејќи серверот на %2$s неможе да го пронајде споделувањето"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/lib/l10n/mk.json b/lib/l10n/mk.json
index 9123d9c8d6c..c4808bf6e73 100644
--- a/lib/l10n/mk.json
+++ b/lib/l10n/mk.json
@@ -1,6 +1,7 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Не можам да впишувам во \"config\" директориумот!",
"See %s" : "Види %s",
+ "Sample configuration detected" : "Детектирана е едноставна конфигурација",
"%1$s and %2$s" : "%1$s и %2$s",
"%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",
@@ -10,28 +11,34 @@
"Groupware bundle" : "Пакет со групни производи",
"Social sharing bundle" : "Пакет за споделување на социјални мрежи",
"PHP %s or higher is required." : "Потребно е PHP верзија %s или повисока.",
+ "Server version %s or higher is required." : "Потребна е верзија %s или поголема на серверот.",
+ "Server version %s or lower is required." : "Потербна е верзија %s или помала на серверот.",
+ "Logged in user must be an admin or sub admin" : "Најавениот корисник мора да биде администратор или заменик администратор",
+ "Logged in user must be an admin" : "Најавениот корисник мора да биде администратор",
"Authentication" : "Автентикација",
"Unknown filetype" : "Непознат тип на датотека",
"Invalid image" : "Невалидна фотографија",
"today" : "денес",
"tomorrow" : "утре",
"yesterday" : "вчера",
- "_in %n day_::_in %n days_" : ["за %n ден","за %n дена"],
- "_%n day ago_::_%n days ago_" : ["пред %n ден","пред %n дена"],
+ "_in %n day_::_in %n days_" : ["за 1 ден","за %n дена"],
+ "_%n day ago_::_%n days ago_" : ["пред 1 ден","пред %n дена"],
"next month" : "следниот месец",
"last month" : "предходниот месец",
- "_in %n month_::_in %n months_" : ["за %n месец","за %n месеца"],
- "_%n month ago_::_%n months ago_" : ["пред %n месец","пред %n месеци"],
+ "_in %n month_::_in %n months_" : ["за 1 месец","за %n месеца"],
+ "_%n month ago_::_%n months ago_" : ["пред 1 месец","пред %n месеци"],
"next year" : "следниот месец",
"last year" : "предходната година",
- "_in %n year_::_in %n years_" : ["за %n година","за %n години"],
- "_%n year ago_::_%n years ago_" : ["пред %n година","пред %n години"],
- "_in %n hour_::_in %n hours_" : ["за %n час","за %n часа"],
- "_%n hour ago_::_%n hours ago_" : ["пред %n час","пред %n часа"],
- "_in %n minute_::_in %n minutes_" : ["за %n минута","за %n минути"],
- "_%n minute ago_::_%n minutes ago_" : ["Пред %n минута","пред %n минути"],
+ "_in %n year_::_in %n years_" : ["за 1 година","за %n години"],
+ "_%n year ago_::_%n years ago_" : ["пред 1 година","пред %n години"],
+ "_in %n hour_::_in %n hours_" : ["за 1 час","за %n часа"],
+ "_%n hour ago_::_%n hours ago_" : ["пред 1 час","пред %n часа"],
+ "_in %n minute_::_in %n minutes_" : ["за 1 минута","за %n минути"],
+ "_%n minute ago_::_%n minutes ago_" : ["пред 1 минута","пред %n минути"],
"in a few seconds" : "за неколку секунди",
"seconds ago" : "пред неколку секунди",
+ "File name is too long" : "Името на датотеката е премногу долго",
+ "Empty filename is not allowed" : "Датотеки без име не се дозболени",
"__language_name__" : "Македонски",
"This is an automatically sent email, please do not reply." : "Ова е автоматски испратена порака, не одговарајте на истата.",
"Help" : "Помош",
@@ -48,6 +55,7 @@
"Additional settings" : "Дополнителни параметри",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
+ "%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 не можеш да користиш точки во името на базата",
@@ -120,9 +128,11 @@
"The username is already being used" : "Корисничкото име е веќе во употреба",
"User disabled" : "Оневозможен корисник",
"a safe home for all your data" : "безбеден дом за сите ваши податоци",
+ "Can't read file" : "Неможе да се прочита датотеката",
"Application is not enabled" : "Апликацијата не е овозможена",
"Authentication error" : "Грешка во автентикација",
"Token expired. Please reload page." : "Жетонот е истечен. Ве молам превчитајте ја страницата.",
+ "PostgreSQL >= 9 required" : "Потребно е PostgreSQL >= 9 ",
"Create" : "Креирај",
"Change" : "Измени",
"Delete" : "Избриши",
@@ -131,8 +141,7 @@
"Verifying" : "Потврдување",
"Verifying …" : "Потврдување …",
"Verify" : "Потврди",
- "%s shared »%s« with you" : "%s сподели »%s« со вас",
- "%s shared »%s« with you." : "%s сподели »%s« со вас.",
- "%s via %s" : "%s преку %s"
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен.",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Споделувањето на %1$s е неуспешно, бидејќи серверот на %2$s неможе да го пронајде споделувањето"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js
index 77205df2b83..60dff9d2b6e 100644
--- a/lib/l10n/nb.js
+++ b/lib/l10n/nb.js
@@ -198,8 +198,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Tilkoblingsfeil for lager. %s",
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotek %s med en versjon høyere enn %s kreves - tilgjengelig versjon %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotek %s med en versjon lavere nn %s kreves - tilgjengelig version %s.",
"Create" : "Opprett",
"Change" : "Endre",
"Delete" : "Slett",
@@ -211,27 +209,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
"Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
- "Sharing %s failed, because the user %s does not exist" : "Deling av %s mislyktes, fordi brukeren %s ikke finnes",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deling av %s mislyktes, fordi brukeren %s ikke er medlem av noen grupper som %s er medlem av",
- "Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med bruker %s",
- "Sharing %s failed, because the group %s does not exist" : "Deling av %s mislyktes, fordi gruppen %s ikke finnes",
- "Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s mislyktes, fordi %s ikke er medlem av gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt",
"Sharing %s failed, because sharing with links is not allowed" : "Deling av %s mislyktes, fordi deling med lenker ikke er tillatt",
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje serveren er utilgjengelig for øyeblikket.",
- "Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
"Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling av %s mislyktes, fordi tillatelsene går utover tillatelsene som er gitt til %s",
"Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling av %s mislyktes, fordi delings-bakenden for %s ikke kunne finne kilden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret",
- "%s shared »%s« with you" : "%s delte »%s« med deg",
- "%s shared »%s« with you." : "%s delte \"%s\" med deg.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Appen \"%s\" kan ikke installeres fordi følgende krav ikke er tilfredsstilt: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json
index ab3beee7a8c..92aa936e0c7 100644
--- a/lib/l10n/nb.json
+++ b/lib/l10n/nb.json
@@ -196,8 +196,6 @@
"Storage connection error. %s" : "Tilkoblingsfeil for lager. %s",
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotek %s med en versjon høyere enn %s kreves - tilgjengelig versjon %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotek %s med en versjon lavere nn %s kreves - tilgjengelig version %s.",
"Create" : "Opprett",
"Change" : "Endre",
"Delete" : "Slett",
@@ -209,27 +207,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
"Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
- "Sharing %s failed, because the user %s does not exist" : "Deling av %s mislyktes, fordi brukeren %s ikke finnes",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deling av %s mislyktes, fordi brukeren %s ikke er medlem av noen grupper som %s er medlem av",
- "Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med bruker %s",
- "Sharing %s failed, because the group %s does not exist" : "Deling av %s mislyktes, fordi gruppen %s ikke finnes",
- "Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s mislyktes, fordi %s ikke er medlem av gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt",
"Sharing %s failed, because sharing with links is not allowed" : "Deling av %s mislyktes, fordi deling med lenker ikke er tillatt",
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje serveren er utilgjengelig for øyeblikket.",
- "Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
"Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling av %s mislyktes, fordi tillatelsene går utover tillatelsene som er gitt til %s",
"Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling av %s mislyktes, fordi delings-bakenden for %s ikke kunne finne kilden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret",
- "%s shared »%s« with you" : "%s delte »%s« med deg",
- "%s shared »%s« with you." : "%s delte \"%s\" med deg.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Appen \"%s\" kan ikke installeres fordi følgende krav ikke er tilfredsstilt: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index 9fac7a76cbd..7f6b3191389 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Opslag verbindingsfout. %s",
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage connection timeout. %s" : "Opslag verbinding time-out. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Library %s met een versienummer hoger dan %s is vereist - beschikbare versie %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Library %s met een versienummer lager dan %s is vereist - beschikbare versie %s.",
"Create" : "Aanmaken",
"Change" : "Wijzigen",
"Delete" : "Verwijderen",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Delen van %s is mislukt, omdat de share-backend het niet toestaat om type %i te delen",
"Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
"Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
- "Sharing %s failed, because the user %s does not exist" : "Delen van %s is mislukt, omdat gebruiker %s niet bestaat",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delen van %s is mislukt, omdat gebruiker %s geen lid is van een groep waar %s lid van is",
- "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met gebruiker %s",
- "Sharing %s failed, because the group %s does not exist" : "Delen van %s is mislukt, omdat de groep %s niet bestaat",
- "Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
- "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
- "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server tijdelijk niet bereikbaar.",
- "Share type %s is not valid for %s" : "Delen van type %s is niet geldig voor %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
- "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
- "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Delen van %s is mislukt, omdat de rechten toegekend aan %s overschreden zijn.",
- "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delen van %s is mislukt, omdat de gedeelde backend voor %s de bron niet kon vinden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden",
- "%s shared »%s« with you" : "%s heeft \"%s \" met je gedeeld",
- "%s shared »%s« with you." : "%s heeft \"%s\" met je gedeeld.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden nodig zijn: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wordt al gebruikt door cloud federatieprovider \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
+ "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
+ "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
"Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
+ "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
+ "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden"
+ "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index f754eefb29f..f8534677f3c 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Opslag verbindingsfout. %s",
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage connection timeout. %s" : "Opslag verbinding time-out. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Library %s met een versienummer hoger dan %s is vereist - beschikbare versie %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Library %s met een versienummer lager dan %s is vereist - beschikbare versie %s.",
"Create" : "Aanmaken",
"Change" : "Wijzigen",
"Delete" : "Verwijderen",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Delen van %s is mislukt, omdat de share-backend het niet toestaat om type %i te delen",
"Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
"Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
- "Sharing %s failed, because the user %s does not exist" : "Delen van %s is mislukt, omdat gebruiker %s niet bestaat",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delen van %s is mislukt, omdat gebruiker %s geen lid is van een groep waar %s lid van is",
- "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met gebruiker %s",
- "Sharing %s failed, because the group %s does not exist" : "Delen van %s is mislukt, omdat de groep %s niet bestaat",
- "Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
- "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
- "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server tijdelijk niet bereikbaar.",
- "Share type %s is not valid for %s" : "Delen van type %s is niet geldig voor %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
- "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
- "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Delen van %s is mislukt, omdat de rechten toegekend aan %s overschreden zijn.",
- "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delen van %s is mislukt, omdat de gedeelde backend voor %s de bron niet kon vinden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden",
- "%s shared »%s« with you" : "%s heeft \"%s \" met je gedeeld",
- "%s shared »%s« with you." : "%s heeft \"%s\" met je gedeeld.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden nodig zijn: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" wordt al gebruikt door cloud federatieprovider \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
+ "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
+ "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
"Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
+ "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
+ "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden"
+ "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/nn_NO.js b/lib/l10n/nn_NO.js
index f5192642699..de7e2676e2f 100644
--- a/lib/l10n/nn_NO.js
+++ b/lib/l10n/nn_NO.js
@@ -13,7 +13,6 @@ OC.L10N.register(
"Users" : "Brukarar",
"A valid username must be provided" : "Du må oppgje eit gyldig brukarnamn",
"A valid password must be provided" : "Du må oppgje eit gyldig passord",
- "Authentication error" : "Feil i autentisering",
- "%s shared »%s« with you" : "%s delte «%s» med deg"
+ "Authentication error" : "Feil i autentisering"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nn_NO.json b/lib/l10n/nn_NO.json
index 428fa0fb9c1..fbc107feec6 100644
--- a/lib/l10n/nn_NO.json
+++ b/lib/l10n/nn_NO.json
@@ -11,7 +11,6 @@
"Users" : "Brukarar",
"A valid username must be provided" : "Du må oppgje eit gyldig brukarnamn",
"A valid password must be provided" : "Du må oppgje eit gyldig passord",
- "Authentication error" : "Feil i autentisering",
- "%s shared »%s« with you" : "%s delte «%s» med deg"
+ "Authentication error" : "Feil i autentisering"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index aa9046a1a1e..f94ba983961 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -15,7 +15,7 @@ OC.L10N.register(
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
"Education Edition" : "Edycja edukacyjna",
- "Enterprise bundle" : "Pakiet firmowy",
+ "Enterprise bundle" : "Pakiet dla firm",
"Groupware bundle" : "Pakiet do pracy grupowej",
"Social sharing bundle" : "Pakiet udostępniania społecznościowego",
"PHP %s or higher is required." : "Wymagane jest PHP %s lub wyższe.",
@@ -43,7 +43,7 @@ OC.L10N.register(
"A remote wipe was started on device %s" : "Zdalne czyszczenie zostało uruchomione na urządzeniu %s",
"Remote wipe finished" : "Zdalne czyszczenie zakończone",
"The remote wipe on %s has finished" : "Zakończono zdalne czyszczenie na %s",
- "Authentication" : "Poświadczenie",
+ "Authentication" : "Uwierzytelnienie",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Błędne zdjęcie",
"Avatar image is not square" : "Zdjęcie awatara nie jest kwadratowe",
@@ -85,7 +85,7 @@ OC.L10N.register(
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
- "Security" : "Bepieczeństwo",
+ "Security" : "Bezpieczeństwo",
"Groupware" : "Praca grupowa",
"Additional settings" : "Ustawienia dodatkowe",
"Personal info" : "Informacje osobiste",
@@ -105,12 +105,12 @@ OC.L10N.register(
"Set an admin username." : "Ustaw nazwę administratora.",
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
- "Invalid Federated Cloud ID" : "Nieprawidłowy ID Chmury Federalnej",
+ "Invalid Federated Cloud ID" : "Nieprawidłowy ID Chmury Federacyjnej",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Zaplecze do współdzielenia %s musi implementować interfejs OCP\\Share_Backend",
"Sharing backend %s not found" : "Zaplecze %s do współdzielenia nie zostało znalezione",
"Sharing backend for %s not found" : "Zaplecze do współdzielenia dla %s nie zostało znalezione",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$s współdzieli »%2$s« z Tobą i chce dodać: ",
- "%1$s shared »%2$s« with you and wants to add" : " %1$s współdzieli »%2$s« z Tobą i chce dodać",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s udostępnił Ci »%2$s« i chce dodać: ",
+ "%1$s shared »%2$s« with you and wants to add" : " %1$s udostępnił Ci »%2$s« i chce dodać",
"»%s« added a note to a file shared with you" : "»%s« dodał notatkę do pliku współdzielonego z Tobą",
"Open »%s«" : "Otwórz »%s«",
"%1$s via %2$s" : "%1$s przez %2$s",
@@ -120,8 +120,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 na dłuższą niż %s dni",
- "%1$s shared »%2$s« with you" : "%1$s współdzieli »%2$s« z Tobą",
- "%1$s shared »%2$s« with you." : "%1$s współdzieli »%2$s« z Tobą.",
+ "%1$s shared »%2$s« with you" : "%1$s udostępnił Ci »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s udostępnił Ci »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane współdzielenie już nie istnieje",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Błąd połączenia z magazynem. %s",
"Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Storage connection timeout. %s" : "Limit czasu połączenia do magazynu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s wymagana jest z wersją wyższą niż %s - dostępna wersja %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteka %s wymagana jest w wersji niższej niż %s - dostępna wersja %s.",
"Create" : "Utwórz",
"Change" : "Zmień",
"Delete" : "Usuń",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ zaplecze nie pozwala na współdzielenie takiego typu jak %i",
"Sharing %s failed, because the file does not exist" : "Udostępnianie %s nie powiodło się. ponieważ plik nie istnieje",
"Sharing %s failed, because you can not share with yourself" : "Udostępnianie %s nie powiodło się, ponieważ nie możesz współdzielić z samym sobą",
- "Sharing %s failed, because the user %s does not exist" : "Udostępnianie %s nie powiodło się, ponieważ użytkownik %s nie istnieje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Udostępnianie %s nie powiodło się, ponieważ użytkownik %s nie jest członkiem żadnej grupy, której członkiem jest %s",
- "Sharing %s failed, because this item is already shared with %s" : "Udostępnianie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Udostępnianie %s nie powiodło się, ponieważ element jest już współdzielony z użytkownikiem %s",
- "Sharing %s failed, because the group %s does not exist" : "Udostępnianie %s nie powiodło się, ponieważ grupa %s nie istnieje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Udostępnianie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
- "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
- "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Udostępnianie %s nie powiodło się, nie można znaleźć %s, może serwer jest obecnie nieosiągalny.",
- "Share type %s is not valid for %s" : "Typ udostępnienia %s jest nieprawidłowy dla %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
- "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
- "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Udostępnianie %s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %s",
- "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Udostępnianie %s nie powiodło się, ponieważ zaplecze współdzielenia dla %s nie mogło znaleźć jego źródła",
- "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików",
- "%s shared »%s« with you" : "%s współdzieli »%s« z Tobą",
- "%s shared »%s« with you." : "%s współdzieli »%s« z Tobą.",
- "%s via %s" : "%s przez %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ nie są spełnione następujące zależności: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" jest już używane przez dostawcę chmury federacyjnej \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie istnieje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie jest członkiem żadnej grupy, której członkiem jest %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już współdzielony z %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już udostępniony użytkownikowi %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ grupa %2$s nie istnieje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Udostępnianie %1$s nie powiodło się, ponieważ %2$s nie jest członkiem grupy %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
+ "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
+ "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Udostępnianie %1$s nie powiodło się, ponieważ nie udało się znaleźć %2$s, być może serwer jest obecnie nieosiągalny.",
"Share type %1$s is not valid for %2$s" : "Typ udostępnienia %1$s jest nieprawidłowy dla %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
+ "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
+ "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła"
+ "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików"
},
"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/lib/l10n/pl.json b/lib/l10n/pl.json
index c5fb42c20bd..b66c809a962 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -13,7 +13,7 @@
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
"Education Edition" : "Edycja edukacyjna",
- "Enterprise bundle" : "Pakiet firmowy",
+ "Enterprise bundle" : "Pakiet dla firm",
"Groupware bundle" : "Pakiet do pracy grupowej",
"Social sharing bundle" : "Pakiet udostępniania społecznościowego",
"PHP %s or higher is required." : "Wymagane jest PHP %s lub wyższe.",
@@ -41,7 +41,7 @@
"A remote wipe was started on device %s" : "Zdalne czyszczenie zostało uruchomione na urządzeniu %s",
"Remote wipe finished" : "Zdalne czyszczenie zakończone",
"The remote wipe on %s has finished" : "Zakończono zdalne czyszczenie na %s",
- "Authentication" : "Poświadczenie",
+ "Authentication" : "Uwierzytelnienie",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Błędne zdjęcie",
"Avatar image is not square" : "Zdjęcie awatara nie jest kwadratowe",
@@ -83,7 +83,7 @@
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
- "Security" : "Bepieczeństwo",
+ "Security" : "Bezpieczeństwo",
"Groupware" : "Praca grupowa",
"Additional settings" : "Ustawienia dodatkowe",
"Personal info" : "Informacje osobiste",
@@ -103,12 +103,12 @@
"Set an admin username." : "Ustaw nazwę administratora.",
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
- "Invalid Federated Cloud ID" : "Nieprawidłowy ID Chmury Federalnej",
+ "Invalid Federated Cloud ID" : "Nieprawidłowy ID Chmury Federacyjnej",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Zaplecze do współdzielenia %s musi implementować interfejs OCP\\Share_Backend",
"Sharing backend %s not found" : "Zaplecze %s do współdzielenia nie zostało znalezione",
"Sharing backend for %s not found" : "Zaplecze do współdzielenia dla %s nie zostało znalezione",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$s współdzieli »%2$s« z Tobą i chce dodać: ",
- "%1$s shared »%2$s« with you and wants to add" : " %1$s współdzieli »%2$s« z Tobą i chce dodać",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s udostępnił Ci »%2$s« i chce dodać: ",
+ "%1$s shared »%2$s« with you and wants to add" : " %1$s udostępnił Ci »%2$s« i chce dodać",
"»%s« added a note to a file shared with you" : "»%s« dodał notatkę do pliku współdzielonego z Tobą",
"Open »%s«" : "Otwórz »%s«",
"%1$s via %2$s" : "%1$s przez %2$s",
@@ -118,8 +118,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 na dłuższą niż %s dni",
- "%1$s shared »%2$s« with you" : "%1$s współdzieli »%2$s« z Tobą",
- "%1$s shared »%2$s« with you." : "%1$s współdzieli »%2$s« z Tobą.",
+ "%1$s shared »%2$s« with you" : "%1$s udostępnił Ci »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s udostępnił Ci »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane współdzielenie już nie istnieje",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Błąd połączenia z magazynem. %s",
"Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Storage connection timeout. %s" : "Limit czasu połączenia do magazynu. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s wymagana jest z wersją wyższą niż %s - dostępna wersja %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Biblioteka %s wymagana jest w wersji niższej niż %s - dostępna wersja %s.",
"Create" : "Utwórz",
"Change" : "Zmień",
"Delete" : "Usuń",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ zaplecze nie pozwala na współdzielenie takiego typu jak %i",
"Sharing %s failed, because the file does not exist" : "Udostępnianie %s nie powiodło się. ponieważ plik nie istnieje",
"Sharing %s failed, because you can not share with yourself" : "Udostępnianie %s nie powiodło się, ponieważ nie możesz współdzielić z samym sobą",
- "Sharing %s failed, because the user %s does not exist" : "Udostępnianie %s nie powiodło się, ponieważ użytkownik %s nie istnieje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Udostępnianie %s nie powiodło się, ponieważ użytkownik %s nie jest członkiem żadnej grupy, której członkiem jest %s",
- "Sharing %s failed, because this item is already shared with %s" : "Udostępnianie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Udostępnianie %s nie powiodło się, ponieważ element jest już współdzielony z użytkownikiem %s",
- "Sharing %s failed, because the group %s does not exist" : "Udostępnianie %s nie powiodło się, ponieważ grupa %s nie istnieje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Udostępnianie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
- "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
- "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Udostępnianie %s nie powiodło się, nie można znaleźć %s, może serwer jest obecnie nieosiągalny.",
- "Share type %s is not valid for %s" : "Typ udostępnienia %s jest nieprawidłowy dla %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
- "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
- "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Udostępnianie %s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %s",
- "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Udostępnianie %s nie powiodło się, ponieważ zaplecze współdzielenia dla %s nie mogło znaleźć jego źródła",
- "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików",
- "%s shared »%s« with you" : "%s współdzieli »%s« z Tobą",
- "%s shared »%s« with you." : "%s współdzieli »%s« z Tobą.",
- "%s via %s" : "%s przez %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ nie są spełnione następujące zależności: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" jest już używane przez dostawcę chmury federacyjnej \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie istnieje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie jest członkiem żadnej grupy, której członkiem jest %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już współdzielony z %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już udostępniony użytkownikowi %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ grupa %2$s nie istnieje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Udostępnianie %1$s nie powiodło się, ponieważ %2$s nie jest członkiem grupy %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
+ "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
+ "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Udostępnianie %1$s nie powiodło się, ponieważ nie udało się znaleźć %2$s, być może serwer jest obecnie nieosiągalny.",
"Share type %1$s is not valid for %2$s" : "Typ udostępnienia %1$s jest nieprawidłowy dla %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
+ "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
+ "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła"
+ "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików"
},"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/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 852dffe6ce7..be9b2196e50 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -225,9 +225,7 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Configuração incompleta do armazenamento. %s",
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
- "Storage connection timeout. %s" : "Esgotado o tempo de conexão ao armazenamento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão maior que %s - versão disponível %s.",
- "Library %s with a version lower than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão menor que %s - versão disponível %s.",
+ "Storage connection timeout. %s" : "Atingido o tempo limite de conexão ao armazenamento. %s",
"Create" : "Criar",
"Change" : "Mudar",
"Delete" : "Excluir",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou pois a plataforma de serviço não permite ações de tipo %i",
"Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
"Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
- "Sharing %s failed, because the user %s does not exist" : "O compartilhamento %s falhou pois o usuário %s não existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "O compartilhamento %s falhou pois o usuário %s não é membro de nenhum grupo que o usuário %s pertença",
- "Sharing %s failed, because this item is already shared with %s" : "O compartilhamento %s falhou pois este ítem já está compartilhado com %s",
- "Sharing %s failed, because this item is already shared with user %s" : "O compartilhamento de %s falhou pois esse item já é compartilhada com o usuário %s",
- "Sharing %s failed, because the group %s does not exist" : "O compartilhamento %s falhou pois o grupo %s não existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "O compartilhamento %s falhou, pois %s não é membro do grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou pois não foi possível encontrar %s. Talvez o servidor esteja inacessível.",
- "Share type %s is not valid for %s" : "O tipo de compartilhamento %s não é válido para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
- "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
- "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartilhamento %s falhou pois as permissões excedem as permissões concedidas a %s",
- "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "O compartilhamento %s falhou pois a plataforma de serviço de compartilhamento para %s não conseguiu encontrar a sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos",
- "%s shared »%s« with you" : "%s compartilhou »%s« com você",
- "%s shared »%s« with you." : "%s compartilhou »%s« com você.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "O aplicativo \"%s\" não pode ser instalado pois as seguintes dependências não foram cumpridas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" já é usada pelo provedor de nuvem federada \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
"Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
+ "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
+ "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
"Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
+ "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
+ "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte"
+ "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 0262954ccc6..d9546d03d4d 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -223,9 +223,7 @@
"Storage incomplete configuration. %s" : "Configuração incompleta do armazenamento. %s",
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
- "Storage connection timeout. %s" : "Esgotado o tempo de conexão ao armazenamento. %s",
- "Library %s with a version higher than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão maior que %s - versão disponível %s.",
- "Library %s with a version lower than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão menor que %s - versão disponível %s.",
+ "Storage connection timeout. %s" : "Atingido o tempo limite de conexão ao armazenamento. %s",
"Create" : "Criar",
"Change" : "Mudar",
"Delete" : "Excluir",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou pois a plataforma de serviço não permite ações de tipo %i",
"Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
"Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
- "Sharing %s failed, because the user %s does not exist" : "O compartilhamento %s falhou pois o usuário %s não existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "O compartilhamento %s falhou pois o usuário %s não é membro de nenhum grupo que o usuário %s pertença",
- "Sharing %s failed, because this item is already shared with %s" : "O compartilhamento %s falhou pois este ítem já está compartilhado com %s",
- "Sharing %s failed, because this item is already shared with user %s" : "O compartilhamento de %s falhou pois esse item já é compartilhada com o usuário %s",
- "Sharing %s failed, because the group %s does not exist" : "O compartilhamento %s falhou pois o grupo %s não existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "O compartilhamento %s falhou, pois %s não é membro do grupo %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou pois não foi possível encontrar %s. Talvez o servidor esteja inacessível.",
- "Share type %s is not valid for %s" : "O tipo de compartilhamento %s não é válido para %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
- "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
- "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartilhamento %s falhou pois as permissões excedem as permissões concedidas a %s",
- "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "O compartilhamento %s falhou pois a plataforma de serviço de compartilhamento para %s não conseguiu encontrar a sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos",
- "%s shared »%s« with you" : "%s compartilhou »%s« com você",
- "%s shared »%s« with you." : "%s compartilhou »%s« com você.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "O aplicativo \"%s\" não pode ser instalado pois as seguintes dependências não foram cumpridas: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" já é usada pelo provedor de nuvem federada \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
"Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
+ "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
+ "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
"Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
+ "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
+ "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte"
+ "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
+ "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js
index 842dada5147..91d7a473964 100644
--- a/lib/l10n/pt_PT.js
+++ b/lib/l10n/pt_PT.js
@@ -191,8 +191,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
- "Library %s with a version higher than %s is required - available version %s." : "É necessário a biblioteca %s com uma versão superior a %s - versão disponível: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "É necessário a biblioteca %s com uma versão inferior a %s - versão disponível: %s.",
"Unlimited" : "Ilimitado",
"Verifying" : "A verificar",
"Verifying …" : "A verificar...",
@@ -200,27 +198,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "A partilha de %s falhou porque a interface não permite as partilhas do tipo %i",
"Sharing %s failed, because the file does not exist" : "A partilha de %s falhou, porque o ficheiro não existe",
"Sharing %s failed, because you can not share with yourself" : "A partilha de %s falhou, porque não é possível partilhar consigo mesmo",
- "Sharing %s failed, because the user %s does not exist" : "A partilha %s falhou, porque o utilizador %s nao existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "A partilha %s falhou, porque o utilizador %s não pertence a nenhum dos grupos que %s é membro de",
- "Sharing %s failed, because this item is already shared with %s" : "A partilha %s falhou, porque o item já está a ser partilhado com %s",
- "Sharing %s failed, because this item is already shared with user %s" : "A partilha de %s falhou, porque este item já está a ser partilhado com o utilizador %s",
- "Sharing %s failed, because the group %s does not exist" : "A partilha %s falhou, porque o grupo %s não existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "A partilha %s falhou, porque o utilizador %s não é membro do grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Precisa de fornecer uma palavra-passe para criar uma hiperligação publica, só são permitidas hiperligações protegidas",
"Sharing %s failed, because sharing with links is not allowed" : "A partilha de %s falhou, porque partilhar com links não é permitido",
"Not allowed to create a federated share with the same user" : "Não é possível criar uma partilha federada com o mesmo utilizador",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "A partilha de %s falhou, não foi possível encontrar %s. É possível que o servidor esteja inacessível.",
- "Share type %s is not valid for %s" : "O tipo de partilha %s não é válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas",
"Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado",
"Sharing failed, because the user %s is the original sharer" : "A partilha falhou, porque o utilizador %s é o distribuidor original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s",
"Sharing %s failed, because resharing is not allowed" : "A partilha %s falhou, porque repartilhar não é permitido",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "A partilha %s falhou porque a partilha da interface para %s não conseguiu encontrar a sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros",
- "%s shared »%s« with you" : "%s partilhado »%s« consigo",
- "%s shared »%s« with you." : "%s partilhou »%s« consigo.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "A aplicação \"%s\" não pode ser instalada porque as seguintes dependências não podem ser realizadas: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json
index 6fe48e3a56e..198952d3dfc 100644
--- a/lib/l10n/pt_PT.json
+++ b/lib/l10n/pt_PT.json
@@ -189,8 +189,6 @@
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
- "Library %s with a version higher than %s is required - available version %s." : "É necessário a biblioteca %s com uma versão superior a %s - versão disponível: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "É necessário a biblioteca %s com uma versão inferior a %s - versão disponível: %s.",
"Unlimited" : "Ilimitado",
"Verifying" : "A verificar",
"Verifying …" : "A verificar...",
@@ -198,27 +196,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "A partilha de %s falhou porque a interface não permite as partilhas do tipo %i",
"Sharing %s failed, because the file does not exist" : "A partilha de %s falhou, porque o ficheiro não existe",
"Sharing %s failed, because you can not share with yourself" : "A partilha de %s falhou, porque não é possível partilhar consigo mesmo",
- "Sharing %s failed, because the user %s does not exist" : "A partilha %s falhou, porque o utilizador %s nao existe",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "A partilha %s falhou, porque o utilizador %s não pertence a nenhum dos grupos que %s é membro de",
- "Sharing %s failed, because this item is already shared with %s" : "A partilha %s falhou, porque o item já está a ser partilhado com %s",
- "Sharing %s failed, because this item is already shared with user %s" : "A partilha de %s falhou, porque este item já está a ser partilhado com o utilizador %s",
- "Sharing %s failed, because the group %s does not exist" : "A partilha %s falhou, porque o grupo %s não existe",
- "Sharing %s failed, because %s is not a member of the group %s" : "A partilha %s falhou, porque o utilizador %s não é membro do grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Precisa de fornecer uma palavra-passe para criar uma hiperligação publica, só são permitidas hiperligações protegidas",
"Sharing %s failed, because sharing with links is not allowed" : "A partilha de %s falhou, porque partilhar com links não é permitido",
"Not allowed to create a federated share with the same user" : "Não é possível criar uma partilha federada com o mesmo utilizador",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "A partilha de %s falhou, não foi possível encontrar %s. É possível que o servidor esteja inacessível.",
- "Share type %s is not valid for %s" : "O tipo de partilha %s não é válido para %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas",
"Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado",
"Sharing failed, because the user %s is the original sharer" : "A partilha falhou, porque o utilizador %s é o distribuidor original",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s",
"Sharing %s failed, because resharing is not allowed" : "A partilha %s falhou, porque repartilhar não é permitido",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "A partilha %s falhou porque a partilha da interface para %s não conseguiu encontrar a sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros",
- "%s shared »%s« with you" : "%s partilhado »%s« consigo",
- "%s shared »%s« with you." : "%s partilhou »%s« consigo.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "A aplicação \"%s\" não pode ser instalada porque as seguintes dependências não podem ser realizadas: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js
index 0bbd191960c..3412b82f520 100644
--- a/lib/l10n/ro.js
+++ b/lib/l10n/ro.js
@@ -32,7 +32,7 @@ OC.L10N.register(
"in a few seconds" : "în câteva secunde",
"seconds ago" : "secunde în urmă",
"File name is a reserved word" : "Numele fișierului este un cuvânt rezervat",
- "File name contains at least one invalid character" : "Numele fișierului conține măcar un caracter invalid",
+ "File name contains at least one invalid character" : "Numele fișierului conține cel puțin un caracter invalid",
"File name is too long" : "Numele fișierului este prea lung",
"Dot files are not allowed" : "Fișierele care încep cu caracterul punct nu sunt permise",
"Empty filename is not allowed" : "Nu este permis fișier fără nume",
@@ -129,17 +129,6 @@ OC.L10N.register(
"Verify" : "Verifică",
"Sharing %s failed, because the file does not exist" : "Partajarea %s a eșuat deoarece fișierul nu există",
"Sharing %s failed, because you can not share with yourself" : "Partajarea %s a eșuat deoarece nu-l poți partaja cu tine însuți",
- "Sharing %s failed, because the user %s does not exist" : "Partajarea %s a eșuat deoarece utilizatorul %s nu există",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Partajarea %s a eșuat deoarece utilizatorul %s nu face parte din niciunul din grupurile din care %s face parte",
- "Sharing %s failed, because this item is already shared with %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu utilizatorul %s",
- "Sharing %s failed, because the group %s does not exist" : "Partajarea %s a eșuat deoarece grupul %s nu există",
- "Sharing %s failed, because %s is not a member of the group %s" : "Partajarea %s a eșuat deoarce %s nu face parte din grupul %s",
- "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Partajarea %s a eşuat, nu pot găsi %s, poate serverul nu poate fi contactat.",
- "Share type %s is not valid for %s" : "Tipul partajării %s nu este valid pentru %s",
- "%s shared »%s« with you" : "%s Partajat »%s« cu tine de",
- "%s shared »%s« with you." : "%s a partajat »%s« cu tine.",
- "%s via %s" : "%s via %s"
+ "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json
index e529f253e14..5cd07547156 100644
--- a/lib/l10n/ro.json
+++ b/lib/l10n/ro.json
@@ -30,7 +30,7 @@
"in a few seconds" : "în câteva secunde",
"seconds ago" : "secunde în urmă",
"File name is a reserved word" : "Numele fișierului este un cuvânt rezervat",
- "File name contains at least one invalid character" : "Numele fișierului conține măcar un caracter invalid",
+ "File name contains at least one invalid character" : "Numele fișierului conține cel puțin un caracter invalid",
"File name is too long" : "Numele fișierului este prea lung",
"Dot files are not allowed" : "Fișierele care încep cu caracterul punct nu sunt permise",
"Empty filename is not allowed" : "Nu este permis fișier fără nume",
@@ -127,17 +127,6 @@
"Verify" : "Verifică",
"Sharing %s failed, because the file does not exist" : "Partajarea %s a eșuat deoarece fișierul nu există",
"Sharing %s failed, because you can not share with yourself" : "Partajarea %s a eșuat deoarece nu-l poți partaja cu tine însuți",
- "Sharing %s failed, because the user %s does not exist" : "Partajarea %s a eșuat deoarece utilizatorul %s nu există",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Partajarea %s a eșuat deoarece utilizatorul %s nu face parte din niciunul din grupurile din care %s face parte",
- "Sharing %s failed, because this item is already shared with %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu utilizatorul %s",
- "Sharing %s failed, because the group %s does not exist" : "Partajarea %s a eșuat deoarece grupul %s nu există",
- "Sharing %s failed, because %s is not a member of the group %s" : "Partajarea %s a eșuat deoarce %s nu face parte din grupul %s",
- "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Partajarea %s a eşuat, nu pot găsi %s, poate serverul nu poate fi contactat.",
- "Share type %s is not valid for %s" : "Tipul partajării %s nu este valid pentru %s",
- "%s shared »%s« with you" : "%s Partajat »%s« cu tine de",
- "%s shared »%s« with you." : "%s a partajat »%s« cu tine.",
- "%s via %s" : "%s via %s"
+ "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index a7eda9012dd..4786c02b572 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Требуется библиотека %s версии не меньше %s, установлена версия %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Требуется библиотека %s версии не выше %s, установлена версия %s.",
"Create" : "Создание",
"Change" : "Изменение",
"Delete" : "Удаление",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
- "Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, так как пользователь %s не состоит в какой-либо группе, в которой состоит %s",
- "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
- "Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s",
- "Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует",
- "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" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
- "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",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
- "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
- "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не удалось поделиться %s, права превышают предоставленные права доступа %s",
- "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, элемент не найден в файловом кеше.",
- "%s shared »%s« with you" : "%s предоставил(а) Вам доступ к «%s»",
- "%s shared »%s« with you." : "%s предоставил(а) Вам доступ к «%s».",
- "%s via %s" : "%s через %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как не удовлетворены следующие зависимости: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификатор «%s» уже используется поставщиком услуг межсерверного обмена «%s»",
"Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Не удалось предоставить доступ к «%1$s» , так как пользователь %2$s не состоит в какой-либо группе, в которой состоит %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Не удалось предоставить доступ к «%1$s», так как этот ресурс уже доступен пользователю %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Не удалось предоставить доступ к «%1$s», группа %2$s не существует",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Не удалось предоставить доступ к «%1$s», пользователь %2$s не является участником группы %3$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" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Не удалось предоставить доступ к «%1$s», не удалось найти %2$s, возможно, сервер не доступен.",
"Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
+ "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
+ "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Не удалось предоставить доступ к «%1$s», прав %2$s недостаточно",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»"
+ "Sharing %s failed, because resharing is not allowed" : "Не удалось поделиться %s, повторное открытие доступа запрещено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Не удалось поделиться %s, элемент не найден в файловом кеше."
},
"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/lib/l10n/ru.json b/lib/l10n/ru.json
index a5557a30616..c94ade8e4bd 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Требуется библиотека %s версии не меньше %s, установлена версия %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Требуется библиотека %s версии не выше %s, установлена версия %s.",
"Create" : "Создание",
"Change" : "Изменение",
"Delete" : "Удаление",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
- "Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, так как пользователь %s не состоит в какой-либо группе, в которой состоит %s",
- "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
- "Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s",
- "Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует",
- "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" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
- "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",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
- "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
- "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не удалось поделиться %s, права превышают предоставленные права доступа %s",
- "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, элемент не найден в файловом кеше.",
- "%s shared »%s« with you" : "%s предоставил(а) Вам доступ к «%s»",
- "%s shared »%s« with you." : "%s предоставил(а) Вам доступ к «%s».",
- "%s via %s" : "%s через %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как не удовлетворены следующие зависимости: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификатор «%s» уже используется поставщиком услуг межсерверного обмена «%s»",
"Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Не удалось предоставить доступ к «%1$s» , так как пользователь %2$s не состоит в какой-либо группе, в которой состоит %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Не удалось предоставить доступ к «%1$s», так как этот ресурс уже доступен пользователю %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Не удалось предоставить доступ к «%1$s», группа %2$s не существует",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Не удалось предоставить доступ к «%1$s», пользователь %2$s не является участником группы %3$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" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Не удалось предоставить доступ к «%1$s», не удалось найти %2$s, возможно, сервер не доступен.",
"Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
+ "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
+ "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Не удалось предоставить доступ к «%1$s», прав %2$s недостаточно",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»"
+ "Sharing %s failed, because resharing is not allowed" : "Не удалось поделиться %s, повторное открытие доступа запрещено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Не удалось поделиться %s, элемент не найден в файловом кеше."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index 44cabc5f2b5..cce6c45cd8b 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -211,8 +211,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
"Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage connection timeout. %s" : "Vypršanie pripojenia k úložisku. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Požadovaná je knižnica %s vo vyššej verzii ako %s - dostupná verzia %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Požadovaná je knižnica %s v nižšej verzii ako %s - dostupná verzia %s.",
"Create" : "Vytvoriť",
"Change" : "Zmeniť",
"Delete" : "Zmazať",
@@ -224,38 +222,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sprístupnenie %s zlyhalo, backend nepodporuje typ sprístupnenia %i",
"Sharing %s failed, because the file does not exist" : "Nie je možné sprístupniť %s, súbor neexistuje",
"Sharing %s failed, because you can not share with yourself" : "Sprístupnenie %s zlyhalo, nieje možné sprístupniť obsah so sebou samým",
- "Sharing %s failed, because the user %s does not exist" : "Sprístupnenie %s zlyhalo, používateľ %s neexistuje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sprístupnenie %s zlyhalo, používateľ %s nie je členom žiadnej skupiny spoločnej s používateľom %s",
- "Sharing %s failed, because this item is already shared with %s" : "Sprístupnenie %s zlyhalo, pretože táto položka už je prístupná pre %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Sprístupnenie %s zlyhalo, táto položka už je používateľovi %s prístupná",
- "Sharing %s failed, because the group %s does not exist" : "Sprístupnenie %s zlyhalo, skupina %s neexistuje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sprístupnenie %s zlyhalo, %s nie je členom skupiny %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
- "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
- "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sprístupňovanie %s zlyhalo, nepodarilo sa nájsť %s, možno je server dočasne nedostupný.",
- "Share type %s is not valid for %s" : "Typ sprístupnenia %s nie je možný pre %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
- "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
- "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sprístupnenie %s zlyhalo, pretože povolenia prekračujú povolenia udelené %s",
- "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
- "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",
- "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
- "%s shared »%s« with you." : "%s vám sprístupnil »%s«",
- "%s via %s" : "%s cez %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikáciu \"%s\" nie je možné inštalovať, pretože nie sú splnené nasledovné závislosti: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" je už použité v združenom cloude \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s neexistuje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s nie je členom žiadnej skupiny spoločnej s používateľom %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Sprístupnenie %1$s zlyhalo, pretože táto položka už je prístupná pre %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Sprístupnenie %1$s zlyhalo, táto položka už je používateľovi %2$s prístupná",
"Sharing %1$s failed, because the group %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, skupina %2$s neexistuje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sprístupnenie %1$s zlyhalo, %2$s nie je členom skupiny %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
+ "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sprístupňovanie %1$s zlyhalo, nepodarilo sa nájsť %2$s, možno je server dočasne nedostupný.",
"Share type %1$s is not valid for %2$s" : "Typ sprístupnenia %1$s nie je možný pre %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
+ "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
+ "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sprístupnenie %1$s zlyhalo, pretože povolenia prekračujú povolenia udelené %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$s"
+ "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$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"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 8426bc61dd8..fc841c90b9b 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -209,8 +209,6 @@
"Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
"Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage connection timeout. %s" : "Vypršanie pripojenia k úložisku. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Požadovaná je knižnica %s vo vyššej verzii ako %s - dostupná verzia %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Požadovaná je knižnica %s v nižšej verzii ako %s - dostupná verzia %s.",
"Create" : "Vytvoriť",
"Change" : "Zmeniť",
"Delete" : "Zmazať",
@@ -222,38 +220,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Sprístupnenie %s zlyhalo, backend nepodporuje typ sprístupnenia %i",
"Sharing %s failed, because the file does not exist" : "Nie je možné sprístupniť %s, súbor neexistuje",
"Sharing %s failed, because you can not share with yourself" : "Sprístupnenie %s zlyhalo, nieje možné sprístupniť obsah so sebou samým",
- "Sharing %s failed, because the user %s does not exist" : "Sprístupnenie %s zlyhalo, používateľ %s neexistuje",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Sprístupnenie %s zlyhalo, používateľ %s nie je členom žiadnej skupiny spoločnej s používateľom %s",
- "Sharing %s failed, because this item is already shared with %s" : "Sprístupnenie %s zlyhalo, pretože táto položka už je prístupná pre %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Sprístupnenie %s zlyhalo, táto položka už je používateľovi %s prístupná",
- "Sharing %s failed, because the group %s does not exist" : "Sprístupnenie %s zlyhalo, skupina %s neexistuje",
- "Sharing %s failed, because %s is not a member of the group %s" : "Sprístupnenie %s zlyhalo, %s nie je členom skupiny %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
- "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
- "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sprístupňovanie %s zlyhalo, nepodarilo sa nájsť %s, možno je server dočasne nedostupný.",
- "Share type %s is not valid for %s" : "Typ sprístupnenia %s nie je možný pre %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
- "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
- "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Sprístupnenie %s zlyhalo, pretože povolenia prekračujú povolenia udelené %s",
- "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
- "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",
- "%s shared »%s« with you" : "%s vám sprístupnil »%s«",
- "%s shared »%s« with you." : "%s vám sprístupnil »%s«",
- "%s via %s" : "%s cez %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikáciu \"%s\" nie je možné inštalovať, pretože nie sú splnené nasledovné závislosti: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" je už použité v združenom cloude \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s neexistuje",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s nie je členom žiadnej skupiny spoločnej s používateľom %3$s",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Sprístupnenie %1$s zlyhalo, pretože táto položka už je prístupná pre %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Sprístupnenie %1$s zlyhalo, táto položka už je používateľovi %2$s prístupná",
"Sharing %1$s failed, because the group %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, skupina %2$s neexistuje",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sprístupnenie %1$s zlyhalo, %2$s nie je členom skupiny %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
+ "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sprístupňovanie %1$s zlyhalo, nepodarilo sa nájsť %2$s, možno je server dočasne nedostupný.",
"Share type %1$s is not valid for %2$s" : "Typ sprístupnenia %1$s nie je možný pre %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
+ "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
+ "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sprístupnenie %1$s zlyhalo, pretože povolenia prekračujú povolenia udelené %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$s"
+ "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$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"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index 3c1edb90d8a..b8c6733aee5 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -4,41 +4,57 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Mapa 'config' nima določenih ustreznih dovoljenj za pisanje!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo.",
"See %s" : "Oglejte si %s",
- "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev",
- "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" : "Zaznano je, da je bila v sistem kopirana datoteka z enostavno nastavitvijo. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
+ "Sample configuration detected" : "Zaznana je neustrezna vzorčna nastavitev",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "V sistem je bila kopirana datoteka s vzorčnimi nastavitvami. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
"%1$s and %2$s" : "%1$s in %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s in %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s in %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s in %5$s",
+ "Enterprise bundle" : "Poslovni paket",
+ "Groupware bundle" : "Paket za skupinsko delo",
+ "Social sharing bundle" : "Paket družbene izmenjave",
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP manj kot %s.",
- "%sbit or higher PHP required." : "Zahtevana je različica PHP %s ali višja.",
+ "%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
"Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
"Following platforms are supported: %s" : "Podprta so okolja: %s",
"Server version %s or higher is required." : "Zahtevana je različica strežnika %s ali višja.",
"Server version %s or lower is required." : "Zahtevana je različica strežnika %s ali nižja.",
+ "Authentication" : "Overitev",
"Unknown filetype" : "Neznana vrsta datoteke",
"Invalid image" : "Neveljavna slika",
+ "Avatar image is not square" : "Slika podobe ni kvadratna",
"today" : "danes",
+ "tomorrow" : "jutri",
"yesterday" : "včeraj",
+ "_in %n day_::_in %n days_" : ["čez %n dan","čez %n dneva","čez %n dni","čez %n dni"],
"_%n day ago_::_%n days ago_" : ["pred %n dnevom","pred %n dnevoma","pred %n dnevi","pred %n dnevi"],
+ "next month" : "naslednji mesec",
"last month" : "zadnji mesec",
+ "_in %n month_::_in %n months_" : ["čez %n mesec","čez %n meseca","čez %n mesece","čez %n mesecev"],
"_%n month ago_::_%n months ago_" : ["pred %n mesecem","pred %n mesecema","pred %n meseci","pred %n meseci"],
+ "next year" : "naslednje leto",
"last year" : "lansko leto",
+ "_in %n year_::_in %n years_" : ["čez %n leto","čez %n leti","čez %n leta","čez %n let"],
"_%n year ago_::_%n years ago_" : ["pred %n letom","pred %n letoma","pred %n leti","pred %n leti"],
+ "_in %n hour_::_in %n hours_" : ["čez %n uro","čez %n uri","čez %n ure","čez %n ur"],
"_%n hour ago_::_%n hours ago_" : ["pred %n uro","pred %n urama","pred %n urami","pred %n urami"],
+ "_in %n minute_::_in %n minutes_" : ["čez %n minuto","čez %n minuti","čez %n minute","čez %n minut"],
"_%n minute ago_::_%n minutes ago_" : ["pred %n minuto","pred %n minutama","pred %n minutami","pred %n minutami"],
+ "in a few seconds" : "čez nekaj sekund",
"seconds ago" : "pred nekaj sekundami",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul z ID: %s ne obstaja. Omogočite ga med nastavitvami, ali pa stopite v stik s skrbnikom sistema.",
"File name is a reserved word" : "Ime datoteke je zadržana beseda",
- "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.",
+ "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en nedovoljen znak.",
"File name is too long" : "Ime datoteke je predolgo",
"Dot files are not allowed" : "Skrite datoteke niso dovoljene",
"Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa \\\"%s\\\" ni mogoče namestiti, ker ni mogoče brati datoteke appinfo.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa »%s« ni mogoče namestiti, ker datoteke appinfo ni mogoče brati.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Programa »%s« ni mogoče namestiti, ker ni združljiv z nameščeno različico strežnika.",
"__language_name__" : "Slovenščina",
+ "This is an automatically sent email, please do not reply." : "To sporočilo je samodejno poslano, nanj se nima smisla odzvati.",
"Help" : "Pomoč",
"Apps" : "Programi",
"Settings" : "Nastavitve",
@@ -49,30 +65,32 @@ OC.L10N.register(
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Security" : "Varnost",
+ "Groupware" : "Skupinsko delo",
"Additional settings" : "Dodatne nastavitve",
"Personal info" : "Osebni podatki",
- "%s enter the database username and name." : "%s - vnos uporabniškega imena in imena podatkovne zbirke.",
+ "Mobile & desktop" : "Mobilni in namizni dostop",
+ "%s enter the database username and name." : "%s – vnos uporabniškega imena in imena podatkovne zbirke.",
"%s enter the database username." : "%s - vnos uporabniškega imena podatkovne zbirke.",
- "%s enter the database name." : "%s - vnos imena podatkovne zbirke.",
+ "%s enter the database name." : "%s – vnos imena podatkovne zbirke.",
"%s you may not use dots in the database name" : "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik.",
"Oracle connection could not be established" : "Povezave s sistemom Oracle ni mogoče vzpostaviti.",
"Oracle username and/or password not valid" : "Uporabniško ime ali geslo Oracle ni veljavno",
"PostgreSQL username and/or password not valid" : "Uporabniško ime ali geslo PostgreSQL ni veljavno",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s v tem okolju ne bo deloval zanesljivo. Program uporabljate na lastno odgovornost! ",
- "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.",
+ "For the best results, please consider using a GNU/Linux server instead." : "Za najboljše rezultate je priporočljivo uporabljati strežnik GNU/Linux.",
"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." : "Videti je, da je dejavna seja %s zagnana v 32-bitnem okolju PHP in, da je v datoteki php.ini nastavljen open_basedir . Tako delovanje ni priporočljivo, saj se lahko pojavijo težave z datotekami, večjimi od 4GB.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraniti je treba nastavitev open_basedir v datoteki php.ini ali pa preklopiti na 64-bitno okolje PHP.",
"Set an admin username." : "Nastavi uporabniško ime skrbnika.",
"Set an admin password." : "Nastavi skrbniško geslo.",
"Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
- "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Souporaba ozadnjega programa %s mora vsebovati tudi vmesnik OCP\\Share_Backend",
"Sharing backend %s not found" : "Ozadnjega programa %s za souporabo ni mogoče najti",
"Sharing backend for %s not found" : "Ozadnjega programa za souporabo za %s ni mogoče najti",
"Open »%s«" : "Odpri »%s«",
"You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.",
"Expiration date is in the past" : "Datum preteka je že mimo!",
- "Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.",
+ "Could not find category \"%s\"" : "Kategorije »%s« ni mogoče najti.",
"Sunday" : "nedelja",
"Monday" : "ponedeljek",
"Tuesday" : "torek",
@@ -118,9 +136,10 @@ OC.L10N.register(
"Oct." : "okt",
"Nov." : "nov",
"Dec." : "dec",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "V uporabniškem imenu je dovoljeno uporabiti le znake: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "V uporabniškem imenu je dovoljeno uporabiti le znake: »a–z«, »A–Z«, »0–9« in »_.@-«\".",
"A valid username must be provided" : "Navedeno mora biti veljavno uporabniško ime",
"Username contains whitespace at the beginning or at the end" : "Uporabniško ime vsebuje presledni znak na začetku ali na koncu imena.",
+ "Username must not consist of dots only" : "Uporabniško ime ne sme biti zgolj iz pik",
"A valid password must be provided" : "Navedeno mora biti veljavno geslo",
"The username is already being used" : "Vpisano uporabniško ime je že v uporabi",
"User disabled" : "Uporabnik je onemogočen",
@@ -132,57 +151,49 @@ OC.L10N.register(
"Authentication error" : "Napaka overjanja",
"Token expired. Please reload page." : "Žeton je potekel. Stran je treba ponovno naložiti.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ni nameščenih programnikov podatkovnih zbirk (sqlite, mysql, ali postgresql).",
- "Cannot write into \"config\" directory" : "Mapa 'config' nima nastavljenih ustreznih dovoljenj za pisanje!",
+ "Cannot write into \"config\" directory" : "Mapa »config« nima nastavljenih ustreznih dovoljenj za pisanje!",
"Cannot write into \"apps\" directory" : "Mapa \"apps\" nima nastavljenih ustreznih dovoljenj za pisanje!",
"Setting locale to %s failed" : "Nastavljanje jezikovnih določil na %s je spodletelo.",
"Please install one of these locales on your system and restart your webserver." : "Namestiti je treba podporo za vsaj eno od navedenih jezikovnih določil v sistemu in nato ponovno zagnati spletni strežnik.",
"Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
"PHP module %s not installed." : "Modul PHP %s ni nameščen.",
- "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
- "Adjusting this setting in php.ini will make Nextcloud run again" : "Nastavitev tega parametra v <bold>php.ini</bold> bo vzpostavilo ponovno delovanje NextCloud",
- "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je nastavljeno na \"%s\" namesto pričakovane vrednosti \"0\"",
- "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za reštev te težave nastavi <code>mbstring.func_overload</code> na <code>0</code> v tvojem php.ini",
- "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora iti vsaj 2.7.0. Trenutno je nameščena %s.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP »%s« ni nastavljena na »%s«.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Prilagoditev te nastavitve v php.ini vzpostavi ponovno delovanje okolja NextCloud",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Vrednost mbstring.func_overload je nastavljena na »%s« in ne na pričakovano vrednost »0«.",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za rešitev težave je treba v datoteki php.ini nastaviti možnost <code>mbstring.func_overload</code> na <code>0</code>.",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Različica knjižnice libxml2 mora biti 2.7.0 ali višja. Trenutno je nameščena %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
- "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Kaže, da je PHP nastavljen tako, da odreže vrstične predmete docblock. To povzroči, da nekateri jedrni programi niso dosegljivi.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
"Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
"PostgreSQL >= 9 required" : "Zahtevana je različica PostgreSQL >= 9.",
"Please upgrade your database version" : "Posodobite različico podatkovne zbirke.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Spremenite dovoljenja mape na 0770 in s tem onemogočite branje vsebine drugim uporabnikom.",
- "Check the value of \"datadirectory\" in your configuration" : "V konfiguraciji preverite nastavitev \"datadirectory\"",
+ "Check the value of \"datadirectory\" in your configuration" : "Med nastavitvami je treba preveriti nastavitev »datadirectory«",
"Could not obtain lock type %d on \"%s\"." : "Ni mogoče pridobiti zaklepa %d na \"%s\".",
"Storage unauthorized. %s" : "Dostop do shrambe ni overjen. %s",
"Storage incomplete configuration. %s" : "Nepopolna nastavitev shrambe. %s",
"Storage connection error. %s" : "Napaka povezave do shrambe. %s",
"Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage connection timeout. %s" : "Povezava do shrambe je časovno potekla. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, višjo od %s – na voljo je različica %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.",
+ "Create" : "Ustvari",
+ "Change" : "Spremeni",
+ "Delete" : "Izbriši",
+ "Unlimited" : "Neomejeno",
+ "Verifying" : "Overjanje",
+ "Verifying …" : "Poteka overjanje ...",
+ "Verify" : "Overi",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
"Sharing %s failed, because the file does not exist" : "Souporaba %s je spodletela, ker ta datoteka ne obstaja",
"Sharing %s failed, because you can not share with yourself" : "Nastavitev %s souporabe je spodletela, ker souporaba s samim seboj ni mogoča.",
- "Sharing %s failed, because the user %s does not exist" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ne obstaja.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član nobene skupine, v kateri je tudi uporabnik %s.",
- "Sharing %s failed, because this item is already shared with %s" : "Nastavljanje souporabe %s je spodletela, ker je ima uporabnik %s predmet že v souporabi.",
- "Sharing %s failed, because this item is already shared with user %s" : "Nastavljanje souporabe %s je spodletelo, ker je predmet že v souporabi z uporabnikom %s.",
- "Sharing %s failed, because the group %s does not exist" : "Nastavljanje souporabe %s je spodletelo, ker je skupina %s ne obstaja.",
- "Sharing %s failed, because %s is not a member of the group %s" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član skupine %s.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene.",
- "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba preko povezave ni dovoljena.",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene povezave.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba s povezavo ni dovoljena.",
"Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv.",
- "Share type %s is not valid for %s" : "Vrsta souporabe %s za %s ni veljavna.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
"Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
- "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno nastavil.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Nastavljanje souporabe %s je spodletelo, ker zahteve presegajo dodeljena dovoljenja za %s.",
+ "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
"Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.",
- "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.",
- "%s shared »%s« with you" : "%s je omogočil souporabo »%s«",
- "%s via %s" : "%s prek %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" ni mogoče namestiti zaradi nerešenih odvisnosti: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 4a801f1b31a..e0319421631 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -2,41 +2,57 @@
"Cannot write into \"config\" directory!" : "Mapa 'config' nima določenih ustreznih dovoljenj za pisanje!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo.",
"See %s" : "Oglejte si %s",
- "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev",
- "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" : "Zaznano je, da je bila v sistem kopirana datoteka z enostavno nastavitvijo. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
+ "Sample configuration detected" : "Zaznana je neustrezna vzorčna nastavitev",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "V sistem je bila kopirana datoteka s vzorčnimi nastavitvami. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.",
"%1$s and %2$s" : "%1$s in %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s in %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s in %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s in %5$s",
+ "Enterprise bundle" : "Poslovni paket",
+ "Groupware bundle" : "Paket za skupinsko delo",
+ "Social sharing bundle" : "Paket družbene izmenjave",
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP manj kot %s.",
- "%sbit or higher PHP required." : "Zahtevana je različica PHP %s ali višja.",
+ "%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
"Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
"Following platforms are supported: %s" : "Podprta so okolja: %s",
"Server version %s or higher is required." : "Zahtevana je različica strežnika %s ali višja.",
"Server version %s or lower is required." : "Zahtevana je različica strežnika %s ali nižja.",
+ "Authentication" : "Overitev",
"Unknown filetype" : "Neznana vrsta datoteke",
"Invalid image" : "Neveljavna slika",
+ "Avatar image is not square" : "Slika podobe ni kvadratna",
"today" : "danes",
+ "tomorrow" : "jutri",
"yesterday" : "včeraj",
+ "_in %n day_::_in %n days_" : ["čez %n dan","čez %n dneva","čez %n dni","čez %n dni"],
"_%n day ago_::_%n days ago_" : ["pred %n dnevom","pred %n dnevoma","pred %n dnevi","pred %n dnevi"],
+ "next month" : "naslednji mesec",
"last month" : "zadnji mesec",
+ "_in %n month_::_in %n months_" : ["čez %n mesec","čez %n meseca","čez %n mesece","čez %n mesecev"],
"_%n month ago_::_%n months ago_" : ["pred %n mesecem","pred %n mesecema","pred %n meseci","pred %n meseci"],
+ "next year" : "naslednje leto",
"last year" : "lansko leto",
+ "_in %n year_::_in %n years_" : ["čez %n leto","čez %n leti","čez %n leta","čez %n let"],
"_%n year ago_::_%n years ago_" : ["pred %n letom","pred %n letoma","pred %n leti","pred %n leti"],
+ "_in %n hour_::_in %n hours_" : ["čez %n uro","čez %n uri","čez %n ure","čez %n ur"],
"_%n hour ago_::_%n hours ago_" : ["pred %n uro","pred %n urama","pred %n urami","pred %n urami"],
+ "_in %n minute_::_in %n minutes_" : ["čez %n minuto","čez %n minuti","čez %n minute","čez %n minut"],
"_%n minute ago_::_%n minutes ago_" : ["pred %n minuto","pred %n minutama","pred %n minutami","pred %n minutami"],
+ "in a few seconds" : "čez nekaj sekund",
"seconds ago" : "pred nekaj sekundami",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul z ID: %s ne obstaja. Omogočite ga med nastavitvami, ali pa stopite v stik s skrbnikom sistema.",
"File name is a reserved word" : "Ime datoteke je zadržana beseda",
- "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.",
+ "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en nedovoljen znak.",
"File name is too long" : "Ime datoteke je predolgo",
"Dot files are not allowed" : "Skrite datoteke niso dovoljene",
"Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa \\\"%s\\\" ni mogoče namestiti, ker ni mogoče brati datoteke appinfo.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa »%s« ni mogoče namestiti, ker datoteke appinfo ni mogoče brati.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Programa »%s« ni mogoče namestiti, ker ni združljiv z nameščeno različico strežnika.",
"__language_name__" : "Slovenščina",
+ "This is an automatically sent email, please do not reply." : "To sporočilo je samodejno poslano, nanj se nima smisla odzvati.",
"Help" : "Pomoč",
"Apps" : "Programi",
"Settings" : "Nastavitve",
@@ -47,30 +63,32 @@
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Security" : "Varnost",
+ "Groupware" : "Skupinsko delo",
"Additional settings" : "Dodatne nastavitve",
"Personal info" : "Osebni podatki",
- "%s enter the database username and name." : "%s - vnos uporabniškega imena in imena podatkovne zbirke.",
+ "Mobile & desktop" : "Mobilni in namizni dostop",
+ "%s enter the database username and name." : "%s – vnos uporabniškega imena in imena podatkovne zbirke.",
"%s enter the database username." : "%s - vnos uporabniškega imena podatkovne zbirke.",
- "%s enter the database name." : "%s - vnos imena podatkovne zbirke.",
+ "%s enter the database name." : "%s – vnos imena podatkovne zbirke.",
"%s you may not use dots in the database name" : "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik.",
"Oracle connection could not be established" : "Povezave s sistemom Oracle ni mogoče vzpostaviti.",
"Oracle username and/or password not valid" : "Uporabniško ime ali geslo Oracle ni veljavno",
"PostgreSQL username and/or password not valid" : "Uporabniško ime ali geslo PostgreSQL ni veljavno",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s v tem okolju ne bo deloval zanesljivo. Program uporabljate na lastno odgovornost! ",
- "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.",
+ "For the best results, please consider using a GNU/Linux server instead." : "Za najboljše rezultate je priporočljivo uporabljati strežnik GNU/Linux.",
"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." : "Videti je, da je dejavna seja %s zagnana v 32-bitnem okolju PHP in, da je v datoteki php.ini nastavljen open_basedir . Tako delovanje ni priporočljivo, saj se lahko pojavijo težave z datotekami, večjimi od 4GB.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraniti je treba nastavitev open_basedir v datoteki php.ini ali pa preklopiti na 64-bitno okolje PHP.",
"Set an admin username." : "Nastavi uporabniško ime skrbnika.",
"Set an admin password." : "Nastavi skrbniško geslo.",
"Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
- "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Souporaba ozadnjega programa %s mora vsebovati tudi vmesnik OCP\\Share_Backend",
"Sharing backend %s not found" : "Ozadnjega programa %s za souporabo ni mogoče najti",
"Sharing backend for %s not found" : "Ozadnjega programa za souporabo za %s ni mogoče najti",
"Open »%s«" : "Odpri »%s«",
"You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.",
"Expiration date is in the past" : "Datum preteka je že mimo!",
- "Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.",
+ "Could not find category \"%s\"" : "Kategorije »%s« ni mogoče najti.",
"Sunday" : "nedelja",
"Monday" : "ponedeljek",
"Tuesday" : "torek",
@@ -116,9 +134,10 @@
"Oct." : "okt",
"Nov." : "nov",
"Dec." : "dec",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "V uporabniškem imenu je dovoljeno uporabiti le znake: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "V uporabniškem imenu je dovoljeno uporabiti le znake: »a–z«, »A–Z«, »0–9« in »_.@-«\".",
"A valid username must be provided" : "Navedeno mora biti veljavno uporabniško ime",
"Username contains whitespace at the beginning or at the end" : "Uporabniško ime vsebuje presledni znak na začetku ali na koncu imena.",
+ "Username must not consist of dots only" : "Uporabniško ime ne sme biti zgolj iz pik",
"A valid password must be provided" : "Navedeno mora biti veljavno geslo",
"The username is already being used" : "Vpisano uporabniško ime je že v uporabi",
"User disabled" : "Uporabnik je onemogočen",
@@ -130,57 +149,49 @@
"Authentication error" : "Napaka overjanja",
"Token expired. Please reload page." : "Žeton je potekel. Stran je treba ponovno naložiti.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ni nameščenih programnikov podatkovnih zbirk (sqlite, mysql, ali postgresql).",
- "Cannot write into \"config\" directory" : "Mapa 'config' nima nastavljenih ustreznih dovoljenj za pisanje!",
+ "Cannot write into \"config\" directory" : "Mapa »config« nima nastavljenih ustreznih dovoljenj za pisanje!",
"Cannot write into \"apps\" directory" : "Mapa \"apps\" nima nastavljenih ustreznih dovoljenj za pisanje!",
"Setting locale to %s failed" : "Nastavljanje jezikovnih določil na %s je spodletelo.",
"Please install one of these locales on your system and restart your webserver." : "Namestiti je treba podporo za vsaj eno od navedenih jezikovnih določil v sistemu in nato ponovno zagnati spletni strežnik.",
"Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
"PHP module %s not installed." : "Modul PHP %s ni nameščen.",
- "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
- "Adjusting this setting in php.ini will make Nextcloud run again" : "Nastavitev tega parametra v <bold>php.ini</bold> bo vzpostavilo ponovno delovanje NextCloud",
- "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload je nastavljeno na \"%s\" namesto pričakovane vrednosti \"0\"",
- "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za reštev te težave nastavi <code>mbstring.func_overload</code> na <code>0</code> v tvojem php.ini",
- "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora iti vsaj 2.7.0. Trenutno je nameščena %s.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP »%s« ni nastavljena na »%s«.",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Prilagoditev te nastavitve v php.ini vzpostavi ponovno delovanje okolja NextCloud",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Vrednost mbstring.func_overload je nastavljena na »%s« in ne na pričakovano vrednost »0«.",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Za rešitev težave je treba v datoteki php.ini nastaviti možnost <code>mbstring.func_overload</code> na <code>0</code>.",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Različica knjižnice libxml2 mora biti 2.7.0 ali višja. Trenutno je nameščena %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
- "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : " Kaže, da je PHP nastavljen tako, da odreže vrstične predmete docblock. To povzroči, da nekateri jedrni programi niso dosegljivi.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
"Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
"PostgreSQL >= 9 required" : "Zahtevana je različica PostgreSQL >= 9.",
"Please upgrade your database version" : "Posodobite različico podatkovne zbirke.",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Spremenite dovoljenja mape na 0770 in s tem onemogočite branje vsebine drugim uporabnikom.",
- "Check the value of \"datadirectory\" in your configuration" : "V konfiguraciji preverite nastavitev \"datadirectory\"",
+ "Check the value of \"datadirectory\" in your configuration" : "Med nastavitvami je treba preveriti nastavitev »datadirectory«",
"Could not obtain lock type %d on \"%s\"." : "Ni mogoče pridobiti zaklepa %d na \"%s\".",
"Storage unauthorized. %s" : "Dostop do shrambe ni overjen. %s",
"Storage incomplete configuration. %s" : "Nepopolna nastavitev shrambe. %s",
"Storage connection error. %s" : "Napaka povezave do shrambe. %s",
"Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage connection timeout. %s" : "Povezava do shrambe je časovno potekla. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, višjo od %s – na voljo je različica %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.",
+ "Create" : "Ustvari",
+ "Change" : "Spremeni",
+ "Delete" : "Izbriši",
+ "Unlimited" : "Neomejeno",
+ "Verifying" : "Overjanje",
+ "Verifying …" : "Poteka overjanje ...",
+ "Verify" : "Overi",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
"Sharing %s failed, because the file does not exist" : "Souporaba %s je spodletela, ker ta datoteka ne obstaja",
"Sharing %s failed, because you can not share with yourself" : "Nastavitev %s souporabe je spodletela, ker souporaba s samim seboj ni mogoča.",
- "Sharing %s failed, because the user %s does not exist" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ne obstaja.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član nobene skupine, v kateri je tudi uporabnik %s.",
- "Sharing %s failed, because this item is already shared with %s" : "Nastavljanje souporabe %s je spodletela, ker je ima uporabnik %s predmet že v souporabi.",
- "Sharing %s failed, because this item is already shared with user %s" : "Nastavljanje souporabe %s je spodletelo, ker je predmet že v souporabi z uporabnikom %s.",
- "Sharing %s failed, because the group %s does not exist" : "Nastavljanje souporabe %s je spodletelo, ker je skupina %s ne obstaja.",
- "Sharing %s failed, because %s is not a member of the group %s" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član skupine %s.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene.",
- "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba preko povezave ni dovoljena.",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene povezave.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba s povezavo ni dovoljena.",
"Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv.",
- "Share type %s is not valid for %s" : "Vrsta souporabe %s za %s ni veljavna.",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
"Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
- "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno nastavil.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Nastavljanje souporabe %s je spodletelo, ker zahteve presegajo dodeljena dovoljenja za %s.",
+ "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
"Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.",
- "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.",
- "%s shared »%s« with you" : "%s je omogočil souporabo »%s«",
- "%s via %s" : "%s prek %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" ni mogoče namestiti zaradi nerešenih odvisnosti: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 5fdd1add21a..9043820e59a 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -181,8 +181,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage is temporarily not available" : "Hapsira ruajtëse nuk është në dispozicion përkohësisht",
"Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Kërkohet librari %s me një version më të madh se %s - version gati %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Lypset librari %s me një version më të vogël se %s - version gati %s.",
"Unlimited" : "E palimituar",
"Verifying" : "Duke e verifikuar",
"Verifying …" : "Duke e verifikuar ...",
@@ -190,27 +188,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %i",
"Sharing %s failed, because the file does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’ekziston",
"Sharing %s failed, because you can not share with yourself" : "Ndarja e %s dështoi, ngaqë s’mund të ndani gjëra me vetveten",
- "Sharing %s failed, because the user %s does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë përdoruesi %s nuk ekziston",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ndarja për %s dështoi, ngaqë përdoruesi %s s’është anëtar i ndonjë grupi ku %s është anëtar",
- "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",
- "Sharing %s failed, because this item is already shared with user %s" : "Ndarja e %s me të tjerët dështoi, ngaqë ky objekt është ndarë tashmë me përdoruesin %s",
- "Sharing %s failed, because the group %s does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë grupi %s nuk ekziston",
- "Sharing %s failed, because %s is not a member of the group %s" : "Ndarja e %s me të tjerët dështoi, ngaqë %s s’është anëtar i grupit %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura",
"Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje",
"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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Ndarja për %s dështoi, s’u gjet dot %s, ndoshta shërbyesi është hëpërhë jashtë pune.",
- "Share type %s is not valid for %s" : "Lloji i ndarjes %s s’është i vlefshëm për %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
"Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
"Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ndarja e %s me të tjerët dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s",
"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",
- "%s shared »%s« with you" : "%s ndau me ju »%s«",
- "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.",
- "%s via %s" : "%s përmes %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’plotësohen varësitë vijuese: %s."
+ "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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 99537106b5e..da2f5623707 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -179,8 +179,6 @@
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage is temporarily not available" : "Hapsira ruajtëse nuk është në dispozicion përkohësisht",
"Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Kërkohet librari %s me një version më të madh se %s - version gati %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Lypset librari %s me një version më të vogël se %s - version gati %s.",
"Unlimited" : "E palimituar",
"Verifying" : "Duke e verifikuar",
"Verifying …" : "Duke e verifikuar ...",
@@ -188,27 +186,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %i",
"Sharing %s failed, because the file does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’ekziston",
"Sharing %s failed, because you can not share with yourself" : "Ndarja e %s dështoi, ngaqë s’mund të ndani gjëra me vetveten",
- "Sharing %s failed, because the user %s does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë përdoruesi %s nuk ekziston",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ndarja për %s dështoi, ngaqë përdoruesi %s s’është anëtar i ndonjë grupi ku %s është anëtar",
- "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",
- "Sharing %s failed, because this item is already shared with user %s" : "Ndarja e %s me të tjerët dështoi, ngaqë ky objekt është ndarë tashmë me përdoruesin %s",
- "Sharing %s failed, because the group %s does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë grupi %s nuk ekziston",
- "Sharing %s failed, because %s is not a member of the group %s" : "Ndarja e %s me të tjerët dështoi, ngaqë %s s’është anëtar i grupit %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura",
"Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje",
"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",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Ndarja për %s dështoi, s’u gjet dot %s, ndoshta shërbyesi është hëpërhë jashtë pune.",
- "Share type %s is not valid for %s" : "Lloji i ndarjes %s s’është i vlefshëm për %s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
"Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
"Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ndarja e %s me të tjerët dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s",
"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",
- "%s shared »%s« with you" : "%s ndau me ju »%s«",
- "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.",
- "%s via %s" : "%s përmes %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’plotësohen varësitë vijuese: %s."
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index c84bef82902..2e26ae3fd56 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Грешка приликом повезивања на складиште. %s",
"Storage is temporarily not available" : "Складиште привремено није доступно",
"Storage connection timeout. %s" : "Прекорачено време за повезивање на складиште. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Потребна је библиотека „%s“ верзије веће од %s - доступна верзија је %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Потребна је библиотека „%s“ верзије ниже од %s - доступна верзија је %s.",
"Create" : "Направи",
"Change" : "Измени",
"Delete" : "Обриши",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Дељење %s није успело зато што позадина не дозвољава дељење од типа %i",
"Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
"Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
- "Sharing %s failed, because the user %s does not exist" : "Дељење %s није успело зато што не постоји корисник %s",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Дељење %s није успело зато што корисник %s није члан ниједне групе чији је %s члан",
- "Sharing %s failed, because this item is already shared with %s" : "Дељење %s није успело зато што се ова ставка већ дели са %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Дељење %s није успело зато што се ова ставка већ дели са корисником %s",
- "Sharing %s failed, because the group %s does not exist" : "Дељење %s није успело зато што не постоји група %s",
- "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" : "Није дозвољено да направите здружено дељење са истим корисником",
- "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",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
- "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
- "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Дељење %s није успело зато што дозволе превазилазе дозволе гарантоване за %s",
- "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 није успело зато што фајл није нађен у кешу фајлова",
- "%s shared »%s« with you" : "%s подели „%s“ са вама",
- "%s shared »%s« with you." : "%s поделио „%s“ са Вама.",
- "%s via %s" : "%s путем %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Апликација „%s“ не може бити инсталирана јер следеће зависности нису испуњене: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификацију \"%s\" већ користи провајдер здруживања \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$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" : "Није дозвољено да направите здружено дељење са истим корисником",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
"Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
+ "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
+ "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор"
+ "Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json
index 8f5df002d96..4a4e3b95309 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Грешка приликом повезивања на складиште. %s",
"Storage is temporarily not available" : "Складиште привремено није доступно",
"Storage connection timeout. %s" : "Прекорачено време за повезивање на складиште. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Потребна је библиотека „%s“ верзије веће од %s - доступна верзија је %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Потребна је библиотека „%s“ верзије ниже од %s - доступна верзија је %s.",
"Create" : "Направи",
"Change" : "Измени",
"Delete" : "Обриши",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Дељење %s није успело зато што позадина не дозвољава дељење од типа %i",
"Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
"Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
- "Sharing %s failed, because the user %s does not exist" : "Дељење %s није успело зато што не постоји корисник %s",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Дељење %s није успело зато што корисник %s није члан ниједне групе чији је %s члан",
- "Sharing %s failed, because this item is already shared with %s" : "Дељење %s није успело зато што се ова ставка већ дели са %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Дељење %s није успело зато што се ова ставка већ дели са корисником %s",
- "Sharing %s failed, because the group %s does not exist" : "Дељење %s није успело зато што не постоји група %s",
- "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" : "Није дозвољено да направите здружено дељење са истим корисником",
- "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",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
- "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
- "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Дељење %s није успело зато што дозволе превазилазе дозволе гарантоване за %s",
- "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 није успело зато што фајл није нађен у кешу фајлова",
- "%s shared »%s« with you" : "%s подели „%s“ са вама",
- "%s shared »%s« with you." : "%s поделио „%s“ са Вама.",
- "%s via %s" : "%s путем %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Апликација „%s“ не може бити инсталирана јер следеће зависности нису испуњене: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификацију \"%s\" већ користи провајдер здруживања \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$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" : "Није дозвољено да направите здружено дељење са истим корисником",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
"Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
+ "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
+ "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор"
+ "Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index f808730f0cb..ecb61688e66 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -9,7 +9,7 @@ OC.L10N.register(
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den. Se %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Filerna i appen %1$s ersattes inte korrekt. Kontrollera att det är en version som är kompatibel med servern.",
"Sample configuration detected" : "Exempel-konfiguration detekterad",
- "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" : "Det har detekterats att exempel-konfigurationen har kopierats. Detta kan förstöra din installation och stöds ej. Vänligen läs dokumentationen innan ändringar på config.php utförs",
+ "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" : "Det har upptäckts att provkonfigurationen har kopierats. Detta kan bryta din installation och stöds inte. Vänligen läs dokumentationen innan du utför ändringar på config.php",
"%1$s and %2$s" : "%1$s och %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s och %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s och %4$s",
@@ -99,9 +99,9 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt",
"You need to enter details of an existing account." : "Du måste ange inloggningsuppgifter av ett aktuellt konto.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!",
- "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.",
+ "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux-server istället.",
"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." : "Det verkar som om denna %s instans körs på en 32-bitars PHP miljö och open_basedir har konfigurerats i php.ini. Detta kommer att leda till problem med filer över 4 GB och är verkligen inte rekommenderat!",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Ta bort open_basedir i din php.ini eller byt till 64-bitars PHP.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vänligen ta bort open_basedir-inställningen i din php.ini eller växla till 64-bitars PHP.",
"Set an admin username." : "Ange ett användarnamn för administratören.",
"Set an admin password." : "Ange ett administratörslösenord.",
"Can't create or write into the data directory %s" : "Kan inte skapa eller skriva till data-katalogen %s",
@@ -180,22 +180,22 @@ OC.L10N.register(
"User disabled" : "Användare inaktiverad",
"Login canceled by app" : "Inloggningen avbruten av appen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Appen \"%1$s\" kan inte installeras eftersom följande beroenden inte är uppfyllda: %2$s",
- "a safe home for all your data" : "En säker lagringsplats för all din data",
+ "a safe home for all your data" : "ett säkert hem för alla dina data",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, vänligen försök igen senare",
"Can't read file" : "Kan ej läsa filen",
"Application is not enabled" : "Applikationen är inte aktiverad",
"Authentication error" : "Fel vid autentisering",
- "Token expired. Please reload page." : "Ogiltig token. Ladda om sidan.",
+ "Token expired. Please reload page." : "Token har löpt ut. Vänligen uppdatera sidan.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Inga databasdrivrutiner (sqlite, mysql, eller postgresql) installerade.",
"Cannot write into \"config\" directory" : "Kan inte skriva till \"config\" katalogen",
"Cannot write into \"apps\" directory" : "Kan inte skriva till \"apps\" katalogen!",
- "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" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att avaktivera App store i konfigurationsfilen. Se %s",
+ "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" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s",
"Cannot create \"data\" directory" : "Kan inte skapa \"datamapp\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rättigheter kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s.",
"Setting locale to %s failed" : "Sätta locale till %s misslyckades",
- "Please install one of these locales on your system and restart your webserver." : "Vänligen installera en av dessa locale på din server och starta om din webbserver,",
- "Please ask your server administrator to install the module." : "Vänligen be din administratör att installera modulen.",
+ "Please install one of these locales on your system and restart your webserver." : "Vänligen Installera en av dessa språk på ditt system och starta om webbservern.",
+ "Please ask your server administrator to install the module." : "Vänligen be serveradministratören att installera modulen.",
"PHP module %s not installed." : "PHP-modulen %s är inte installerad.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-inställning \"%s\" är inte inställd på \"%s\".",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Att ändra denna inställning i php.ini kommer göra så att Nextcloud fungerar igen",
@@ -208,8 +208,8 @@ OC.L10N.register(
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har installerats, men de listas fortfarande som saknade?",
"Please ask your server administrator to restart the web server." : "Vänligen be din serveradministratör att starta om webbservern.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 krävs",
- "Please upgrade your database version" : "Vänligen uppgradera din databas-version",
- "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra rättigheterna till 0770 så att katalogen inte kan listas av andra användare.",
+ "Please upgrade your database version" : "Vänligen uppgradera din databasversion",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra behörigheterna till 0770 så att katalogen inte kan listas av andra användare.",
"Your data directory is readable by other users" : "Din datamapp är läsbar av andra användare",
"Your data directory must be an absolute path" : "Du måste specificera en korrekt sökväg till datamappen",
"Check the value of \"datadirectory\" in your configuration" : "Kontrollera värdet av \"datakatalog\" i din konfiguration",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Lagringsutrymme lyckas inte ansluta. %s",
"Storage is temporarily not available" : "Lagringsutrymme är för tillfället inte tillgängligt",
"Storage connection timeout. %s" : "Lagringsutrymme lyckas inte ansluta \"timeout\". %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotek %s med version högre än %s krävs - tillgänglig version %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotek %s med version lägre än %s krävs - tillgänglig version %s.",
"Create" : "Skapa",
"Change" : "Ändra",
"Delete" : "Radera",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Misslyckades dela ut %s då backend inte tillåter delningar från typ %i",
"Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
"Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
- "Sharing %s failed, because the user %s does not exist" : "Delning %s misslyckades därför att användaren %s inte existerar",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delning %s misslyckades därför att användaren %s inte är medlem i någon av de grupper som %s är medlem i",
- "Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Delning %s misslyckades därför att detta redan är delat med användaren %s",
- "Sharing %s failed, because the group %s does not exist" : "Delning %s misslyckades därför att gruppen %s inte existerar",
- "Sharing %s failed, because %s is not a member of the group %s" : "Delning %s misslyckades därför att %s inte ingår i gruppen %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
- "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
- "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Misslyckades dela ut %s, kan inte hitta %s, kanske är servern inte åtkomlig för närvarande.",
- "Share type %s is not valid for %s" : "Delningstyp %s är inte giltig för %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
- "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
- "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Delning %s misslyckades därför att rättigheterna överskrider de rättigheter som är tillåtna för %s",
- "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
- "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",
- "%s shared »%s« with you" : "%s delade »%s« med dig",
- "%s shared »%s« with you." : "%s delade »%s« med dig.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Applikationen \"%s\" kan ej installeras eftersom följande kriterier inte är uppfyllda: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" används redan av moln - federationsleverantör \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
+ "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
+ "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
"Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
+ "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
+ "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa"
+ "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$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"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index db97d6bb819..a39113ac1d7 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -7,7 +7,7 @@
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den. Se %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Filerna i appen %1$s ersattes inte korrekt. Kontrollera att det är en version som är kompatibel med servern.",
"Sample configuration detected" : "Exempel-konfiguration detekterad",
- "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" : "Det har detekterats att exempel-konfigurationen har kopierats. Detta kan förstöra din installation och stöds ej. Vänligen läs dokumentationen innan ändringar på config.php utförs",
+ "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" : "Det har upptäckts att provkonfigurationen har kopierats. Detta kan bryta din installation och stöds inte. Vänligen läs dokumentationen innan du utför ändringar på config.php",
"%1$s and %2$s" : "%1$s och %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s och %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s och %4$s",
@@ -97,9 +97,9 @@
"PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt",
"You need to enter details of an existing account." : "Du måste ange inloggningsuppgifter av ett aktuellt konto.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!",
- "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.",
+ "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux-server istället.",
"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." : "Det verkar som om denna %s instans körs på en 32-bitars PHP miljö och open_basedir har konfigurerats i php.ini. Detta kommer att leda till problem med filer över 4 GB och är verkligen inte rekommenderat!",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Ta bort open_basedir i din php.ini eller byt till 64-bitars PHP.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vänligen ta bort open_basedir-inställningen i din php.ini eller växla till 64-bitars PHP.",
"Set an admin username." : "Ange ett användarnamn för administratören.",
"Set an admin password." : "Ange ett administratörslösenord.",
"Can't create or write into the data directory %s" : "Kan inte skapa eller skriva till data-katalogen %s",
@@ -178,22 +178,22 @@
"User disabled" : "Användare inaktiverad",
"Login canceled by app" : "Inloggningen avbruten av appen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Appen \"%1$s\" kan inte installeras eftersom följande beroenden inte är uppfyllda: %2$s",
- "a safe home for all your data" : "En säker lagringsplats för all din data",
+ "a safe home for all your data" : "ett säkert hem för alla dina data",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, vänligen försök igen senare",
"Can't read file" : "Kan ej läsa filen",
"Application is not enabled" : "Applikationen är inte aktiverad",
"Authentication error" : "Fel vid autentisering",
- "Token expired. Please reload page." : "Ogiltig token. Ladda om sidan.",
+ "Token expired. Please reload page." : "Token har löpt ut. Vänligen uppdatera sidan.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Inga databasdrivrutiner (sqlite, mysql, eller postgresql) installerade.",
"Cannot write into \"config\" directory" : "Kan inte skriva till \"config\" katalogen",
"Cannot write into \"apps\" directory" : "Kan inte skriva till \"apps\" katalogen!",
- "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" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att avaktivera App store i konfigurationsfilen. Se %s",
+ "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" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s",
"Cannot create \"data\" directory" : "Kan inte skapa \"datamapp\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rättigheter kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s.",
"Setting locale to %s failed" : "Sätta locale till %s misslyckades",
- "Please install one of these locales on your system and restart your webserver." : "Vänligen installera en av dessa locale på din server och starta om din webbserver,",
- "Please ask your server administrator to install the module." : "Vänligen be din administratör att installera modulen.",
+ "Please install one of these locales on your system and restart your webserver." : "Vänligen Installera en av dessa språk på ditt system och starta om webbservern.",
+ "Please ask your server administrator to install the module." : "Vänligen be serveradministratören att installera modulen.",
"PHP module %s not installed." : "PHP-modulen %s är inte installerad.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-inställning \"%s\" är inte inställd på \"%s\".",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Att ändra denna inställning i php.ini kommer göra så att Nextcloud fungerar igen",
@@ -206,8 +206,8 @@
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har installerats, men de listas fortfarande som saknade?",
"Please ask your server administrator to restart the web server." : "Vänligen be din serveradministratör att starta om webbservern.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 krävs",
- "Please upgrade your database version" : "Vänligen uppgradera din databas-version",
- "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra rättigheterna till 0770 så att katalogen inte kan listas av andra användare.",
+ "Please upgrade your database version" : "Vänligen uppgradera din databasversion",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra behörigheterna till 0770 så att katalogen inte kan listas av andra användare.",
"Your data directory is readable by other users" : "Din datamapp är läsbar av andra användare",
"Your data directory must be an absolute path" : "Du måste specificera en korrekt sökväg till datamappen",
"Check the value of \"datadirectory\" in your configuration" : "Kontrollera värdet av \"datakatalog\" i din konfiguration",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Lagringsutrymme lyckas inte ansluta. %s",
"Storage is temporarily not available" : "Lagringsutrymme är för tillfället inte tillgängligt",
"Storage connection timeout. %s" : "Lagringsutrymme lyckas inte ansluta \"timeout\". %s",
- "Library %s with a version higher than %s is required - available version %s." : "Bibliotek %s med version högre än %s krävs - tillgänglig version %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Bibliotek %s med version lägre än %s krävs - tillgänglig version %s.",
"Create" : "Skapa",
"Change" : "Ändra",
"Delete" : "Radera",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Misslyckades dela ut %s då backend inte tillåter delningar från typ %i",
"Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
"Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
- "Sharing %s failed, because the user %s does not exist" : "Delning %s misslyckades därför att användaren %s inte existerar",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delning %s misslyckades därför att användaren %s inte är medlem i någon av de grupper som %s är medlem i",
- "Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Delning %s misslyckades därför att detta redan är delat med användaren %s",
- "Sharing %s failed, because the group %s does not exist" : "Delning %s misslyckades därför att gruppen %s inte existerar",
- "Sharing %s failed, because %s is not a member of the group %s" : "Delning %s misslyckades därför att %s inte ingår i gruppen %s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
- "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
- "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Misslyckades dela ut %s, kan inte hitta %s, kanske är servern inte åtkomlig för närvarande.",
- "Share type %s is not valid for %s" : "Delningstyp %s är inte giltig för %s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
- "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
- "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Delning %s misslyckades därför att rättigheterna överskrider de rättigheter som är tillåtna för %s",
- "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
- "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",
- "%s shared »%s« with you" : "%s delade »%s« med dig",
- "%s shared »%s« with you." : "%s delade »%s« med dig.",
- "%s via %s" : "%s via %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Applikationen \"%s\" kan ej installeras eftersom följande kriterier inte är uppfyllda: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" används redan av moln - federationsleverantör \"%s\"",
"Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
"Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
+ "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
+ "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
"Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
+ "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
+ "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa"
+ "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/th.js b/lib/l10n/th.js
index f146684af91..52c45372681 100644
--- a/lib/l10n/th.js
+++ b/lib/l10n/th.js
@@ -89,31 +89,16 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "การตั้งค่าการจัดเก็บข้อมูลไม่สำเร็จ %s",
"Storage connection error. %s" : "ข้อผิดพลาดการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
"Storage connection timeout. %s" : "หมดเวลาการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
- "Library %s with a version higher than %s is required - available version %s." : "จำเป็นต้องมีไลบรารีรุ่น %s หรือรุ่นที่สูงกว่า %s - รุ่นที่ใช้ได้คือ %s",
- "Library %s with a version lower than %s is required - available version %s." : "จำเป็นต้องมีไลบรารีรุ่น %s หรือรุ่นที่ต่ำกว่า %s - รุ่นที่ใช้ได้คือ %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "การแชร์ %s ล้มเหลวเพราะแบ็กเอนด์ไม่อนุญาตให้แชร์จากไฟล์ประเภท %i",
"Sharing %s failed, because the file does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีไฟล์นี้อยู่",
"Sharing %s failed, because you can not share with yourself" : "การแขร์ %s ล้มเหลวเพราะคุณไม่สามารถแชร์ให้กับตัวเอง",
- "Sharing %s failed, because the user %s does not exist" : "การแชร์ %s ล้มเหลวเนื่องจากไม่ได้มีผู้ใช้ %s อยู่",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "การแชร์ %s ล้มเหลวเนื่องจากผู้ใช้ %s ไม่ได้เป็นสมาชิกของกลุ่มใดๆ %s เป็นสมาชิกของ",
- "Sharing %s failed, because this item is already shared with %s" : "การแชร์ %s ล้มเหลวเพราะรายการนี้ถูกแชร์กับ %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s ที่กำลังแชร์ล้มเหลว เพราะรายการนี้ได้ถูกแชร์กับผู้ใช้ %s",
- "Sharing %s failed, because the group %s does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีกลุ่ม %s อยู่",
- "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" : "ไม่อนุญาตให้สร้างแชร์สหพันธ์กับผู้ใช้เดียวกัน",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ไม่สามารถตั้งค่าวันหมดอายุ การแชร์ไม่สามารถหมดอายุน้อยกว่า %s หลังจากที่พวกเขาได้รับการแชร์",
"Cannot set expiration date. Expiration date is in the past" : "ไม่สามารถตั้งค่าวันหมดอายุ เพราะวันหมดอายุผ่านไปแล้ว",
"Sharing failed, because the user %s is the original sharer" : "การแชร์ล้มเหลวเพราะผู้ใช้ %s เป็นต้นฉบับการแชร์นี้",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "การแชร์ %s ล้มเหลวเพราะใช้สิทธิ์เกินที่อนุญาตให้ %s",
"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 ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์",
- "%s shared »%s« with you" : "%s ถูกแชร์ »%s« กับคุณ",
- "%s via %s" : "%s ผ่านทาง %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "แอพฯ \"%s\" ไม่สามารถติดตั้งเพราะไม่ได้ปฏิบัติตามการอ้างอิงต่อไปนี้: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "การแชร์ %s ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/th.json b/lib/l10n/th.json
index 73c1f1141bf..7e392fe9905 100644
--- a/lib/l10n/th.json
+++ b/lib/l10n/th.json
@@ -87,31 +87,16 @@
"Storage incomplete configuration. %s" : "การตั้งค่าการจัดเก็บข้อมูลไม่สำเร็จ %s",
"Storage connection error. %s" : "ข้อผิดพลาดการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
"Storage connection timeout. %s" : "หมดเวลาการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
- "Library %s with a version higher than %s is required - available version %s." : "จำเป็นต้องมีไลบรารีรุ่น %s หรือรุ่นที่สูงกว่า %s - รุ่นที่ใช้ได้คือ %s",
- "Library %s with a version lower than %s is required - available version %s." : "จำเป็นต้องมีไลบรารีรุ่น %s หรือรุ่นที่ต่ำกว่า %s - รุ่นที่ใช้ได้คือ %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "การแชร์ %s ล้มเหลวเพราะแบ็กเอนด์ไม่อนุญาตให้แชร์จากไฟล์ประเภท %i",
"Sharing %s failed, because the file does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีไฟล์นี้อยู่",
"Sharing %s failed, because you can not share with yourself" : "การแขร์ %s ล้มเหลวเพราะคุณไม่สามารถแชร์ให้กับตัวเอง",
- "Sharing %s failed, because the user %s does not exist" : "การแชร์ %s ล้มเหลวเนื่องจากไม่ได้มีผู้ใช้ %s อยู่",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "การแชร์ %s ล้มเหลวเนื่องจากผู้ใช้ %s ไม่ได้เป็นสมาชิกของกลุ่มใดๆ %s เป็นสมาชิกของ",
- "Sharing %s failed, because this item is already shared with %s" : "การแชร์ %s ล้มเหลวเพราะรายการนี้ถูกแชร์กับ %s",
- "Sharing %s failed, because this item is already shared with user %s" : "%s ที่กำลังแชร์ล้มเหลว เพราะรายการนี้ได้ถูกแชร์กับผู้ใช้ %s",
- "Sharing %s failed, because the group %s does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีกลุ่ม %s อยู่",
- "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" : "ไม่อนุญาตให้สร้างแชร์สหพันธ์กับผู้ใช้เดียวกัน",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ไม่สามารถตั้งค่าวันหมดอายุ การแชร์ไม่สามารถหมดอายุน้อยกว่า %s หลังจากที่พวกเขาได้รับการแชร์",
"Cannot set expiration date. Expiration date is in the past" : "ไม่สามารถตั้งค่าวันหมดอายุ เพราะวันหมดอายุผ่านไปแล้ว",
"Sharing failed, because the user %s is the original sharer" : "การแชร์ล้มเหลวเพราะผู้ใช้ %s เป็นต้นฉบับการแชร์นี้",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "การแชร์ %s ล้มเหลวเพราะใช้สิทธิ์เกินที่อนุญาตให้ %s",
"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 ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์",
- "%s shared »%s« with you" : "%s ถูกแชร์ »%s« กับคุณ",
- "%s via %s" : "%s ผ่านทาง %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "แอพฯ \"%s\" ไม่สามารถติดตั้งเพราะไม่ได้ปฏิบัติตามการอ้างอิงต่อไปนี้: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "การแชร์ %s ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 15f9e3050f3..fcdbd99454e 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -8,7 +8,7 @@ OC.L10N.register(
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın. %s bölümüne bakabilirsiniz",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "%1$s uygulamasının dosyaları doğru şekilde değiştirilmedi. Sunucu ile uyumlu dosyaların yüklü olduğundan emin olun.",
- "Sample configuration detected" : "Örnek yapılandırma algılandı",
+ "Sample configuration detected" : "Örnek yapılandırma algılandı",
"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" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu durum kurulumunuzu bozabilir ve desteklenmez. Lütfen config.php dosyasında değişiklik yapmadan önce belgeleri okuyun",
"%1$s and %2$s" : "%1$s ve %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s",
@@ -100,7 +100,7 @@ OC.L10N.register(
"You need to enter details of an existing account." : "Varolan bir hesabın bilgilerini yazmalısınız.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!",
"For the best results, please consider using a GNU/Linux server instead." : "En iyi sonucu almak için GNU/Linux sunucusu kullanın.",
- "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." : "Bu %s kopyasının 32-bit PHP ortamında çalıştırıldığı ve open_basedir seçeneğinin php.ini dosyasından ayarlandığı görülüyor. Bu yapılandırma 4 GB boyutundan büyük dosyalarda sorun çıkarır ve kullanılması önerilmez.",
+ "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." : "Bu %s kopyası 32 bit PHP ortamında çalıştırılıyor ve open_basedir seçeneği php.ini dosyasından ayarlanmış gibi görünüyor. Bu yapılandırma 4 GB boyutundan büyük dosyalarda sorun çıkarır ve kullanılması önerilmez.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Lütfen php.ini dosyasındaki open_basedir ayarını kaldırın ya da 64-bit PHP sürümüne geçin.",
"Set an admin username." : "Bir yönetici kullanıcı adı yazın.",
"Set an admin password." : "Bir yönetici parolası yazın.",
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "Depolama bağlantısı sorunu. %s",
"Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Storage connection timeout. %s" : "Depolama bağlantısı zaman aşımı. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s kitaplığının %s sonrası bir sürümü gerekli. Geçerli sürüm: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s kitaplığının %s öncesi bir sürümü gerekli. Geçerli sürüm: %s.",
"Create" : "Ekle",
"Change" : "Düzenle",
"Delete" : "Sil",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşılamadı",
"Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
"Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
- "Sharing %s failed, because the user %s does not exist" : "%s paylaşılamadı. %s kullanıcısı bulunamadı",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s paylaşılamadı. %s kullanıcısı %s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
- "Sharing %s failed, because this item is already shared with %s" : "%s paylaşılamadı. Bu öge %s ile zaten paylaşılmış",
- "Sharing %s failed, because this item is already shared with user %s" : "%s paylaşılamadı. Bu öge zaten %s kullanıcısı ile paylaşılmış",
- "Sharing %s failed, because the group %s does not exist" : "%s paylaşılamadı. %s grubu bulunamadı",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s paylaşılamadı. %s kullanıcısı %s grubunun üyesi değil",
- "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
- "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
- "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşılamadı. %s bulunamadı. Sunucuya şu anda erişilemiyor olabilir.",
- "Share type %s is not valid for %s" : "%s paylaşım türü %s için geçerli değil",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
- "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
- "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s paylaşılamadı. İzinler %s için verilen izin düzeyini aşıyor",
- "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşılamadı. Paylaşım arka ucu %s kaynağını bulamadı",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı",
- "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
- "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.",
- "%s via %s" : "%s, %s aracılığıyla",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu gereklilikler sağlanmadığı için kurulamıyor: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "\"%s\" kodu zaten \"%s\" birleşik hizmet sağlayıcısı tarafından kullanılıyor",
"Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
"Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
"Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
+ "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
"Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
+ "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
+ "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı"
+ "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 9a817a0b268..49d0e066b4e 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -6,7 +6,7 @@
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın. %s bölümüne bakabilirsiniz",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "%1$s uygulamasının dosyaları doğru şekilde değiştirilmedi. Sunucu ile uyumlu dosyaların yüklü olduğundan emin olun.",
- "Sample configuration detected" : "Örnek yapılandırma algılandı",
+ "Sample configuration detected" : "Örnek yapılandırma algılandı",
"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" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu durum kurulumunuzu bozabilir ve desteklenmez. Lütfen config.php dosyasında değişiklik yapmadan önce belgeleri okuyun",
"%1$s and %2$s" : "%1$s ve %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s",
@@ -98,7 +98,7 @@
"You need to enter details of an existing account." : "Varolan bir hesabın bilgilerini yazmalısınız.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!",
"For the best results, please consider using a GNU/Linux server instead." : "En iyi sonucu almak için GNU/Linux sunucusu kullanın.",
- "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." : "Bu %s kopyasının 32-bit PHP ortamında çalıştırıldığı ve open_basedir seçeneğinin php.ini dosyasından ayarlandığı görülüyor. Bu yapılandırma 4 GB boyutundan büyük dosyalarda sorun çıkarır ve kullanılması önerilmez.",
+ "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." : "Bu %s kopyası 32 bit PHP ortamında çalıştırılıyor ve open_basedir seçeneği php.ini dosyasından ayarlanmış gibi görünüyor. Bu yapılandırma 4 GB boyutundan büyük dosyalarda sorun çıkarır ve kullanılması önerilmez.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Lütfen php.ini dosyasındaki open_basedir ayarını kaldırın ya da 64-bit PHP sürümüne geçin.",
"Set an admin username." : "Bir yönetici kullanıcı adı yazın.",
"Set an admin password." : "Bir yönetici parolası yazın.",
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "Depolama bağlantısı sorunu. %s",
"Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Storage connection timeout. %s" : "Depolama bağlantısı zaman aşımı. %s",
- "Library %s with a version higher than %s is required - available version %s." : "%s kitaplığının %s sonrası bir sürümü gerekli. Geçerli sürüm: %s.",
- "Library %s with a version lower than %s is required - available version %s." : "%s kitaplığının %s öncesi bir sürümü gerekli. Geçerli sürüm: %s.",
"Create" : "Ekle",
"Change" : "Düzenle",
"Delete" : "Sil",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşılamadı",
"Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
"Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
- "Sharing %s failed, because the user %s does not exist" : "%s paylaşılamadı. %s kullanıcısı bulunamadı",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s paylaşılamadı. %s kullanıcısı %s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
- "Sharing %s failed, because this item is already shared with %s" : "%s paylaşılamadı. Bu öge %s ile zaten paylaşılmış",
- "Sharing %s failed, because this item is already shared with user %s" : "%s paylaşılamadı. Bu öge zaten %s kullanıcısı ile paylaşılmış",
- "Sharing %s failed, because the group %s does not exist" : "%s paylaşılamadı. %s grubu bulunamadı",
- "Sharing %s failed, because %s is not a member of the group %s" : "%s paylaşılamadı. %s kullanıcısı %s grubunun üyesi değil",
- "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
- "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
- "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşılamadı. %s bulunamadı. Sunucuya şu anda erişilemiyor olabilir.",
- "Share type %s is not valid for %s" : "%s paylaşım türü %s için geçerli değil",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
- "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
- "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s paylaşılamadı. İzinler %s için verilen izin düzeyini aşıyor",
- "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşılamadı. Paylaşım arka ucu %s kaynağını bulamadı",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı",
- "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı",
- "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.",
- "%s via %s" : "%s, %s aracılığıyla",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu gereklilikler sağlanmadığı için kurulamıyor: %s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "\"%s\" kodu zaten \"%s\" birleşik hizmet sağlayıcısı tarafından kullanılıyor",
"Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
"Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
"Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
+ "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
"Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
+ "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
+ "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı"
+ "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index b6bb876bfc9..dc8d185f166 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -94,31 +94,15 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Неповна конфігурація сховища. %s",
"Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s",
"Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Потрібна бібліотека %s версії не більше %s, встановлена версія %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Потрібна бібліотека %s версії менш ніж %s, встановлена версія %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i",
"Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує",
"Sharing %s failed, because you can not share with yourself" : "Не вдалося поділитися %s, оскільки ви не можете ділитись самі з собою",
- "Sharing %s failed, because the user %s does not exist" : "Не вдалося поділитися з %s, оскільки користувач %s не існує",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не вдалося поділитися %s, оскільки користувач %s не є членом будь-якої групи в яку входить %s",
- "Sharing %s failed, because this item is already shared with %s" : "Не вдалося поділитися %s, оскільки файл вже в загальному доступі з %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Не вдалося поділитися %s, оскільки %s вже має до нього доступ",
- "Sharing %s failed, because the group %s does not exist" : "Не вдалося поділитися %s, оскільки група %s не існує",
- "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, оскільки публічний доступ через посилання заборонений",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.",
"Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.",
"Sharing failed, because the user %s is the original sharer" : "Не вдалося поділитися, оскільки %s є тим хто поділився з самого початку",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося поділитися %s, права перевищують надані права доступу %s",
"Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Не вдалося поділитися %s, backend загального доступу не знайшов шлях до %s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші.",
- "%s shared »%s« with you" : "%s поділився »%s« з вами",
- "%s shared »%s« with you." : "%s надав Вам доступ до »%s«.",
- "%s via %s" : "%s за допомогою %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Додаток \"%s\" не може бути встановлений, так як наступні залежності не виконано: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші."
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index b6dc89f4b33..578d7665012 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -92,31 +92,15 @@
"Storage incomplete configuration. %s" : "Неповна конфігурація сховища. %s",
"Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s",
"Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s",
- "Library %s with a version higher than %s is required - available version %s." : "Потрібна бібліотека %s версії не більше %s, встановлена версія %s.",
- "Library %s with a version lower than %s is required - available version %s." : "Потрібна бібліотека %s версії менш ніж %s, встановлена версія %s.",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i",
"Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує",
"Sharing %s failed, because you can not share with yourself" : "Не вдалося поділитися %s, оскільки ви не можете ділитись самі з собою",
- "Sharing %s failed, because the user %s does not exist" : "Не вдалося поділитися з %s, оскільки користувач %s не існує",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не вдалося поділитися %s, оскільки користувач %s не є членом будь-якої групи в яку входить %s",
- "Sharing %s failed, because this item is already shared with %s" : "Не вдалося поділитися %s, оскільки файл вже в загальному доступі з %s",
- "Sharing %s failed, because this item is already shared with user %s" : "Не вдалося поділитися %s, оскільки %s вже має до нього доступ",
- "Sharing %s failed, because the group %s does not exist" : "Не вдалося поділитися %s, оскільки група %s не існує",
- "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, оскільки публічний доступ через посилання заборонений",
- "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",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.",
"Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.",
"Sharing failed, because the user %s is the original sharer" : "Не вдалося поділитися, оскільки %s є тим хто поділився з самого початку",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося поділитися %s, права перевищують надані права доступу %s",
"Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Не вдалося поділитися %s, backend загального доступу не знайшов шлях до %s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші.",
- "%s shared »%s« with you" : "%s поділився »%s« з вами",
- "%s shared »%s« with you." : "%s надав Вам доступ до »%s«.",
- "%s via %s" : "%s за допомогою %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Додаток \"%s\" не може бути встановлений, так як наступні залежності не виконано: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/vi.js b/lib/l10n/vi.js
index 7178954ab03..d426768f205 100644
--- a/lib/l10n/vi.js
+++ b/lib/l10n/vi.js
@@ -20,7 +20,6 @@ OC.L10N.register(
"Could not find category \"%s\"" : "không thể tìm thấy mục \"%s\"",
"Application is not enabled" : "Ứng dụng không được BẬT",
"Authentication error" : "Lỗi xác thực",
- "Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang.",
- "%s shared »%s« with you" : "%s đã chia sẻ »%s« với bạn"
+ "Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang."
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/vi.json b/lib/l10n/vi.json
index 4cf4ddc837a..7fe311f7019 100644
--- a/lib/l10n/vi.json
+++ b/lib/l10n/vi.json
@@ -18,7 +18,6 @@
"Could not find category \"%s\"" : "không thể tìm thấy mục \"%s\"",
"Application is not enabled" : "Ứng dụng không được BẬT",
"Authentication error" : "Lỗi xác thực",
- "Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang.",
- "%s shared »%s« with you" : "%s đã chia sẻ »%s« với bạn"
+ "Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index f59749d6390..4362ecfdfcf 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -226,8 +226,6 @@ OC.L10N.register(
"Storage connection error. %s" : "存储连接错误。%s",
"Storage is temporarily not available" : "存储暂时不可用",
"Storage connection timeout. %s" : "存储连接超时。%s",
- "Library %s with a version higher than %s is required - available version %s." : "%s 需要 %s 或更高的版本 - 可用版本 %s。",
- "Library %s with a version lower than %s is required - available version %s." : "%s 需要 %s 或更低的版本 - 可用版本 %s。",
"Create" : "创建",
"Change" : "修改",
"Delete" : "删除",
@@ -239,38 +237,23 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败,因为后端不允许共享 %i 类型",
"Sharing %s failed, because the file does not exist" : "共享 %s 失败,因为文件不存在",
"Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
- "Sharing %s failed, because the user %s does not exist" : "共享 %s 失败,因为用户 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "共享 %s 失败,因为用户 %s 不是 %s 所属的任何组的用户",
- "Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为该项已经共享给用户 %s",
- "Sharing %s failed, because this item is already shared with user %s" : "共享 %s 失败,因为该项已经共享给用户 %s",
- "Sharing %s failed, because the group %s does not exist" : "共享 %s 失败,因为 %s 分组不存在",
- "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" : "不允许创建对相同用户的联合共享",
- "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 的合法共享类型",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
- "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
- "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "共享 %s 失败,因为权限超过了 %s 的已有权限",
- "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 失败,因为文件缓存中找不到该文件",
- "%s shared »%s« with you" : "%s 向您共享了 »%s«",
- "%s shared »%s« with you." : "%s 已与您共享了 »%s«。",
- "%s via %s" : "%s 通过 %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "应用程序 \"%s\" 无法被安装,因为为满足下列依赖关系:%s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" 已被云联合提供商 \"%s\" 使用",
"Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
"Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$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" : "不允许创建对相同用户的联合共享",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
"Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
+ "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
+ "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源"
+ "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
+ "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 52800f6771d..7b513a451ec 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -224,8 +224,6 @@
"Storage connection error. %s" : "存储连接错误。%s",
"Storage is temporarily not available" : "存储暂时不可用",
"Storage connection timeout. %s" : "存储连接超时。%s",
- "Library %s with a version higher than %s is required - available version %s." : "%s 需要 %s 或更高的版本 - 可用版本 %s。",
- "Library %s with a version lower than %s is required - available version %s." : "%s 需要 %s 或更低的版本 - 可用版本 %s。",
"Create" : "创建",
"Change" : "修改",
"Delete" : "删除",
@@ -237,38 +235,23 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败,因为后端不允许共享 %i 类型",
"Sharing %s failed, because the file does not exist" : "共享 %s 失败,因为文件不存在",
"Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
- "Sharing %s failed, because the user %s does not exist" : "共享 %s 失败,因为用户 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "共享 %s 失败,因为用户 %s 不是 %s 所属的任何组的用户",
- "Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为该项已经共享给用户 %s",
- "Sharing %s failed, because this item is already shared with user %s" : "共享 %s 失败,因为该项已经共享给用户 %s",
- "Sharing %s failed, because the group %s does not exist" : "共享 %s 失败,因为 %s 分组不存在",
- "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" : "不允许创建对相同用户的联合共享",
- "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 的合法共享类型",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
- "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
- "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "共享 %s 失败,因为权限超过了 %s 的已有权限",
- "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 失败,因为文件缓存中找不到该文件",
- "%s shared »%s« with you" : "%s 向您共享了 »%s«",
- "%s shared »%s« with you." : "%s 已与您共享了 »%s«。",
- "%s via %s" : "%s 通过 %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "应用程序 \"%s\" 无法被安装,因为为满足下列依赖关系:%s",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" 已被云联合提供商 \"%s\" 使用",
"Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
"Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
"Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
"Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
"Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$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" : "不允许创建对相同用户的联合共享",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
"Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
+ "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
+ "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
"Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源"
+ "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
+ "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index 740fa80b651..8f5cb65d6b6 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -216,8 +216,6 @@ OC.L10N.register(
"Storage connection error. %s" : "儲存空間連線錯誤。%s",
"Storage is temporarily not available" : "儲存空間暫時無法使用",
"Storage connection timeout. %s" : "儲存空間連線逾時。%s",
- "Library %s with a version higher than %s is required - available version %s." : "需要套件庫 %s 版本高於 %s - 可使用的版本是 %s",
- "Library %s with a version lower than %s is required - available version %s." : "需要套件庫 %s 版本低於 %s - 可使用的版本是 %s",
"Create" : "建立",
"Change" : "更改",
"Delete" : "刪除",
@@ -229,27 +227,13 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s失敗,不允許分享這樣的 %i 類別",
"Sharing %s failed, because the file does not exist" : "分享 %s 失敗,因為檔案不存在",
"Sharing %s failed, because you can not share with yourself" : "分享 %s 失敗,不能分享給自己",
- "Sharing %s failed, because the user %s does not exist" : "分享 %s 失敗,因為使用者 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失敗,使用者 %s 並不屬於該項目擁有者 %s 所隸屬的任何一個群組",
- "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
- "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
- "Sharing %s failed, because the group %s does not exist" : "分享 %s 失敗,因為群組 %s 不存在",
- "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" : "不允許與同一個使用者建立聯邦分享",
- "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 來說無效",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "無法設定到期日,在分享之後,到期日不能設定為 %s 之後",
"Cannot set expiration date. Expiration date is in the past" : "無法設定過去的日期為到期日",
"Sharing failed, because the user %s is the original sharer" : "分享失敗,因為使用者 %s 即是原本的分享者",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失敗,因為權限設定超出了授權給 %s 的範圍",
"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 失敗,因為在快取中找不到該檔案",
- "%s shared »%s« with you" : "%s 與您分享了 %s",
- "%s shared »%s« with you." : "%s 與您分享了 %s",
- "%s via %s" : "%s 經由 %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "應用程式 \"%s\" 無法被安裝,缺少下列所需元件: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 9a3a6527d5d..7a4b8d47697 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -214,8 +214,6 @@
"Storage connection error. %s" : "儲存空間連線錯誤。%s",
"Storage is temporarily not available" : "儲存空間暫時無法使用",
"Storage connection timeout. %s" : "儲存空間連線逾時。%s",
- "Library %s with a version higher than %s is required - available version %s." : "需要套件庫 %s 版本高於 %s - 可使用的版本是 %s",
- "Library %s with a version lower than %s is required - available version %s." : "需要套件庫 %s 版本低於 %s - 可使用的版本是 %s",
"Create" : "建立",
"Change" : "更改",
"Delete" : "刪除",
@@ -227,27 +225,13 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s失敗,不允許分享這樣的 %i 類別",
"Sharing %s failed, because the file does not exist" : "分享 %s 失敗,因為檔案不存在",
"Sharing %s failed, because you can not share with yourself" : "分享 %s 失敗,不能分享給自己",
- "Sharing %s failed, because the user %s does not exist" : "分享 %s 失敗,因為使用者 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失敗,使用者 %s 並不屬於該項目擁有者 %s 所隸屬的任何一個群組",
- "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
- "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享",
- "Sharing %s failed, because the group %s does not exist" : "分享 %s 失敗,因為群組 %s 不存在",
- "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" : "不允許與同一個使用者建立聯邦分享",
- "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 來說無效",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "無法設定到期日,在分享之後,到期日不能設定為 %s 之後",
"Cannot set expiration date. Expiration date is in the past" : "無法設定過去的日期為到期日",
"Sharing failed, because the user %s is the original sharer" : "分享失敗,因為使用者 %s 即是原本的分享者",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失敗,因為權限設定超出了授權給 %s 的範圍",
"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 失敗,因為在快取中找不到該檔案",
- "%s shared »%s« with you" : "%s 與您分享了 %s",
- "%s shared »%s« with you." : "%s 與您分享了 %s",
- "%s via %s" : "%s 經由 %s",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "應用程式 \"%s\" 無法被安裝,缺少下列所需元件: %s"
+ "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php
index 408f070dc0d..ada1228954c 100644
--- a/lib/private/Accounts/AccountManager.php
+++ b/lib/private/Accounts/AccountManager.php
@@ -23,9 +23,9 @@
*
*/
-
namespace OC\Accounts;
+use OCA\Settings\BackgroundJobs\VerifyUserData;
use OCP\Accounts\IAccount;
use OCP\Accounts\IAccountManager;
use OCP\BackgroundJob\IJobList;
@@ -33,7 +33,6 @@ use OCP\IDBConnection;
use OCP\IUser;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
-use OC\Settings\BackgroundJobs\VerifyUserData;
/**
* Class AccountManager
diff --git a/lib/private/Accounts/Hooks.php b/lib/private/Accounts/Hooks.php
index df0b80e8229..2226b1e0b55 100644
--- a/lib/private/Accounts/Hooks.php
+++ b/lib/private/Accounts/Hooks.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Accounts;
use OCP\ILogger;
diff --git a/lib/private/Activity/EventMerger.php b/lib/private/Activity/EventMerger.php
index ed062d094e5..6b4846164ed 100644
--- a/lib/private/Activity/EventMerger.php
+++ b/lib/private/Activity/EventMerger.php
@@ -111,7 +111,8 @@ class EventMerger implements IEventMerger {
$event->setRichSubject($newSubject, $parameters)
->setParsedSubject($parsedSubject)
- ->setChildEvent($previousEvent);
+ ->setChildEvent($previousEvent)
+ ->setTimestamp(max($event->getTimestamp(), $previousEvent->getTimestamp()));
} catch (\UnexpectedValueException $e) {
return $event;
}
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index ba2d1147bc8..29c3c7bbc4d 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -23,6 +23,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Activity;
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 322731d677c..19242245600 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -13,6 +13,7 @@
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
+ * @author Daniel Rudolf <nextcloud.com@daniel-rudolf.de>
*
* @license AGPL-3.0
*
@@ -404,6 +405,21 @@ class AppManager implements IAppManager {
}
/**
+ * Get the web path for the given app.
+ *
+ * @param string $appId
+ * @return string
+ * @throws AppPathNotFoundException if app path can't be found
+ */
+ public function getAppWebPath(string $appId): string {
+ $appWebPath = \OC_App::getAppWebPath($appId);
+ if($appWebPath === false) {
+ throw new AppPathNotFoundException('Could not find web path for ' . $appId);
+ }
+ return $appWebPath;
+ }
+
+ /**
* Clear the cached list of apps when enabling/disabling an app
*/
public function clearAppsCache() {
diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php
index ea69c37f32c..badc4edb444 100644
--- a/lib/private/App/AppStore/Fetcher/AppFetcher.php
+++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php
@@ -115,6 +115,7 @@ class AppFetcher extends Fetcher {
if (empty($releases)) {
// Remove apps that don't have a matching release
+ $response['data'][$dataKey] = [];
continue;
}
@@ -136,7 +137,7 @@ class AppFetcher extends Fetcher {
}
}
- $response['data'] = array_values($response['data']);
+ $response['data'] = array_values(array_filter($response['data']));
return $response;
}
diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php
index db8c38ac686..b7679685b40 100644
--- a/lib/private/App/AppStore/Fetcher/Fetcher.php
+++ b/lib/private/App/AppStore/Fetcher/Fetcher.php
@@ -27,8 +27,8 @@
namespace OC\App\AppStore\Fetcher;
-use OC\Files\AppData\Factory;
use GuzzleHttp\Exception\ConnectException;
+use OC\Files\AppData\Factory;
use OCP\AppFramework\Http;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\IAppData;
diff --git a/lib/private/App/CodeChecker/CodeChecker.php b/lib/private/App/CodeChecker/CodeChecker.php
index 8f539897c97..ba0cac3d765 100644
--- a/lib/private/App/CodeChecker/CodeChecker.php
+++ b/lib/private/App/CodeChecker/CodeChecker.php
@@ -92,7 +92,7 @@ class CodeChecker extends BasicEmitter {
}, $excludedDirectories);
$iterator = new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::SKIP_DOTS);
- $iterator = new RecursiveCallbackFilterIterator($iterator, function($item) use ($folder, $excludes){
+ $iterator = new RecursiveCallbackFilterIterator($iterator, function($item) use ($excludes){
/** @var SplFileInfo $item */
foreach($excludes as $exclude) {
if (substr($item->getPath(), 0, strlen($exclude)) === $exclude) {
diff --git a/lib/private/App/CodeChecker/DeprecationCheck.php b/lib/private/App/CodeChecker/DeprecationCheck.php
index e672038f347..357876e7385 100644
--- a/lib/private/App/CodeChecker/DeprecationCheck.php
+++ b/lib/private/App/CodeChecker/DeprecationCheck.php
@@ -119,7 +119,6 @@ class DeprecationCheck extends AbstractCheck {
'OCP\App::getAppInfo' => '14.0.0',
'OC_App::getAppVersion' => '14.0.0',
'OCP\App::getAppVersion' => '14.0.0',
- 'OCP\App::registerPersonal' => '14.0.0',
'OCP\AppFramework\Controller::params' => '7.0.0',
'OCP\AppFramework\Controller::getParams' => '7.0.0',
diff --git a/lib/private/App/CodeChecker/EmptyCheck.php b/lib/private/App/CodeChecker/EmptyCheck.php
index 02fbb46d7de..0a2217212a2 100644
--- a/lib/private/App/CodeChecker/EmptyCheck.php
+++ b/lib/private/App/CodeChecker/EmptyCheck.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\App\CodeChecker;
class EmptyCheck implements ICheck {
diff --git a/lib/private/App/CodeChecker/ICheck.php b/lib/private/App/CodeChecker/ICheck.php
index 4dfaa23c538..d34d01cd55d 100644
--- a/lib/private/App/CodeChecker/ICheck.php
+++ b/lib/private/App/CodeChecker/ICheck.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\App\CodeChecker;
interface ICheck {
diff --git a/lib/private/App/PlatformRepository.php b/lib/private/App/PlatformRepository.php
index f94fb3ad504..a264a4dd6c5 100644
--- a/lib/private/App/PlatformRepository.php
+++ b/lib/private/App/PlatformRepository.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\App;
/**
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 8e921dbb7cf..2888cbb9dde 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -43,8 +43,21 @@ class AppConfig implements IAppConfig {
/** @var array[] */
protected $sensitiveValues = [
+ 'external' => [
+ '/^sites$/',
+ ],
'spreed' => [
+ '/^signaling_ticket_secret$/',
'/^turn_server_secret$/',
+ '/^stun_servers$/',
+ '/^turn_servers$/',
+ '/^signaling_servers$/',
+ ],
+ 'theming' => [
+ '/^imprintUrl$/',
+ '/^privacyUrl$/',
+ '/^slogan$/',
+ '/^url$/',
],
'user_ldap' => [
'/^(s..)?ldap_agent_password$/',
diff --git a/lib/private/AppFramework/App.php b/lib/private/AppFramework/App.php
index 6185a35d1d7..122f4684558 100644
--- a/lib/private/AppFramework/App.php
+++ b/lib/private/AppFramework/App.php
@@ -26,16 +26,15 @@ declare(strict_types=1);
*
*/
-
namespace OC\AppFramework;
-use OC\AppFramework\Http\Dispatcher;
use OC\AppFramework\DependencyInjection\DIContainer;
+use OC\AppFramework\Http\Dispatcher;
use OC\HintException;
use OCP\AppFramework\Http;
-use OCP\AppFramework\QueryException;
use OCP\AppFramework\Http\ICallbackResponse;
use OCP\AppFramework\Http\IOutput;
+use OCP\AppFramework\QueryException;
use OCP\IRequest;
/**
@@ -104,8 +103,6 @@ class App {
if ($appName === 'core') {
$appNameSpace = 'OC\\Core';
- } else if ($appName === 'settings') {
- $appNameSpace = 'OC\\Settings';
} else {
$appNameSpace = self::buildAppNamespace($appName);
}
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 89ebc60b226..b41be947adb 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -32,7 +32,6 @@
*
*/
-
namespace OC\AppFramework\DependencyInjection;
use OC;
@@ -40,14 +39,15 @@ use OC\AppFramework\Http;
use OC\AppFramework\Http\Dispatcher;
use OC\AppFramework\Http\Output;
use OC\AppFramework\Middleware\MiddlewareDispatcher;
-use OC\AppFramework\Middleware\Security\CORSMiddleware;
use OC\AppFramework\Middleware\OCSMiddleware;
+use OC\AppFramework\Middleware\Security\CORSMiddleware;
use OC\AppFramework\Middleware\Security\RateLimitingMiddleware;
use OC\AppFramework\Middleware\Security\SecurityMiddleware;
use OC\AppFramework\Middleware\SessionMiddleware;
use OC\AppFramework\Utility\SimpleContainer;
use OC\Core\Middleware\TwoFactorMiddleware;
use OC\ServerContainer;
+use OCA\WorkflowEngine\Manager;
use OCP\AppFramework\Http\IOutput;
use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\QueryException;
@@ -65,7 +65,6 @@ use OCP\IServerContainer;
use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUserSession;
-use OCA\WorkflowEngine\Manager;
class DIContainer extends SimpleContainer implements IAppContainer {
@@ -279,12 +278,11 @@ class DIContainer extends SimpleContainer implements IAppContainer {
);
foreach($this->middleWares as $middleWare) {
- $dispatcher->registerMiddleware($c[$middleWare]);
+ $dispatcher->registerMiddleware($c->query($middleWare));
}
$dispatcher->registerMiddleware(
new SessionMiddleware(
- $c->query(IRequest::class),
$c->query(IControllerMethodReflector::class),
$c->query(ISession::class)
)
diff --git a/lib/private/AppFramework/Http.php b/lib/private/AppFramework/Http.php
index e126c8a1cf0..0b3b31fe541 100644
--- a/lib/private/AppFramework/Http.php
+++ b/lib/private/AppFramework/Http.php
@@ -27,7 +27,6 @@
*
*/
-
namespace OC\AppFramework;
use OCP\AppFramework\Http as BaseHttp;
@@ -152,5 +151,3 @@ class Http extends BaseHttp {
}
-
-
diff --git a/lib/private/AppFramework/Http/Dispatcher.php b/lib/private/AppFramework/Http/Dispatcher.php
index 7b9ad015de6..6a04de76adc 100644
--- a/lib/private/AppFramework/Http/Dispatcher.php
+++ b/lib/private/AppFramework/Http/Dispatcher.php
@@ -27,19 +27,17 @@ declare(strict_types=1);
*
*/
-
namespace OC\AppFramework\Http;
-use \OC\AppFramework\Middleware\MiddlewareDispatcher;
-use \OC\AppFramework\Http;
-use \OC\AppFramework\Utility\ControllerMethodReflector;
+use OC\AppFramework\Http;
+use OC\AppFramework\Middleware\MiddlewareDispatcher;
+use OC\AppFramework\Utility\ControllerMethodReflector;
use OCP\AppFramework\Controller;
-use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\Http\Response;
use OCP\IRequest;
-
/**
* Class to dispatch the request to the middleware dispatcher
*/
@@ -105,6 +103,10 @@ class Dispatcher {
} catch(\Exception $exception){
$response = $this->middlewareDispatcher->afterException(
$controller, $methodName, $exception);
+ } catch(\Throwable $throwable) {
+ $exception = new \Exception($throwable->getMessage(), $throwable->getCode(), $throwable);
+ $response = $this->middlewareDispatcher->afterException(
+ $controller, $methodName, $exception);
}
$response = $this->middlewareDispatcher->afterController(
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index c205cc5f81b..9d210cd8419 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -323,11 +323,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
switch ($name) {
case 'CONTENT_TYPE' :
case 'CONTENT_LENGTH' :
- if (isset($this->server[$name])) {
- return $this->server[$name];
- }
- break;
- case 'REMOTE_ADDR' :
+ case 'REMOTE_ADDR':
if (isset($this->server[$name])) {
return $this->server[$name];
}
@@ -857,6 +853,10 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return string Server host
*/
public function getInsecureServerHost(): string {
+ if ($this->fromTrustedProxy() && $this->getOverwriteHost() !== null) {
+ return $this->getOverwriteHost();
+ }
+
$host = 'localhost';
if ($this->fromTrustedProxy() && isset($this->server['HTTP_X_FORWARDED_HOST'])) {
if (strpos($this->server['HTTP_X_FORWARDED_HOST'], ',') !== false) {
@@ -872,6 +872,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$host = $this->server['SERVER_NAME'];
}
}
+
return $host;
}
diff --git a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
index e1262b6c712..70440e9623f 100644
--- a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
+++ b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\AppFramework\Middleware;
use OCP\AppFramework\Controller;
diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php
index ad1d953f372..2174693a1d7 100644
--- a/lib/private/AppFramework/Middleware/OCSMiddleware.php
+++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\Middleware;
use OC\AppFramework\Http;
@@ -32,10 +33,10 @@ use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Middleware;
use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCSController;
use OCP\IRequest;
-use OCP\AppFramework\Middleware;
class OCSMiddleware extends Middleware {
diff --git a/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php b/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php
index d752a68cf32..9f005448387 100644
--- a/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Middleware\Security\Exceptions\NotConfirmedException;
diff --git a/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php b/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
index 22a9246d661..3c011945477 100644
--- a/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Http\Request;
diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
index 4f380f07d91..16725b1f5d6 100644
--- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
@@ -28,36 +28,30 @@ declare(strict_types=1);
*
*/
-
namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Middleware\Security\Exceptions\AppNotEnabledException;
use OC\AppFramework\Middleware\Security\Exceptions\CrossSiteRequestForgeryException;
use OC\AppFramework\Middleware\Security\Exceptions\NotAdminException;
use OC\AppFramework\Middleware\Security\Exceptions\NotLoggedInException;
+use OC\AppFramework\Middleware\Security\Exceptions\SecurityException;
use OC\AppFramework\Middleware\Security\Exceptions\StrictCookieMissingException;
use OC\AppFramework\Utility\ControllerMethodReflector;
-use OC\Security\CSP\ContentSecurityPolicyManager;
-use OC\Security\CSP\ContentSecurityPolicyNonceManager;
-use OC\Security\CSRF\CsrfTokenManager;
use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
-use OCP\AppFramework\Http\ContentSecurityPolicy;
-use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\RedirectResponse;
+use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Middleware;
-use OCP\AppFramework\Http\Response;
-use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\OCSController;
use OCP\IL10N;
+use OCP\ILogger;
use OCP\INavigationManager;
-use OCP\IURLGenerator;
use OCP\IRequest;
-use OCP\ILogger;
-use OCP\AppFramework\Controller;
+use OCP\IURLGenerator;
use OCP\Util;
-use OC\AppFramework\Middleware\Security\Exceptions\SecurityException;
/**
* Used to do all the authentication and checking stuff for a controller method
@@ -121,6 +115,8 @@ class SecurityMiddleware extends Middleware {
* @param Controller $controller the controller
* @param string $methodName the name of the method
* @throws SecurityException when a security check fails
+ *
+ * @suppress PhanUndeclaredClassConstant
*/
public function beforeController($controller, $methodName) {
@@ -128,6 +124,10 @@ class SecurityMiddleware extends Middleware {
// for normal HTML requests and not for AJAX requests
$this->navigationManager->setActiveEntry($this->appName);
+ if ($controller === \OCA\Talk\Controller\PageController::class && $methodName === 'showCall') {
+ $this->navigationManager->setActiveEntry('spreed');
+ }
+
// security checks
$isPublicPage = $this->reflector->hasAnnotation('PublicPage');
if(!$isPublicPage) {
diff --git a/lib/private/AppFramework/Middleware/SessionMiddleware.php b/lib/private/AppFramework/Middleware/SessionMiddleware.php
index 7b52cc1e319..cc927e6875c 100644
--- a/lib/private/AppFramework/Middleware/SessionMiddleware.php
+++ b/lib/private/AppFramework/Middleware/SessionMiddleware.php
@@ -27,32 +27,21 @@ 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;
+use OCP\IRequest;
use OCP\ISession;
class SessionMiddleware extends Middleware {
- /**
- * @var IRequest
- */
- private $request;
-
- /**
- * @var ControllerMethodReflector
- */
+ /** @var ControllerMethodReflector */
private $reflector;
- /**
- * @param IRequest $request
- * @param ControllerMethodReflector $reflector
- */
- public function __construct(IRequest $request,
- ControllerMethodReflector $reflector,
- ISession $session
-) {
- $this->request = $request;
+ /** @var ISession */
+ private $session;
+
+ public function __construct(ControllerMethodReflector $reflector,
+ ISession $session) {
$this->reflector = $reflector;
$this->session = $session;
}
diff --git a/lib/private/AppFramework/OCS/BaseResponse.php b/lib/private/AppFramework/OCS/BaseResponse.php
index 90ea084dd99..19567f8fdaf 100644
--- a/lib/private/AppFramework/OCS/BaseResponse.php
+++ b/lib/private/AppFramework/OCS/BaseResponse.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\OCS;
use OCP\AppFramework\Http;
diff --git a/lib/private/AppFramework/OCS/V1Response.php b/lib/private/AppFramework/OCS/V1Response.php
index 08b11788110..02405b5edbe 100644
--- a/lib/private/AppFramework/OCS/V1Response.php
+++ b/lib/private/AppFramework/OCS/V1Response.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\OCS;
use OCP\API;
diff --git a/lib/private/AppFramework/OCS/V2Response.php b/lib/private/AppFramework/OCS/V2Response.php
index 7e98efe867d..54e9e8bd9a7 100644
--- a/lib/private/AppFramework/OCS/V2Response.php
+++ b/lib/private/AppFramework/OCS/V2Response.php
@@ -20,10 +20,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\AppFramework\OCS;
-use OCP\AppFramework\Http;
use OCP\API;
+use OCP\AppFramework\Http;
class V2Response extends BaseResponse {
diff --git a/lib/private/AppFramework/Routing/RouteActionHandler.php b/lib/private/AppFramework/Routing/RouteActionHandler.php
index bcbe2eb400b..7e1c089d2a8 100644
--- a/lib/private/AppFramework/Routing/RouteActionHandler.php
+++ b/lib/private/AppFramework/Routing/RouteActionHandler.php
@@ -25,8 +25,8 @@
namespace OC\AppFramework\Routing;
-use \OC\AppFramework\App;
-use \OC\AppFramework\DependencyInjection\DIContainer;
+use OC\AppFramework\App;
+use OC\AppFramework\DependencyInjection\DIContainer;
class RouteActionHandler {
private $controllerName;
diff --git a/lib/private/AppFramework/Utility/ControllerMethodReflector.php b/lib/private/AppFramework/Utility/ControllerMethodReflector.php
index ef4a1959d66..187fb43a9fc 100644
--- a/lib/private/AppFramework/Utility/ControllerMethodReflector.php
+++ b/lib/private/AppFramework/Utility/ControllerMethodReflector.php
@@ -29,7 +29,7 @@ declare(strict_types=1);
namespace OC\AppFramework\Utility;
-use \OCP\AppFramework\Utility\IControllerMethodReflector;
+use OCP\AppFramework\Utility\IControllerMethodReflector;
/**
* Reads and parses annotations from doc comments
@@ -72,13 +72,10 @@ class ControllerMethodReflector implements IControllerMethodReflector {
}
foreach ($reflection->getParameters() as $param) {
- // extract type information from PHP 7 scalar types and prefer them
- // over phpdoc annotations
- if (method_exists($param, 'getType')) {
- $type = $param->getType();
- if ($type !== null) {
- $this->types[$param->getName()] = (string) $type;
- }
+ // extract type information from PHP 7 scalar types and prefer them over phpdoc annotations
+ $type = $param->getType();
+ if ($type instanceof \ReflectionNamedType) {
+ $this->types[$param->getName()] = $type->getName();
}
$default = null;
diff --git a/lib/private/AppFramework/Utility/SimpleContainer.php b/lib/private/AppFramework/Utility/SimpleContainer.php
index 6f50523bbf6..b8398623490 100644
--- a/lib/private/AppFramework/Utility/SimpleContainer.php
+++ b/lib/private/AppFramework/Utility/SimpleContainer.php
@@ -28,12 +28,12 @@
namespace OC\AppFramework\Utility;
-use ReflectionClass;
-use ReflectionException;
use Closure;
-use Pimple\Container;
use OCP\AppFramework\QueryException;
use OCP\IContainer;
+use Pimple\Container;
+use ReflectionClass;
+use ReflectionException;
/**
* Class SimpleContainer
diff --git a/lib/private/AppFramework/Utility/TimeFactory.php b/lib/private/AppFramework/Utility/TimeFactory.php
index 4526f9b1abb..841d1838354 100644
--- a/lib/private/AppFramework/Utility/TimeFactory.php
+++ b/lib/private/AppFramework/Utility/TimeFactory.php
@@ -27,7 +27,6 @@ namespace OC\AppFramework\Utility;
use OCP\AppFramework\Utility\ITimeFactory;
-
/**
* Needed to mock calls to time()
*/
diff --git a/lib/private/Authentication/Exceptions/ExpiredTokenException.php b/lib/private/Authentication/Exceptions/ExpiredTokenException.php
index d5b2e2cbca7..ddc611b5ce3 100644
--- a/lib/private/Authentication/Exceptions/ExpiredTokenException.php
+++ b/lib/private/Authentication/Exceptions/ExpiredTokenException.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Authentication\Exceptions;
use OC\Authentication\Token\IToken;
diff --git a/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php b/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php
new file mode 100644
index 00000000000..6719037b4a0
--- /dev/null
+++ b/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php
@@ -0,0 +1,29 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @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\Authentication\Exceptions;
+
+class TokenPasswordExpiredException extends ExpiredTokenException {
+
+}
diff --git a/lib/private/Authentication/Exceptions/WipeTokenException.php b/lib/private/Authentication/Exceptions/WipeTokenException.php
index c56059fd7b9..03b679596e2 100644
--- a/lib/private/Authentication/Exceptions/WipeTokenException.php
+++ b/lib/private/Authentication/Exceptions/WipeTokenException.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Authentication\Exceptions;
use OC\Authentication\Token\IToken;
diff --git a/lib/private/Authentication/Login/CreateSessionTokenCommand.php b/lib/private/Authentication/Login/CreateSessionTokenCommand.php
index 14ad6d18b30..59d5c68a24b 100644
--- a/lib/private/Authentication/Login/CreateSessionTokenCommand.php
+++ b/lib/private/Authentication/Login/CreateSessionTokenCommand.php
@@ -59,7 +59,7 @@ class CreateSessionTokenCommand extends ALoginCommand {
);
$this->userSession->updateTokens(
$loginData->getUser()->getUID(),
- $loginData->getUsername()
+ $loginData->getPassword()
);
return $this->processNextOrFinishSuccessfully($loginData);
diff --git a/lib/private/Authentication/Login/PreLoginHookCommand.php b/lib/private/Authentication/Login/PreLoginHookCommand.php
index 87c52c6fef1..e8b5c0b6aaa 100644
--- a/lib/private/Authentication/Login/PreLoginHookCommand.php
+++ b/lib/private/Authentication/Login/PreLoginHookCommand.php
@@ -51,4 +51,4 @@ class PreLoginHookCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-} \ No newline at end of file
+}
diff --git a/lib/private/Authentication/LoginCredentials/Store.php b/lib/private/Authentication/LoginCredentials/Store.php
index 0ed19a2dd07..5f8be9b769f 100644
--- a/lib/private/Authentication/LoginCredentials/Store.php
+++ b/lib/private/Authentication/LoginCredentials/Store.php
@@ -1,4 +1,5 @@
-<?php
+<?php declare(strict_types=1);
+
/**
* @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
*
@@ -82,8 +83,8 @@ class Store implements IStore {
* @return ICredentials the login credentials of the current user
* @throws CredentialsUnavailableException
*/
- public function getLoginCredentials() {
- if (is_null($this->tokenProvider)) {
+ public function getLoginCredentials(): ICredentials {
+ if ($this->tokenProvider === null) {
throw new CredentialsUnavailableException();
}
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index 98609a3f14b..6bd7c2c6dc8 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -196,8 +196,9 @@ class DefaultTokenProvider implements IProvider {
* @param string $oldSessionId
* @param string $sessionId
* @throws InvalidTokenException
+ * @return IToken
*/
- public function renewSessionToken(string $oldSessionId, string $sessionId) {
+ public function renewSessionToken(string $oldSessionId, string $sessionId): IToken {
$token = $this->getToken($oldSessionId);
$newToken = new DefaultToken();
@@ -214,6 +215,8 @@ class DefaultTokenProvider implements IProvider {
$newToken->setLastActivity($this->time->getTime());
$this->mapper->insert($newToken);
$this->mapper->delete($token);
+
+ return $newToken;
}
/**
diff --git a/lib/private/Authentication/Token/INamedToken.php b/lib/private/Authentication/Token/INamedToken.php
index ede075a21c0..403116cb660 100644
--- a/lib/private/Authentication/Token/INamedToken.php
+++ b/lib/private/Authentication/Token/INamedToken.php
@@ -31,4 +31,4 @@ interface INamedToken extends IToken {
* @return void
*/
public function setName(string $name): void;
-} \ No newline at end of file
+}
diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php
index 860b93e16c2..ba8df30eb8d 100644
--- a/lib/private/Authentication/Token/IProvider.php
+++ b/lib/private/Authentication/Token/IProvider.php
@@ -84,8 +84,9 @@ interface IProvider {
* @param string $sessionId
* @throws InvalidTokenException
* @throws \RuntimeException when OpenSSL reports a problem
+ * @return IToken The new token
*/
- public function renewSessionToken(string $oldSessionId, string $sessionId);
+ public function renewSessionToken(string $oldSessionId, string $sessionId): IToken;
/**
* Invalidate (delete) the given session token
diff --git a/lib/private/Authentication/Token/Manager.php b/lib/private/Authentication/Token/Manager.php
index 76c0dfb8695..0642d4426c4 100644
--- a/lib/private/Authentication/Token/Manager.php
+++ b/lib/private/Authentication/Token/Manager.php
@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
+use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
@@ -60,15 +61,29 @@ class Manager implements IProvider {
string $name,
int $type = IToken::TEMPORARY_TOKEN,
int $remember = IToken::DO_NOT_REMEMBER): IToken {
- return $this->publicKeyTokenProvider->generateToken(
- $token,
- $uid,
- $loginName,
- $password,
- $name,
- $type,
- $remember
- );
+ try {
+ return $this->publicKeyTokenProvider->generateToken(
+ $token,
+ $uid,
+ $loginName,
+ $password,
+ $name,
+ $type,
+ $remember
+ );
+ } catch (UniqueConstraintViolationException $e) {
+ // It's rare, but if two requests of the same session (e.g. env-based SAML)
+ // try to create the session token they might end up here at the same time
+ // because we use the session ID as token and the db token is created anew
+ // with every request.
+ //
+ // If the UIDs match, then this should be fine.
+ $existing = $this->getToken($token);
+ if ($existing->getUID() !== $uid) {
+ throw new \Exception('Token conflict handled, but UIDs do not match. This should not happen', 0, $e);
+ }
+ return $existing;
+ }
}
/**
@@ -158,14 +173,15 @@ class Manager implements IProvider {
* @param string $oldSessionId
* @param string $sessionId
* @throws InvalidTokenException
+ * @return IToken
*/
- public function renewSessionToken(string $oldSessionId, string $sessionId) {
+ public function renewSessionToken(string $oldSessionId, string $sessionId): IToken {
try {
- $this->publicKeyTokenProvider->renewSessionToken($oldSessionId, $sessionId);
+ return $this->publicKeyTokenProvider->renewSessionToken($oldSessionId, $sessionId);
} catch (ExpiredTokenException $e) {
throw $e;
} catch (InvalidTokenException $e) {
- $this->defaultTokenProvider->renewSessionToken($oldSessionId, $sessionId);
+ return $this->defaultTokenProvider->renewSessionToken($oldSessionId, $sessionId);
}
}
diff --git a/lib/private/Authentication/Token/PublicKeyTokenMapper.php b/lib/private/Authentication/Token/PublicKeyTokenMapper.php
index df91066c44f..62fbf1c6d7a 100644
--- a/lib/private/Authentication/Token/PublicKeyTokenMapper.php
+++ b/lib/private/Authentication/Token/PublicKeyTokenMapper.php
@@ -163,7 +163,8 @@ class PublicKeyTokenMapper extends QBMapper {
$qb = $this->db->getQueryBuilder();
$qb->delete('authtoken')
- ->where($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN)))
+ ->where($qb->expr()->eq('uid', $qb->createNamedParameter($except->getUID())))
+ ->andWhere($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN)))
->andWhere($qb->expr()->neq('id', $qb->createNamedParameter($except->getId())))
->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php
index 318d4468ddc..19987bec253 100644
--- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php
+++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php
@@ -25,8 +25,10 @@ namespace OC\Authentication\Token;
use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
+use OC\Authentication\Exceptions\TokenPasswordExpiredException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
use OC\Authentication\Exceptions\WipeTokenException;
+use OC\Cache\CappedMemoryCache;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
@@ -49,6 +51,9 @@ class PublicKeyTokenProvider implements IProvider {
/** @var ITimeFactory $time */
private $time;
+ /** @var CappedMemoryCache */
+ private $cache;
+
public function __construct(PublicKeyTokenMapper $mapper,
ICrypto $crypto,
IConfig $config,
@@ -59,6 +64,8 @@ class PublicKeyTokenProvider implements IProvider {
$this->config = $config;
$this->logger = $logger;
$this->time = $time;
+
+ $this->cache = new CappedMemoryCache();
}
/**
@@ -72,17 +79,26 @@ class PublicKeyTokenProvider implements IProvider {
int $type = IToken::TEMPORARY_TOKEN,
int $remember = IToken::DO_NOT_REMEMBER): IToken {
$dbToken = $this->newToken($token, $uid, $loginName, $password, $name, $type, $remember);
-
$this->mapper->insert($dbToken);
+ // Add the token to the cache
+ $this->cache[$dbToken->getToken()] = $dbToken;
+
return $dbToken;
}
public function getToken(string $tokenId): IToken {
- try {
- $token = $this->mapper->getToken($this->hashToken($tokenId));
- } catch (DoesNotExistException $ex) {
- throw new InvalidTokenException();
+ $tokenHash = $this->hashToken($tokenId);
+
+ if (isset($this->cache[$tokenHash])) {
+ $token = $this->cache[$tokenHash];
+ } else {
+ try {
+ $token = $this->mapper->getToken($this->hashToken($tokenId));
+ $this->cache[$token->getToken()] = $token;
+ } catch (DoesNotExistException $ex) {
+ throw new InvalidTokenException();
+ }
}
if ((int)$token->getExpires() !== 0 && $token->getExpires() < $this->time->getTime()) {
@@ -93,6 +109,11 @@ class PublicKeyTokenProvider implements IProvider {
throw new WipeTokenException($token);
}
+ if ($token->getPasswordInvalid() === true) {
+ //The password is invalid we should throw an TokenPasswordExpiredException
+ throw new TokenPasswordExpiredException($token);
+ }
+
return $token;
}
@@ -111,10 +132,17 @@ class PublicKeyTokenProvider implements IProvider {
throw new WipeTokenException($token);
}
+ if ($token->getPasswordInvalid() === true) {
+ //The password is invalid we should throw an TokenPasswordExpiredException
+ throw new TokenPasswordExpiredException($token);
+ }
+
return $token;
}
- public function renewSessionToken(string $oldSessionId, string $sessionId) {
+ public function renewSessionToken(string $oldSessionId, string $sessionId): IToken {
+ $this->cache->clear();
+
$token = $this->getToken($oldSessionId);
if (!($token instanceof PublicKeyToken)) {
@@ -127,7 +155,7 @@ class PublicKeyTokenProvider implements IProvider {
$password = $this->decryptPassword($token->getPassword(), $privateKey);
}
- $this->generateToken(
+ $newToken = $this->generateToken(
$sessionId,
$token->getUID(),
$token->getLoginName(),
@@ -138,17 +166,25 @@ class PublicKeyTokenProvider implements IProvider {
);
$this->mapper->delete($token);
+
+ return $newToken;
}
public function invalidateToken(string $token) {
+ $this->cache->clear();
+
$this->mapper->invalidate($this->hashToken($token));
}
public function invalidateTokenById(string $uid, int $id) {
+ $this->cache->clear();
+
$this->mapper->deleteById($uid, $id);
}
public function invalidateOldTokens() {
+ $this->cache->clear();
+
$olderThan = $this->time->getTime() - (int) $this->config->getSystemValue('session_lifetime', 60 * 60 * 24);
$this->logger->debug('Invalidating session tokens older than ' . date('c', $olderThan), ['app' => 'cron']);
$this->mapper->invalidateOld($olderThan, IToken::DO_NOT_REMEMBER);
@@ -158,6 +194,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function updateToken(IToken $token) {
+ $this->cache->clear();
+
if (!($token instanceof PublicKeyToken)) {
throw new InvalidTokenException();
}
@@ -165,6 +203,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function updateTokenActivity(IToken $token) {
+ $this->cache->clear();
+
if (!($token instanceof PublicKeyToken)) {
throw new InvalidTokenException();
}
@@ -198,6 +238,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function setPassword(IToken $token, string $tokenId, string $password) {
+ $this->cache->clear();
+
if (!($token instanceof PublicKeyToken)) {
throw new InvalidTokenException();
}
@@ -215,6 +257,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function rotate(IToken $token, string $oldTokenId, string $newTokenId): IToken {
+ $this->cache->clear();
+
if (!($token instanceof PublicKeyToken)) {
throw new InvalidTokenException();
}
@@ -274,6 +318,8 @@ class PublicKeyTokenProvider implements IProvider {
* @throws \RuntimeException when OpenSSL reports a problem
*/
public function convertToken(DefaultToken $defaultToken, string $token, $password): PublicKeyToken {
+ $this->cache->clear();
+
$pkToken = $this->newToken(
$token,
$defaultToken->getUID(),
@@ -344,6 +390,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function markPasswordInvalid(IToken $token, string $tokenId) {
+ $this->cache->clear();
+
if (!($token instanceof PublicKeyToken)) {
throw new InvalidTokenException();
}
@@ -353,6 +401,8 @@ class PublicKeyTokenProvider implements IProvider {
}
public function updatePasswords(string $uid, string $password) {
+ $this->cache->clear();
+
if (!$this->mapper->hasExpiredTokens($uid)) {
// Nothing to do here
return;
diff --git a/lib/private/Authentication/TwoFactorAuth/Registry.php b/lib/private/Authentication/TwoFactorAuth/Registry.php
index 2f905441953..791e9eb9954 100644
--- a/lib/private/Authentication/TwoFactorAuth/Registry.php
+++ b/lib/private/Authentication/TwoFactorAuth/Registry.php
@@ -30,20 +30,19 @@ use OC\Authentication\TwoFactorAuth\Db\ProviderUserAssignmentDao;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\Authentication\TwoFactorAuth\IRegistry;
use OCP\Authentication\TwoFactorAuth\RegistryEvent;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUser;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\GenericEvent;
class Registry implements IRegistry {
/** @var ProviderUserAssignmentDao */
private $assignmentDao;
- /** @var EventDispatcherInterface */
+ /** @var IEventDispatcher */
private $dispatcher;
public function __construct(ProviderUserAssignmentDao $assignmentDao,
- EventDispatcherInterface $dispatcher) {
+ IEventDispatcher $dispatcher) {
$this->assignmentDao = $assignmentDao;
$this->dispatcher = $dispatcher;
}
diff --git a/lib/private/Avatar/Avatar.php b/lib/private/Avatar/Avatar.php
index 172f47d12a8..e7baa10fbb3 100644
--- a/lib/private/Avatar/Avatar.php
+++ b/lib/private/Avatar/Avatar.php
@@ -32,12 +32,12 @@ declare(strict_types=1);
namespace OC\Avatar;
+use Imagick;
use OC\Color;
+use OC_Image;
use OCP\Files\NotFoundException;
use OCP\IAvatar;
use OCP\ILogger;
-use OC_Image;
-use Imagick;
/**
* This class gets and sets users avatars.
diff --git a/lib/private/Avatar/AvatarManager.php b/lib/private/Avatar/AvatarManager.php
index 567ed3aec1e..b3f475ac698 100644
--- a/lib/private/Avatar/AvatarManager.php
+++ b/lib/private/Avatar/AvatarManager.php
@@ -34,8 +34,8 @@ use OCP\Files\NotFoundException;
use OCP\IAvatar;
use OCP\IAvatarManager;
use OCP\IConfig;
-use OCP\ILogger;
use OCP\IL10N;
+use OCP\ILogger;
/**
* This class implements methods to access Avatar functionality
diff --git a/lib/private/Avatar/UserAvatar.php b/lib/private/Avatar/UserAvatar.php
index 2db65634e8c..f96ec93d5d0 100644
--- a/lib/private/Avatar/UserAvatar.php
+++ b/lib/private/Avatar/UserAvatar.php
@@ -97,7 +97,7 @@ class UserAvatar extends Avatar {
$this->validateAvatar($img);
- $this->remove();
+ $this->remove(true);
$type = $this->getAvatarImageType($img);
$file = $this->folder->newFile('avatar.' . $type);
$file->putContent($data);
@@ -193,7 +193,7 @@ class UserAvatar extends Avatar {
* @throws \OCP\Files\NotPermittedException
* @throws \OCP\PreConditionNotMetException
*/
- public function remove() {
+ public function remove(bool $silent = false) {
$avatars = $this->folder->getDirectoryListing();
$this->config->setUserValue($this->user->getUID(), 'avatar', 'version',
@@ -203,7 +203,9 @@ class UserAvatar extends Avatar {
$avatar->delete();
}
$this->config->setUserValue($this->user->getUID(), 'avatar', 'generated', 'true');
- $this->user->triggerChange('avatar', '');
+ if(!$silent) {
+ $this->user->triggerChange('avatar', '');
+ }
}
/**
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php
index 44b6786841f..7b5469c48f4 100644
--- a/lib/private/BackgroundJob/JobList.php
+++ b/lib/private/BackgroundJob/JobList.php
@@ -30,9 +30,9 @@ namespace OC\BackgroundJob;
use OCP\AppFramework\QueryException;
use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\AutoloadNotAllowedException;
use OCP\BackgroundJob\IJob;
use OCP\BackgroundJob\IJobList;
-use OCP\AutoloadNotAllowedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\IDBConnection;
diff --git a/lib/private/Broadcast/Events/BroadcastEvent.php b/lib/private/Broadcast/Events/BroadcastEvent.php
new file mode 100644
index 00000000000..f3282b5207c
--- /dev/null
+++ b/lib/private/Broadcast/Events/BroadcastEvent.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Broadcast\Events;
+
+use JsonSerializable;
+use OCP\Broadcast\Events\IBroadcastEvent;
+use OCP\EventDispatcher\ABroadcastedEvent;
+use OCP\EventDispatcher\Event;
+
+class BroadcastEvent extends Event implements IBroadcastEvent {
+
+ /** @var ABroadcastedEvent */
+ private $event;
+
+ public function __construct(ABroadcastedEvent $event) {
+ parent::__construct();
+
+ $this->event = $event;
+ }
+
+ public function getName(): string {
+ return $this->event->broadcastAs();
+ }
+
+ public function getUids(): array {
+ return $this->event->getUids();
+ }
+
+ public function getPayload(): JsonSerializable {
+ return $this->event;
+ }
+
+ public function setBroadcasted(): void {
+ $this->event->setBroadcasted();
+ }
+
+}
diff --git a/lib/private/CapabilitiesManager.php b/lib/private/CapabilitiesManager.php
index ceb8205a7bb..b7ecce144c8 100644
--- a/lib/private/CapabilitiesManager.php
+++ b/lib/private/CapabilitiesManager.php
@@ -22,7 +22,6 @@ declare(strict_types=1);
*
*/
-
namespace OC;
use OCP\AppFramework\QueryException;
diff --git a/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php b/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
index 6e0979fe418..d9e1f2fd49a 100644
--- a/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
@@ -57,11 +57,15 @@ class RemoteGroupPlugin implements ISearchPlugin {
$resultType = new SearchResultType('remote_groups');
if ($this->enabled && $this->cloudIdManager->isValidCloudId($search) && $offset === 0) {
+ list($remoteGroup, $serverUrl) = $this->splitGroupRemote($search);
$result['exact'][] = [
- 'label' => $search,
+ 'label' => $remoteGroup . " ($serverUrl)",
+ 'guid' => $remoteGroup,
+ 'name' => $remoteGroup,
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE_GROUP,
'shareWith' => $search,
+ 'server' => $serverUrl,
],
];
}
@@ -71,4 +75,20 @@ class RemoteGroupPlugin implements ISearchPlugin {
return true;
}
+ /**
+ * split group and remote from federated cloud id
+ *
+ * @param string $address federated share address
+ * @return array [user, remoteURL]
+ * @throws \InvalidArgumentException
+ */
+ public function splitGroupRemote($address) {
+ try {
+ $cloudId = $this->cloudIdManager->resolveCloudId($address);
+ return [$cloudId->getUser(), $cloudId->getRemote()];
+ } catch (\InvalidArgumentException $e) {
+ throw new \InvalidArgumentException('Invalid Federated Cloud ID', 0, $e);
+ }
+ }
+
}
diff --git a/lib/private/Collaboration/Collaborators/RemotePlugin.php b/lib/private/Collaboration/Collaborators/RemotePlugin.php
index d877346b155..fd14e7e03be 100644
--- a/lib/private/Collaboration/Collaborators/RemotePlugin.php
+++ b/lib/private/Collaboration/Collaborators/RemotePlugin.php
@@ -152,10 +152,13 @@ class RemotePlugin implements ISearchPlugin {
$localUser = $this->userManager->get($remoteUser);
if ($localUser === null || $search !== $localUser->getCloudId()) {
$result['exact'][] = [
- 'label' => $search,
+ 'label' => $remoteUser . " ($serverUrl)",
+ 'uuid' => $remoteUser,
+ 'name' => $remoteUser,
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $search,
+ 'server' => $serverUrl,
],
];
}
diff --git a/lib/private/Collaboration/Collaborators/UserPlugin.php b/lib/private/Collaboration/Collaborators/UserPlugin.php
index 971b7025564..9de269224f5 100644
--- a/lib/private/Collaboration/Collaborators/UserPlugin.php
+++ b/lib/private/Collaboration/Collaborators/UserPlugin.php
@@ -71,7 +71,7 @@ class UserPlugin implements ISearchPlugin {
foreach ($userGroups as $userGroup) {
$usersTmp = $this->groupManager->displayNamesInGroup($userGroup, $search, $limit, $offset);
foreach ($usersTmp as $uid => $userDisplayName) {
- $users[$uid] = $userDisplayName;
+ $users[(string) $uid] = $userDisplayName;
}
}
} else {
@@ -80,7 +80,7 @@ class UserPlugin implements ISearchPlugin {
foreach ($usersTmp as $user) {
if ($user->isEnabled()) { // Don't keep deactivated users
- $users[$user->getUID()] = $user->getDisplayName();
+ $users[(string) $user->getUID()] = $user->getDisplayName();
}
}
}
@@ -94,6 +94,7 @@ class UserPlugin implements ISearchPlugin {
$foundUserById = false;
$lowerSearch = strtolower($search);
foreach ($users as $uid => $userDisplayName) {
+ $uid = (string) $uid;
if (strtolower($uid) === $lowerSearch || strtolower($userDisplayName) === $lowerSearch) {
if (strtolower($uid) === $lowerSearch) {
$foundUserById = true;
diff --git a/lib/private/Collaboration/Resources/Collection.php b/lib/private/Collaboration/Resources/Collection.php
index 6d37cebdc2f..beef8ba9bd8 100644
--- a/lib/private/Collaboration/Resources/Collection.php
+++ b/lib/private/Collaboration/Resources/Collection.php
@@ -24,10 +24,10 @@ namespace OC\Collaboration\Resources;
use Doctrine\DBAL\Exception\ConstraintViolationException;
-use OCP\Collaboration\Resources\IManager;
-use OCP\Collaboration\Resources\ResourceException;
use OCP\Collaboration\Resources\ICollection;
+use OCP\Collaboration\Resources\IManager;
use OCP\Collaboration\Resources\IResource;
+use OCP\Collaboration\Resources\ResourceException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUser;
diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php
index d670c3a846d..ef369b18fe3 100644
--- a/lib/private/Collaboration/Resources/Manager.php
+++ b/lib/private/Collaboration/Resources/Manager.php
@@ -353,12 +353,15 @@ class Manager implements IManager {
return $access;
}
- $access = false;
+ $access = null;
+ // Access is granted when a user can access all resources
foreach ($collection->getResources() as $resource) {
- if ($resource->canAccess($user)) {
- $access = true;
+ if (!$resource->canAccess($user)) {
+ $access = false;
break;
}
+
+ $access = true;
}
$this->cacheAccessForCollection($collection, $user, $access);
@@ -461,6 +464,14 @@ class Manager implements IManager {
}
}
+ public function invalidateAccessCacheForAllCollections(): void {
+ $query = $this->connection->getQueryBuilder();
+
+ $query->delete(self::TABLE_ACCESS_CACHE)
+ ->where($query->expr()->neq('collection_id', $query->createNamedParameter(0)));
+ $query->execute();
+ }
+
public function invalidateAccessCacheForCollection(ICollection $collection): void {
$query = $this->connection->getQueryBuilder();
diff --git a/lib/private/Comments/Comment.php b/lib/private/Comments/Comment.php
index c9862c64ca6..ef7538d140d 100644
--- a/lib/private/Comments/Comment.php
+++ b/lib/private/Comments/Comment.php
@@ -22,6 +22,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Comments;
use OCP\Comments\IComment;
@@ -299,12 +300,12 @@ class Comment implements IComment {
public function setActor($actorType, $actorId) {
if(
!is_string($actorType) || !trim($actorType)
- || !is_string($actorId) || !trim($actorId)
+ || !is_string($actorId) || $actorId === ''
) {
throw new \InvalidArgumentException('String expected.');
}
$this->data['actorType'] = trim($actorType);
- $this->data['actorId'] = trim($actorId);
+ $this->data['actorId'] = $actorId;
return $this;
}
@@ -385,7 +386,7 @@ class Comment implements IComment {
public function setObject($objectType, $objectId) {
if(
!is_string($objectType) || !trim($objectType)
- || !is_string($objectId) || !trim($objectId)
+ || !is_string($objectId) || trim($objectId) === ''
) {
throw new \InvalidArgumentException('String expected.');
}
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php
index e54218509dc..5c36d5e2091 100644
--- a/lib/private/Comments/Manager.php
+++ b/lib/private/Comments/Manager.php
@@ -34,8 +34,8 @@ use OCP\Comments\ICommentsEventHandler;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IDBConnection;
use OCP\IConfig;
+use OCP\IDBConnection;
use OCP\ILogger;
use OCP\IUser;
@@ -118,9 +118,9 @@ class Manager implements ICommentsManager {
*/
protected function prepareCommentForDatabaseWrite(IComment $comment) {
if (!$comment->getActorType()
- || !$comment->getActorId()
+ || $comment->getActorId() === ''
|| !$comment->getObjectType()
- || !$comment->getObjectId()
+ || $comment->getObjectId() === ''
|| !$comment->getVerb()
) {
throw new \UnexpectedValueException('Actor, Object and Verb information must be provided for saving');
diff --git a/lib/private/Comments/ManagerFactory.php b/lib/private/Comments/ManagerFactory.php
index 21926912b10..1fc5fb2730b 100644
--- a/lib/private/Comments/ManagerFactory.php
+++ b/lib/private/Comments/ManagerFactory.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Comments;
use OCP\Comments\ICommentsManager;
diff --git a/lib/private/Config.php b/lib/private/Config.php
index f462bebaf58..4d24643c22f 100644
--- a/lib/private/Config.php
+++ b/lib/private/Config.php
@@ -270,4 +270,3 @@ class Config {
}
}
}
-
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index d7c047527f1..0260d5f7a3c 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -27,6 +27,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Console;
use OC\MemoryInfo;
diff --git a/lib/private/Contacts/ContactsMenu/ContactsStore.php b/lib/private/Contacts/ContactsMenu/ContactsStore.php
index 05ef9cca53a..b3843b17a9e 100644
--- a/lib/private/Contacts/ContactsMenu/ContactsStore.php
+++ b/lib/private/Contacts/ContactsMenu/ContactsStore.php
@@ -27,13 +27,13 @@
namespace OC\Contacts\ContactsMenu;
+use OCP\Contacts\ContactsMenu\IContactsStore;
use OCP\Contacts\ContactsMenu\IEntry;
use OCP\Contacts\IManager;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
-use OCP\Contacts\ContactsMenu\IContactsStore;
class ContactsStore implements IContactsStore {
diff --git a/lib/private/DB/AdapterMySQL.php b/lib/private/DB/AdapterMySQL.php
index aa784bb83dc..d9af077da70 100644
--- a/lib/private/DB/AdapterMySQL.php
+++ b/lib/private/DB/AdapterMySQL.php
@@ -22,7 +22,6 @@
*
*/
-
namespace OC\DB;
class AdapterMySQL extends Adapter {
diff --git a/lib/private/DB/AdapterOCI8.php b/lib/private/DB/AdapterOCI8.php
index 359e4ba1b67..68e73ac8c44 100644
--- a/lib/private/DB/AdapterOCI8.php
+++ b/lib/private/DB/AdapterOCI8.php
@@ -23,7 +23,6 @@
*
*/
-
namespace OC\DB;
class AdapterOCI8 extends Adapter {
diff --git a/lib/private/DB/AdapterPgSql.php b/lib/private/DB/AdapterPgSql.php
index 42e57cd45f7..840d270d25f 100644
--- a/lib/private/DB/AdapterPgSql.php
+++ b/lib/private/DB/AdapterPgSql.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\DB;
use Doctrine\DBAL\DBALException;
diff --git a/lib/private/DB/AdapterSqlite.php b/lib/private/DB/AdapterSqlite.php
index 0a482259b98..caf6a70b097 100644
--- a/lib/private/DB/AdapterSqlite.php
+++ b/lib/private/DB/AdapterSqlite.php
@@ -24,7 +24,6 @@
*
*/
-
namespace OC\DB;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 506f4bcd4c9..65e1d84bfb1 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -30,14 +30,15 @@
namespace OC\DB;
+use Doctrine\Common\EventManager;
+use Doctrine\DBAL\Cache\QueryCacheProfile;
+use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Driver;
-use Doctrine\DBAL\Configuration;
-use Doctrine\DBAL\Cache\QueryCacheProfile;
-use Doctrine\Common\EventManager;
-use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Exception\ConstraintViolationException;
+use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\TransactionIsolationLevel;
use OC\DB\QueryBuilder\QueryBuilder;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
@@ -148,7 +149,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
$this->adapter = new $params['adapter']($this);
$this->tablePrefix = $params['tablePrefix'];
- parent::setTransactionIsolation(parent::TRANSACTION_READ_COMMITTED);
+ $this->setTransactionIsolation(TransactionIsolationLevel::READ_COMMITTED);
}
/**
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index 269400c3ba9..329500fa081 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -30,6 +30,7 @@ use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\SchemaException;
use Doctrine\DBAL\Schema\Sequence;
use Doctrine\DBAL\Schema\Table;
+use Doctrine\DBAL\Types\Type;
use OC\App\InfoParser;
use OC\IntegrityCheck\Helpers\AppLocator;
use OC\Migration\SimpleOutput;
@@ -38,7 +39,6 @@ use OCP\AppFramework\QueryException;
use OCP\IDBConnection;
use OCP\Migration\IMigrationStep;
use OCP\Migration\IOutput;
-use Doctrine\DBAL\Types\Type;
class MigrationService {
diff --git a/lib/private/DB/Migrator.php b/lib/private/DB/Migrator.php
index a853ab1ea1b..7f1db4b15d2 100644
--- a/lib/private/DB/Migrator.php
+++ b/lib/private/DB/Migrator.php
@@ -29,12 +29,12 @@
namespace OC\DB;
-use \Doctrine\DBAL\DBALException;
-use \Doctrine\DBAL\Schema\Index;
-use \Doctrine\DBAL\Schema\Table;
-use \Doctrine\DBAL\Schema\Schema;
-use \Doctrine\DBAL\Schema\SchemaConfig;
-use \Doctrine\DBAL\Schema\Comparator;
+use Doctrine\DBAL\DBALException;
+use Doctrine\DBAL\Schema\Comparator;
+use Doctrine\DBAL\Schema\Index;
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Schema\SchemaConfig;
+use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Types\StringType;
use Doctrine\DBAL\Types\Type;
use OCP\IConfig;
diff --git a/lib/private/DB/MissingIndexInformation.php b/lib/private/DB/MissingIndexInformation.php
index 0cb9852d0d4..bcf8465d8aa 100644
--- a/lib/private/DB/MissingIndexInformation.php
+++ b/lib/private/DB/MissingIndexInformation.php
@@ -36,4 +36,4 @@ class MissingIndexInformation {
public function getListOfMissingIndexes(): array {
return $this->listOfMissingIndexes;
}
-} \ No newline at end of file
+}
diff --git a/lib/private/DB/OracleMigrator.php b/lib/private/DB/OracleMigrator.php
index be90a4bb97f..9c6c9fd156a 100644
--- a/lib/private/DB/OracleMigrator.php
+++ b/lib/private/DB/OracleMigrator.php
@@ -31,10 +31,10 @@ namespace OC\DB;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\Column;
use Doctrine\DBAL\Schema\ColumnDiff;
+use Doctrine\DBAL\Schema\ForeignKeyConstraint;
use Doctrine\DBAL\Schema\Index;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\Table;
-use Doctrine\DBAL\Schema\ForeignKeyConstraint;
class OracleMigrator extends Migrator {
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
index a9d2f6f9a35..ffa758e4da7 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
@@ -72,8 +72,25 @@ class FunctionBuilder implements IFunctionBuilder {
return new QueryFunction($this->helper->quoteColumnName($x) . ' - ' . $this->helper->quoteColumnName($y));
}
- public function count($count, $alias = '') {
+ public function count($count = '', $alias = '') {
$alias = $alias ? (' AS ' . $this->helper->quoteColumnName($alias)) : '';
- return new QueryFunction('COUNT(' . $this->helper->quoteColumnName($count) . ')' . $alias);
+ $quotedName = $count === '' ? '*' : $this->helper->quoteColumnName($count);
+ return new QueryFunction('COUNT(' . $quotedName . ')' . $alias);
+ }
+
+ public function max($field) {
+ return new QueryFunction('MAX(' . $this->helper->quoteColumnName($field) . ')');
+ }
+
+ public function min($field) {
+ return new QueryFunction('MIN(' . $this->helper->quoteColumnName($field) . ')');
+ }
+
+ public function greatest($x, $y) {
+ return new QueryFunction('GREATEST(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
+ }
+
+ public function least($x, $y) {
+ return new QueryFunction('LEAST(' . $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 21898cf3f93..f37ac20ecab 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
@@ -30,4 +30,13 @@ class SqliteFunctionBuilder extends FunctionBuilder {
public function concat($x, $y) {
return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
}
+
+ public function greatest($x, $y) {
+ return new QueryFunction('MAX(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
+ }
+
+ public function least($x, $y) {
+ return new QueryFunction('MIN(' . $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 25d59fb7d7d..b9fada8c4f0 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -39,9 +39,9 @@ use OC\DB\QueryBuilder\FunctionBuilder\OCIFunctionBuilder;
use OC\DB\QueryBuilder\FunctionBuilder\PgSqlFunctionBuilder;
use OC\DB\QueryBuilder\FunctionBuilder\SqliteFunctionBuilder;
use OC\SystemConfig;
+use OCP\DB\QueryBuilder\IParameter;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\DB\QueryBuilder\IQueryFunction;
-use OCP\DB\QueryBuilder\IParameter;
use OCP\IDBConnection;
use OCP\ILogger;
@@ -245,7 +245,7 @@ class QueryBuilder implements IQueryBuilder {
* @param mixed $value The parameter value.
* @param string|null|int $type One of the IQueryBuilder::PARAM_* constants.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function setParameter($key, $value, $type = null) {
$this->queryBuilder->setParameter($key, $value, $type);
@@ -270,7 +270,7 @@ class QueryBuilder implements IQueryBuilder {
* @param array $params The query parameters to set.
* @param array $types The query parameters types to set.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function setParameters(array $params, array $types = array()) {
$this->queryBuilder->setParameters($params, $types);
@@ -323,7 +323,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param integer $firstResult The first result to return.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function setFirstResult($firstResult) {
$this->queryBuilder->setFirstResult($firstResult);
@@ -350,7 +350,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param integer $maxResults The maximum number of results to retrieve.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function setMaxResults($maxResults) {
$this->queryBuilder->setMaxResults($maxResults);
@@ -381,7 +381,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$selects The selection expressions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * '@return $this This QueryBuilder instance.
*/
public function select(...$selects) {
if (count($selects) === 1 && is_array($selects[0])) {
@@ -408,7 +408,7 @@ class QueryBuilder implements IQueryBuilder {
* @param mixed $select The selection expressions.
* @param string $alias The column alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function selectAlias($select, $alias) {
@@ -430,7 +430,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed $select The selection expressions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function selectDistinct($select) {
@@ -454,7 +454,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$selects The selection expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function addSelect(...$selects) {
if (count($selects) === 1 && is_array($selects[0])) {
@@ -482,7 +482,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $delete The table whose rows are subject to the deletion.
* @param string $alias The table alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function delete($delete = null, $alias = null) {
$this->queryBuilder->delete(
@@ -507,7 +507,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $update The table whose rows are subject to the update.
* @param string $alias The table alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function update($update = null, $alias = null) {
$this->queryBuilder->update(
@@ -535,7 +535,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param string $insert The table into which the rows should be inserted.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function insert($insert = null) {
$this->queryBuilder->insert(
@@ -560,7 +560,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $from The table.
* @param string|null $alias The alias of the table.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function from($from, $alias = null) {
$this->queryBuilder->from(
@@ -586,7 +586,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function join($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->join(
@@ -614,7 +614,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function innerJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->innerJoin(
@@ -642,7 +642,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function leftJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->leftJoin(
@@ -670,7 +670,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function rightJoin($fromAlias, $join, $alias, $condition = null) {
$this->queryBuilder->rightJoin(
@@ -696,7 +696,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $key The column to set.
* @param string $value The value, expression, placeholder, etc.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function set($key, $value) {
$this->queryBuilder->set(
@@ -731,7 +731,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$predicates The restriction predicates.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function where(...$predicates) {
call_user_func_array(
@@ -756,7 +756,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$where The query restrictions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*
* @see where()
*/
@@ -783,7 +783,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$where The WHERE statement.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*
* @see where()
*/
@@ -809,7 +809,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$groupBys The grouping expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function groupBy(...$groupBys) {
if (count($groupBys) === 1 && is_array($groupBys[0])) {
@@ -837,7 +837,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$groupBy The grouping expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function addGroupBy(...$groupBys) {
if (count($groupBys) === 1 && is_array($groupBys[0])) {
@@ -869,7 +869,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $column The column into which the value should be inserted.
* @param string $value The value that should be inserted into the column.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function setValue($column, $value) {
$this->queryBuilder->setValue(
@@ -897,7 +897,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param array $values The values to specify for the insert query indexed by column names.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function values(array $values) {
$quotedValues = [];
@@ -916,7 +916,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$having The restriction over the groups.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function having(...$having) {
call_user_func_array(
@@ -933,7 +933,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$having The restriction to append.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function andHaving(...$having) {
call_user_func_array(
@@ -950,7 +950,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param mixed ...$having The restriction to add.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function orHaving(...$having) {
call_user_func_array(
@@ -968,7 +968,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $sort The ordering expression.
* @param string $order The ordering direction.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function orderBy($sort, $order = null) {
$this->queryBuilder->orderBy(
@@ -985,7 +985,7 @@ class QueryBuilder implements IQueryBuilder {
* @param string $sort The ordering expression.
* @param string $order The ordering direction.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function addOrderBy($sort, $order = null) {
$this->queryBuilder->addOrderBy(
@@ -1021,7 +1021,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param array|null $queryPartNames
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function resetQueryParts($queryPartNames = null) {
$this->queryBuilder->resetQueryParts($queryPartNames);
@@ -1034,7 +1034,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param string $queryPartName
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*/
public function resetQueryPart($queryPartName) {
$this->queryBuilder->resetQueryPart($queryPartName);
diff --git a/lib/private/DB/SQLiteSessionInit.php b/lib/private/DB/SQLiteSessionInit.php
index 635a5d98a9e..826bf8e1952 100644
--- a/lib/private/DB/SQLiteSessionInit.php
+++ b/lib/private/DB/SQLiteSessionInit.php
@@ -24,9 +24,9 @@
namespace OC\DB;
+use Doctrine\Common\EventSubscriber;
use Doctrine\DBAL\Event\ConnectionEventArgs;
use Doctrine\DBAL\Events;
-use Doctrine\Common\EventSubscriber;
class SQLiteSessionInit implements EventSubscriber {
/**
diff --git a/lib/private/Dashboard/DashboardManager.php b/lib/private/Dashboard/DashboardManager.php
index 712d56641fa..c2ec8f25288 100644
--- a/lib/private/Dashboard/DashboardManager.php
+++ b/lib/private/Dashboard/DashboardManager.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\Dashboard;
@@ -37,7 +36,6 @@ use OCP\Dashboard\Model\IWidgetConfig;
use OCP\Dashboard\Service\IEventsService;
use OCP\Dashboard\Service\IWidgetsService;
-
/**
* Class DashboardManager
*
@@ -145,4 +143,3 @@ class DashboardManager implements IDashboardManager {
}
}
-
diff --git a/lib/private/DirectEditing/Manager.php b/lib/private/DirectEditing/Manager.php
new file mode 100644
index 00000000000..26adad9e572
--- /dev/null
+++ b/lib/private/DirectEditing/Manager.php
@@ -0,0 +1,236 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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\DirectEditing;
+
+use Doctrine\DBAL\FetchMode;
+use OCP\AppFramework\Http\NotFoundResponse;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\DirectEditing\ACreateFromTemplate;
+use OCP\DirectEditing\IEditor;
+use \OCP\DirectEditing\IManager;
+use OCP\DirectEditing\IToken;
+use OCP\DirectEditing\RegisterDirectEditorEvent;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Files\File;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotFoundException;
+use OCP\IDBConnection;
+use OCP\IUserSession;
+use OCP\Security\ISecureRandom;
+use OCP\Share\IShare;
+
+class Manager implements IManager {
+
+ private const TOKEN_CLEANUP_TIME = 12 * 60 * 60 ;
+
+ public const TABLE_TOKENS = 'direct_edit';
+
+ /** @var IEditor[] */
+ private $editors = [];
+
+ /** @var IDBConnection */
+ private $connection;
+ /**
+ * @var ISecureRandom
+ */
+ private $random;
+ private $userId;
+ private $rootFolder;
+
+ public function __construct(
+ ISecureRandom $random,
+ IDBConnection $connection,
+ IUserSession $userSession,
+ IRootFolder $rootFolder
+ ) {
+ $this->random = $random;
+ $this->connection = $connection;
+ $this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null;
+ $this->rootFolder = $rootFolder;
+ }
+
+ public function registerDirectEditor(IEditor $directEditor): void {
+ $this->editors[$directEditor->getId()] = $directEditor;
+ }
+
+ public function getEditors(): array {
+ return $this->editors;
+ }
+
+ public function getTemplates(string $editor, string $type): array {
+ if (!array_key_exists($editor, $this->editors)) {
+ throw new \RuntimeException('No matching editor found');
+ }
+ $templates = [];
+ foreach ($this->editors[$editor]->getCreators() as $creator) {
+ if ($creator instanceof ACreateFromTemplate && $creator->getId() === $type) {
+ $templates = $creator->getTemplates();
+ }
+ }
+ $return = [];
+ $return['templates'] = $templates;
+ return $return;
+ }
+
+ public function create(string $path, string $editorId, string $creatorId, $templateId = null): string {
+ $userFolder = $this->rootFolder->getUserFolder($this->userId);
+ $file = $userFolder->newFile($path);
+ $editor = $this->getEditor($editorId);
+ $creators = $editor->getCreators();
+ foreach ($creators as $creator) {
+ if ($creator->getId() === $creatorId) {
+ $creator->create($file, $creatorId, $templateId);
+ return $this->createToken($editorId, $file);
+ }
+ }
+ throw new \RuntimeException('No creator found');
+ }
+
+ public function open(int $fileId, string $editorId = null): string {
+ $file = $this->rootFolder->getUserFolder($this->userId)->getById($fileId);
+ if (count($file) === 0 || !($file[0] instanceof File) || $file === null) {
+ throw new NotFoundException();
+ }
+ /** @var File $file */
+ $file = $file[0];
+
+ if ($editorId === null) {
+ $editorId = $this->findEditorForFile($file);
+ }
+
+ return $this->createToken($editorId, $file);
+ }
+
+ private function findEditorForFile(File $file) {
+ foreach ($this->editors as $editor) {
+ if (in_array($file->getMimeType(), $editor->getMimetypes())) {
+ return $editor->getId();
+ }
+ }
+ throw new \RuntimeException('No default editor found for files mimetype');
+ }
+
+ public function edit(string $token): Response {
+ try {
+ /** @var IEditor $editor */
+ $tokenObject = $this->getToken($token);
+ if ($tokenObject->hasBeenAccessed()) {
+ throw new \RuntimeException('Token has already been used and can only be used for followup requests');
+ }
+ $editor = $this->getEditor($tokenObject->getEditor());
+ $this->accessToken($token);
+
+ } catch (\Throwable $throwable) {
+ $this->invalidateToken($token);
+ return new NotFoundResponse();
+ }
+ return $editor->open($tokenObject);
+ }
+
+ public function editSecure(File $file, string $editorId): TemplateResponse {
+ // TODO: Implementation in follow up
+ }
+
+ private function getEditor($editorId): IEditor {
+ if (!array_key_exists($editorId, $this->editors)) {
+ throw new \RuntimeException('No editor found');
+ }
+ return $this->editors[$editorId];
+ }
+
+ public function getToken(string $token): IToken {
+ $query = $this->connection->getQueryBuilder();
+ $query->select('*')->from(self::TABLE_TOKENS)
+ ->where($query->expr()->eq('token', $query->createNamedParameter($token, IQueryBuilder::PARAM_STR)));
+ $result = $query->execute();
+ if ($tokenRow = $result->fetch(FetchMode::ASSOCIATIVE)) {
+ return new Token($this, $tokenRow);
+ }
+ throw new \RuntimeException('Failed to validate the token');
+ }
+
+ public function cleanup(): int {
+ $query = $this->connection->getQueryBuilder();
+ $query->delete(self::TABLE_TOKENS)
+ ->where($query->expr()->lt('timestamp', $query->createNamedParameter(time() - self::TOKEN_CLEANUP_TIME)));
+ return $query->execute();
+ }
+
+ public function refreshToken(string $token): bool {
+ $query = $this->connection->getQueryBuilder();
+ $query->update(self::TABLE_TOKENS)
+ ->set('timestamp', $query->createNamedParameter(time(), IQueryBuilder::PARAM_INT))
+ ->where($query->expr()->eq('token', $query->createNamedParameter($token, IQueryBuilder::PARAM_STR)));
+ $result = $query->execute();
+ return $result !== 0;
+ }
+
+
+ public function invalidateToken(string $token): bool {
+ $query = $this->connection->getQueryBuilder();
+ $query->delete(self::TABLE_TOKENS)
+ ->where($query->expr()->eq('token', $query->createNamedParameter($token, IQueryBuilder::PARAM_STR)));
+ $result = $query->execute();
+ return $result !== 0;
+ }
+
+ public function accessToken(string $token): bool {
+ $query = $this->connection->getQueryBuilder();
+ $query->update(self::TABLE_TOKENS)
+ ->set('accessed', $query->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))
+ ->set('timestamp', $query->createNamedParameter(time(), IQueryBuilder::PARAM_INT))
+ ->where($query->expr()->eq('token', $query->createNamedParameter($token, IQueryBuilder::PARAM_STR)));
+ $result = $query->execute();
+ return $result !== 0;
+ }
+
+ public function invokeTokenScope($userId): void {
+ \OC_User::setIncognitoMode(true);
+ \OC_User::setUserId($userId);
+ }
+
+ public function createToken($editorId, File $file, IShare $share = null): string {
+ $token = $this->random->generate(64, ISecureRandom::CHAR_HUMAN_READABLE);
+ $query = $this->connection->getQueryBuilder();
+ $query->insert(self::TABLE_TOKENS)
+ ->values([
+ 'token' => $query->createNamedParameter($token),
+ 'editor_id' => $query->createNamedParameter($editorId),
+ 'file_id' => $query->createNamedParameter($file->getId()),
+ 'user_id' => $query->createNamedParameter($this->userId),
+ 'share_id' => $query->createNamedParameter($share !== null ? $share->getId(): null),
+ 'timestamp' => $query->createNamedParameter(time())
+ ]);
+ $query->execute();
+ return $token;
+ }
+
+ public function getFileForToken($userId, $fileId) {
+ $userFolder = $this->rootFolder->getUserFolder($userId);
+ return $userFolder->getById($fileId)[0];
+ }
+
+}
diff --git a/lib/private/DirectEditing/Token.php b/lib/private/DirectEditing/Token.php
new file mode 100644
index 00000000000..148621a2cf3
--- /dev/null
+++ b/lib/private/DirectEditing/Token.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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\DirectEditing;
+
+
+use OCP\DirectEditing\IToken;
+use OCP\Files\File;
+
+class Token implements IToken {
+
+ /** @var Manager */
+ private $manager;
+ private $data;
+
+ public function __construct(Manager $manager, $data) {
+ $this->manager = $manager;
+ $this->data = $data;
+ }
+
+ public function extend(): void {
+ $this->manager->refreshToken($this->data['token']);
+ }
+
+ public function invalidate(): void {
+ $this->manager->invalidateToken($this->data['token']);
+ }
+
+ public function getFile(): File {
+ if ($this->data['share_id'] !== null) {
+ return $this->manager->getShareForToken($this->data['share_id']);
+ }
+ return $this->manager->getFileForToken($this->data['user_id'], $this->data['file_id']);
+ }
+
+ public function getToken(): string {
+ return $this->data['token'];
+ }
+
+ public function useTokenScope(): void {
+ $this->manager->invokeTokenScope($this->data['user_id']);
+ }
+
+ public function hasBeenAccessed(): bool {
+ return (bool) $this->data['accessed'];
+ }
+
+ public function getEditor(): string {
+ return $this->data['editor_id'];
+ }
+
+ public function getUser(): string {
+ return $this->data['user_id'];
+ }
+
+}
diff --git a/lib/private/Encryption/DecryptAll.php b/lib/private/Encryption/DecryptAll.php
index d95a8660762..86164f072d2 100644
--- a/lib/private/Encryption/DecryptAll.php
+++ b/lib/private/Encryption/DecryptAll.php
@@ -24,12 +24,11 @@
*
*/
-
namespace OC\Encryption;
use OC\Encryption\Exceptions\DecryptionFailedException;
use OC\Files\View;
-use \OCP\Encryption\IEncryptionModule;
+use OCP\Encryption\IEncryptionModule;
use OCP\IUserManager;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputInterface;
diff --git a/lib/private/Encryption/EncryptionWrapper.php b/lib/private/Encryption/EncryptionWrapper.php
index c4650d39ee3..30fee808097 100644
--- a/lib/private/Encryption/EncryptionWrapper.php
+++ b/lib/private/Encryption/EncryptionWrapper.php
@@ -21,15 +21,14 @@
*
*/
-
namespace OC\Encryption;
-use OC\Memcache\ArrayCache;
use OC\Files\Filesystem;
use OC\Files\Storage\Wrapper\Encryption;
-use OCP\Files\Mount\IMountPoint;
use OC\Files\View;
+use OC\Memcache\ArrayCache;
+use OCP\Files\Mount\IMountPoint;
use OCP\Files\Storage;
use OCP\ILogger;
diff --git a/lib/private/Encryption/Exceptions/DecryptionFailedException.php b/lib/private/Encryption/Exceptions/DecryptionFailedException.php
index de13536b0c5..946bd47b2c4 100644
--- a/lib/private/Encryption/Exceptions/DecryptionFailedException.php
+++ b/lib/private/Encryption/Exceptions/DecryptionFailedException.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
diff --git a/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php b/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
index 3e93e633ce1..73c02ac8d4c 100644
--- a/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
+++ b/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
diff --git a/lib/private/Encryption/Exceptions/EncryptionFailedException.php b/lib/private/Encryption/Exceptions/EncryptionFailedException.php
index fefd8d4f0ba..d351476ffcd 100644
--- a/lib/private/Encryption/Exceptions/EncryptionFailedException.php
+++ b/lib/private/Encryption/Exceptions/EncryptionFailedException.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
diff --git a/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php b/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
index 00bb0cf4262..b06087f0829 100644
--- a/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
+++ b/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
diff --git a/lib/private/Encryption/Exceptions/UnknownCipherException.php b/lib/private/Encryption/Exceptions/UnknownCipherException.php
index d2c2eb6289c..21dc6639f0d 100644
--- a/lib/private/Encryption/Exceptions/UnknownCipherException.php
+++ b/lib/private/Encryption/Exceptions/UnknownCipherException.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
diff --git a/lib/private/Encryption/Keys/Storage.php b/lib/private/Encryption/Keys/Storage.php
index 223b959e661..77284be1b9d 100644
--- a/lib/private/Encryption/Keys/Storage.php
+++ b/lib/private/Encryption/Keys/Storage.php
@@ -29,8 +29,8 @@ namespace OC\Encryption\Keys;
use OC\Encryption\Util;
use OC\Files\Filesystem;
use OC\Files\View;
-use OCP\Encryption\Keys\IStorage;
use OC\User\NoUserException;
+use OCP\Encryption\Keys\IStorage;
class Storage implements IStorage {
diff --git a/lib/private/Encryption/Update.php b/lib/private/Encryption/Update.php
index 9d9f5e4d954..65788424906 100644
--- a/lib/private/Encryption/Update.php
+++ b/lib/private/Encryption/Update.php
@@ -25,8 +25,8 @@
namespace OC\Encryption;
use OC\Files\Filesystem;
-use \OC\Files\Mount;
-use \OC\Files\View;
+use OC\Files\Mount;
+use OC\Files\View;
/**
* update encrypted files, e.g. because a file was shared
diff --git a/lib/private/EventDispatcher/EventDispatcher.php b/lib/private/EventDispatcher/EventDispatcher.php
index 8db2f3101be..1f4a1ba9ab4 100644
--- a/lib/private/EventDispatcher/EventDispatcher.php
+++ b/lib/private/EventDispatcher/EventDispatcher.php
@@ -25,6 +25,10 @@ declare(strict_types=1);
namespace OC\EventDispatcher;
+use function get_class;
+use OC\Broadcast\Events\BroadcastEvent;
+use OCP\Broadcast\Events\IBroadcastEvent;
+use OCP\EventDispatcher\ABroadcastedEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IContainer;
@@ -71,8 +75,19 @@ class EventDispatcher implements IEventDispatcher {
public function dispatch(string $eventName,
Event $event): void {
+ $this->dispatcher->dispatch($event, $eventName);
+
+ if ($event instanceof ABroadcastedEvent && !$event->isPropagationStopped()) {
+ // Propagate broadcast
+ $this->dispatch(
+ IBroadcastEvent::class,
+ new BroadcastEvent($event)
+ );
+ }
+ }
- $this->dispatcher->dispatch($eventName, $event);
+ public function dispatchTyped(Event $event): void {
+ $this->dispatch(get_class($event), $event);
}
/**
diff --git a/lib/private/EventDispatcher/SymfonyAdapter.php b/lib/private/EventDispatcher/SymfonyAdapter.php
index f2f2fbf59fd..70c03fcb1ff 100644
--- a/lib/private/EventDispatcher/SymfonyAdapter.php
+++ b/lib/private/EventDispatcher/SymfonyAdapter.php
@@ -27,7 +27,7 @@ namespace OC\EventDispatcher;
use function is_callable;
use OCP\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\Event as SymfonyEvent;
+use OCP\ILogger;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -35,9 +35,12 @@ class SymfonyAdapter implements EventDispatcherInterface {
/** @var EventDispatcher */
private $eventDispatcher;
+ /** @var ILogger */
+ private $logger;
- public function __construct(EventDispatcher $eventDispatcher) {
+ public function __construct(EventDispatcher $eventDispatcher, ILogger $logger) {
$this->eventDispatcher = $eventDispatcher;
+ $this->logger = $logger;
}
/**
@@ -46,16 +49,21 @@ class SymfonyAdapter implements EventDispatcherInterface {
* @param string $eventName The name of the event to dispatch. The name of
* the event is the name of the method that is
* invoked on listeners.
- * @param SymfonyEvent|null $event The event to pass to the event handlers/listeners
+ * @param Event|null $event The event to pass to the event handlers/listeners
* If not supplied, an empty Event instance is created
*
- * @return SymfonyEvent
+ * @return void
*/
- public function dispatch($eventName, SymfonyEvent $event = null) {
+ public function dispatch($eventName, $event = null) {
+ // type hinting is not possible, due to usage of GenericEvent
if ($event instanceof Event) {
$this->eventDispatcher->dispatch($eventName, $event);
} else {
// Legacy event
+ $this->logger->info(
+ 'Deprecated event type for {name}: {class}',
+ [ 'name' => $eventName, 'class' => is_object($event) ? get_class($event) : 'null' ]
+ );
$this->eventDispatcher->getSymfonyDispatcher()->dispatch($eventName, $event);
}
}
diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php
index c2944f410b3..772bc0aeb05 100644
--- a/lib/private/Federation/CloudFederationProviderManager.php
+++ b/lib/private/Federation/CloudFederationProviderManager.php
@@ -19,7 +19,6 @@
*
*/
-
namespace OC\Federation;
use OC\AppFramework\Http;
diff --git a/lib/private/Files/AppData/AppData.php b/lib/private/Files/AppData/AppData.php
index 7ce29bd0e00..4f526bf04cf 100644
--- a/lib/private/Files/AppData/AppData.php
+++ b/lib/private/Files/AppData/AppData.php
@@ -26,10 +26,10 @@ namespace OC\Files\AppData;
use OC\Cache\CappedMemoryCache;
use OC\Files\SimpleFS\SimpleFolder;
+use OC\SystemConfig;
+use OCP\Files\Folder;
use OCP\Files\IAppData;
use OCP\Files\IRootFolder;
-use OCP\Files\Folder;
-use OC\SystemConfig;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
diff --git a/lib/private/Files/AppData/Factory.php b/lib/private/Files/AppData/Factory.php
index 5c7d554ba5b..3a880d5e29b 100644
--- a/lib/private/Files/AppData/Factory.php
+++ b/lib/private/Files/AppData/Factory.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Files\AppData;
use OC\SystemConfig;
diff --git a/lib/private/Files/Cache/AbstractCacheEvent.php b/lib/private/Files/Cache/AbstractCacheEvent.php
index c8a41ce54d8..d4990f17743 100644
--- a/lib/private/Files/Cache/AbstractCacheEvent.php
+++ b/lib/private/Files/Cache/AbstractCacheEvent.php
@@ -21,9 +21,9 @@
namespace OC\Files\Cache;
+use OCP\EventDispatcher\Event;
use OCP\Files\Cache\ICacheEvent;
use OCP\Files\Storage\IStorage;
-use Symfony\Component\EventDispatcher\Event;
class AbstractCacheEvent extends Event implements ICacheEvent {
protected $storage;
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index f6139d8abed..a90617f5c53 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -38,14 +38,15 @@
namespace OC\Files\Cache;
+use Doctrine\DBAL\Driver\Statement;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use Doctrine\DBAL\Driver\Statement;
use OCP\Files\Cache\CacheInsertEvent;
use OCP\Files\Cache\CacheUpdateEvent;
use OCP\Files\Cache\ICache;
use OCP\Files\Cache\ICacheEntry;
-use \OCP\Files\IMimeTypeLoader;
+use OCP\Files\FileInfo;
+use OCP\Files\IMimeTypeLoader;
use OCP\Files\Search\ISearchQuery;
use OCP\Files\Storage\IStorage;
use OCP\IDBConnection;
@@ -68,7 +69,7 @@ class Cache implements ICache {
/**
* @var array partial data for the cache
*/
- protected $partial = array();
+ protected $partial = [];
/**
* @var string
@@ -112,6 +113,15 @@ class Cache implements ICache {
$this->querySearchHelper = new QuerySearchHelper($this->mimetypeLoader);
}
+ private function getQueryBuilder() {
+ return new CacheQueryBuilder(
+ $this->connection,
+ \OC::$server->getSystemConfig(),
+ \OC::$server->getLogger(),
+ $this
+ );
+ }
+
/**
* Get the numeric storage id for this cache's storage
*
@@ -128,34 +138,24 @@ class Cache implements ICache {
* @return ICacheEntry|false the cache entry as array of false if the file is not found in the cache
*/
public function get($file) {
+ $query = $this->getQueryBuilder();
+ $query->selectFileCache();
+
if (is_string($file) or $file == '') {
// normalize file
$file = $this->normalize($file);
- $where = 'WHERE `storage` = ? AND `path_hash` = ?';
- $params = array($this->getNumericStorageId(), md5($file));
+ $query->whereStorageId()
+ ->wherePath($file);
} else { //file id
- $where = 'WHERE `fileid` = ?';
- $params = array($file);
+ $query->whereFileId($file);
}
- $sql = 'SELECT `fileid`, `storage`, `path`, `path_hash`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`,
- `storage_mtime`, `encrypted`, `etag`, `permissions`, `checksum`
- FROM `*PREFIX*filecache` ' . $where;
- $result = $this->connection->executeQuery($sql, $params);
- $data = $result->fetch();
- //FIXME hide this HACK in the next database layer, or just use doctrine and get rid of MDB2 and PDO
- //PDO returns false, MDB2 returns null, oracle always uses MDB2, so convert null to false
- if ($data === null) {
- $data = false;
- }
+ $data = $query->execute()->fetch();
//merge partial data
- if (!$data and is_string($file)) {
- if (isset($this->partial[$file])) {
- $data = $this->partial[$file];
- }
- return $data;
+ if (!$data and is_string($file) and isset($this->partial[$file])) {
+ return $this->partial[$file];
} else if (!$data) {
return $data;
} else {
@@ -187,6 +187,12 @@ class Cache implements ICache {
$data['storage_mtime'] = $data['mtime'];
}
$data['permissions'] = (int)$data['permissions'];
+ if (isset($data['creation_time'])) {
+ $data['creation_time'] = (int) $data['creation_time'];
+ }
+ if (isset($data['upload_time'])) {
+ $data['upload_time'] = (int) $data['upload_time'];
+ }
return new CacheEntry($data);
}
@@ -209,11 +215,12 @@ class Cache implements ICache {
*/
public function getFolderContentsById($fileId) {
if ($fileId > -1) {
- $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`,
- `storage_mtime`, `encrypted`, `etag`, `permissions`, `checksum`
- FROM `*PREFIX*filecache` WHERE `parent` = ? ORDER BY `name` ASC';
- $result = $this->connection->executeQuery($sql, [$fileId]);
- $files = $result->fetchAll();
+ $query = $this->getQueryBuilder();
+ $query->selectFileCache()
+ ->whereParent($fileId)
+ ->orderBy('name', 'ASC');
+
+ $files = $query->execute()->fetchAll();
return array_map(function (array $data) {
return self::cacheEntryFromData($data, $this->mimetypeLoader);
}, $files);
@@ -259,7 +266,7 @@ class Cache implements ICache {
unset($this->partial[$file]);
}
- $requiredFields = array('size', 'mtime', 'mimetype');
+ $requiredFields = ['size', 'mtime', 'mimetype'];
foreach ($requiredFields as $field) {
if (!isset($data[$field])) { //data not complete save as partial and return
$this->partial[$file] = $data;
@@ -271,14 +278,8 @@ class Cache implements ICache {
$data['parent'] = $this->getParentId($file);
$data['name'] = basename($file);
- list($queryParts, $params) = $this->buildParts($data);
- $queryParts[] = '`storage`';
- $params[] = $this->getNumericStorageId();
-
- $queryParts = array_map(function ($item) {
- return trim($item, "`");
- }, $queryParts);
- $values = array_combine($queryParts, $params);
+ [$values, $extensionValues] = $this->normalizeData($data);
+ $values['storage'] = $this->getNumericStorageId();
try {
$builder = $this->connection->getQueryBuilder();
@@ -289,7 +290,19 @@ class Cache implements ICache {
}
if ($builder->execute()) {
- $fileId = (int)$this->connection->lastInsertId('*PREFIX*filecache');
+ $fileId = $builder->getLastInsertId();
+
+ if (count($extensionValues)) {
+ $query = $this->getQueryBuilder();
+ $query->insert('filecache_extended');
+
+ $query->setValue('fileid', $query->createNamedParameter($fileId, IQueryBuilder::PARAM_INT));
+ foreach ($extensionValues as $column => $value) {
+ $query->setValue($column, $query->createNamedParameter($value));
+ }
+ $query->execute();
+ }
+
$this->eventDispatcher->dispatch(CacheInsertEvent::class, new CacheInsertEvent($this->storage, $file, $fileId));
return $fileId;
}
@@ -324,20 +337,56 @@ class Cache implements ICache {
$data['name'] = $this->normalize($data['name']);
}
- list($queryParts, $params) = $this->buildParts($data);
- // duplicate $params because we need the parts twice in the SQL statement
- // once for the SET part, once in the WHERE clause
- $params = array_merge($params, $params);
- $params[] = $id;
+ [$values, $extensionValues] = $this->normalizeData($data);
+
+ if (count($values)) {
+ $query = $this->getQueryBuilder();
+
+ $query->update('filecache')
+ ->whereFileId($id)
+ ->andWhere($query->expr()->orX(...array_map(function ($key, $value) use ($query) {
+ return $query->expr()->orX(
+ $query->expr()->neq($key, $query->createNamedParameter($value)),
+ $query->expr()->isNull($key)
+ );
+ }, array_keys($values), array_values($values))));
+
+ foreach ($values as $key => $value) {
+ $query->set($key, $query->createNamedParameter($value));
+ }
+
+ $query->execute();
+ }
+
+ if (count($extensionValues)) {
+ try {
+ $query = $this->getQueryBuilder();
+ $query->insert('filecache_extended');
- // don't update if the data we try to set is the same as the one in the record
- // some databases (Postgres) don't like superfluous updates
- $sql = 'UPDATE `*PREFIX*filecache` SET ' . implode(' = ?, ', $queryParts) . '=? ' .
- 'WHERE (' .
- implode(' <> ? OR ', $queryParts) . ' <> ? OR ' .
- implode(' IS NULL OR ', $queryParts) . ' IS NULL' .
- ') AND `fileid` = ? ';
- $this->connection->executeQuery($sql, $params);
+ $query->setValue('fileid', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT));
+ foreach ($extensionValues as $column => $value) {
+ $query->setValue($column, $query->createNamedParameter($value));
+ }
+
+ $query->execute();
+ } catch (UniqueConstraintViolationException $e) {
+ $query = $this->getQueryBuilder();
+ $query->update('filecache_extended')
+ ->whereFileId($id)
+ ->andWhere($query->expr()->orX(...array_map(function ($key, $value) use ($query) {
+ return $query->expr()->orX(
+ $query->expr()->neq($key, $query->createNamedParameter($value)),
+ $query->expr()->isNull($key)
+ );
+ }, array_keys($extensionValues), array_values($extensionValues))));
+
+ foreach ($extensionValues as $key => $value) {
+ $query->set($key, $query->createNamedParameter($value));
+ }
+
+ $query->execute();
+ }
+ }
$path = $this->getPathById($id);
// path can still be null if the file doesn't exist
@@ -350,14 +399,13 @@ class Cache implements ICache {
* extract query parts and params array from data array
*
* @param array $data
- * @return array [$queryParts, $params]
- * $queryParts: string[], the (escaped) column names to be set in the query
- * $params: mixed[], the new values for the columns, to be passed as params to the query
+ * @return array
*/
- protected function buildParts(array $data) {
- $fields = array(
+ protected function normalizeData(array $data): array {
+ $fields = [
'path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted',
- 'etag', 'permissions', 'checksum', 'storage');
+ 'etag', 'permissions', 'checksum', 'storage'];
+ $extensionFields = ['metadata_etag', 'creation_time', 'upload_time'];
$doNotCopyStorageMTime = false;
if (array_key_exists('mtime', $data) && $data['mtime'] === null) {
@@ -366,23 +414,20 @@ class Cache implements ICache {
$doNotCopyStorageMTime = true;
}
- $params = array();
- $queryParts = array();
+ $params = [];
+ $extensionParams = [];
foreach ($data as $name => $value) {
if (array_search($name, $fields) !== false) {
if ($name === 'path') {
- $params[] = md5($value);
- $queryParts[] = '`path_hash`';
- } elseif ($name === 'mimetype') {
- $params[] = $this->mimetypeLoader->getId(substr($value, 0, strpos($value, '/')));
- $queryParts[] = '`mimepart`';
+ $params['path_hash'] = md5($value);
+ } else if ($name === 'mimetype') {
+ $params['mimepart'] = $this->mimetypeLoader->getId(substr($value, 0, strpos($value, '/')));
$value = $this->mimetypeLoader->getId($value);
- } elseif ($name === 'storage_mtime') {
+ } else if ($name === 'storage_mtime') {
if (!$doNotCopyStorageMTime && !isset($data['mtime'])) {
- $params[] = $value;
- $queryParts[] = '`mtime`';
+ $params['mtime'] = $value;
}
- } elseif ($name === 'encrypted') {
+ } else if ($name === 'encrypted') {
if (isset($data['encryptedVersion'])) {
$value = $data['encryptedVersion'];
} else {
@@ -390,11 +435,13 @@ class Cache implements ICache {
$value = $value ? 1 : 0;
}
}
- $params[] = $value;
- $queryParts[] = '`' . $name . '`';
+ $params[$name] = $value;
+ }
+ if (array_search($name, $extensionFields) !== false) {
+ $extensionParams[$name] = $value;
}
}
- return array($queryParts, $params);
+ return [$params, array_filter($extensionParams)];
}
/**
@@ -411,15 +458,14 @@ class Cache implements ICache {
// normalize file
$file = $this->normalize($file);
- $pathHash = md5($file);
+ $query = $this->getQueryBuilder();
+ $query->select('fileid')
+ ->from('filecache')
+ ->whereStorageId()
+ ->wherePath($file);
- $sql = 'SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?';
- $result = $this->connection->executeQuery($sql, array($this->getNumericStorageId(), $pathHash));
- if ($row = $result->fetch()) {
- return (int)$row['fileid'];
- } else {
- return -1;
- }
+ $id = $query->execute()->fetchColumn();
+ return $id === false ? -1 : (int)$id;
}
/**
@@ -464,39 +510,64 @@ class Cache implements ICache {
*/
public function remove($file) {
$entry = $this->get($file);
- $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?';
- $this->connection->executeQuery($sql, array($entry['fileid']));
- if ($entry['mimetype'] === 'httpd/unix-directory') {
- $this->removeChildren($entry);
+
+ if ($entry) {
+ $query = $this->getQueryBuilder();
+ $query->delete('filecache')
+ ->whereFileId($entry->getId());
+ $query->execute();
+
+ $query = $this->getQueryBuilder();
+ $query->delete('filecache_extended')
+ ->whereFileId($entry->getId());
+ $query->execute();
+
+ if ($entry->getMimeType() == FileInfo::MIMETYPE_FOLDER) {
+ $this->removeChildren($entry);
+ }
}
}
/**
* Get all sub folders of a folder
*
- * @param array $entry the cache entry of the folder to get the subfolders for
- * @return array[] the cache entries for the subfolders
+ * @param ICacheEntry $entry the cache entry of the folder to get the subfolders for
+ * @return ICacheEntry[] the cache entries for the subfolders
*/
- private function getSubFolders($entry) {
- $children = $this->getFolderContentsById($entry['fileid']);
+ private function getSubFolders(ICacheEntry $entry) {
+ $children = $this->getFolderContentsById($entry->getId());
return array_filter($children, function ($child) {
- return $child['mimetype'] === 'httpd/unix-directory';
+ return $child->getMimeType() == FileInfo::MIMETYPE_FOLDER;
});
}
/**
* Recursively remove all children of a folder
*
- * @param array $entry the cache entry of the folder to remove the children of
+ * @param ICacheEntry $entry the cache entry of the folder to remove the children of
* @throws \OC\DatabaseException
*/
- private function removeChildren($entry) {
- $subFolders = $this->getSubFolders($entry);
- foreach ($subFolders as $folder) {
+ private function removeChildren(ICacheEntry $entry) {
+ $children = $this->getFolderContentsById($entry->getId());
+ $childIds = array_map(function(ICacheEntry $cacheEntry) {
+ return $cacheEntry->getId();
+ }, $children);
+ $childFolders = array_filter($children, function ($child) {
+ return $child->getMimeType() == FileInfo::MIMETYPE_FOLDER;
+ });
+ foreach ($childFolders as $folder) {
$this->removeChildren($folder);
}
- $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `parent` = ?';
- $this->connection->executeQuery($sql, array($entry['fileid']));
+
+ $query = $this->getQueryBuilder();
+ $query->delete('filecache')
+ ->whereParent($entry->getId());
+ $query->execute();
+
+ $query = $this->getQueryBuilder();
+ $query->delete('filecache_extended')
+ ->where($query->expr()->in('fileid', $query->createNamedParameter($childIds, IQueryBuilder::PARAM_INT_ARRAY)));
+ $query->execute();
}
/**
@@ -575,8 +646,16 @@ class Cache implements ICache {
}
}
- $sql = 'UPDATE `*PREFIX*filecache` SET `storage` = ?, `path` = ?, `path_hash` = ?, `name` = ?, `parent` = ? WHERE `fileid` = ?';
- $this->connection->executeQuery($sql, array($targetStorageId, $targetPath, md5($targetPath), basename($targetPath), $newParentId, $sourceId));
+ $query = $this->getQueryBuilder();
+ $query->update('filecache')
+ ->set('storage', $query->createNamedParameter($targetStorageId))
+ ->set('path', $query->createNamedParameter($targetPath))
+ ->set('path_hash', $query->createNamedParameter(md5($targetPath)))
+ ->set('name', $query->createNamedParameter(basename($targetPath)))
+ ->set('parent', $query->createNamedParameter($newParentId, IQueryBuilder::PARAM_INT))
+ ->whereFileId($sourceId);
+ $query->execute();
+
$this->connection->commit();
} else {
$this->moveFromCacheFallback($sourceCache, $sourcePath, $targetPath);
@@ -587,11 +666,15 @@ class Cache implements ICache {
* remove all entries for files that are stored on the storage from the cache
*/
public function clear() {
- $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `storage` = ?';
- $this->connection->executeQuery($sql, array($this->getNumericStorageId()));
+ $query = $this->getQueryBuilder();
+ $query->delete('filecache')
+ ->whereStorageId();
+ $query->execute();
- $sql = 'DELETE FROM `*PREFIX*storages` WHERE `id` = ?';
- $this->connection->executeQuery($sql, array($this->storageId));
+ $query = $this->connection->getQueryBuilder();
+ $query->delete('storages')
+ ->where($query->expr()->eq('id', $query->createNamedParameter($this->storageId)));
+ $query->execute();
}
/**
@@ -610,11 +693,14 @@ class Cache implements ICache {
// normalize file
$file = $this->normalize($file);
- $pathHash = md5($file);
- $sql = 'SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?';
- $result = $this->connection->executeQuery($sql, array($this->getNumericStorageId(), $pathHash));
- if ($row = $result->fetch()) {
- if ((int)$row['size'] === -1) {
+ $query = $this->getQueryBuilder();
+ $query->select('size')
+ ->from('filecache')
+ ->whereStorageId()
+ ->wherePath($file);
+ $size = $query->execute()->fetchColumn();
+ if ($size !== false) {
+ if ((int)$size === -1) {
return self::SHALLOW;
} else {
return self::COMPLETE;
@@ -642,18 +728,14 @@ class Cache implements ICache {
return [];
}
+ $query = $this->getQueryBuilder();
+ $query->selectFileCache()
+ ->whereStorageId()
+ ->andWhere($query->expr()->iLike('name', $query->createNamedParameter($pattern)));
- $sql = '
- SELECT `fileid`, `storage`, `path`, `parent`, `name`,
- `mimetype`, `storage_mtime`, `mimepart`, `size`, `mtime`,
- `encrypted`, `etag`, `permissions`, `checksum`
- FROM `*PREFIX*filecache`
- WHERE `storage` = ? AND `name` ILIKE ?';
- $result = $this->connection->executeQuery($sql,
- [$this->getNumericStorageId(), $pattern]
- );
-
- return $this->searchResultToCacheEntries($result);
+ return array_map(function (array $data) {
+ return self::cacheEntryFromData($data, $this->mimetypeLoader);
+ }, $query->execute()->fetchAll());
}
/**
@@ -676,26 +758,29 @@ class Cache implements ICache {
* @return ICacheEntry[] an array of cache entries where the mimetype matches the search
*/
public function searchByMime($mimetype) {
+ $mimeId = $this->mimetypeLoader->getId($mimetype);
+
+ $query = $this->getQueryBuilder();
+ $query->selectFileCache()
+ ->whereStorageId();
+
if (strpos($mimetype, '/')) {
- $where = '`mimetype` = ?';
+ $query->andWhere($query->expr()->eq('mimetype', $query->createNamedParameter($mimeId, IQueryBuilder::PARAM_INT)));
} else {
- $where = '`mimepart` = ?';
+ $query->andWhere($query->expr()->eq('mimepart', $query->createNamedParameter($mimeId, IQueryBuilder::PARAM_INT)));
}
- $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `storage_mtime`, `mtime`, `encrypted`, `etag`, `permissions`, `checksum`
- FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `storage` = ?';
- $mimetype = $this->mimetypeLoader->getId($mimetype);
- $result = $this->connection->executeQuery($sql, array($mimetype, $this->getNumericStorageId()));
- return $this->searchResultToCacheEntries($result);
+ return array_map(function (array $data) {
+ return self::cacheEntryFromData($data, $this->mimetypeLoader);
+ }, $query->execute()->fetchAll());
}
public function searchQuery(ISearchQuery $searchQuery) {
- $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $builder = $this->getQueryBuilder();
- $query = $builder->select(['fileid', 'storage', 'path', 'parent', 'name', 'mimetype', 'mimepart', 'size', 'mtime', 'storage_mtime', 'encrypted', 'etag', 'permissions', 'checksum'])
- ->from('filecache', 'file');
+ $query = $builder->selectFileCache('file');
- $query->where($builder->expr()->eq('storage', $builder->createNamedParameter($this->getNumericStorageId())));
+ $query->whereStorageId();
if ($this->querySearchHelper->shouldJoinTags($searchQuery->getSearchOperation())) {
$query
@@ -755,10 +840,13 @@ class Cache implements ICache {
*/
public function getIncompleteChildrenCount($fileId) {
if ($fileId > -1) {
- $sql = 'SELECT count(*)
- FROM `*PREFIX*filecache` WHERE `parent` = ? AND size = -1';
- $result = $this->connection->executeQuery($sql, [$fileId]);
- return (int)$result->fetchColumn();
+ $query = $this->getQueryBuilder();
+ $query->select($query->func()->count())
+ ->from('filecache')
+ ->whereParent($fileId)
+ ->andWhere($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
+
+ return (int)$query->execute()->fetchColumn();
}
return -1;
}
@@ -775,14 +863,17 @@ class Cache implements ICache {
if (is_null($entry) or !isset($entry['fileid'])) {
$entry = $this->get($path);
}
- if (isset($entry['mimetype']) && $entry['mimetype'] === 'httpd/unix-directory') {
+ if (isset($entry['mimetype']) && $entry['mimetype'] === FileInfo::MIMETYPE_FOLDER) {
$id = $entry['fileid'];
- $sql = 'SELECT SUM(`size`) AS f1, MIN(`size`) AS f2 ' .
- 'FROM `*PREFIX*filecache` ' .
- 'WHERE `parent` = ? AND `storage` = ?';
- $result = $this->connection->executeQuery($sql, array($id, $this->getNumericStorageId()));
- if ($row = $result->fetch()) {
- $result->closeCursor();
+
+ $query = $this->getQueryBuilder();
+ $query->selectAlias($query->func()->sum('size'), 'f1')
+ ->selectAlias($query->func()->min('size'), 'f2')
+ ->from('filecache')
+ ->whereStorageId()
+ ->whereParent($id);
+
+ if ($row = $query->execute()->fetch()) {
list($sum, $min) = array_values($row);
$sum = 0 + $sum;
$min = 0 + $min;
@@ -791,15 +882,9 @@ class Cache implements ICache {
} else {
$totalSize = $sum;
}
- $update = array();
if ($entry['size'] !== $totalSize) {
- $update['size'] = $totalSize;
- }
- if (count($update) > 0) {
- $this->update($id, $update);
+ $this->update($id, ['size' => $totalSize]);
}
- } else {
- $result->closeCursor();
}
}
return $totalSize;
@@ -811,13 +896,14 @@ class Cache implements ICache {
* @return int[]
*/
public function getAll() {
- $sql = 'SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ?';
- $result = $this->connection->executeQuery($sql, array($this->getNumericStorageId()));
- $ids = array();
- while ($row = $result->fetch()) {
- $ids[] = $row['fileid'];
- }
- return $ids;
+ $query = $this->getQueryBuilder();
+ $query->select('fileid')
+ ->from('filecache')
+ ->whereStorageId();
+
+ return array_map(function ($id) {
+ return (int)$id;
+ }, $query->execute()->fetchAll(\PDO::FETCH_COLUMN));
}
/**
@@ -830,14 +916,14 @@ class Cache implements ICache {
* @return string|bool the path of the folder or false when no folder matched
*/
public function getIncomplete() {
- $query = $this->connection->prepare('SELECT `path` FROM `*PREFIX*filecache`'
- . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC', 1);
- $query->execute([$this->getNumericStorageId()]);
- if ($row = $query->fetch()) {
- return $row['path'];
- } else {
- return false;
- }
+ $query = $this->getQueryBuilder();
+ $query->select('path')
+ ->from('filecache')
+ ->whereStorageId()
+ ->andWhere($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
+ ->orderBy('fileid', 'DESC');
+
+ return $query->execute()->fetchColumn();
}
/**
@@ -847,17 +933,14 @@ class Cache implements ICache {
* @return string|null the path of the file (relative to the storage) or null if a file with the given id does not exists within this cache
*/
public function getPathById($id) {
- $sql = 'SELECT `path` FROM `*PREFIX*filecache` WHERE `fileid` = ? AND `storage` = ?';
- $result = $this->connection->executeQuery($sql, array($id, $this->getNumericStorageId()));
- if ($row = $result->fetch()) {
- // Oracle stores empty strings as null...
- if ($row['path'] === null) {
- return '';
- }
- return $row['path'];
- } else {
- return null;
- }
+ $query = $this->getQueryBuilder();
+ $query->select('path')
+ ->from('filecache')
+ ->whereStorageId()
+ ->whereFileId($id);
+
+ $path = $query->execute()->fetchColumn();
+ return $path === false ? null : $path;
}
/**
@@ -866,14 +949,15 @@ class Cache implements ICache {
* instead does a global search in the cache table
*
* @param int $id
- * @deprecated use getPathById() instead
* @return array first element holding the storage id, second the path
+ * @deprecated use getPathById() instead
*/
static public function getById($id) {
- $connection = \OC::$server->getDatabaseConnection();
- $sql = 'SELECT `storage`, `path` FROM `*PREFIX*filecache` WHERE `fileid` = ?';
- $result = $connection->executeQuery($sql, array($id));
- if ($row = $result->fetch()) {
+ $query = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $query->select('path', 'storage')
+ ->from('filecache')
+ ->where($query->expr()->eq('fileid', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
+ if ($row = $query->execute()->fetch()) {
$numericId = $row['storage'];
$path = $row['path'];
} else {
@@ -881,7 +965,7 @@ class Cache implements ICache {
}
if ($id = Storage::getStorageId($numericId)) {
- return array($id, $path);
+ return [$id, $path];
} else {
return null;
}
diff --git a/lib/private/Files/Cache/CacheEntry.php b/lib/private/Files/Cache/CacheEntry.php
index 4a2579a88f8..176a0bf27ed 100644
--- a/lib/private/Files/Cache/CacheEntry.php
+++ b/lib/private/Files/Cache/CacheEntry.php
@@ -109,6 +109,18 @@ class CacheEntry implements ICacheEntry, \ArrayAccess {
return isset($this->data['encrypted']) && $this->data['encrypted'];
}
+ public function getMetadataEtag(): ?string {
+ return $this->data['metadata_etag'];
+ }
+
+ public function getCreationTime(): ?int {
+ return $this->data['creation_time'];
+ }
+
+ public function getUploadTime(): ?int {
+ return $this->data['upload_time'];
+ }
+
public function getData() {
return $this->data;
}
diff --git a/lib/private/Files/Cache/CacheQueryBuilder.php b/lib/private/Files/Cache/CacheQueryBuilder.php
new file mode 100644
index 00000000000..a5ff2129de8
--- /dev/null
+++ b/lib/private/Files/Cache/CacheQueryBuilder.php
@@ -0,0 +1,92 @@
+<?php declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Files\Cache;
+
+use OC\DB\QueryBuilder\QueryBuilder;
+use OC\SystemConfig;
+use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\IDBConnection;
+use OCP\ILogger;
+
+/**
+ * Query builder with commonly used helpers for filecache queries
+ */
+class CacheQueryBuilder extends QueryBuilder {
+ private $cache;
+ private $alias = null;
+
+ public function __construct(IDBConnection $connection, SystemConfig $systemConfig, ILogger $logger, Cache $cache) {
+ parent::__construct($connection, $systemConfig, $logger);
+
+ $this->cache = $cache;
+ }
+
+ public function selectFileCache(string $alias = null) {
+ $name = $alias ? $alias : 'filecache';
+ $this->select("$name.fileid", 'storage', 'path', 'path_hash', "$name.parent", 'name', 'mimetype', 'mimepart', 'size', 'mtime',
+ 'storage_mtime', 'encrypted', 'etag', 'permissions', 'checksum', 'metadata_etag', 'creation_time', 'upload_time')
+ ->from('filecache', $name)
+ ->leftJoin($name, 'filecache_extended', 'fe', $this->expr()->eq("$name.fileid", 'fe.fileid'));
+
+ $this->alias = $name;
+
+ return $this;
+ }
+
+ public function whereStorageId() {
+ $this->andWhere($this->expr()->eq('storage', $this->createNamedParameter($this->cache->getNumericStorageId(), IQueryBuilder::PARAM_INT)));
+
+ return $this;
+ }
+
+ public function whereFileId(int $fileId) {
+ $alias = $this->alias;
+ if ($alias) {
+ $alias .= '.';
+ } else {
+ $alias = '';
+ }
+
+ $this->andWhere($this->expr()->eq("{$alias}fileid", $this->createNamedParameter($fileId, IQueryBuilder::PARAM_INT)));
+
+ return $this;
+ }
+
+ public function wherePath(string $path) {
+ $this->andWhere($this->expr()->eq('path_hash', $this->createNamedParameter(md5($path))));
+
+ return $this;
+ }
+
+ public function whereParent(int $parent) {
+ $alias = $this->alias;
+ if ($alias) {
+ $alias .= '.';
+ } else {
+ $alias = '';
+ }
+
+ $this->andWhere($this->expr()->eq("{$alias}parent", $this->createNamedParameter($parent, IQueryBuilder::PARAM_INT)));
+
+ return $this;
+ }
+}
diff --git a/lib/private/Files/Cache/MoveFromCacheTrait.php b/lib/private/Files/Cache/MoveFromCacheTrait.php
index a814a081dca..e9b41bd9b37 100644
--- a/lib/private/Files/Cache/MoveFromCacheTrait.php
+++ b/lib/private/Files/Cache/MoveFromCacheTrait.php
@@ -82,7 +82,10 @@ trait MoveFromCacheTrait {
'mimepart' => $entry->getMimePart(),
'etag' => $entry->getEtag(),
'permissions' => $entry->getPermissions(),
- 'encrypted' => $entry->isEncrypted()
+ 'encrypted' => $entry->isEncrypted(),
+ 'creation_time' => $entry->getCreationTime(),
+ 'upload_time' => $entry->getUploadTime(),
+ 'metadata_etag' => $entry->getMetadataEtag(),
];
}
}
diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php
index 989a4d0c7d5..41b4c2bb070 100644
--- a/lib/private/Files/Cache/Propagator.php
+++ b/lib/private/Files/Cache/Propagator.php
@@ -91,7 +91,7 @@ class Propagator implements IPropagator {
}, $parentHashes);
$builder->update('filecache')
- ->set('mtime', $builder->createFunction('GREATEST(' . $builder->getColumnName('mtime') . ', ' . $builder->createNamedParameter((int)$time, IQueryBuilder::PARAM_INT) . ')'))
+ ->set('mtime', $builder->func()->greatest('mtime', $builder->createNamedParameter((int)$time, IQueryBuilder::PARAM_INT)))
->set('etag', $builder->createNamedParameter($etag, IQueryBuilder::PARAM_STR))
->where($builder->expr()->eq('storage', $builder->createNamedParameter($storageId, IQueryBuilder::PARAM_INT)))
->andWhere($builder->expr()->in('path_hash', $hashParams));
@@ -102,7 +102,10 @@ class Propagator implements IPropagator {
// we need to do size separably so we can ignore entries with uncalculated size
$builder = $this->connection->getQueryBuilder();
$builder->update('filecache')
- ->set('size', $builder->func()->add('size', $builder->createNamedParameter($sizeDifference)))
+ ->set('size', $builder->func()->greatest(
+ $builder->createNamedParameter(-1, IQueryBuilder::PARAM_INT),
+ $builder->func()->add('size', $builder->createNamedParameter($sizeDifference)))
+ )
->where($builder->expr()->eq('storage', $builder->createNamedParameter($storageId, IQueryBuilder::PARAM_INT)))
->andWhere($builder->expr()->in('path_hash', $hashParams))
->andWhere($builder->expr()->gt('size', $builder->expr()->literal(-1, IQueryBuilder::PARAM_INT)));
diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php
index ac64ba5c592..2d9d8f374f7 100644
--- a/lib/private/Files/Cache/QuerySearchHelper.php
+++ b/lib/private/Files/Cache/QuerySearchHelper.php
@@ -136,16 +136,19 @@ class QuerySearchHelper {
$type = $operator->getType();
if ($field === 'mimetype') {
if ($operator->getType() === ISearchComparison::COMPARE_EQUAL) {
- $value = $this->mimetypeLoader->getId($value);
+ $value = (int)$this->mimetypeLoader->getId($value);
} else if ($operator->getType() === ISearchComparison::COMPARE_LIKE) {
// transform "mimetype='foo/%'" to "mimepart='foo'"
if (preg_match('|(.+)/%|', $value, $matches)) {
$field = 'mimepart';
- $value = $this->mimetypeLoader->getId($matches[1]);
+ $value = (int)$this->mimetypeLoader->getId($matches[1]);
$type = ISearchComparison::COMPARE_EQUAL;
- }
- if (strpos($value, '%') !== false) {
+ } else if (strpos($value, '%') !== false) {
throw new \InvalidArgumentException('Unsupported query value for mimetype: ' . $value . ', only values in the format "mime/type" or "mime/%" are supported');
+ } else {
+ $field = 'mimetype';
+ $value = (int)$this->mimetypeLoader->getId($value);
+ $type = ISearchComparison::COMPARE_EQUAL;
}
}
} else if ($field === 'favorite') {
diff --git a/lib/private/Files/Cache/Storage.php b/lib/private/Files/Cache/Storage.php
index 5b37c1f43f8..c076cc28359 100644
--- a/lib/private/Files/Cache/Storage.php
+++ b/lib/private/Files/Cache/Storage.php
@@ -81,7 +81,7 @@ class Storage {
if ($row = self::getStorageById($this->storageId)) {
$this->numericId = (int)$row['numeric_id'];
} else {
- throw new \RuntimeException('Storage could neither be inserted nor be selected from the database');
+ throw new \RuntimeException('Storage could neither be inserted nor be selected from the database: ' . $this->storageId);
}
}
}
@@ -166,11 +166,12 @@ class Storage {
/**
* @param bool $isAvailable
+ * @param int $delay amount of seconds to delay reconsidering that storage further
*/
- public function setAvailability($isAvailable) {
+ public function setAvailability($isAvailable, int $delay = 0) {
$sql = 'UPDATE `*PREFIX*storages` SET `available` = ?, `last_checked` = ? WHERE `id` = ?';
$available = $isAvailable ? 1 : 0;
- \OC_DB::executeAudited($sql, array($available, time(), $this->storageId));
+ \OC_DB::executeAudited($sql, [$available, time() + $delay, $this->storageId]);
}
/**
diff --git a/lib/private/Files/Cache/StorageGlobal.php b/lib/private/Files/Cache/StorageGlobal.php
index 65f689f1874..076b5b8f53d 100644
--- a/lib/private/Files/Cache/StorageGlobal.php
+++ b/lib/private/Files/Cache/StorageGlobal.php
@@ -69,7 +69,15 @@ class StorageGlobal {
*/
public function getStorageInfo($storageId) {
if (!isset($this->cache[$storageId])) {
- $this->loadForStorageIds([$storageId]);
+ $builder = $this->connection->getQueryBuilder();
+ $query = $builder->select(['id', 'numeric_id', 'available', 'last_checked'])
+ ->from('storages')
+ ->where($builder->expr()->eq('id', $builder->createNamedParameter($storageId)));
+
+ $row = $query->execute()->fetch();
+ if ($row) {
+ $this->cache[$storageId] = $row;
+ }
}
return isset($this->cache[$storageId]) ? $this->cache[$storageId] : null;
}
diff --git a/lib/private/Files/Cache/Watcher.php b/lib/private/Files/Cache/Watcher.php
index 47dde26d7b7..8c5cb0db182 100644
--- a/lib/private/Files/Cache/Watcher.php
+++ b/lib/private/Files/Cache/Watcher.php
@@ -85,7 +85,7 @@ class Watcher implements IWatcher {
if (is_null($cachedEntry)) {
$cachedEntry = $this->cache->get($path);
}
- if ($this->needsUpdate($path, $cachedEntry)) {
+ if ($cachedEntry === false || $this->needsUpdate($path, $cachedEntry)) {
$this->update($path, $cachedEntry);
return true;
} else {
@@ -105,7 +105,7 @@ class Watcher implements IWatcher {
} else {
$this->scanner->scanFile($path);
}
- if ($cachedData['mimetype'] === 'httpd/unix-directory') {
+ if (is_array($cachedData) && $cachedData['mimetype'] === 'httpd/unix-directory') {
$this->cleanFolder($path);
}
if ($this->cache instanceof Cache) {
diff --git a/lib/private/Files/Cache/Wrapper/CacheWrapper.php b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
index 6d7f1876e29..157bb083b73 100644
--- a/lib/private/Files/Cache/Wrapper/CacheWrapper.php
+++ b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
@@ -28,8 +28,8 @@
namespace OC\Files\Cache\Wrapper;
use OC\Files\Cache\Cache;
-use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Cache\ICache;
+use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Search\ISearchQuery;
class CacheWrapper extends Cache {
diff --git a/lib/private/Files/Config/CachedMountFileInfo.php b/lib/private/Files/Config/CachedMountFileInfo.php
index e315493a693..331e28d3d5e 100644
--- a/lib/private/Files/Config/CachedMountFileInfo.php
+++ b/lib/private/Files/Config/CachedMountFileInfo.php
@@ -45,4 +45,4 @@ class CachedMountFileInfo extends CachedMountInfo implements ICachedMountFileInf
public function getPath() {
return $this->getMountPoint() . $this->getInternalPath();
}
-} \ No newline at end of file
+}
diff --git a/lib/private/Files/Config/MountProviderCollection.php b/lib/private/Files/Config/MountProviderCollection.php
index a3c88dd6b4b..fbb455c5063 100644
--- a/lib/private/Files/Config/MountProviderCollection.php
+++ b/lib/private/Files/Config/MountProviderCollection.php
@@ -26,8 +26,8 @@ namespace OC\Files\Config;
use OC\Hooks\Emitter;
use OC\Hooks\EmitterTrait;
use OCP\Files\Config\IHomeMountProvider;
-use OCP\Files\Config\IMountProviderCollection;
use OCP\Files\Config\IMountProvider;
+use OCP\Files\Config\IMountProviderCollection;
use OCP\Files\Config\IUserMountCache;
use OCP\Files\Mount\IMountManager;
use OCP\Files\Mount\IMountPoint;
diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php
index 63abdf5fdeb..53bd52a2e6c 100644
--- a/lib/private/Files/Config/UserMountCache.php
+++ b/lib/private/Files/Config/UserMountCache.php
@@ -25,6 +25,7 @@
namespace OC\Files\Config;
+use OC\Cache\CappedMemoryCache;
use OCA\Files_Sharing\SharedMount;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\Config\ICachedMountFileInfo;
@@ -37,7 +38,6 @@ use OCP\IDBConnection;
use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
-use OC\Cache\CappedMemoryCache;
/**
* Cache mounts points per user in the cache so we can easilly look them up
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index 19b95cd0355..93f876db17b 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -406,4 +406,12 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
public function getExtension(): string {
return pathinfo($this->getName(), PATHINFO_EXTENSION);
}
+
+ public function getCreationTime(): int {
+ return (int) $this->data['creation_time'];
+ }
+
+ public function getUploadTime(): int {
+ return (int) $this->data['upload_time'];
+ }
}
diff --git a/lib/private/Files/Mount/MountPoint.php b/lib/private/Files/Mount/MountPoint.php
index 36e10bfb45a..1e67eecb9dc 100644
--- a/lib/private/Files/Mount/MountPoint.php
+++ b/lib/private/Files/Mount/MountPoint.php
@@ -29,9 +29,9 @@
namespace OC\Files\Mount;
-use \OC\Files\Filesystem;
-use OC\Files\Storage\StorageFactory;
+use OC\Files\Filesystem;
use OC\Files\Storage\Storage;
+use OC\Files\Storage\StorageFactory;
use OCP\Files\Mount\IMountPoint;
use OCP\ILogger;
diff --git a/lib/private/Files/Node/File.php b/lib/private/Files/Node/File.php
index a3eabbcc446..e4669f70709 100644
--- a/lib/private/Files/Node/File.php
+++ b/lib/private/Files/Node/File.php
@@ -28,6 +28,7 @@ namespace OC\Files\Node;
use OCP\Files\GenericFileException;
use OCP\Files\NotPermittedException;
+use OCP\Lock\LockedException;
class File extends Node implements \OCP\Files\File {
/**
@@ -42,7 +43,8 @@ class File extends Node implements \OCP\Files\File {
/**
* @return string
- * @throws \OCP\Files\NotPermittedException
+ * @throws NotPermittedException
+ * @throws LockedException
*/
public function getContent() {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_READ)) {
@@ -57,8 +59,9 @@ class File extends Node implements \OCP\Files\File {
/**
* @param string|resource $data
- * @throws \OCP\Files\NotPermittedException
+ * @throws NotPermittedException
* @throws \OCP\Files\GenericFileException
+ * @throws LockedException
*/
public function putContent($data) {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
@@ -76,7 +79,8 @@ class File extends Node implements \OCP\Files\File {
/**
* @param string $mode
* @return resource
- * @throws \OCP\Files\NotPermittedException
+ * @throws NotPermittedException
+ * @throws LockedException
*/
public function fopen($mode) {
$preHooks = array();
@@ -113,13 +117,18 @@ class File extends Node implements \OCP\Files\File {
}
}
+ /**
+ * @throws NotPermittedException
+ * @throws \OCP\Files\InvalidPathException
+ * @throws \OCP\Files\NotFoundException
+ */
public function delete() {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
$this->sendHooks(array('preDelete'));
$fileInfo = $this->getFileInfo();
$this->view->unlink($this->path);
$nonExisting = new NonExistingFile($this->root, $this->view, $this->path, $fileInfo);
- $this->root->emit('\OC\Files', 'postDelete', array($nonExisting));
+ $this->sendHooks(['postDelete'], [$nonExisting]);
$this->exists = false;
$this->fileInfo = null;
} else {
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php
index 19f04048779..4a134cdcdbf 100644
--- a/lib/private/Files/Node/Folder.php
+++ b/lib/private/Files/Node/Folder.php
@@ -156,14 +156,12 @@ class Folder extends Node implements \OCP\Files\Folder {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_CREATE)) {
$fullPath = $this->getFullPath($path);
$nonExisting = new NonExistingFolder($this->root, $this->view, $fullPath);
- $this->root->emit('\OC\Files', 'preWrite', array($nonExisting));
- $this->root->emit('\OC\Files', 'preCreate', array($nonExisting));
+ $this->sendHooks(['preWrite', 'preCreate'], [$nonExisting]);
if(!$this->view->mkdir($fullPath)) {
throw new NotPermittedException('Could not create folder');
}
$node = new Folder($this->root, $this->view, $fullPath);
- $this->root->emit('\OC\Files', 'postWrite', array($node));
- $this->root->emit('\OC\Files', 'postCreate', array($node));
+ $this->sendHooks(['postWrite', 'postCreate'], [$node]);
return $node;
} else {
throw new NotPermittedException('No create permission for folder');
@@ -179,14 +177,12 @@ class Folder extends Node implements \OCP\Files\Folder {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_CREATE)) {
$fullPath = $this->getFullPath($path);
$nonExisting = new NonExistingFile($this->root, $this->view, $fullPath);
- $this->root->emit('\OC\Files', 'preWrite', array($nonExisting));
- $this->root->emit('\OC\Files', 'preCreate', array($nonExisting));
+ $this->sendHooks(['preWrite', 'preCreate'], [$nonExisting]);
if (!$this->view->touch($fullPath)) {
throw new NotPermittedException('Could not create path');
}
$node = new File($this->root, $this->view, $fullPath);
- $this->root->emit('\OC\Files', 'postWrite', array($node));
- $this->root->emit('\OC\Files', 'postCreate', array($node));
+ $this->sendHooks(['postWrite', 'postCreate'], [$node]);
return $node;
}
throw new NotPermittedException('No create permission for path');
@@ -303,6 +299,9 @@ class Folder extends Node implements \OCP\Files\Folder {
}));
if (count($mountsContainingFile) === 0) {
+ if ($user === $this->getAppDataDirectoryName()) {
+ return $this->getByIdInRootMount((int) $id);
+ }
return [];
}
@@ -331,6 +330,47 @@ class Folder extends Node implements \OCP\Files\Folder {
});
}
+ protected function getAppDataDirectoryName(): string {
+ $instanceId = \OC::$server->getConfig()->getSystemValueString('instanceid');
+ return 'appdata_' . $instanceId;
+ }
+
+ /**
+ * In case the path we are currently in is inside the appdata_* folder,
+ * the original getById method does not work, because it can only look inside
+ * the user's mount points. But the user has no mount point for the root storage.
+ *
+ * So in that case we directly check the mount of the root if it contains
+ * the id. If it does we check if the path is inside the path we are working
+ * in.
+ *
+ * @param int $id
+ * @return array
+ */
+ protected function getByIdInRootMount(int $id): array {
+ $mount = $this->root->getMount('');
+ $cacheEntry = $mount->getStorage()->getCache($this->path)->get($id);
+ if (!$cacheEntry) {
+ return [];
+ }
+
+ $absolutePath = '/' . ltrim($cacheEntry->getPath(), '/');
+ $currentPath = rtrim($this->path, '/') . '/';
+
+ if (strpos($absolutePath, $currentPath) !== 0) {
+ return [];
+ }
+
+ return [$this->root->createNode(
+ $absolutePath, new \OC\Files\FileInfo(
+ $absolutePath,
+ $mount->getStorage(),
+ $cacheEntry->getPath(),
+ $cacheEntry,
+ $mount
+ ))];
+ }
+
public function getFreeSpace() {
return $this->view->free_space($this->path);
}
@@ -341,7 +381,7 @@ class Folder extends Node implements \OCP\Files\Folder {
$fileInfo = $this->getFileInfo();
$this->view->rmdir($this->path);
$nonExisting = new NonExistingFolder($this->root, $this->view, $this->path, $fileInfo);
- $this->root->emit('\OC\Files', 'postDelete', array($nonExisting));
+ $this->sendHooks(['postDelete'], [$nonExisting]);
$this->exists = false;
} else {
throw new NotPermittedException('No delete permission for path');
diff --git a/lib/private/Files/Node/HookConnector.php b/lib/private/Files/Node/HookConnector.php
index f5adcde4a00..417bb4980ee 100644
--- a/lib/private/Files/Node/HookConnector.php
+++ b/lib/private/Files/Node/HookConnector.php
@@ -22,10 +22,12 @@
namespace OC\Files\Node;
-use OCP\Files\FileInfo;
use OC\Files\Filesystem;
use OC\Files\View;
+use OCP\EventDispatcher\GenericEvent;
+use OCP\Files\FileInfo;
use OCP\Util;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class HookConnector {
/**
@@ -42,6 +44,8 @@ class HookConnector {
* @var FileInfo[]
*/
private $deleteMetaCache = [];
+ /** @var EventDispatcherInterface */
+ private $dispatcher;
/**
* HookConnector constructor.
@@ -49,9 +53,10 @@ class HookConnector {
* @param Root $root
* @param View $view
*/
- public function __construct(Root $root, View $view) {
+ public function __construct(Root $root, View $view, EventDispatcherInterface $dispatcher) {
$this->root = $root;
$this->view = $view;
+ $this->dispatcher = $dispatcher;
}
public function viewToNode() {
@@ -79,72 +84,85 @@ class HookConnector {
public function write($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preWrite', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::preWrite', new GenericEvent($node));
}
public function postWrite($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postWrite', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::postWrite', new GenericEvent($node));
}
public function create($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preCreate', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::preCreate', new GenericEvent($node));
}
public function postCreate($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postCreate', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::postCreate', new GenericEvent($node));
}
public function delete($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->deleteMetaCache[$node->getPath()] = $node->getFileInfo();
$this->root->emit('\OC\Files', 'preDelete', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::preDelete', new GenericEvent($node));
}
public function postDelete($arguments) {
$node = $this->getNodeForPath($arguments['path']);
unset($this->deleteMetaCache[$node->getPath()]);
$this->root->emit('\OC\Files', 'postDelete', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::postDelete', new GenericEvent($node));
}
public function touch($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preTouch', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::preTouch', new GenericEvent($node));
}
public function postTouch($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postTouch', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::postTouch', new GenericEvent($node));
}
public function rename($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'preRename', [$source, $target]);
+ $this->dispatcher->dispatch('\OCP\Files::preRename', new GenericEvent([$source, $target]));
}
public function postRename($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'postRename', [$source, $target]);
+ $this->dispatcher->dispatch('\OCP\Files::postRename', new GenericEvent([$source, $target]));
}
public function copy($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'preCopy', [$source, $target]);
+ $this->dispatcher->dispatch('\OCP\Files::preCopy', new GenericEvent([$source, $target]));
}
public function postCopy($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'postCopy', [$source, $target]);
+ $this->dispatcher->dispatch('\OCP\Files::postCopy', new GenericEvent([$source, $target]));
}
public function read($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'read', [$node]);
+ $this->dispatcher->dispatch('\OCP\Files::read', new GenericEvent([$node]));
}
private function getNodeForPath($path) {
diff --git a/lib/private/Files/Node/LazyRoot.php b/lib/private/Files/Node/LazyRoot.php
index 01b4ca52765..acf288860d9 100644
--- a/lib/private/Files/Node/LazyRoot.php
+++ b/lib/private/Files/Node/LazyRoot.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Files\Node;
use OCP\Files\IRootFolder;
@@ -480,4 +481,18 @@ class LazyRoot implements IRootFolder {
public function getRecent($limit, $offset = 0) {
return $this->__call(__FUNCTION__, func_get_args());
}
+
+ /**
+ * @inheritDoc
+ */
+ public function getCreationTime(): int {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUploadTime(): int {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
}
diff --git a/lib/private/Files/Node/Node.php b/lib/private/Files/Node/Node.php
index dc025b79575..7f50524f28d 100644
--- a/lib/private/Files/Node/Node.php
+++ b/lib/private/Files/Node/Node.php
@@ -33,6 +33,8 @@ use OCP\Files\FileInfo;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
+use OCP\Lock\LockedException;
+use Symfony\Component\EventDispatcher\GenericEvent;
// FIXME: this class really should be abstract
class Node implements \OCP\Files\Node {
@@ -74,6 +76,7 @@ class Node implements \OCP\Files\Node {
*
* @param string $path path
* @return string non-existing node class
+ * @throws \Exception
*/
protected function createNonExistingNode($path) {
throw new \Exception('Must be implemented by subclasses');
@@ -104,15 +107,20 @@ class Node implements \OCP\Files\Node {
/**
* @param string[] $hooks
*/
- protected function sendHooks($hooks) {
+ protected function sendHooks($hooks, array $args = null) {
+ $args = !empty($args) ? $args : [$this];
+ $dispatcher = \OC::$server->getEventDispatcher();
foreach ($hooks as $hook) {
- $this->root->emit('\OC\Files', $hook, array($this));
+ $this->root->emit('\OC\Files', $hook, $args);
+ $dispatcher->dispatch('\OCP\Files::' . $hook, new GenericEvent($args));
}
}
/**
* @param int $permissions
* @return bool
+ * @throws InvalidPathException
+ * @throws NotFoundException
*/
protected function checkPermissions($permissions) {
return ($this->getPermissions() & $permissions) === $permissions;
@@ -123,7 +131,9 @@ class Node implements \OCP\Files\Node {
/**
* @param int $mtime
- * @throws \OCP\Files\NotPermittedException
+ * @throws InvalidPathException
+ * @throws NotFoundException
+ * @throws NotPermittedException
*/
public function touch($mtime = null) {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
@@ -362,7 +372,7 @@ class Node implements \OCP\Files\Node {
/**
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
*/
public function lock($type) {
$this->view->lockFile($this->path, $type);
@@ -370,7 +380,7 @@ class Node implements \OCP\Files\Node {
/**
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
*/
public function changeLock($type) {
$this->view->changeLock($this->path, $type);
@@ -378,7 +388,7 @@ class Node implements \OCP\Files\Node {
/**
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
*/
public function unlock($type) {
$this->view->unlockFile($this->path, $type);
@@ -386,22 +396,24 @@ class Node implements \OCP\Files\Node {
/**
* @param string $targetPath
- * @throws \OCP\Files\NotPermittedException if copy not allowed or failed
* @return \OC\Files\Node\Node
+ * @throws InvalidPathException
+ * @throws NotFoundException
+ * @throws NotPermittedException if copy not allowed or failed
*/
public function copy($targetPath) {
$targetPath = $this->normalizePath($targetPath);
$parent = $this->root->get(dirname($targetPath));
if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) {
$nonExisting = $this->createNonExistingNode($targetPath);
- $this->root->emit('\OC\Files', 'preCopy', [$this, $nonExisting]);
- $this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
+ $this->sendHooks(['preCopy'], [$this, $nonExisting]);
+ $this->sendHooks(['preWrite'], [$nonExisting]);
if (!$this->view->copy($this->path, $targetPath)) {
throw new NotPermittedException('Could not copy ' . $this->path . ' to ' . $targetPath);
}
$targetNode = $this->root->get($targetPath);
- $this->root->emit('\OC\Files', 'postCopy', [$this, $targetNode]);
- $this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
+ $this->sendHooks(['postCopy'], [$this, $targetNode]);
+ $this->sendHooks(['postWrite'], [$targetNode]);
return $targetNode;
} else {
throw new NotPermittedException('No permission to copy to path ' . $targetPath);
@@ -410,8 +422,11 @@ class Node implements \OCP\Files\Node {
/**
* @param string $targetPath
- * @throws \OCP\Files\NotPermittedException if move not allowed or failed
* @return \OC\Files\Node\Node
+ * @throws InvalidPathException
+ * @throws NotFoundException
+ * @throws NotPermittedException if move not allowed or failed
+ * @throws LockedException
*/
public function move($targetPath) {
$targetPath = $this->normalizePath($targetPath);
@@ -425,14 +440,14 @@ class Node implements \OCP\Files\Node {
)
) {
$nonExisting = $this->createNonExistingNode($targetPath);
- $this->root->emit('\OC\Files', 'preRename', [$this, $nonExisting]);
- $this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
+ $this->sendHooks(['preRename'], [$this, $nonExisting]);
+ $this->sendHooks(['preWrite'], [$nonExisting]);
if (!$this->view->rename($this->path, $targetPath)) {
throw new NotPermittedException('Could not move ' . $this->path . ' to ' . $targetPath);
}
$targetNode = $this->root->get($targetPath);
- $this->root->emit('\OC\Files', 'postRename', [$this, $targetNode]);
- $this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
+ $this->sendHooks(['postRename'], [$this, $targetNode]);
+ $this->sendHooks(['postWrite'], [$targetNode]);
$this->path = $targetPath;
return $targetNode;
} else {
@@ -440,4 +455,12 @@ class Node implements \OCP\Files\Node {
}
}
+ public function getCreationTime(): int {
+ return $this->getFileInfo()->getCreationTime();
+ }
+
+ public function getUploadTime(): int {
+ return $this->getFileInfo()->getUploadTime();
+ }
+
}
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 390d29edb31..ad0935ebaf7 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -33,11 +33,11 @@ namespace OC\Files\Node;
use OC\Cache\CappedMemoryCache;
use OC\Files\Mount\Manager;
use OC\Files\Mount\MountPoint;
+use OC\Hooks\PublicEmitter;
use OCP\Files\Config\IUserMountCache;
+use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
-use OC\Hooks\PublicEmitter;
-use OCP\Files\IRootFolder;
use OCP\ILogger;
use OCP\IUserManager;
diff --git a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
index fb5e8d83ab1..fd6c9a2ebc1 100644
--- a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
@@ -66,4 +66,4 @@ class HomeObjectStoreStorage extends ObjectStoreStorage implements \OCP\Files\IH
}
-} \ No newline at end of file
+}
diff --git a/lib/private/Files/ObjectStore/Mapper.php b/lib/private/Files/ObjectStore/Mapper.php
index 2b5cf6ea4ab..c4b5e5d7778 100644
--- a/lib/private/Files/ObjectStore/Mapper.php
+++ b/lib/private/Files/ObjectStore/Mapper.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Files\ObjectStore;
use OCP\IUser;
diff --git a/lib/private/Files/ObjectStore/NoopScanner.php b/lib/private/Files/ObjectStore/NoopScanner.php
index a3a396651a2..1ee868c49d4 100644
--- a/lib/private/Files/ObjectStore/NoopScanner.php
+++ b/lib/private/Files/ObjectStore/NoopScanner.php
@@ -24,8 +24,8 @@
*/
namespace OC\Files\ObjectStore;
-use \OC\Files\Cache\Scanner;
-use \OC\Files\Storage\Storage;
+use OC\Files\Cache\Scanner;
+use OC\Files\Storage\Storage;
class NoopScanner extends Scanner {
diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
index fbfbcfaa409..80f438d762c 100644
--- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
@@ -161,7 +161,9 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
return false;
}
- $this->rmObjects($path);
+ if (!$this->rmObjects($path)) {
+ return false;
+ }
$this->getCache()->remove($path);
@@ -172,11 +174,17 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
$children = $this->getCache()->getFolderContents($path);
foreach ($children as $child) {
if ($child['mimetype'] === 'httpd/unix-directory') {
- $this->rmObjects($child['path']);
+ if (!$this->rmObjects($child['path'])) {
+ return false;
+ }
} else {
- $this->unlink($child['path']);
+ if(!$this->unlink($child['path'])) {
+ return false;
+ }
}
}
+
+ return true;
}
public function unlink($path) {
diff --git a/lib/private/Files/ObjectStore/SwiftFactory.php b/lib/private/Files/ObjectStore/SwiftFactory.php
index f6270d36e7a..430d628d3ce 100644
--- a/lib/private/Files/ObjectStore/SwiftFactory.php
+++ b/lib/private/Files/ObjectStore/SwiftFactory.php
@@ -31,15 +31,15 @@ use OCP\Files\StorageAuthException;
use OCP\Files\StorageNotAvailableException;
use OCP\ICache;
use OCP\ILogger;
-use OpenStack\Common\Error\BadResponseError;
use OpenStack\Common\Auth\Token;
+use OpenStack\Common\Error\BadResponseError;
+use OpenStack\Common\Transport\Utils as TransportUtils;
use OpenStack\Identity\v2\Models\Catalog;
use OpenStack\Identity\v2\Service as IdentityV2Service;
use OpenStack\Identity\v3\Service as IdentityV3Service;
+use OpenStack\ObjectStore\v1\Models\Container;
use OpenStack\OpenStack;
-use OpenStack\Common\Transport\Utils as TransportUtils;
use Psr\Http\Message\RequestInterface;
-use OpenStack\ObjectStore\v1\Models\Container;
class SwiftFactory {
private $cache;
diff --git a/lib/private/Files/SimpleFS/SimpleFile.php b/lib/private/Files/SimpleFS/SimpleFile.php
index 9c9ca10650c..85a1a64a854 100644
--- a/lib/private/Files/SimpleFS/SimpleFile.php
+++ b/lib/private/Files/SimpleFS/SimpleFile.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Files\SimpleFS;
use OCP\Files\File;
diff --git a/lib/private/Files/SimpleFS/SimpleFolder.php b/lib/private/Files/SimpleFS/SimpleFolder.php
index 5b55fe0f157..9375a3c5545 100644
--- a/lib/private/Files/SimpleFS/SimpleFolder.php
+++ b/lib/private/Files/SimpleFS/SimpleFolder.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Files\SimpleFS;
use OCP\Files\File;
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index 4e95c594cfa..3bc14d35cd0 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -44,8 +44,10 @@ use OC\Files\Cache\Cache;
use OC\Files\Cache\Propagator;
use OC\Files\Cache\Scanner;
use OC\Files\Cache\Updater;
-use OC\Files\Filesystem;
use OC\Files\Cache\Watcher;
+use OC\Files\Filesystem;
+use OC\Files\Storage\Wrapper\Jail;
+use OC\Files\Storage\Wrapper\Wrapper;
use OCP\Files\EmptyFileNameException;
use OCP\Files\FileNameTooLongException;
use OCP\Files\InvalidCharacterInPathException;
@@ -636,13 +638,39 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
}
/**
+ * Check if a storage is the same as the current one, including wrapped storages
+ *
+ * @param IStorage $storage
+ * @return bool
+ */
+ private function isSameStorage(IStorage $storage): bool {
+ while ($storage->instanceOfStorage(Wrapper::class)) {
+ /**
+ * @var Wrapper $sourceStorage
+ */
+ $storage = $storage->getWrapperStorage();
+ }
+
+ return $storage === $this;
+ }
+
+ /**
* @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
* @return bool
*/
public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
- if ($sourceStorage === $this) {
+ if ($this->isSameStorage($sourceStorage)) {
+ // resolve any jailed paths
+ while ($sourceStorage->instanceOfStorage(Jail::class)) {
+ /**
+ * @var Jail $sourceStorage
+ */
+ $sourceInternalPath = $sourceStorage->getUnjailedPath($sourceInternalPath);
+ $sourceStorage = $sourceStorage->getUnjailedStorage();
+ }
+
return $this->rename($sourceInternalPath, $targetInternalPath);
}
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index 52ed8900569..ca96e6b7434 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -34,19 +34,21 @@
namespace OC\Files\Storage;
use Exception;
-use GuzzleHttp\Exception\RequestException;
-use OCP\ILogger;
-use Psr\Http\Message\ResponseInterface;
use Icewind\Streams\CallbackWrapper;
-use OC\Files\Filesystem;
use Icewind\Streams\IteratorDirectory;
+use OC\Files\Filesystem;
use OC\MemCache\ArrayCache;
use OCP\AppFramework\Http;
use OCP\Constants;
use OCP\Files\FileInfo;
+use OCP\Files\ForbiddenException;
use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
+use OCP\Http\Client\IClientService;
+use OCP\ICertificateManager;
+use OCP\ILogger;
use OCP\Util;
+use Psr\Http\Message\ResponseInterface;
use Sabre\DAV\Client;
use Sabre\DAV\Xml\Property\ResourceType;
use Sabre\HTTP\ClientException;
@@ -78,8 +80,10 @@ class DAV extends Common {
protected $client;
/** @var ArrayCache */
protected $statCache;
- /** @var \OCP\Http\Client\IClientService */
+ /** @var IClientService */
protected $httpClientService;
+ /** @var ICertificateManager */
+ protected $certManager;
/**
* @param array $params
@@ -110,13 +114,9 @@ class DAV extends Common {
}
if ($this->secure === true) {
// inject mock for testing
- $certManager = \OC::$server->getCertificateManager();
- if (is_null($certManager)) { //no user
- $certManager = \OC::$server->getCertificateManager(null);
- }
- $certPath = $certManager->getAbsoluteBundlePath();
- if (file_exists($certPath)) {
- $this->certPath = $certPath;
+ $this->certManager = \OC::$server->getCertificateManager();
+ if (is_null($this->certManager)) { //no user
+ $this->certManager = \OC::$server->getCertificateManager(null);
}
}
$this->root = $params['root'] ?? '/';
@@ -149,8 +149,15 @@ class DAV extends Common {
$this->client = new Client($settings);
$this->client->setThrowExceptions(true);
- if ($this->secure === true && $this->certPath) {
- $this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath);
+
+ if($this->secure === true) {
+ $certPath = $this->certManager->getAbsoluteBundlePath();
+ if (file_exists($certPath)) {
+ $this->certPath = $certPath;
+ }
+ if ($this->certPath) {
+ $this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath);
+ }
}
}
@@ -268,7 +275,7 @@ class DAV extends Common {
);
$this->statCache->set($path, $response);
} catch (ClientHttpException $e) {
- if ($e->getHttpStatus() === 404) {
+ if ($e->getHttpStatus() === 404 || $e->getHttpStatus() === 405) {
$this->statCache->clear($path . '/');
$this->statCache->set($path, false);
return false;
@@ -829,6 +836,7 @@ class DAV extends Common {
* when the authentication expired or is invalid
* @throws StorageNotAvailableException if the storage is not available,
* which might be temporary
+ * @throws ForbiddenException if the action is not allowed
*/
protected function convertException(Exception $e, $path = '') {
\OC::$server->getLogger()->logException($e, ['app' => 'files_external', 'level' => ILogger::DEBUG]);
@@ -842,6 +850,9 @@ class DAV extends Common {
} else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
// ignore exception for MethodNotAllowed, false will be returned
return;
+ } else if ($e->getHttpStatus() === Http::STATUS_FORBIDDEN){
+ // The operation is forbidden. Fail somewhat gracefully
+ throw new ForbiddenException(get_class($e) . ':' . $e->getMessage());
}
throw new StorageNotAvailableException(get_class($e) . ': ' . $e->getMessage());
} else if ($e instanceof ClientException) {
@@ -859,4 +870,3 @@ class DAV extends Common {
// TODO: only log for now, but in the future need to wrap/rethrow exception
}
}
-
diff --git a/lib/private/Files/Storage/FailedStorage.php b/lib/private/Files/Storage/FailedStorage.php
index 9ed09e82e7d..4ee9b21694a 100644
--- a/lib/private/Files/Storage/FailedStorage.php
+++ b/lib/private/Files/Storage/FailedStorage.php
@@ -27,8 +27,8 @@ namespace OC\Files\Storage;
use OC\Files\Cache\FailedCache;
use OCP\Files\Storage\IStorage;
-use \OCP\Lock\ILockingProvider;
-use \OCP\Files\StorageNotAvailableException;
+use OCP\Files\StorageNotAvailableException;
+use OCP\Lock\ILockingProvider;
/**
* Storage placeholder to represent a missing precondition, storage unavailable
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index e9a9e8e9885..aade0cdaf25 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -424,12 +424,26 @@ class Local extends \OC\Files\Storage\Common {
public function getETag($path) {
if ($this->is_file($path)) {
$stat = $this->stat($path);
- return md5(
- $stat['mtime'] .
- $stat['ino'] .
- $stat['dev'] .
- $stat['size']
- );
+
+ if ($stat === false) {
+ return md5('');
+ }
+
+ $toHash = '';
+ if (isset($stat['mtime'])) {
+ $toHash .= $stat['mtime'];
+ }
+ if (isset($stat['ino'])) {
+ $toHash .= $stat['ino'];
+ }
+ if (isset($stat['dev'])) {
+ $toHash .= $stat['dev'];
+ }
+ if (isset($stat['size'])) {
+ $toHash .= $stat['size'];
+ }
+
+ return md5($toHash);
} else {
return parent::getETag($path);
}
diff --git a/lib/private/Files/Storage/Wrapper/Availability.php b/lib/private/Files/Storage/Wrapper/Availability.php
index 5b957ae036b..0c01595d306 100644
--- a/lib/private/Files/Storage/Wrapper/Availability.php
+++ b/lib/private/Files/Storage/Wrapper/Availability.php
@@ -21,9 +21,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Files\Storage\Wrapper;
use OCP\Files\Storage\IStorage;
+use OCP\Files\StorageAuthException;
+use OCP\Files\StorageNotAvailableException;
+use OCP\IConfig;
/**
* Availability checker for storages
@@ -33,6 +37,14 @@ use OCP\Files\Storage\IStorage;
class Availability extends Wrapper {
const RECHECK_TTL_SEC = 600; // 10 minutes
+ /** @var IConfig */
+ protected $config;
+
+ public function __construct($parameters) {
+ $this->config = $parameters['config'] ?? \OC::$server->getConfig();
+ parent::__construct($parameters);
+ }
+
public static function shouldRecheck($availability) {
if (!$availability['available']) {
// trigger a recheck if TTL reached
@@ -72,11 +84,11 @@ class Availability extends Wrapper {
}
/**
- * @throws \OCP\Files\StorageNotAvailableException
+ * @throws StorageNotAvailableException
*/
private function checkAvailability() {
if (!$this->isAvailable()) {
- throw new \OCP\Files\StorageNotAvailableException();
+ throw new StorageNotAvailableException();
}
}
@@ -85,9 +97,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::mkdir($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -96,9 +107,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::rmdir($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -107,9 +117,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::opendir($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -118,9 +127,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::is_dir($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -129,9 +137,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::is_file($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -140,9 +147,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::stat($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -151,9 +157,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::filetype($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -162,9 +167,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::filesize($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -173,9 +177,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::isCreatable($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -184,9 +187,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::isReadable($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -195,9 +197,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::isUpdatable($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -206,9 +207,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::isDeletable($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -217,9 +217,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::isSharable($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -228,9 +227,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getPermissions($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -242,9 +240,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::file_exists($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -253,9 +250,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::filemtime($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -264,9 +260,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::file_get_contents($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -275,9 +270,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::file_put_contents($path, $data);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -286,9 +280,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::unlink($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -297,9 +290,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::rename($path1, $path2);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -308,9 +300,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::copy($path1, $path2);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -319,9 +310,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::fopen($path, $mode);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -330,9 +320,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getMimeType($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -341,9 +330,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::hash($type, $path, $raw);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -352,9 +340,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::free_space($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -363,9 +350,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::search($query);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -374,9 +360,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::touch($path, $mtime);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -385,9 +370,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getLocalFile($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -396,9 +380,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::hasUpdated($path, $time);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -406,9 +389,8 @@ class Availability extends Wrapper {
public function getOwner($path) {
try {
return parent::getOwner($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -417,9 +399,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getETag($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -428,9 +409,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getDirectDownload($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -439,9 +419,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -450,9 +429,8 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
@@ -461,9 +439,24 @@ class Availability extends Wrapper {
$this->checkAvailability();
try {
return parent::getMetaData($path);
- } catch (\OCP\Files\StorageNotAvailableException $e) {
- $this->setAvailability(false);
- throw $e;
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
}
}
+
+ /**
+ * @throws StorageNotAvailableException
+ */
+ protected function setUnavailable(StorageNotAvailableException $e) {
+ $delay = self::RECHECK_TTL_SEC;
+ if($e instanceof StorageAuthException) {
+ $delay = max(
+ // 30min
+ $this->config->getSystemValueInt('external_storage.auth_availability_delay', 1800),
+ self::RECHECK_TTL_SEC
+ );
+ }
+ $this->getStorageCache()->setAvailability(false, $delay);
+ throw $e;
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php
index bc8519bf42c..f143c8b8c92 100644
--- a/lib/private/Files/Storage/Wrapper/Encoding.php
+++ b/lib/private/Files/Storage/Wrapper/Encoding.php
@@ -23,9 +23,9 @@
namespace OC\Files\Storage\Wrapper;
+use OC\Cache\CappedMemoryCache;
use OCP\Files\Storage\IStorage;
use OCP\ICache;
-use OC\Cache\CappedMemoryCache;
/**
* Encoding wrapper that deals with file names that use unsupported encodings like NFD.
diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php
index 5485b80985b..7741f820c63 100644
--- a/lib/private/Files/Storage/Wrapper/Encryption.php
+++ b/lib/private/Files/Storage/Wrapper/Encryption.php
@@ -41,10 +41,10 @@ use OCP\Encryption\Exceptions\GenericEncryptionException;
use OCP\Encryption\IFile;
use OCP\Encryption\IManager;
use OCP\Encryption\Keys\IStorage;
+use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Mount\IMountPoint;
use OCP\Files\Storage;
use OCP\ILogger;
-use OCP\Files\Cache\ICacheEntry;
class Encryption extends Wrapper {
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index f21b5716467..35bf8449fd7 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -62,10 +62,18 @@ class Jail extends Wrapper {
}
}
+ /**
+ * This is separate from Wrapper::getWrapperStorage so we can get the jailed storage consistently even if the jail is inside another wrapper
+ */
+ public function getUnjailedStorage() {
+ return $this->storage;
+ }
+
+
public function getJailedPath($path) {
$root = rtrim($this->rootPath, '/') . '/';
- if (strpos($path, $root) !== 0) {
+ if ($path !== $this->rootPath && strpos($path, $root) !== 0) {
return null;
} else {
$path = substr($path, strlen($this->rootPath));
diff --git a/lib/private/Files/Type/Loader.php b/lib/private/Files/Type/Loader.php
index d1419dca4dc..46588a74d0d 100644
--- a/lib/private/Files/Type/Loader.php
+++ b/lib/private/Files/Type/Loader.php
@@ -25,9 +25,9 @@
namespace OC\Files\Type;
+use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCP\Files\IMimeTypeLoader;
use OCP\IDBConnection;
-use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
/**
* Mimetype database loader
diff --git a/lib/private/Files/Type/TemplateManager.php b/lib/private/Files/Type/TemplateManager.php
index 8b30eb6b4e8..08c4593bf87 100644
--- a/lib/private/Files/Type/TemplateManager.php
+++ b/lib/private/Files/Type/TemplateManager.php
@@ -24,6 +24,9 @@
namespace OC\Files\Type;
+/**
+ * @deprecated 18.0.0
+ */
class TemplateManager {
protected $templates = array();
@@ -34,6 +37,7 @@ class TemplateManager {
/**
* get the path of the template for a mimetype
*
+ * @deprecated 18.0.0
* @param string $mimetype
* @return string|null
*/
@@ -48,6 +52,7 @@ class TemplateManager {
/**
* get the template content for a mimetype
*
+ * @deprecated 18.0.0
* @param string $mimetype
* @return string
*/
diff --git a/lib/private/Files/Utils/Scanner.php b/lib/private/Files/Utils/Scanner.php
index 28921973fcf..8dee7bf7423 100644
--- a/lib/private/Files/Utils/Scanner.php
+++ b/lib/private/Files/Utils/Scanner.php
@@ -30,6 +30,7 @@ namespace OC\Files\Utils;
use OC\Files\Cache\Cache;
use OC\Files\Filesystem;
+use OC\Files\Storage\FailedStorage;
use OC\ForbiddenException;
use OC\Hooks\PublicEmitter;
use OC\Lock\DBLockingProvider;
@@ -38,7 +39,6 @@ use OCP\Files\NotFoundException;
use OCP\Files\Storage\IStorage;
use OCP\Files\StorageNotAvailableException;
use OCP\ILogger;
-use OC\Files\Storage\FailedStorage;
/**
* Class Scanner
@@ -279,4 +279,3 @@ class Scanner extends PublicEmitter {
}
}
}
-
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 8322576c5c2..ed962bde1a4 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -42,7 +42,6 @@
*
*/
-
namespace OC\Files;
use Icewind\Streams\CallbackWrapper;
@@ -590,6 +589,7 @@ class View {
/**
* @param string $path
* @return mixed
+ * @throws LockedException
*/
public function file_get_contents($path) {
return $this->basicOperation('file_get_contents', $path, array('read'));
@@ -641,7 +641,7 @@ class View {
* @param string $path
* @param string|resource $data
* @return bool|mixed
- * @throws \Exception
+ * @throws LockedException
*/
public function file_put_contents($path, $data) {
if (is_resource($data)) { //not having to deal with streams in file_put_contents makes life easier
@@ -740,6 +740,7 @@ class View {
* @param string $path2 target path
*
* @return bool|mixed
+ * @throws LockedException
*/
public function rename($path1, $path2) {
$absolutePath1 = Filesystem::normalizePath($this->getAbsolutePath($path1));
@@ -963,6 +964,7 @@ class View {
* @param string $path
* @param string $mode 'r' or 'w'
* @return resource
+ * @throws LockedException
*/
public function fopen($path, $mode) {
$mode = str_replace('b', '', $mode); // the binary flag is a windows only feature which we do not support
@@ -1118,7 +1120,7 @@ class View {
* @param array $hooks (optional)
* @param mixed $extraParam (optional)
* @return mixed
- * @throws \Exception
+ * @throws LockedException
*
* This method takes requests for basic filesystem functions (e.g. reading & writing
* files), processes hooks and proxies, sanitises paths, and finally passes them on to
@@ -1920,7 +1922,7 @@ class View {
* @param bool $lockMountPoint true to lock the mount point, false to lock the attached mount/storage
*
* @return bool False if the path is excluded from locking, true otherwise
- * @throws \OCP\Lock\LockedException if the path is already locked
+ * @throws LockedException if the path is already locked
*/
private function lockPath($path, $type, $lockMountPoint = false) {
$absolutePath = $this->getAbsolutePath($path);
@@ -1940,9 +1942,9 @@ class View {
$this->lockingProvider
);
}
- } catch (\OCP\Lock\LockedException $e) {
+ } catch (LockedException $e) {
// rethrow with the a human-readable path
- throw new \OCP\Lock\LockedException(
+ throw new LockedException(
$this->getPathRelativeToFiles($absolutePath),
$e
);
@@ -1960,7 +1962,7 @@ class View {
* @param bool $lockMountPoint true to lock the mount point, false to lock the attached mount/storage
*
* @return bool False if the path is excluded from locking, true otherwise
- * @throws \OCP\Lock\LockedException if the path is already locked
+ * @throws LockedException if the path is already locked
*/
public function changeLock($path, $type, $lockMountPoint = false) {
$path = Filesystem::normalizePath($path);
@@ -1981,15 +1983,15 @@ class View {
$this->lockingProvider
);
}
- } catch (\OCP\Lock\LockedException $e) {
+ } catch (LockedException $e) {
try {
// rethrow with the a human-readable path
- throw new \OCP\Lock\LockedException(
+ throw new LockedException(
$this->getPathRelativeToFiles($absolutePath),
$e
);
} catch (\InvalidArgumentException $e) {
- throw new \OCP\Lock\LockedException(
+ throw new LockedException(
$absolutePath,
$e
);
@@ -2008,6 +2010,7 @@ class View {
* @param bool $lockMountPoint true to lock the mount point, false to lock the attached mount/storage
*
* @return bool False if the path is excluded from locking, true otherwise
+ * @throws LockedException
*/
private function unlockPath($path, $type, $lockMountPoint = false) {
$absolutePath = $this->getAbsolutePath($path);
@@ -2039,6 +2042,7 @@ class View {
* @param bool $lockMountPoint true to lock the mount point, false to lock the attached mount/storage
*
* @return bool False if the path is excluded from locking, true otherwise
+ * @throws LockedException
*/
public function lockFile($path, $type, $lockMountPoint = false) {
$absolutePath = $this->getAbsolutePath($path);
@@ -2065,6 +2069,7 @@ class View {
* @param bool $lockMountPoint true to lock the mount point, false to lock the attached mount/storage
*
* @return bool False if the path is excluded from locking, true otherwise
+ * @throws LockedException
*/
public function unlockFile($path, $type, $lockMountPoint = false) {
$absolutePath = $this->getAbsolutePath($path);
diff --git a/lib/private/FullTextSearch/FullTextSearchManager.php b/lib/private/FullTextSearch/FullTextSearchManager.php
index 8ab1af05b0e..3aec4638a21 100644
--- a/lib/private/FullTextSearch/FullTextSearchManager.php
+++ b/lib/private/FullTextSearch/FullTextSearchManager.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch;
@@ -39,7 +38,6 @@ use OCP\FullTextSearch\Service\IIndexService;
use OCP\FullTextSearch\Service\IProviderService;
use OCP\FullTextSearch\Service\ISearchService;
-
/**
* Class FullTextSearchManager
*
@@ -239,4 +237,3 @@ class FullTextSearchManager implements IFullTextSearchManager {
}
-
diff --git a/lib/private/FullTextSearch/Model/DocumentAccess.php b/lib/private/FullTextSearch/Model/DocumentAccess.php
index 088bf075ae6..ce195eb8a2e 100644
--- a/lib/private/FullTextSearch/Model/DocumentAccess.php
+++ b/lib/private/FullTextSearch/Model/DocumentAccess.php
@@ -27,14 +27,12 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch\Model;
use JsonSerializable;
use OCP\FullTextSearch\Model\IDocumentAccess;
-
/**
* Class IDocumentAccess
*
@@ -362,4 +360,3 @@ final class DocumentAccess implements IDocumentAccess, JsonSerializable {
];
}
}
-
diff --git a/lib/private/FullTextSearch/Model/IndexDocument.php b/lib/private/FullTextSearch/Model/IndexDocument.php
index d5bef906021..1efa55b5ca1 100644
--- a/lib/private/FullTextSearch/Model/IndexDocument.php
+++ b/lib/private/FullTextSearch/Model/IndexDocument.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch\Model;
@@ -36,7 +35,6 @@ use OCP\FullTextSearch\Model\IDocumentAccess;
use OCP\FullTextSearch\Model\IIndex;
use OCP\FullTextSearch\Model\IIndexDocument;
-
/**
* Class IndexDocument
*
@@ -997,4 +995,3 @@ class IndexDocument implements IIndexDocument, JsonSerializable {
}
}
-
diff --git a/lib/private/FullTextSearch/Model/SearchOption.php b/lib/private/FullTextSearch/Model/SearchOption.php
index 6a67c9fe7df..d0eb0eab2ed 100644
--- a/lib/private/FullTextSearch/Model/SearchOption.php
+++ b/lib/private/FullTextSearch/Model/SearchOption.php
@@ -27,14 +27,12 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch\Model;
use JsonSerializable;
use OCP\FullTextSearch\Model\ISearchOption;
-
/**
* @since 15.0.0
*
diff --git a/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php b/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
index a01fb232916..8796f28a249 100644
--- a/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
+++ b/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
@@ -27,14 +27,12 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch\Model;
use JsonSerializable;
use OCP\FullTextSearch\Model\ISearchRequestSimpleQuery;
-
/**
* @since 17.0.0
*
diff --git a/lib/private/FullTextSearch/Model/SearchTemplate.php b/lib/private/FullTextSearch/Model/SearchTemplate.php
index 22333e712ce..a4c21d30bcc 100644
--- a/lib/private/FullTextSearch/Model/SearchTemplate.php
+++ b/lib/private/FullTextSearch/Model/SearchTemplate.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\FullTextSearch\Model;
@@ -36,7 +35,6 @@ use OCP\FullTextSearch\IFullTextSearchProvider;
use OCP\FullTextSearch\Model\ISearchOption;
use OCP\FullTextSearch\Model\ISearchTemplate;
-
/**
* Class ISearchTemplate
*
@@ -257,4 +255,3 @@ final class SearchTemplate implements ISearchTemplate, JsonSerializable {
];
}
}
-
diff --git a/lib/private/GlobalScale/Config.php b/lib/private/GlobalScale/Config.php
index da7a459741b..2ab862a0e4e 100644
--- a/lib/private/GlobalScale/Config.php
+++ b/lib/private/GlobalScale/Config.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OC\GlobalScale;
diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php
index 7a5728b957d..7028b1fa81b 100644
--- a/lib/private/Group/Database.php
+++ b/lib/private/Group/Database.php
@@ -49,7 +49,10 @@ use OCP\Group\Backend\ICountDisabledInGroup;
use OCP\Group\Backend\ICountUsersBackend;
use OCP\Group\Backend\ICreateGroupBackend;
use OCP\Group\Backend\IDeleteGroupBackend;
+use OCP\Group\Backend\IGetDisplayNameBackend;
+use OCP\Group\Backend\IGroupDetailsBackend;
use OCP\Group\Backend\IRemoveFromGroupBackend;
+use OCP\Group\Backend\ISetDisplayNameBackend;
use OCP\IDBConnection;
/**
@@ -61,7 +64,10 @@ class Database extends ABackend
ICountUsersBackend,
ICreateGroupBackend,
IDeleteGroupBackend,
- IRemoveFromGroupBackend {
+ IGetDisplayNameBackend,
+ IGroupDetailsBackend,
+ IRemoveFromGroupBackend,
+ ISetDisplayNameBackend {
/** @var string[] */
private $groupCache = [];
@@ -103,6 +109,7 @@ class Database extends ABackend
$builder = $this->dbConn->getQueryBuilder();
$result = $builder->insert('groups')
->setValue('gid', $builder->createNamedParameter($gid))
+ ->setValue('displayname', $builder->createNamedParameter($gid))
->execute();
} catch(UniqueConstraintViolationException $e) {
$result = 0;
@@ -322,7 +329,7 @@ class Database extends ABackend
* @param int $offset
* @return array an array of user ids
*/
- public function usersInGroup($gid, $search = '', $limit = null, $offset = null) {
+ public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
$this->fixDI();
$query = $this->dbConn->getQueryBuilder();
@@ -337,8 +344,13 @@ class Database extends ABackend
)));
}
- $query->setMaxResults($limit)
- ->setFirstResult($offset);
+ if ($limit !== -1) {
+ $query->setMaxResults($limit);
+ }
+ if ($offset !== 0) {
+ $query->setFirstResult($offset);
+ }
+
$result = $query->execute();
$users = [];
@@ -391,7 +403,7 @@ class Database extends ABackend
*/
public function countDisabledInGroup(string $gid): int {
$this->fixDI();
-
+
$query = $this->dbConn->getQueryBuilder();
$query->select($query->createFunction('COUNT(DISTINCT ' . $query->getColumnName('uid') . ')'))
->from('preferences', 'p')
@@ -400,11 +412,11 @@ class Database extends ABackend
->andWhere($query->expr()->eq('configkey', $query->createNamedParameter('enabled')))
->andWhere($query->expr()->eq('configvalue', $query->createNamedParameter('false'), IQueryBuilder::PARAM_STR))
->andWhere($query->expr()->eq('gid', $query->createNamedParameter($gid), IQueryBuilder::PARAM_STR));
-
+
$result = $query->execute();
$count = $result->fetchColumn();
$result->closeCursor();
-
+
if ($count !== false) {
$count = (int)$count;
} else {
@@ -414,4 +426,49 @@ class Database extends ABackend
return $count;
}
+ public function getDisplayName(string $gid): string {
+ $this->fixDI();
+
+ $query = $this->dbConn->getQueryBuilder();
+ $query->select('displayname')
+ ->from('groups')
+ ->where($query->expr()->eq('gid', $query->createNamedParameter($gid)));
+
+ $result = $query->execute();
+ $displayName = $result->fetchColumn();
+ $result->closeCursor();
+
+ return (string) $displayName;
+ }
+
+ public function getGroupDetails(string $gid): array {
+ $displayName = $this->getDisplayName($gid);
+ if ($displayName !== '') {
+ return ['displayName' => $displayName];
+ }
+
+ return [];
+ }
+
+ public function setDisplayName(string $gid, string $displayName): bool {
+ if (!$this->groupExists($gid)) {
+ return false;
+ }
+
+ $this->fixDI();
+
+ $displayName = trim($displayName);
+ if ($displayName === '') {
+ $displayName = $gid;
+ }
+
+ $query = $this->dbConn->getQueryBuilder();
+ $query->update('groups')
+ ->set('displayname', $query->createNamedParameter($displayName))
+ ->where($query->expr()->eq('gid', $query->createNamedParameter($gid)));
+ $query->execute();
+
+ return true;
+ }
+
}
diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php
index a50a5ffde78..fa14e4e9932 100644
--- a/lib/private/Group/Group.php
+++ b/lib/private/Group/Group.php
@@ -30,13 +30,14 @@
namespace OC\Group;
+use OC\Hooks\PublicEmitter;
+use OCP\Group\Backend\ICountDisabledInGroup;
use OCP\Group\Backend\IGetDisplayNameBackend;
use OCP\Group\Backend\IHideFromCollaborationBackend;
-use OC\Hooks\PublicEmitter;
+use OCP\Group\Backend\ISetDisplayNameBackend;
use OCP\GroupInterface;
use OCP\IGroup;
use OCP\IUser;
-use OCP\Group\Backend\ICountDisabledInGroup;
use OCP\IUserManager;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
@@ -101,6 +102,20 @@ class Group implements IGroup {
return $this->displayName;
}
+ public function setDisplayName(string $displayName): bool {
+ $displayName = trim($displayName);
+ if ($displayName !== '') {
+ foreach ($this->backends as $backend) {
+ if (($backend instanceof ISetDisplayNameBackend)
+ && $backend->setDisplayName($this->gid, $displayName)) {
+ $this->displayName = $displayName;
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
/**
* get all users in the group
*
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 7567f719b0a..dc4a7fbd11c 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -93,8 +93,8 @@ class Manager extends PublicEmitter implements IGroupManager {
$this->dispatcher = $dispatcher;
$this->logger = $logger;
- $cachedGroups = & $this->cachedGroups;
- $cachedUserGroups = & $this->cachedUserGroups;
+ $cachedGroups = &$this->cachedGroups;
+ $cachedUserGroups = &$this->cachedUserGroups;
$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
/**
* @var \OC\Group\Group $group
@@ -149,6 +149,7 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* Get the active backends
+ *
* @return \OCP\GroupInterface[]
*/
public function getBackends() {
@@ -163,7 +164,7 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* @param string $gid
- * @return \OC\Group\Group
+ * @return IGroup|null
*/
public function get($gid) {
if (isset($this->cachedGroups[$gid])) {
@@ -175,12 +176,12 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* @param string $gid
* @param string $displayName
- * @return \OCP\IGroup
+ * @return \OCP\IGroup|null
*/
protected function getGroupObject($gid, $displayName = null) {
$backends = [];
foreach ($this->backends as $backend) {
- if ($backend->implementsActions(\OC\Group\Backend::GROUP_DETAILS)) {
+ if ($backend->implementsActions(Backend::GROUP_DETAILS)) {
$groupData = $backend->getGroupDetails($gid);
if (is_array($groupData) && !empty($groupData)) {
// take the display name from the first backend that has a non-null one
@@ -210,21 +211,22 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* @param string $gid
- * @return \OC\Group\Group
+ * @return IGroup|null
*/
public function createGroup($gid) {
if ($gid === '' || $gid === null) {
- return false;
+ return null;
} else if ($group = $this->get($gid)) {
return $group;
} else {
- $this->emit('\OC\Group', 'preCreate', array($gid));
+ $this->emit('\OC\Group', 'preCreate', [$gid]);
foreach ($this->backends as $backend) {
- if ($backend->implementsActions(\OC\Group\Backend::CREATE_GROUP)) {
- $backend->createGroup($gid);
- $group = $this->getGroupObject($gid);
- $this->emit('\OC\Group', 'postCreate', array($group));
- return $group;
+ if ($backend->implementsActions(Backend::CREATE_GROUP)) {
+ if ($backend->createGroup($gid)) {
+ $group = $this->getGroupObject($gid);
+ $this->emit('\OC\Group', 'postCreate', [$group]);
+ return $group;
+ }
}
}
return null;
@@ -260,7 +262,7 @@ class Manager extends PublicEmitter implements IGroupManager {
* @param IUser|null $user
* @return \OC\Group\Group[]
*/
- public function getUserGroups(IUser $user= null) {
+ public function getUserGroups(IUser $user = null) {
if (!$user instanceof IUser) {
return [];
}
@@ -295,12 +297,13 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* Checks if a userId is in the admin group
+ *
* @param string $userId
* @return bool if admin
*/
public function isAdmin($userId) {
foreach ($this->backends as $backend) {
- if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
+ if ($backend->implementsActions(Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
return true;
}
}
@@ -309,6 +312,7 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* Checks if a userId is in a group
+ *
* @param string $userId
* @param string $group
* @return bool if in group
@@ -319,28 +323,31 @@ class Manager extends PublicEmitter implements IGroupManager {
/**
* get a list of group ids for a user
+ *
* @param IUser $user
* @return array with group ids
*/
public function getUserGroupIds(IUser $user) {
- return array_map(function($value) {
- return (string) $value;
+ return array_map(function ($value) {
+ return (string)$value;
}, array_keys($this->getUserGroups($user)));
}
/**
* get an array of groupid and displayName for a user
+ *
* @param IUser $user
* @return array ['displayName' => displayname]
*/
public function getUserGroupNames(IUser $user) {
- return array_map(function($group) {
+ return array_map(function ($group) {
return array('displayName' => $group->getDisplayName());
}, $this->getUserGroups($user));
}
/**
* get a list of all display names in a group
+ *
* @param string $gid
* @param string $search
* @param int $limit
@@ -349,32 +356,32 @@ class Manager extends PublicEmitter implements IGroupManager {
*/
public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
$group = $this->get($gid);
- if(is_null($group)) {
+ if (is_null($group)) {
return [];
}
$search = trim($search);
$groupUsers = [];
- if(!empty($search)) {
+ if (!empty($search)) {
// only user backends have the capability to do a complex search for users
$searchOffset = 0;
$searchLimit = $limit * 100;
- if($limit === -1) {
+ if ($limit === -1) {
$searchLimit = 500;
}
do {
$filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
- foreach($filteredUsers as $filteredUser) {
- if($group->inGroup($filteredUser)) {
- $groupUsers[]= $filteredUser;
+ foreach ($filteredUsers as $filteredUser) {
+ if ($group->inGroup($filteredUser)) {
+ $groupUsers[] = $filteredUser;
}
}
$searchOffset += $searchLimit;
- } while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
+ } while (count($groupUsers) < $searchLimit + $offset && count($filteredUsers) >= $searchLimit);
- if($limit === -1) {
+ if ($limit === -1) {
$groupUsers = array_slice($groupUsers, $offset);
} else {
$groupUsers = array_slice($groupUsers, $offset, $limit);
@@ -384,8 +391,8 @@ class Manager extends PublicEmitter implements IGroupManager {
}
$matchingUsers = [];
- foreach($groupUsers as $groupUser) {
- $matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
+ foreach ($groupUsers as $groupUser) {
+ $matchingUsers[(string) $groupUser->getUID()] = $groupUser->getDisplayName();
}
return $matchingUsers;
}
diff --git a/lib/private/Group/MetaData.php b/lib/private/Group/MetaData.php
index f4877237ec7..cda208f3f58 100644
--- a/lib/private/Group/MetaData.php
+++ b/lib/private/Group/MetaData.php
@@ -28,8 +28,8 @@
namespace OC\Group;
-use OCP\IUserSession;
use OCP\IGroupManager;
+use OCP\IUserSession;
class MetaData {
const SORT_NONE = 0;
diff --git a/lib/private/Http/Client/Client.php b/lib/private/Http/Client/Client.php
index 993b83917fd..28694f38585 100644
--- a/lib/private/Http/Client/Client.php
+++ b/lib/private/Http/Client/Client.php
@@ -63,6 +63,7 @@ class Client implements IClient {
$defaults = [
RequestOptions::PROXY => $this->getProxyUri(),
RequestOptions::VERIFY => $this->getCertBundle(),
+ RequestOptions::TIMEOUT => 30,
];
$options = array_merge($defaults, $options);
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index 80f12c0a832..2e1652e9a1b 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -469,7 +469,6 @@ class Factory implements IFactory {
if (($this->isSubDirectory($transFile, $this->serverRoot . '/core/l10n/')
|| $this->isSubDirectory($transFile, $this->serverRoot . '/lib/l10n/')
- || $this->isSubDirectory($transFile, $this->serverRoot . '/settings/l10n/')
|| $this->isSubDirectory($transFile, \OC_App::getAppPath($app) . '/l10n/')
)
&& file_exists($transFile)) {
@@ -496,7 +495,7 @@ class Factory implements IFactory {
* @return string directory
*/
protected function findL10nDir($app = null) {
- if (in_array($app, ['core', 'lib', 'settings'])) {
+ if (in_array($app, ['core', 'lib'])) {
if (file_exists($this->serverRoot . '/' . $app . '/l10n/')) {
return $this->serverRoot . '/' . $app . '/l10n/';
}
diff --git a/lib/private/L10N/LanguageNotFoundException.php b/lib/private/L10N/LanguageNotFoundException.php
index 317e0629b60..0f3b8140e08 100644
--- a/lib/private/L10N/LanguageNotFoundException.php
+++ b/lib/private/L10N/LanguageNotFoundException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\L10N;
class LanguageNotFoundException extends \Exception {
diff --git a/lib/private/Lock/MemcacheLockingProvider.php b/lib/private/Lock/MemcacheLockingProvider.php
index 4d1b3dc0bca..368c672dbb2 100644
--- a/lib/private/Lock/MemcacheLockingProvider.php
+++ b/lib/private/Lock/MemcacheLockingProvider.php
@@ -23,9 +23,9 @@ declare(strict_types=1);
namespace OC\Lock;
+use OCP\IMemcache;
use OCP\IMemcacheTTL;
use OCP\Lock\LockedException;
-use OCP\IMemcache;
class MemcacheLockingProvider extends AbstractLockingProvider {
/**
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 4af833d778f..22792fe4020 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -39,9 +39,9 @@ use function array_merge;
use InterfaSys\LogNormalizer\Normalizer;
use OC\Log\ExceptionSerializer;
+use OCP\ILogger;
use OCP\Log\IFileBased;
use OCP\Log\IWriter;
-use OCP\ILogger;
use OCP\Support\CrashReport\IRegistry;
/**
@@ -214,24 +214,27 @@ class Log implements ILogger {
}
$message = strtr($message, $replace);
- if ($level >= $minLevel) {
- $this->writeLog($app, $message, $level);
-
- if ($this->crashReporters !== null) {
- $messageContext = array_merge(
- $context,
- [
- 'level' => $level
- ]
- );
- $this->crashReporters->delegateMessage($message, $messageContext);
- }
- } else {
- if ($this->crashReporters !== null) {
- $this->crashReporters->delegateBreadcrumb($message, 'log', $context);
+ try {
+ if ($level >= $minLevel) {
+ $this->writeLog($app, $message, $level);
+
+ if ($this->crashReporters !== null) {
+ $messageContext = array_merge(
+ $context,
+ [
+ 'level' => $level
+ ]
+ );
+ $this->crashReporters->delegateMessage($message, $messageContext);
+ }
+ } else {
+ if ($this->crashReporters !== null) {
+ $this->crashReporters->delegateBreadcrumb($message, 'log', $context);
+ }
}
+ } catch (\Throwable $e) {
+ // make sure we dont hard crash if logging fails
}
-
}
private function getLogLevel($context) {
@@ -318,16 +321,20 @@ class Log implements ILogger {
array_walk($context, [$this->normalizer, 'format']);
- if ($level >= $minLevel) {
- if (!$this->logger instanceof IFileBased) {
- $data = json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR);
+ try {
+ if ($level >= $minLevel) {
+ if (!$this->logger instanceof IFileBased) {
+ $data = json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_UNESCAPED_SLASHES);
+ }
+ $this->writeLog($app, $data, $level);
}
- $this->writeLog($app, $data, $level);
- }
- $context['level'] = $level;
- if (!is_null($this->crashReporters)) {
- $this->crashReporters->delegateReport($exception, $context);
+ $context['level'] = $level;
+ if (!is_null($this->crashReporters)) {
+ $this->crashReporters->delegateReport($exception, $context);
+ }
+ } catch (\Throwable $e) {
+ // make sure we dont hard crash if logging fails
}
}
diff --git a/lib/private/Log/Errorlog.php b/lib/private/Log/Errorlog.php
index 9dc8b2cc49c..ebcb73be4ce 100644
--- a/lib/private/Log/Errorlog.php
+++ b/lib/private/Log/Errorlog.php
@@ -39,4 +39,3 @@ class Errorlog implements IWriter {
error_log('[owncloud]['.$app.']['.$level.'] '.$message);
}
}
-
diff --git a/lib/private/Log/ExceptionSerializer.php b/lib/private/Log/ExceptionSerializer.php
index 8cfdb57b225..a3b855aea26 100644
--- a/lib/private/Log/ExceptionSerializer.php
+++ b/lib/private/Log/ExceptionSerializer.php
@@ -92,7 +92,9 @@ class ExceptionSerializer {
];
private function editTrace(array &$sensitiveValues, array $traceLine): array {
- $sensitiveValues = array_merge($sensitiveValues, $traceLine['args']);
+ if (isset($traceLine['args'])) {
+ $sensitiveValues = array_merge($sensitiveValues, $traceLine['args']);
+ }
$traceLine['args'] = ['*** sensitive parameters replaced ***'];
return $traceLine;
}
diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php
index fe2bbf30a26..b982836b8ef 100644
--- a/lib/private/Log/File.php
+++ b/lib/private/Log/File.php
@@ -37,9 +37,9 @@
namespace OC\Log;
use OC\SystemConfig;
+use OCP\ILogger;
use OCP\Log\IFileBased;
use OCP\Log\IWriter;
-use OCP\ILogger;
/**
* logging utilities
diff --git a/lib/private/Log/LogDetails.php b/lib/private/Log/LogDetails.php
index 712b5403ca0..e833221e222 100644
--- a/lib/private/Log/LogDetails.php
+++ b/lib/private/Log/LogDetails.php
@@ -90,12 +90,12 @@ abstract class LogDetails {
// them manually.
foreach($entry as $key => $value) {
if(is_string($value)) {
- $testEncode = json_encode($value);
+ $testEncode = json_encode($value, JSON_UNESCAPED_SLASHES);
if($testEncode === false) {
$entry[$key] = utf8_encode($value);
}
}
}
- return json_encode($entry, JSON_PARTIAL_OUTPUT_ON_ERROR);
+ return json_encode($entry, JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_UNESCAPED_SLASHES);
}
}
diff --git a/lib/private/Log/Systemdlog.php b/lib/private/Log/Systemdlog.php
index c40e4860f95..1fd0a6a419b 100644
--- a/lib/private/Log/Systemdlog.php
+++ b/lib/private/Log/Systemdlog.php
@@ -24,8 +24,8 @@ namespace OC\Log;
use OC\HintException;
use OC\SystemConfig;
-use OCP\ILogger;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\Log\IWriter;
// The following fields are understood by systemd/journald, see
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index d103e1380c5..e3547c84da3 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -31,11 +31,11 @@ use Egulias\EmailValidator\Validation\RFCValidation;
use OCP\Defaults;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
-use OCP\ILogger;
use OCP\Mail\IMessage;
/**
diff --git a/lib/private/Memcache/Redis.php b/lib/private/Memcache/Redis.php
index adf3c5050bd..8d0d1679e80 100644
--- a/lib/private/Memcache/Redis.php
+++ b/lib/private/Memcache/Redis.php
@@ -178,4 +178,3 @@ class Redis extends Cache implements IMemcacheTTL {
return \OC::$server->getGetRedisFactory()->isAvailable();
}
}
-
diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php
index 7ef90301cf3..7cab14f5ccc 100644
--- a/lib/private/Migration/BackgroundRepair.php
+++ b/lib/private/Migration/BackgroundRepair.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Migration;
use OC\BackgroundJob\JobList;
diff --git a/lib/private/Migration/ConsoleOutput.php b/lib/private/Migration/ConsoleOutput.php
index 74c8c7340cc..d3487a771cc 100644
--- a/lib/private/Migration/ConsoleOutput.php
+++ b/lib/private/Migration/ConsoleOutput.php
@@ -20,7 +20,6 @@
*
*/
-
namespace OC\Migration;
diff --git a/lib/private/Migration/SimpleOutput.php b/lib/private/Migration/SimpleOutput.php
index ea61c44fcac..c3426a426f8 100644
--- a/lib/private/Migration/SimpleOutput.php
+++ b/lib/private/Migration/SimpleOutput.php
@@ -20,7 +20,6 @@
*
*/
-
namespace OC\Migration;
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index 2c41fbd88c2..2f6befc632c 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -199,7 +199,7 @@ class NavigationManager implements INavigationManager {
'type' => 'settings',
'id' => 'help',
'order' => 5,
- 'href' => $this->urlGenerator->linkToRoute('settings_help'),
+ 'href' => $this->urlGenerator->linkToRoute('settings.Help.help'),
'name' => $l->t('Help'),
'icon' => $this->urlGenerator->imagePath('settings', 'help.svg'),
]);
diff --git a/lib/private/OCS/DiscoveryService.php b/lib/private/OCS/DiscoveryService.php
index 6662263fb76..f084dae35ed 100644
--- a/lib/private/OCS/DiscoveryService.php
+++ b/lib/private/OCS/DiscoveryService.php
@@ -22,7 +22,6 @@ declare(strict_types=1);
*
*/
-
namespace OC\OCS;
use OCP\AppFramework\Http;
diff --git a/lib/private/Preview/Bitmap.php b/lib/private/Preview/Bitmap.php
index 000b1f8277f..fe309376296 100644
--- a/lib/private/Preview/Bitmap.php
+++ b/lib/private/Preview/Bitmap.php
@@ -26,9 +26,9 @@
namespace OC\Preview;
use Imagick;
+use OCP\Files\File;
use OCP\IImage;
use OCP\ILogger;
-use OCP\Files\File;
/**
* Creates a PNG preview using ImageMagick via the PECL extension
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index 79c512c84aa..981c820ccf3 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -36,8 +36,8 @@ use OCP\IConfig;
use OCP\IImage;
use OCP\IPreview;
use OCP\Preview\IProvider;
-use OCP\Preview\IVersionedPreviewFile;
use OCP\Preview\IProviderV2;
+use OCP\Preview\IVersionedPreviewFile;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
diff --git a/lib/private/Preview/GeneratorHelper.php b/lib/private/Preview/GeneratorHelper.php
index 7e35b5360d4..4389e269c8b 100644
--- a/lib/private/Preview/GeneratorHelper.php
+++ b/lib/private/Preview/GeneratorHelper.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Preview;
use OC\Files\View;
diff --git a/lib/private/Preview/HEIC.php b/lib/private/Preview/HEIC.php
index d23e6c6bd1f..9f4f9be38df 100644
--- a/lib/private/Preview/HEIC.php
+++ b/lib/private/Preview/HEIC.php
@@ -23,9 +23,9 @@ declare(strict_types=1);
namespace OC\Preview;
+use OCP\Files\File;
use OCP\IImage;
use OCP\ILogger;
-use OCP\Files\File;
/**
* Creates a JPG preview using ImageMagick via the PECL extension
diff --git a/lib/private/Preview/Image.php b/lib/private/Preview/Image.php
index 6f82904a6a7..b8767d3f639 100644
--- a/lib/private/Preview/Image.php
+++ b/lib/private/Preview/Image.php
@@ -25,6 +25,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
use OCP\Files\File;
diff --git a/lib/private/Preview/MP3.php b/lib/private/Preview/MP3.php
index f560f100109..6b19602b5c9 100644
--- a/lib/private/Preview/MP3.php
+++ b/lib/private/Preview/MP3.php
@@ -24,6 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
use ID3Parser\ID3Parser;
diff --git a/lib/private/Preview/MSOffice2003.php b/lib/private/Preview/MSOffice2003.php
index 5af66f72720..67559224528 100644
--- a/lib/private/Preview/MSOffice2003.php
+++ b/lib/private/Preview/MSOffice2003.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
//.docm, .dotm, .xls(m), .xlt(m), .xla(m), .ppt(m), .pot(m), .pps(m), .ppa(m)
diff --git a/lib/private/Preview/MSOffice2007.php b/lib/private/Preview/MSOffice2007.php
index 0d1177d9de9..125e0ecfcad 100644
--- a/lib/private/Preview/MSOffice2007.php
+++ b/lib/private/Preview/MSOffice2007.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
//.docx, .dotx, .xlsx, .xltx, .pptx, .potx, .ppsx
diff --git a/lib/private/Preview/MSOfficeDoc.php b/lib/private/Preview/MSOfficeDoc.php
index 24d1a9d5b6a..e1359c6b903 100644
--- a/lib/private/Preview/MSOfficeDoc.php
+++ b/lib/private/Preview/MSOfficeDoc.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
//.doc, .dot
diff --git a/lib/private/Preview/MarkDown.php b/lib/private/Preview/MarkDown.php
index ae24c4f4419..bdf16ae2bc5 100644
--- a/lib/private/Preview/MarkDown.php
+++ b/lib/private/Preview/MarkDown.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
class MarkDown extends TXT {
diff --git a/lib/private/Preview/Movie.php b/lib/private/Preview/Movie.php
index 2f64811b45e..17916896f97 100644
--- a/lib/private/Preview/Movie.php
+++ b/lib/private/Preview/Movie.php
@@ -23,6 +23,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
use OCP\Files\File;
@@ -88,8 +89,8 @@ class Movie extends ProviderV2 {
if ($returnCode === 0) {
$image = new \OC_Image();
$image->loadFromFile($tmpPath);
- unlink($tmpPath);
if ($image->valid()) {
+ unlink($tmpPath);
$image->scaleDownToFit($maxX, $maxY);
return $image;
diff --git a/lib/private/Preview/Office.php b/lib/private/Preview/Office.php
index f51023c5a83..49437aec186 100644
--- a/lib/private/Preview/Office.php
+++ b/lib/private/Preview/Office.php
@@ -23,11 +23,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
+use OCP\Files\File;
use OCP\IImage;
use OCP\ILogger;
-use OCP\Files\File;
abstract class Office extends ProviderV2 {
private $cmd;
diff --git a/lib/private/Preview/OpenDocument.php b/lib/private/Preview/OpenDocument.php
index 929fecffb21..ab3394ffea0 100644
--- a/lib/private/Preview/OpenDocument.php
+++ b/lib/private/Preview/OpenDocument.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
//.odt, .ott, .oth, .odm, .odg, .otg, .odp, .otp, .ods, .ots, .odc, .odf, .odb, .odi, .oxt
diff --git a/lib/private/Preview/Provider.php b/lib/private/Preview/Provider.php
index d0dd259891f..ed128638e4b 100644
--- a/lib/private/Preview/Provider.php
+++ b/lib/private/Preview/Provider.php
@@ -23,6 +23,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
use OCP\Preview\IProvider;
diff --git a/lib/private/Preview/ProviderV1Adapter.php b/lib/private/Preview/ProviderV1Adapter.php
index 903a7904bf8..0685193eb5b 100644
--- a/lib/private/Preview/ProviderV1Adapter.php
+++ b/lib/private/Preview/ProviderV1Adapter.php
@@ -36,11 +36,11 @@ class ProviderV1Adapter implements IProviderV2 {
}
public function getMimeType(): string {
- return $this->providerV1->getMimeType();
+ return (string)$this->providerV1->getMimeType();
}
public function isAvailable(FileInfo $file): bool {
- return $this->providerV1->isAvailable($file);
+ return (bool)$this->providerV1->isAvailable($file);
}
public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
diff --git a/lib/private/Preview/SVG.php b/lib/private/Preview/SVG.php
index 3f313f4bb9b..2fe4c464575 100644
--- a/lib/private/Preview/SVG.php
+++ b/lib/private/Preview/SVG.php
@@ -22,11 +22,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
+use OCP\Files\File;
use OCP\IImage;
use OCP\ILogger;
-use OCP\Files\File;
class SVG extends ProviderV2 {
/**
diff --git a/lib/private/Preview/StarOffice.php b/lib/private/Preview/StarOffice.php
index 2c9542b22e6..1300bdc7b41 100644
--- a/lib/private/Preview/StarOffice.php
+++ b/lib/private/Preview/StarOffice.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
//.sxw, .stw, .sxc, .stc, .sxd, .std, .sxi, .sti, .sxg, .sxm
diff --git a/lib/private/Preview/TXT.php b/lib/private/Preview/TXT.php
index 3e2032df2de..d1ee1c025ea 100644
--- a/lib/private/Preview/TXT.php
+++ b/lib/private/Preview/TXT.php
@@ -24,6 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Preview;
use OCP\Files\File;
diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php
index 0c0531dff94..30708445c76 100644
--- a/lib/private/Preview/Watcher.php
+++ b/lib/private/Preview/Watcher.php
@@ -21,11 +21,12 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Preview;
-use OCP\Files\Node;
use OCP\Files\Folder;
use OCP\Files\IAppData;
+use OCP\Files\Node;
use OCP\Files\NotFoundException;
/**
diff --git a/lib/private/Preview/WatcherConnector.php b/lib/private/Preview/WatcherConnector.php
index f374b909d8f..346634ccf3a 100644
--- a/lib/private/Preview/WatcherConnector.php
+++ b/lib/private/Preview/WatcherConnector.php
@@ -21,11 +21,12 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Preview;
use OC\SystemConfig;
-use OCP\Files\Node;
use OCP\Files\IRootFolder;
+use OCP\Files\Node;
class WatcherConnector {
diff --git a/lib/private/PreviewManager.php b/lib/private/PreviewManager.php
index 621c45f28c5..45b1529648b 100644
--- a/lib/private/PreviewManager.php
+++ b/lib/private/PreviewManager.php
@@ -24,6 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC;
use OC\Preview\Generator;
@@ -149,34 +150,6 @@ class PreviewManager implements IPreview {
}
/**
- * return a preview of a file
- *
- * @param string $file The path to the file where you want a thumbnail from
- * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image
- * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image
- * @param boolean $scaleUp Scale smaller images up to the thumbnail size or not. Might look ugly
- * @return \OCP\IImage
- * @deprecated 11 Use getPreview
- */
- public function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false) {
- try {
- $userRoot = $this->rootFolder->getUserFolder($this->userId)->getParent();
- $node = $userRoot->get($file);
- if (!($file instanceof File)) {
- throw new NotFoundException();
- }
-
- $preview = $this->getPreview($node, $maxX, $maxY);
- } catch (\Exception $e) {
- return new \OC_Image();
- }
-
- $previewImage = new \OC_Image();
- $previewImage->loadFromData($preview->getContent());
- return $previewImage;
- }
-
- /**
* Returns a preview of a file
*
* The cache is searched first and if nothing usable was found then a preview is
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 35e6856e429..2b6080ca985 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -42,7 +42,7 @@ use OC\Repair\NC13\AddLogRotateJob;
use OC\Repair\NC14\AddPreviewBackgroundCleanupJob;
use OC\Repair\NC16\AddClenupLoginFlowV2BackgroundJob;
use OC\Repair\NC16\CleanupCardDAVPhotoCache;
-use OC\Repair\NC16\RemoveCypressFiles;
+use OC\Repair\NC16\ClearCollectionsAccessCache;
use OC\Repair\NC17\SetEnterpriseLogo;
use OC\Repair\NC17\SwitchUpdateChannel;
use OC\Repair\OldGroupMembershipShares;
@@ -56,6 +56,7 @@ use OC\Template\JSCombiner;
use OC\Template\SCSSCacher;
use OCP\AppFramework\QueryException;
use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\Collaboration\Resources\IManager;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -150,7 +151,7 @@ class Repair implements IOutput {
new CleanupCardDAVPhotoCache(\OC::$server->getConfig(), \OC::$server->getAppDataDir('dav-photocache'), \OC::$server->getLogger()),
new AddClenupLoginFlowV2BackgroundJob(\OC::$server->getJobList()),
new RemoveLinkShares(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig(), \OC::$server->getGroupManager(), \OC::$server->getNotificationManager(), \OC::$server->query(ITimeFactory::class)),
- \OC::$server->query(RemoveCypressFiles::class),
+ new ClearCollectionsAccessCache(\OC::$server->getConfig(), \OC::$server->query(IManager::class)),
\OC::$server->query(SwitchUpdateChannel::class),
\OC::$server->query(SetEnterpriseLogo::class),
];
diff --git a/lib/private/Repair/AddCleanupUpdaterBackupsJob.php b/lib/private/Repair/AddCleanupUpdaterBackupsJob.php
index 1574e665fb6..cf35bc1fda5 100644
--- a/lib/private/Repair/AddCleanupUpdaterBackupsJob.php
+++ b/lib/private/Repair/AddCleanupUpdaterBackupsJob.php
@@ -45,4 +45,3 @@ class AddCleanupUpdaterBackupsJob implements IRepairStep {
$this->jobList->add(BackgroundCleanupUpdaterBackupsJob::class);
}
}
-
diff --git a/lib/private/Repair/ClearFrontendCaches.php b/lib/private/Repair/ClearFrontendCaches.php
index 22add525adb..90fdaf6b70f 100644
--- a/lib/private/Repair/ClearFrontendCaches.php
+++ b/lib/private/Repair/ClearFrontendCaches.php
@@ -23,11 +23,11 @@
namespace OC\Repair;
+use OC\Template\JSCombiner;
+use OC\Template\SCSSCacher;
use OCP\ICacheFactory;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
-use OC\Template\JSCombiner;
-use OC\Template\SCSSCacher;
class ClearFrontendCaches implements IRepairStep {
diff --git a/lib/private/Repair/Collation.php b/lib/private/Repair/Collation.php
index f2cc9373176..a7a53720db5 100644
--- a/lib/private/Repair/Collation.php
+++ b/lib/private/Repair/Collation.php
@@ -151,4 +151,3 @@ class Collation implements IRepairStep {
return array_keys($result);
}
}
-
diff --git a/lib/private/Repair/MoveUpdaterStepFile.php b/lib/private/Repair/MoveUpdaterStepFile.php
index feb8a291282..adeabea9672 100644
--- a/lib/private/Repair/MoveUpdaterStepFile.php
+++ b/lib/private/Repair/MoveUpdaterStepFile.php
@@ -77,4 +77,3 @@ class MoveUpdaterStepFile implements IRepairStep {
}
}
}
-
diff --git a/lib/private/Repair/NC11/FixMountStorages.php b/lib/private/Repair/NC11/FixMountStorages.php
index d57a356dff9..c3c239d11ba 100644
--- a/lib/private/Repair/NC11/FixMountStorages.php
+++ b/lib/private/Repair/NC11/FixMountStorages.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Repair\NC11;
use OCP\DB\QueryBuilder\IQueryBuilder;
diff --git a/lib/private/Repair/NC13/AddLogRotateJob.php b/lib/private/Repair/NC13/AddLogRotateJob.php
index c65ea47f02b..0d258aa3779 100644
--- a/lib/private/Repair/NC13/AddLogRotateJob.php
+++ b/lib/private/Repair/NC13/AddLogRotateJob.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Repair\NC13;
use OC\Log\Rotate;
diff --git a/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php b/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
index b58fabcba50..7bef59a9d37 100644
--- a/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
+++ b/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Repair\NC14;
use OC\Preview\BackgroundCleanupJob;
diff --git a/lib/private/Repair/NC16/ClearCollectionsAccessCache.php b/lib/private/Repair/NC16/ClearCollectionsAccessCache.php
new file mode 100644
index 00000000000..7945fffb822
--- /dev/null
+++ b/lib/private/Repair/NC16/ClearCollectionsAccessCache.php
@@ -0,0 +1,58 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
+ *
+ * @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\Repair\NC16;
+
+use OC\Collaboration\Resources\Manager;
+use OCP\Collaboration\Resources\IManager;
+use OCP\IConfig;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class ClearCollectionsAccessCache implements IRepairStep {
+
+ /** @var IConfig */
+ private $config;
+
+ /** @var IManager|Manager */
+ private $manager;
+
+ public function __construct(IConfig $config, IManager $manager) {
+ $this->config = $config;
+ $this->manager = $manager;
+ }
+
+ public function getName(): string {
+ return 'Clear access cache of projects';
+ }
+
+ private function shouldRun(): bool {
+ $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0.0');
+ return version_compare($versionFromBeforeUpdate, '17.0.0.3', '<=');
+ }
+
+ public function run(IOutput $output): void {
+ if ($this->shouldRun()) {
+ $this->manager->invalidateAccessCacheForAllCollections();
+ }
+ }
+}
diff --git a/lib/private/Repair/NC16/RemoveCypressFiles.php b/lib/private/Repair/NC16/RemoveCypressFiles.php
deleted file mode 100644
index 4b6108d0232..00000000000
--- a/lib/private/Repair/NC16/RemoveCypressFiles.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-declare(strict_types=1);
-/**
- * @copyright Copyright (c) 2019, Morris Jobke <hey@morrisjobke.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OC\Repair\NC16;
-
-use OC\IntegrityCheck\Checker;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-/**
- * Class CleanupCypressFiles
- *
- * This repair step removes "cypress" files and folder created by viewer app in 16.0.1
- *
- * See https://github.com/nextcloud/server/issues/16229 for more details.
- *
- * @deprecated - can be removed in 18 because this is the first version where no migration from 16 can happen
- */
-class RemoveCypressFiles implements IRepairStep {
-
- /** @var Checker $checker */
- private $checker;
-
- private $pathToViewerApp = __DIR__ . '/../../../../apps/viewer';
-
- public function getName(): string {
- return 'Cleanup cypress files from viewer app';
- }
-
- public function __construct(Checker $checker) {
- $this->checker = $checker;
- }
-
- public function run(IOutput $output): void {
- $file = $this->pathToViewerApp . '/cypress.json';
- if (file_exists($file)) {
- unlink($file);
- }
-
- $dir = $this->pathToViewerApp . '/cypress';
- if (is_dir($dir)) {
- $files = new \RecursiveIteratorIterator(
- new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS),
- \RecursiveIteratorIterator::CHILD_FIRST
- );
-
- foreach ($files as $fileInfo) {
- /** @var \SplFileInfo $fileInfo */
- if ($fileInfo->isLink()) {
- unlink($fileInfo->getPathname());
- } else if ($fileInfo->isDir()) {
- rmdir($fileInfo->getRealPath());
- } else {
- unlink($fileInfo->getRealPath());
- }
- }
- rmdir($dir);
- }
-
- // re-run the instance verification
- $this->checker->runInstanceVerification();
- }
-}
diff --git a/lib/private/Repair/NC17/SwitchUpdateChannel.php b/lib/private/Repair/NC17/SwitchUpdateChannel.php
index cfa72d86b1e..8a2850080a6 100644
--- a/lib/private/Repair/NC17/SwitchUpdateChannel.php
+++ b/lib/private/Repair/NC17/SwitchUpdateChannel.php
@@ -26,6 +26,7 @@ use OCP\IConfig;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use OCP\Support\Subscription\IRegistry;
+
/**
* @deprecated - can be removed in 18
*/
diff --git a/lib/private/Repair/Owncloud/DropAccountTermsTable.php b/lib/private/Repair/Owncloud/DropAccountTermsTable.php
index 0b1b64c3a3a..9c18ff809ae 100644
--- a/lib/private/Repair/Owncloud/DropAccountTermsTable.php
+++ b/lib/private/Repair/Owncloud/DropAccountTermsTable.php
@@ -57,4 +57,3 @@ class DropAccountTermsTable implements IRepairStep {
$this->db->dropTable('account_terms');
}
}
-
diff --git a/lib/private/Repair/Owncloud/SaveAccountsTableData.php b/lib/private/Repair/Owncloud/SaveAccountsTableData.php
index f62f8b56b26..13f618b6747 100644
--- a/lib/private/Repair/Owncloud/SaveAccountsTableData.php
+++ b/lib/private/Repair/Owncloud/SaveAccountsTableData.php
@@ -189,4 +189,3 @@ class SaveAccountsTableData implements IRepairStep {
}
}
-
diff --git a/lib/private/Repair/SqliteAutoincrement.php b/lib/private/Repair/SqliteAutoincrement.php
index 814f955dc70..93f9961d565 100644
--- a/lib/private/Repair/SqliteAutoincrement.php
+++ b/lib/private/Repair/SqliteAutoincrement.php
@@ -24,10 +24,10 @@
namespace OC\Repair;
use Doctrine\DBAL\Platforms\SqlitePlatform;
-use Doctrine\DBAL\Schema\SchemaException;
+use Doctrine\DBAL\Schema\ColumnDiff;
use Doctrine\DBAL\Schema\SchemaDiff;
+use Doctrine\DBAL\Schema\SchemaException;
use Doctrine\DBAL\Schema\TableDiff;
-use Doctrine\DBAL\Schema\ColumnDiff;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
@@ -98,4 +98,3 @@ class SqliteAutoincrement implements IRepairStep {
$this->connection->commit();
}
}
-
diff --git a/lib/private/Route/CachingRouter.php b/lib/private/Route/CachingRouter.php
index cb1b98d77e6..a37bbf5b701 100644
--- a/lib/private/Route/CachingRouter.php
+++ b/lib/private/Route/CachingRouter.php
@@ -58,7 +58,9 @@ class CachingRouter extends Router {
return $cachedKey;
} else {
$url = parent::generate($name, $parameters, $absolute);
- $this->cache->set($key, $url, 3600);
+ if ($url) {
+ $this->cache->set($key, $url, 3600);
+ }
return $url;
}
}
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index 1839b356424..125c5ff2742 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -33,16 +33,16 @@
namespace OC\Route;
+use OCP\AppFramework\App;
use OCP\ILogger;
use OCP\Route\IRouter;
-use OCP\AppFramework\App;
use OCP\Util;
+use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\Generator\UrlGenerator;
+use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
class Router implements IRouter {
/** @var RouteCollection[] */
@@ -162,7 +162,6 @@ class Router implements IRouter {
if (!isset($this->loadedApps['core'])) {
$this->loadedApps['core'] = true;
$this->useCollection('root');
- require_once __DIR__ . '/../../../settings/routes.php';
require_once __DIR__ . '/../../../core/routes.php';
// Also add the OCS collection
@@ -258,7 +257,9 @@ class Router implements IRouter {
$app = \OC_App::cleanAppId($app);
\OC::$REQUESTEDAPP = $app;
$this->loadRoutes($app);
- } else if (substr($url, 0, 6) === '/core/' or substr($url, 0, 10) === '/settings/') {
+ } else if (substr($url, 0, 10) === '/settings/') {
+ $this->loadRoutes('settings');
+ } else if (substr($url, 0, 6) === '/core/') {
\OC::$REQUESTEDAPP = $url;
if (!\OC::$server->getConfig()->getSystemValueBool('maintenance') && !Util::needUpgrade()) {
\OC_App::loadApps();
@@ -370,7 +371,7 @@ class Router implements IRouter {
$applicationClassName = $appNameSpace . '\\AppInfo\\Application';
if (class_exists($applicationClassName)) {
- $application = new $applicationClassName();
+ $application = \OC::$server->query($applicationClassName);
} else {
$application = new App($appName);
}
diff --git a/lib/private/Search.php b/lib/private/Search.php
index 0cfdf24ac97..2ef7eeda4ad 100644
--- a/lib/private/Search.php
+++ b/lib/private/Search.php
@@ -25,9 +25,9 @@
*/
namespace OC;
+use OCP\ISearch;
use OCP\Search\PagedProvider;
use OCP\Search\Provider;
-use OCP\ISearch;
/**
* Provide an interface to all search providers
diff --git a/lib/private/Security/Bruteforce/Capabilities.php b/lib/private/Security/Bruteforce/Capabilities.php
index 3df0458c694..d6e08c399ed 100644
--- a/lib/private/Security/Bruteforce/Capabilities.php
+++ b/lib/private/Security/Bruteforce/Capabilities.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Security\Bruteforce;
use OCP\Capabilities\IPublicCapability;
diff --git a/lib/private/Security/CSP/ContentSecurityPolicy.php b/lib/private/Security/CSP/ContentSecurityPolicy.php
index 9d1d043a165..c912b820eba 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicy.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicy.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Security\CSP;
/**
diff --git a/lib/private/Security/CredentialsManager.php b/lib/private/Security/CredentialsManager.php
index 0ac9b30c6ce..7c58cb3b1c9 100644
--- a/lib/private/Security/CredentialsManager.php
+++ b/lib/private/Security/CredentialsManager.php
@@ -22,9 +22,9 @@
namespace OC\Security;
-use OCP\Security\ICrypto;
use OCP\IDBConnection;
use OCP\Security\ICredentialsManager;
+use OCP\Security\ICrypto;
/**
* Store and retrieve credentials for external services
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index 876f159950c..2eb20d41456 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -24,14 +24,13 @@ declare(strict_types=1);
*
*/
-
namespace OC\Security;
-use phpseclib\Crypt\AES;
-use phpseclib\Crypt\Hash;
+use OCP\IConfig;
use OCP\Security\ICrypto;
use OCP\Security\ISecureRandom;
-use OCP\IConfig;
+use phpseclib\Crypt\AES;
+use phpseclib\Crypt\Hash;
/**
* Class Crypto provides a high-level encryption layer using AES-CBC. If no key has been provided
diff --git a/lib/private/Security/IdentityProof/Manager.php b/lib/private/Security/IdentityProof/Manager.php
index fb27f04d873..6db5d4ab2eb 100644
--- a/lib/private/Security/IdentityProof/Manager.php
+++ b/lib/private/Security/IdentityProof/Manager.php
@@ -29,6 +29,7 @@ namespace OC\Security\IdentityProof;
use OC\Files\AppData\Factory;
use OCP\Files\IAppData;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\IUser;
use OCP\Security\ICrypto;
@@ -39,19 +40,18 @@ class Manager {
private $crypto;
/** @var IConfig */
private $config;
+ /** @var ILogger */
+ private $logger;
- /**
- * @param Factory $appDataFactory
- * @param ICrypto $crypto
- * @param IConfig $config
- */
public function __construct(Factory $appDataFactory,
ICrypto $crypto,
- IConfig $config
+ IConfig $config,
+ ILogger $logger
) {
$this->appData = $appDataFactory->get('identityproof');
$this->crypto = $crypto;
$this->config = $config;
+ $this->logger = $logger;
}
/**
@@ -59,6 +59,7 @@ class Manager {
* In a separate function for unit testing purposes.
*
* @return array [$publicKey, $privateKey]
+ * @throws \RuntimeException
*/
protected function generateKeyPair(): array {
$config = [
@@ -68,7 +69,16 @@ class Manager {
// Generate new key
$res = openssl_pkey_new($config);
- openssl_pkey_export($res, $privateKey);
+
+ if ($res === false) {
+ $this->logOpensslError();
+ throw new \RuntimeException('OpenSSL reported a problem');
+ }
+
+ if (openssl_pkey_export($res, $privateKey, null, $config) === false) {
+ $this->logOpensslError();
+ throw new \RuntimeException('OpenSSL reported a problem');
+ }
// Extract the public key from $res to $pubKey
$publicKey = openssl_pkey_get_details($res);
@@ -83,6 +93,7 @@ class Manager {
*
* @param string $id key id
* @return Key
+ * @throws \RuntimeException
*/
protected function generateKey(string $id): Key {
list($publicKey, $privateKey) = $this->generateKeyPair();
@@ -105,6 +116,7 @@ class Manager {
*
* @param string $id
* @return Key
+ * @throws \RuntimeException
*/
protected function retrieveKey(string $id): Key {
try {
@@ -124,6 +136,7 @@ class Manager {
*
* @param IUser $user
* @return Key
+ * @throws \RuntimeException
*/
public function getKey(IUser $user): Key {
$uid = $user->getUID();
@@ -144,5 +157,13 @@ class Manager {
return $this->retrieveKey('system-' . $instanceId);
}
+ private function logOpensslError(): void {
+ $errors = [];
+ while ($error = openssl_error_string()) {
+ $errors[] = $error;
+ }
+ $this->logger->critical('Something is wrong with your openssl setup: ' . implode(', ', $errors));
+ }
+
}
diff --git a/lib/private/Security/RateLimiting/Limiter.php b/lib/private/Security/RateLimiting/Limiter.php
index 5267497f86f..c272120a898 100644
--- a/lib/private/Security/RateLimiting/Limiter.php
+++ b/lib/private/Security/RateLimiting/Limiter.php
@@ -28,9 +28,7 @@ use OC\Security\Normalizer\IpAddress;
use OC\Security\RateLimiting\Backend\IBackend;
use OC\Security\RateLimiting\Exception\RateLimitExceededException;
use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\IRequest;
use OCP\IUser;
-use OCP\IUserSession;
class Limiter {
/** @var IBackend */
@@ -39,14 +37,10 @@ class Limiter {
private $timeFactory;
/**
- * @param IUserSession $userSession
- * @param IRequest $request
* @param ITimeFactory $timeFactory
* @param IBackend $backend
*/
- public function __construct(IUserSession $userSession,
- IRequest $request,
- ITimeFactory $timeFactory,
+ public function __construct(ITimeFactory $timeFactory,
IBackend $backend) {
$this->backend = $backend;
$this->timeFactory = $timeFactory;
@@ -62,7 +56,7 @@ class Limiter {
private function register(string $methodIdentifier,
string $userIdentifier,
int $period,
- int $limit) {
+ int $limit): void {
$existingAttempts = $this->backend->getAttempts($methodIdentifier, $userIdentifier, $period);
if ($existingAttempts >= $limit) {
throw new RateLimitExceededException();
@@ -83,7 +77,7 @@ class Limiter {
public function registerAnonRequest(string $identifier,
int $anonLimit,
int $anonPeriod,
- string $ip) {
+ string $ip): void {
$ipSubnet = (new IpAddress($ip))->getSubnet();
$anonHashIdentifier = hash('sha512', 'anon::' . $identifier . $ipSubnet);
@@ -102,7 +96,7 @@ class Limiter {
public function registerUserRequest(string $identifier,
int $userLimit,
int $userPeriod,
- IUser $user) {
+ IUser $user): void {
$userHashIdentifier = hash('sha512', 'user::' . $identifier . $user->getUID());
$this->register($identifier, $userHashIdentifier, $userPeriod, $userLimit);
}
diff --git a/lib/private/Security/TrustedDomainHelper.php b/lib/private/Security/TrustedDomainHelper.php
index 5237767d8ea..22a75158294 100644
--- a/lib/private/Security/TrustedDomainHelper.php
+++ b/lib/private/Security/TrustedDomainHelper.php
@@ -90,7 +90,7 @@ class TrustedDomainHelper {
if (gettype($trusted) !== 'string') {
break;
}
- $regex = '/^' . implode('[-\.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))) . '$/i';
if (preg_match($regex, $domain) || preg_match($regex, $domainWithPort)) {
return true;
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index f919e0b4efb..fa2a521b6b1 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -199,6 +199,8 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerAlias(\OCP\Contacts\IManager::class, \OC\ContactsManager::class);
$this->registerAlias('ContactsManager', \OCP\Contacts\IManager::class);
+ $this->registerAlias(\OCP\DirectEditing\IManager::class, \OC\DirectEditing\Manager::class);
+
$this->registerAlias(IActionFactory::class, ActionFactory::class);
@@ -298,7 +300,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->getLogger(),
$this->getUserManager()
);
- $connector = new HookConnector($root, $view);
+ $connector = new HookConnector($root, $view, $c->getEventDispatcher());
$connector->viewToNode();
$previewConnector = new \OC\Preview\WatcherConnector($root, $c->getSystemConfig());
@@ -315,9 +317,6 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias('LazyRootFolder', \OCP\Files\IRootFolder::class);
- $this->registerService(\OC\User\Manager::class, function (Server $c) {
- return new \OC\User\Manager($c->getConfig(), $c->getEventDispatcher());
- });
$this->registerAlias('UserManager', \OC\User\Manager::class);
$this->registerAlias(\OCP\IUserManager::class, \OC\User\Manager::class);
@@ -597,14 +596,6 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias('Search', \OCP\ISearch::class);
- $this->registerService(\OC\Security\RateLimiting\Limiter::class, function (Server $c) {
- return new \OC\Security\RateLimiting\Limiter(
- $this->getUserSession(),
- $this->getRequest(),
- new \OC\AppFramework\Utility\TimeFactory(),
- $c->query(\OC\Security\RateLimiting\Backend\IBackend::class)
- );
- });
$this->registerService(\OC\Security\RateLimiting\Backend\IBackend::class, function ($c) {
return new \OC\Security\RateLimiting\Backend\MemoryCache(
$this->getMemCacheFactory(),
@@ -1194,14 +1185,6 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerAlias(IDashboardManager::class, DashboardManager::class);
$this->registerAlias(IFullTextSearchManager::class, FullTextSearchManager::class);
- $this->registerService(\OC\Security\IdentityProof\Manager::class, function (Server $c) {
- return new \OC\Security\IdentityProof\Manager(
- $c->query(\OC\Files\AppData\Factory::class),
- $c->getCrypto(),
- $c->getConfig()
- );
- });
-
$this->registerAlias(ISubAdmin::class, SubAdmin::class);
$this->registerAlias(IInitialStateService::class, InitialStateService::class);
diff --git a/lib/private/ServerContainer.php b/lib/private/ServerContainer.php
index b67b4d1e701..704d207223b 100644
--- a/lib/private/ServerContainer.php
+++ b/lib/private/ServerContainer.php
@@ -100,8 +100,9 @@ class ServerContainer extends SimpleContainer {
if (!isset($this->hasNoAppContainer[$namespace])) {
$applicationClassName = 'OCA\\' . $sensitiveNamespace . '\\AppInfo\\Application';
if (class_exists($applicationClassName)) {
- new $applicationClassName();
+ $app = new $applicationClassName();
if (isset($this->appContainers[$namespace])) {
+ $this->appContainers[$namespace]->offsetSet($applicationClassName, $app);
return $this->appContainers[$namespace];
}
}
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php
index 7e3edfa9df0..1205cb81525 100644
--- a/lib/private/Settings/Manager.php
+++ b/lib/private/Settings/Manager.php
@@ -30,15 +30,16 @@
namespace OC\Settings;
use Closure;
+use OC\Settings\Personal\PersonalInfo;
use OCP\AppFramework\QueryException;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IServerContainer;
use OCP\IURLGenerator;
use OCP\L10N\IFactory;
-use OCP\Settings\ISettings;
use OCP\Settings\IManager;
use OCP\Settings\ISection;
+use OCP\Settings\ISettings;
use OCP\Settings\ISubAdminSettings;
class Manager implements IManager {
@@ -245,32 +246,32 @@ class Manager implements IManager {
if ($section === 'overview') {
/** @var ISettings $form */
- $form = $this->container->query(Admin\Overview::class);
+ $form = $this->container->query(\OCA\Settings\Admin\Overview::class);
if ($filter === null || $filter($form)) {
$forms[$form->getPriority()] = [$form];
}
}
if ($section === 'server') {
/** @var ISettings $form */
- $form = $this->container->query(Admin\Server::class);
+ $form = $this->container->query(\OCA\Settings\Admin\Server::class);
if ($filter === null || $filter($form)) {
$forms[$form->getPriority()] = [$form];
}
- $form = $this->container->query(Admin\Mail::class);
+ $form = $this->container->query(\OCA\Settings\Admin\Mail::class);
if ($filter === null || $filter($form)) {
$forms[$form->getPriority()] = [$form];
}
}
if ($section === 'security') {
/** @var ISettings $form */
- $form = $this->container->query(Admin\Security::class);
+ $form = $this->container->query(\OCA\Settings\Admin\Security::class);
if ($filter === null || $filter($form)) {
$forms[$form->getPriority()] = [$form];
}
}
if ($section === 'sharing') {
/** @var ISettings $form */
- $form = $this->container->query(Admin\Sharing::class);
+ $form = $this->container->query(\OCA\Settings\Admin\Sharing::class);
if ($filter === null || $filter($form)) {
$forms[$form->getPriority()] = [$form];
}
@@ -289,19 +290,23 @@ class Manager implements IManager {
if ($section === 'personal-info') {
/** @var ISettings $form */
- $form = $this->container->query(Personal\PersonalInfo::class);
+ $form = $this->container->query(\OCA\Settings\Personal\PersonalInfo::class);
$forms[$form->getPriority()] = [$form];
- $form = new Personal\ServerDevNotice();
+ $form = new \OCA\Settings\Personal\ServerDevNotice();
$forms[$form->getPriority()] = [$form];
}
if ($section === 'security') {
/** @var ISettings $form */
- $form = $this->container->query(Personal\Security::class);
+ $form = $this->container->query(\OCA\Settings\Personal\Security::class);
+ $forms[$form->getPriority()] = [$form];
+
+ /** @var ISettings $form */
+ $form = $this->container->query(\OCA\Settings\Personal\Security\Authtokens::class);
$forms[$form->getPriority()] = [$form];
}
if ($section === 'additional') {
/** @var ISettings $form */
- $form = $this->container->query(Personal\Additional::class);
+ $form = $this->container->query(\OCA\Settings\Personal\Additional::class);
$forms[$form->getPriority()] = [$form];
}
@@ -343,7 +348,7 @@ class Manager implements IManager {
}
$sections = [
- 0 => [new Section('personal-info', $this->l->t('Personal info'), 0, $this->url->imagePath('core', 'actions/info.svg'))],
+ 0 => [new Section('personal-info', $this->l->t('Personal info'), 0, $this->url->imagePath('core', 'actions/user.svg'))],
5 => [new Section('security', $this->l->t('Security'), 0, $this->url->imagePath('settings', 'password.svg'))],
15 => [new Section('sync-clients', $this->l->t('Mobile & desktop'), 0, $this->url->imagePath('core', 'clients/phone.svg'))],
];
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index e360319c5b6..32a85264f57 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -49,7 +49,9 @@ use OC\Authentication\Token\DefaultTokenCleanupJob;
use OC\Authentication\Token\DefaultTokenProvider;
use OC\Log\Rotate;
use OC\Preview\BackgroundCleanupJob;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Defaults;
+use OCP\IGroup;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IUser;
@@ -80,14 +82,15 @@ class Setup {
* @param ISecureRandom $random
* @param Installer $installer
*/
- public function __construct(SystemConfig $config,
- IniGetWrapper $iniWrapper,
- IL10N $l10n,
- Defaults $defaults,
- ILogger $logger,
- ISecureRandom $random,
- Installer $installer
- ) {
+ public function __construct(
+ SystemConfig $config,
+ IniGetWrapper $iniWrapper,
+ IL10N $l10n,
+ Defaults $defaults,
+ ILogger $logger,
+ ISecureRandom $random,
+ Installer $installer
+ ) {
$this->config = $config;
$this->iniWrapper = $iniWrapper;
$this->l10n = $l10n;
@@ -100,13 +103,14 @@ class Setup {
static protected $dbSetupClasses = [
'mysql' => \OC\Setup\MySQL::class,
'pgsql' => \OC\Setup\PostgreSQL::class,
- 'oci' => \OC\Setup\OCI::class,
+ 'oci' => \OC\Setup\OCI::class,
'sqlite' => \OC\Setup\Sqlite::class,
'sqlite3' => \OC\Setup\Sqlite::class,
];
/**
* Wrapper around the "class_exists" PHP function to be able to mock it
+ *
* @param string $name
* @return bool
*/
@@ -116,6 +120,7 @@ class Setup {
/**
* Wrapper around the "is_callable" PHP function to be able to mock it
+ *
* @param string $name
* @return bool
*/
@@ -141,7 +146,7 @@ class Setup {
*/
public function getSupportedDatabases($allowAllDatabases = false) {
$availableDatabases = [
- 'sqlite' => [
+ 'sqlite' => [
'type' => 'pdo',
'call' => 'sqlite',
'name' => 'SQLite',
@@ -168,24 +173,24 @@ class Setup {
$configuredDatabases = $this->config->getValue('supportedDatabases',
['sqlite', 'mysql', 'pgsql']);
}
- if(!is_array($configuredDatabases)) {
+ if (!is_array($configuredDatabases)) {
throw new Exception('Supported databases are not properly configured.');
}
$supportedDatabases = array();
- foreach($configuredDatabases as $database) {
- if(array_key_exists($database, $availableDatabases)) {
+ foreach ($configuredDatabases as $database) {
+ if (array_key_exists($database, $availableDatabases)) {
$working = false;
$type = $availableDatabases[$database]['type'];
$call = $availableDatabases[$database]['call'];
if ($type === 'function') {
$working = $this->is_callable($call);
- } elseif($type === 'pdo') {
+ } elseif ($type === 'pdo') {
$working = in_array($call, $this->getAvailableDbDriversForPdo(), true);
}
- if($working) {
+ if ($working) {
$supportedDatabases[$database] = $availableDatabases[$database]['name'];
}
}
@@ -204,14 +209,14 @@ class Setup {
public function getSystemInfo($allowAllDatabases = false) {
$databases = $this->getSupportedDatabases($allowAllDatabases);
- $dataDir = $this->config->getValue('datadirectory', \OC::$SERVERROOT.'/data');
+ $dataDir = $this->config->getValue('datadirectory', \OC::$SERVERROOT . '/data');
$errors = [];
// Create data directory to test whether the .htaccess works
// Notice that this is not necessarily the same data directory as the one
// that will effectively be used.
- if(!file_exists($dataDir)) {
+ if (!file_exists($dataDir)) {
@mkdir($dataDir);
}
$htAccessWorking = true;
@@ -242,7 +247,7 @@ class Setup {
];
}
- if($this->iniWrapper->getString('open_basedir') !== '' && PHP_INT_SIZE === 4) {
+ if ($this->iniWrapper->getString('open_basedir') !== '' && PHP_INT_SIZE === 4) {
$errors[] = [
'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. ' .
@@ -275,14 +280,14 @@ class Setup {
$error = array();
$dbType = $options['dbtype'];
- if(empty($options['adminlogin'])) {
+ if (empty($options['adminlogin'])) {
$error[] = $l->t('Set an admin username.');
}
- if(empty($options['adminpass'])) {
+ if (empty($options['adminpass'])) {
$error[] = $l->t('Set an admin password.');
}
- if(empty($options['directory'])) {
- $options['directory'] = \OC::$SERVERROOT."/data";
+ if (empty($options['directory'])) {
+ $options['directory'] = \OC::$SERVERROOT . "/data";
}
if (!isset(self::$dbSetupClasses[$dbType])) {
@@ -310,8 +315,8 @@ class Setup {
$request = \OC::$server->getRequest();
//no errors, good
- if(isset($options['trusted_domains'])
- && is_array($options['trusted_domains'])) {
+ if (isset($options['trusted_domains'])
+ && is_array($options['trusted_domains'])) {
$trustedDomains = $options['trusted_domains'];
} else {
$trustedDomains = [$request->getInsecureServerHost()];
@@ -329,12 +334,12 @@ class Setup {
//write the config file
$newConfigValues = [
- 'passwordsalt' => $salt,
- 'secret' => $secret,
- 'trusted_domains' => $trustedDomains,
- 'datadirectory' => $dataDir,
- 'dbtype' => $dbType,
- 'version' => implode('.', \OCP\Util::getVersion()),
+ 'passwordsalt' => $salt,
+ 'secret' => $secret,
+ 'trusted_domains' => $trustedDomains,
+ 'datadirectory' => $dataDir,
+ 'dbtype' => $dbType,
+ 'version' => implode('.', \OCP\Util::getVersion()),
];
if ($this->config->getValue('overwrite.cli.url', null) === null) {
@@ -363,13 +368,13 @@ class Setup {
}
//create the user and group
- $user = null;
+ $user = null;
try {
$user = \OC::$server->getUserManager()->createUser($username, $password);
if (!$user) {
$error[] = "User <$username> could not be created.";
}
- } catch(Exception $exception) {
+ } catch (Exception $exception) {
$error[] = $exception->getMessage();
}
@@ -379,22 +384,25 @@ class Setup {
$config->setAppValue('core', 'lastupdatedat', microtime(true));
$config->setAppValue('core', 'vendor', $this->getVendor());
- $group =\OC::$server->getGroupManager()->createGroup('admin');
- $group->addUser($user);
+ $group = \OC::$server->getGroupManager()->createGroup('admin');
+ if ($group instanceof IGroup) {
+ $group->addUser($user);
+ }
// Install shipped apps and specified app bundles
Installer::installShippedApps();
$bundleFetcher = new BundleFetcher(\OC::$server->getL10N('lib'));
$defaultInstallationBundles = $bundleFetcher->getDefaultInstallationBundle();
- foreach($defaultInstallationBundles as $bundle) {
+ foreach ($defaultInstallationBundles as $bundle) {
try {
$this->installer->installAppBundle($bundle);
- } catch (Exception $e) {}
+ } catch (Exception $e) {
+ }
}
// create empty file in data dir, so we can later find
// out that this is indeed an ownCloud data directory
- file_put_contents($config->getSystemValue('datadirectory', \OC::$SERVERROOT.'/data').'/.ocdata', '');
+ file_put_contents($config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/.ocdata', '');
// Update .htaccess files
self::updateHtaccess();
@@ -414,6 +422,9 @@ class Setup {
$userSession->login($username, $password);
$userSession->createSessionToken($request, $userSession->getUser()->getUID(), $username, $password);
+ $session = $userSession->getSession();
+ $session->set('last-password-confirm', \OC::$server->query(ITimeFactory::class)->getTime());
+
// Set email for admin
if (!empty($options['adminemail'])) {
$config->setUserValue($user->getUID(), 'settings', 'email', $options['adminemail']);
@@ -434,7 +445,7 @@ class Setup {
* @return string Absolute path to htaccess
*/
private function pathToHtaccess() {
- return \OC::$SERVERROOT.'/.htaccess';
+ return \OC::$SERVERROOT . '/.htaccess';
}
/**
@@ -499,7 +510,7 @@ class Setup {
// Add rewrite rules if the RewriteBase is configured
$rewriteBase = $config->getValue('htaccess.RewriteBase', '');
- if($rewriteBase !== '') {
+ if ($rewriteBase !== '') {
$content .= "\n<IfModule mod_rewrite.c>";
$content .= "\n Options -MultiViews";
$content .= "\n RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]";
@@ -532,7 +543,7 @@ class Setup {
if ($content !== '') {
//suppress errors in case we don't have permissions for it
- return (bool) @file_put_contents($setupHelper->pathToHtaccess(), $htaccessContent.$content . "\n");
+ return (bool)@file_put_contents($setupHelper->pathToHtaccess(), $htaccessContent . $content . "\n");
}
return false;
@@ -582,6 +593,6 @@ class Setup {
// this should really be a JSON file
require \OC::$SERVERROOT . '/version.php';
/** @var string $vendor */
- return (string) $vendor;
+ return (string)$vendor;
}
}
diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php
index 903f8b6e386..459848d1c79 100644
--- a/lib/private/Setup/AbstractDatabase.php
+++ b/lib/private/Setup/AbstractDatabase.php
@@ -26,6 +26,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Setup;
use OC\DB\ConnectionFactory;
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
index eb4fedefd4b..8a38f889c74 100644
--- a/lib/private/Setup/MySQL.php
+++ b/lib/private/Setup/MySQL.php
@@ -27,6 +27,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Setup;
use OC\DB\MySqlTools;
@@ -100,9 +101,9 @@ class MySQL extends AbstractDatabase {
$password = $this->dbPassword;
// we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one,
// the anonymous user would take precedence when there is one.
- $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
+ $query = "CREATE USER '$name'@'localhost' IDENTIFIED WITH mysql_native_password BY '$password'";
$connection->executeUpdate($query);
- $query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
+ $query = "CREATE USER '$name'@'%' IDENTIFIED WITH mysql_native_password BY '$password'";
$connection->executeUpdate($query);
}
catch (\Exception $ex){
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index 6d1b5ca2927..020c2e555d9 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -24,6 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Setup;
use OC\DatabaseException;
diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php
index 72dc5cd43be..a76208655a3 100644
--- a/lib/private/Share/Constants.php
+++ b/lib/private/Share/Constants.php
@@ -27,18 +27,47 @@
namespace OC\Share;
+use OCP\Share\IShare;
+
class Constants {
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_USER instead
+ */
const SHARE_TYPE_USER = 0;
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_GROUP instead
+ */
const SHARE_TYPE_GROUP = 1;
// const SHARE_TYPE_USERGROUP = 2; // Internal type used by DefaultShareProvider
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_LINK instead
+ */
const SHARE_TYPE_LINK = 3;
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_EMAIL instead
+ */
const SHARE_TYPE_EMAIL = 4;
const SHARE_TYPE_CONTACT = 5; // ToDo Check if it is still in use otherwise remove it
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_REMOTE instead
+ */
const SHARE_TYPE_REMOTE = 6;
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_CIRCLE instead
+ */
const SHARE_TYPE_CIRCLE = 7;
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_GUEST instead
+ */
const SHARE_TYPE_GUEST = 8;
+ /**
+ * @deprecated 17.0.0 - use IShare::REMOTE_GROUP instead
+ */
const SHARE_TYPE_REMOTE_GROUP = 9;
+ /**
+ * @deprecated 17.0.0 - use IShare::TYPE_ROOM instead
+ */
const SHARE_TYPE_ROOM = 10;
// const SHARE_TYPE_USERROOM = 11; // Internal type used by RoomShareProvider
diff --git a/lib/private/Share/SearchResultSorter.php b/lib/private/Share/SearchResultSorter.php
index da63dd33b8e..8418a1e4119 100644
--- a/lib/private/Share/SearchResultSorter.php
+++ b/lib/private/Share/SearchResultSorter.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share;
use OCP\ILogger;
@@ -73,4 +74,3 @@ class SearchResultSorter {
}
}
}
-
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index 86101707dbf..64d59334aad 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -84,9 +84,6 @@ class Share extends Constants {
'collectionOf' => $collectionOf,
'supportedFileExtensions' => $supportedFileExtensions
);
- if(count(self::$backendTypes) === 1) {
- Util::addScript('core', 'dist/share_backend');
- }
return true;
}
\OCP\Util::writeLog('OCP\Share',
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index aea50dfcdb6..152e5d55394 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -27,29 +27,30 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20;
use OC\Files\Cache\Cache;
+use OC\Share20\Exception\BackendError;
+use OC\Share20\Exception\InvalidShare;
+use OC\Share20\Exception\ProviderException;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Defaults;
use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
+use OCP\Files\Node;
+use OCP\IDBConnection;
+use OCP\IGroup;
+use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUser;
+use OCP\IUserManager;
use OCP\Mail\IMailer;
+use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IShare;
use OCP\Share\IShareHelper;
use OCP\Share\IShareProvider;
-use OC\Share20\Exception\InvalidShare;
-use OC\Share20\Exception\ProviderException;
-use OCP\Share\Exceptions\ShareNotFound;
-use OC\Share20\Exception\BackendError;
-use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IGroup;
-use OCP\IGroupManager;
-use OCP\IUserManager;
-use OCP\Files\IRootFolder;
-use OCP\IDBConnection;
-use OCP\Files\Node;
/**
* Class DefaultShareProvider
@@ -142,9 +143,20 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
//Set the UID of the user we share with
$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
+ $qb->setValue('accepted', $qb->createNamedParameter(IShare::STATUS_PENDING));
+
+ //If an expiration date is set store it
+ if ($share->getExpirationDate() !== null) {
+ $qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
+ }
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
//Set the GID of the group we share with
$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
+
+ //If an expiration date is set store it
+ if ($share->getExpirationDate() !== null) {
+ $qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
+ }
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
//set label for public link
$qb->setValue('label', $qb->createNamedParameter($share->getLabel()));
@@ -252,6 +264,7 @@ class DefaultShareProvider implements IShareProvider {
->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATE))
->set('note', $qb->createNamedParameter($share->getNote()))
+ ->set('accepted', $qb->createNamedParameter($share->getStatus()))
->execute();
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$qb = $this->dbConn->getQueryBuilder();
@@ -319,6 +332,72 @@ class DefaultShareProvider implements IShareProvider {
}
/**
+ * Accept a share.
+ *
+ * @param IShare $share
+ * @param string $recipient
+ * @return IShare The share object
+ * @since 9.0.0
+ */
+ public function acceptShare(IShare $share, string $recipient): IShare {
+ if ($share->getShareType() === IShare::TYPE_GROUP) {
+ $group = $this->groupManager->get($share->getSharedWith());
+ $user = $this->userManager->get($recipient);
+
+ if (is_null($group)) {
+ throw new ProviderException('Group "' . $share->getSharedWith() . '" does not exist');
+ }
+
+ if (!$group->inGroup($user)) {
+ throw new ProviderException('Recipient not in receiving group');
+ }
+
+ // Try to fetch user specific share
+ $qb = $this->dbConn->getQueryBuilder();
+ $stmt = $qb->select('*')
+ ->from('share')
+ ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP)))
+ ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
+ ->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
+ ->execute();
+
+ $data = $stmt->fetch();
+ $stmt->closeCursor();
+
+ /*
+ * Check if there already is a user specific group share.
+ * If there is update it (if required).
+ */
+ if ($data === false) {
+ $id = $this->createUserSpecificGroupShare($share, $recipient);
+ } else {
+ $id = $data['id'];
+ }
+
+ } else if ($share->getShareType() === IShare::TYPE_USER) {
+ if ($share->getSharedWith() !== $recipient) {
+ throw new ProviderException('Recipient does not match');
+ }
+
+ $id = $share->getId();
+ } else {
+ throw new ProviderException('Invalid shareType');
+ }
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->update('share')
+ ->set('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED))
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
+ ->execute();
+
+ return $share;
+ }
+
+ /**
* Get all children of this share
* FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
*
@@ -382,13 +461,13 @@ class DefaultShareProvider implements IShareProvider {
* Unshare a share from the recipient. If this is a group share
* this means we need a special entry in the share db.
*
- * @param \OCP\Share\IShare $share
+ * @param IShare $share
* @param string $recipient UserId of recipient
* @throws BackendError
* @throws ProviderException
*/
- public function deleteFromSelf(\OCP\Share\IShare $share, $recipient) {
- if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ public function deleteFromSelf(IShare $share, $recipient) {
+ if ($share->getShareType() === IShare::TYPE_GROUP) {
$group = $this->groupManager->get($share->getSharedWith());
$user = $this->userManager->get($recipient);
@@ -421,37 +500,23 @@ class DefaultShareProvider implements IShareProvider {
* If there is update it (if required).
*/
if ($data === false) {
- $qb = $this->dbConn->getQueryBuilder();
-
- $type = $share->getNodeType();
-
- //Insert new share
- $qb->insert('share')
- ->values([
- 'share_type' => $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP),
- 'share_with' => $qb->createNamedParameter($recipient),
- 'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
- 'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
- 'parent' => $qb->createNamedParameter($share->getId()),
- 'item_type' => $qb->createNamedParameter($type),
- 'item_source' => $qb->createNamedParameter($share->getNodeId()),
- 'file_source' => $qb->createNamedParameter($share->getNodeId()),
- 'file_target' => $qb->createNamedParameter($share->getTarget()),
- 'permissions' => $qb->createNamedParameter(0),
- 'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
- ])->execute();
-
- } else if ($data['permissions'] !== 0) {
+ $id = $this->createUserSpecificGroupShare($share, $recipient);
+ $permissions = $share->getPermissions();
+ } else {
+ $permissions = $data['permissions'];
+ $id = $data['id'];
+ }
+ if ($permissions !== 0) {
// Update existing usergroup share
$qb = $this->dbConn->getQueryBuilder();
$qb->update('share')
->set('permissions', $qb->createNamedParameter(0))
- ->where($qb->expr()->eq('id', $qb->createNamedParameter($data['id'])))
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
->execute();
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
+ } else if ($share->getShareType() === IShare::TYPE_USER) {
if ($share->getSharedWith() !== $recipient) {
throw new ProviderException('Recipient does not match');
@@ -464,6 +529,28 @@ class DefaultShareProvider implements IShareProvider {
}
}
+ protected function createUserSpecificGroupShare(IShare $share, string $recipient): int {
+ $type = $share->getNodeType();
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP),
+ 'share_with' => $qb->createNamedParameter($recipient),
+ 'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
+ 'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
+ 'parent' => $qb->createNamedParameter($share->getId()),
+ 'item_type' => $qb->createNamedParameter($type),
+ 'item_source' => $qb->createNamedParameter($share->getNodeId()),
+ 'file_source' => $qb->createNamedParameter($share->getNodeId()),
+ 'file_target' => $qb->createNamedParameter($share->getTarget()),
+ 'permissions' => $qb->createNamedParameter($share->getPermissions()),
+ 'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
+ ])->execute();
+
+ return $qb->getLastInsertId();
+ }
+
/**
* @inheritdoc
*
@@ -932,6 +1019,7 @@ class DefaultShareProvider implements IShareProvider {
->setTarget($data['file_target'])
->setNote($data['note'])
->setMailSend((bool)$data['mail_send'])
+ ->setStatus((int)$data['accepted'])
->setLabel($data['label']);
$shareTime = new \DateTime();
@@ -1020,6 +1108,7 @@ class DefaultShareProvider implements IShareProvider {
while($data = $stmt->fetch()) {
$shareMap[$data['parent']]->setPermissions((int)$data['permissions']);
+ $shareMap[$data['parent']]->setStatus((int)$data['accepted']);
$shareMap[$data['parent']]->setTarget($data['file_target']);
$shareMap[$data['parent']]->setParent($data['parent']);
}
@@ -1382,4 +1471,30 @@ class DefaultShareProvider implements IShareProvider {
}
}
+
+ public function getAllShares(): iterable {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->select('*')
+ ->from('share')
+ ->where(
+ $qb->expr()->orX(
+ $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share\IShare::TYPE_USER)),
+ $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share\IShare::TYPE_GROUP)),
+ $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share\IShare::TYPE_LINK))
+ )
+ );
+
+ $cursor = $qb->execute();
+ while($data = $cursor->fetch()) {
+ try {
+ $share = $this->createShare($data);
+ } catch (InvalidShare $e) {
+ continue;
+ }
+
+ yield $share;
+ }
+ $cursor->closeCursor();
+ }
}
diff --git a/lib/private/Share20/Exception/BackendError.php b/lib/private/Share20/Exception/BackendError.php
index 10dae34cc34..f270dd53147 100644
--- a/lib/private/Share20/Exception/BackendError.php
+++ b/lib/private/Share20/Exception/BackendError.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20\Exception;
class BackendError extends \Exception {
diff --git a/lib/private/Share20/Exception/InvalidShare.php b/lib/private/Share20/Exception/InvalidShare.php
index 1e7337b0418..f4a88ebc188 100644
--- a/lib/private/Share20/Exception/InvalidShare.php
+++ b/lib/private/Share20/Exception/InvalidShare.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20\Exception;
class InvalidShare extends \Exception {
diff --git a/lib/private/Share20/Exception/ProviderException.php b/lib/private/Share20/Exception/ProviderException.php
index f7ada6d48fd..89bd28a60eb 100644
--- a/lib/private/Share20/Exception/ProviderException.php
+++ b/lib/private/Share20/Exception/ProviderException.php
@@ -19,10 +19,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20\Exception;
class ProviderException extends \Exception {
}
-
diff --git a/lib/private/Share20/Hooks.php b/lib/private/Share20/Hooks.php
index 4519b709a8c..4318fd57cf1 100644
--- a/lib/private/Share20/Hooks.php
+++ b/lib/private/Share20/Hooks.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20;
class Hooks {
diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php
index 4cc748aa418..4554ab64a14 100644
--- a/lib/private/Share20/LegacyHooks.php
+++ b/lib/private/Share20/LegacyHooks.php
@@ -26,10 +26,10 @@
namespace OC\Share20;
use OCP\Files\File;
+use OCP\Share;
use OCP\Share\IShare;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
-use OCP\Share;
class LegacyHooks {
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 2a2c64cf383..db9c704871d 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -55,17 +55,18 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\L10N\IFactory;
use OCP\Mail\IMailer;
+use OCP\Security\Events\ValidatePasswordPolicyEvent;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
+use OCP\Share;
use OCP\Share\Exceptions\GenericShareException;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
use OCP\Share\IProviderFactory;
use OCP\Share\IShare;
+use OCP\Share\IShareProvider;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
-use OCP\Share\IShareProvider;
-use OCP\Share;
/**
* This class is the communication hub for all sharing related operations.
@@ -191,8 +192,7 @@ class Manager implements IManager {
// Let others verify the password
try {
- $event = new GenericEvent($password);
- $this->eventDispatcher->dispatch('OCP\PasswordPolicy::validate', $event);
+ $this->eventDispatcher->dispatch(new ValidatePasswordPolicyEvent($password));
} catch (HintException $e) {
throw new \Exception($e->getHint());
}
@@ -302,6 +302,7 @@ class Manager implements IManager {
/* Check if this is an incoming share */
$incomingShares = $this->getSharedWith($share->getSharedBy(), Share::SHARE_TYPE_USER, $userMountPoint, -1, 0);
$incomingShares = array_merge($incomingShares, $this->getSharedWith($share->getSharedBy(), Share::SHARE_TYPE_GROUP, $userMountPoint, -1, 0));
+ $incomingShares = array_merge($incomingShares, $this->getSharedWith($share->getSharedBy(), Share::SHARE_TYPE_CIRCLE, $userMountPoint, -1, 0));
$incomingShares = array_merge($incomingShares, $this->getSharedWith($share->getSharedBy(), Share::SHARE_TYPE_ROOM, $userMountPoint, -1, 0));
/** @var \OCP\Share\IShare[] $incomingShares */
@@ -359,6 +360,77 @@ class Manager implements IManager {
* @throws \InvalidArgumentException
* @throws \Exception
*/
+ protected function validateExpirationDateInternal(\OCP\Share\IShare $share) {
+ $expirationDate = $share->getExpirationDate();
+
+ if ($expirationDate !== null) {
+ //Make sure the expiration date is a date
+ $expirationDate->setTime(0, 0, 0);
+
+ $date = new \DateTime();
+ $date->setTime(0, 0, 0);
+ if ($date >= $expirationDate) {
+ $message = $this->l->t('Expiration date is in the past');
+ throw new GenericShareException($message, $message, 404);
+ }
+ }
+
+ // If expiredate is empty set a default one if there is a default
+ $fullId = null;
+ try {
+ $fullId = $share->getFullId();
+ } catch (\UnexpectedValueException $e) {
+ // This is a new share
+ }
+
+ if ($fullId === null && $expirationDate === null && $this->shareApiInternalDefaultExpireDate()) {
+ $expirationDate = new \DateTime();
+ $expirationDate->setTime(0,0,0);
+ $expirationDate->add(new \DateInterval('P'.$this->shareApiInternalDefaultExpireDays().'D'));
+ }
+
+ // If we enforce the expiration date check that is does not exceed
+ if ($this->shareApiInternalDefaultExpireDateEnforced()) {
+ if ($expirationDate === null) {
+ throw new \InvalidArgumentException('Expiration date is enforced');
+ }
+
+ $date = new \DateTime();
+ $date->setTime(0, 0, 0);
+ $date->add(new \DateInterval('P' . $this->shareApiInternalDefaultExpireDays() . 'D'));
+ if ($date < $expirationDate) {
+ $message = $this->l->t('Can’t set expiration date more than %s days in the future', [$this->shareApiInternalDefaultExpireDays()]);
+ throw new GenericShareException($message, $message, 404);
+ }
+ }
+
+ $accepted = true;
+ $message = '';
+ \OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
+ 'expirationDate' => &$expirationDate,
+ 'accepted' => &$accepted,
+ 'message' => &$message,
+ 'passwordSet' => $share->getPassword() !== null,
+ ]);
+
+ if (!$accepted) {
+ throw new \Exception($message);
+ }
+
+ $share->setExpirationDate($expirationDate);
+
+ return $share;
+ }
+
+ /**
+ * Validate if the expiration date fits the system settings
+ *
+ * @param \OCP\Share\IShare $share The share to validate the expiration date of
+ * @return \OCP\Share\IShare The modified share object
+ * @throws GenericShareException
+ * @throws \InvalidArgumentException
+ * @throws \Exception
+ */
protected function validateExpirationDate(\OCP\Share\IShare $share) {
$expirationDate = $share->getExpirationDate();
@@ -635,8 +707,16 @@ class Manager implements IManager {
//Verify share type
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$this->userCreateChecks($share);
+
+ //Verify the expiration date
+ $share = $this->validateExpirationDateInternal($share);
+
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
+
+ //Verify the expiration date
+ $share = $this->validateExpirationDateInternal($share);
+
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
$this->setLinkParent($share);
@@ -652,7 +732,7 @@ class Manager implements IManager {
);
//Verify the expiration date
- $this->validateExpirationDate($share);
+ $share = $this->validateExpirationDate($share);
//Verify the password
$this->verifyPassword($share->getPassword());
@@ -849,8 +929,20 @@ class Manager implements IManager {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$this->userCreateChecks($share);
+
+ if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
+ //Verify the expiration date
+ $this->validateExpirationDate($share);
+ $expirationDateUpdated = true;
+ }
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
+
+ if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
+ //Verify the expiration date
+ $this->validateExpirationDate($share);
+ $expirationDateUpdated = true;
+ }
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
@@ -928,6 +1020,30 @@ class Manager implements IManager {
}
/**
+ * Accept a share.
+ *
+ * @param IShare $share
+ * @param string $recipientId
+ * @return IShare The share object
+ * @throws \InvalidArgumentException
+ * @since 9.0.0
+ */
+ public function acceptShare(IShare $share, string $recipientId): IShare {
+ [$providerId, ] = $this->splitFullId($share->getFullId());
+ $provider = $this->factory->getProvider($providerId);
+
+ if (!method_exists($provider, 'acceptShare')) {
+ // TODO FIX ME
+ throw new \InvalidArgumentException('Share provider does not support accepting');
+ }
+ $provider->acceptShare($share, $recipientId);
+ $event = new GenericEvent($share);
+ $this->eventDispatcher->dispatch('OCP\Share::postAcceptShare', $event);
+
+ return $share;
+ }
+
+ /**
* Updates the password of the given share if it is not the same as the
* password of the original share.
*
@@ -1313,8 +1429,7 @@ class Manager implements IManager {
}
protected function checkExpireDate($share) {
- if ($share->getExpirationDate() !== null &&
- $share->getExpirationDate() <= new \DateTime()) {
+ if ($share->isExpired()) {
$this->deleteShare($share);
throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
}
@@ -1551,7 +1666,7 @@ class Manager implements IManager {
}
/**
- * Is default expire date enabled
+ * Is default link expire date enabled
*
* @return bool
*/
@@ -1560,7 +1675,7 @@ class Manager implements IManager {
}
/**
- * Is default expire date enforced
+ * Is default link expire date enforced
*`
* @return bool
*/
@@ -1569,9 +1684,9 @@ class Manager implements IManager {
$this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes';
}
+
/**
- * Number of default expire days
- *shareApiLinkAllowPublicUpload
+ * Number of default link expire days
* @return int
*/
public function shareApiLinkDefaultExpireDays() {
@@ -1579,6 +1694,34 @@ class Manager implements IManager {
}
/**
+ * Is default internal expire date enabled
+ *
+ * @return bool
+ */
+ public function shareApiInternalDefaultExpireDate(): bool {
+ return $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
+ }
+
+ /**
+ * Is default expire date enforced
+ *`
+ * @return bool
+ */
+ public function shareApiInternalDefaultExpireDateEnforced(): bool {
+ return $this->shareApiInternalDefaultExpireDate() &&
+ $this->config->getAppValue('core', 'shareapi_enforce_internal_expire_date', 'no') === 'yes';
+ }
+
+
+ /**
+ * Number of default expire days
+ * @return int
+ */
+ public function shareApiInternalDefaultExpireDays(): int {
+ return (int)$this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
+ }
+
+ /**
* Allow public upload on link shares
*
* @return bool
@@ -1672,4 +1815,11 @@ class Manager implements IManager {
return true;
}
+ public function getAllShares(): iterable {
+ $providers = $this->factory->getAllProviders();
+
+ foreach ($providers as $provider) {
+ yield from $provider->getAllShares();
+ }
+ }
}
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 6cb6c082df5..dc77a9fbcbb 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -26,9 +26,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20;
use OC\CapabilitiesManager;
+use OC\Share20\Exception\ProviderException;
use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCA\FederatedFileSharing\Notifications;
@@ -37,9 +39,8 @@ use OCA\FederatedFileSharing\TokenHandler;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
use OCP\Defaults;
-use OCP\Share\IProviderFactory;
-use OC\Share20\Exception\ProviderException;
use OCP\IServerContainer;
+use OCP\Share\IProviderFactory;
/**
* Class ProviderFactory
@@ -60,7 +61,7 @@ class ProviderFactory implements IProviderFactory {
private $shareByCircleProvider = null;
/** @var bool */
private $circlesAreNotAvailable = false;
- /** @var \OCA\Spreed\Share\RoomShareProvider */
+ /** @var \OCA\Talk\Share\RoomShareProvider */
private $roomShareProvider = null;
/**
@@ -112,7 +113,7 @@ class ProviderFactory implements IProviderFactory {
/*
* TODO: add factory to federated sharing app
*/
- $l = $this->serverContainer->getL10N('federatedfilessharing');
+ $l = $this->serverContainer->getL10N('federatedfilesharing');
$addressHandler = new AddressHandler(
$this->serverContainer->getURLGenerator(),
$l,
@@ -239,7 +240,7 @@ class ProviderFactory implements IProviderFactory {
}
try {
- $this->roomShareProvider = $this->serverContainer->query('\OCA\Spreed\Share\RoomShareProvider');
+ $this->roomShareProvider = $this->serverContainer->query('\OCA\Talk\Share\RoomShareProvider');
} catch (\OCP\AppFramework\QueryException $e) {
return null;
}
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index f9b548c1adf..3ac324b40ce 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\Share20;
use OCP\Files\Cache\ICacheEntry;
@@ -58,6 +59,8 @@ class Share implements \OCP\Share\IShare {
private $shareOwner;
/** @var int */
private $permissions;
+ /** @var int */
+ private $status;
/** @var string */
private $note = '';
/** @var \DateTime */
@@ -321,6 +324,21 @@ class Share implements \OCP\Share\IShare {
/**
* @inheritdoc
*/
+ public function setStatus(int $status): IShare {
+ $this->status = $status;
+ return $this;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getStatus(): int {
+ return $this->status;
+ }
+
+ /**
+ * @inheritdoc
+ */
public function setNote($note) {
$this->note = $note;
return $this;
@@ -371,6 +389,14 @@ class Share implements \OCP\Share\IShare {
/**
* @inheritdoc
*/
+ public function isExpired() {
+ return $this->getExpirationDate() !== null &&
+ $this->getExpirationDate() <= new \DateTime();
+ }
+
+ /**
+ * @inheritdoc
+ */
public function setSharedBy($sharedBy) {
if (!is_string($sharedBy)) {
throw new \InvalidArgumentException();
diff --git a/lib/private/Share20/ShareHelper.php b/lib/private/Share20/ShareHelper.php
index 5f692c6a62b..f94546d19ed 100644
--- a/lib/private/Share20/ShareHelper.php
+++ b/lib/private/Share20/ShareHelper.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Share20;
use OCP\Files\InvalidPathException;
diff --git a/lib/private/SubAdmin.php b/lib/private/SubAdmin.php
index f79a0b1ae5a..ec959e0e4ea 100644
--- a/lib/private/SubAdmin.php
+++ b/lib/private/SubAdmin.php
@@ -30,11 +30,11 @@ namespace OC;
use OC\Hooks\PublicEmitter;
use OCP\Group\ISubAdmin;
-use OCP\IUser;
-use OCP\IUserManager;
+use OCP\IDBConnection;
use OCP\IGroup;
use OCP\IGroupManager;
-use OCP\IDBConnection;
+use OCP\IUser;
+use OCP\IUserManager;
class SubAdmin extends PublicEmitter implements ISubAdmin {
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 444e5842437..64cc805f9f3 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -64,13 +64,24 @@ class SystemConfig {
],
'objectstore' => [
'arguments' => [
- 'password' => true,
+ // Legacy Swift (https://github.com/nextcloud/server/pull/17696#discussion_r341302207)
'options' => [
'credentials' => [
'key' => true,
'secret' => true,
]
- ]
+ ],
+ // S3
+ 'key' => true,
+ 'secret' => true,
+ // Swift v2
+ 'username' => true,
+ 'password' => true,
+ // Swift v3
+ 'user' => [
+ 'name' => true,
+ 'password' => true,
+ ],
],
],
];
diff --git a/lib/private/SystemTag/ManagerFactory.php b/lib/private/SystemTag/ManagerFactory.php
index 839a819a04a..ab17ae69ac8 100644
--- a/lib/private/SystemTag/ManagerFactory.php
+++ b/lib/private/SystemTag/ManagerFactory.php
@@ -21,6 +21,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC\SystemTag;
use OCP\IServerContainer;
diff --git a/lib/private/SystemTag/SystemTagManager.php b/lib/private/SystemTag/SystemTagManager.php
index 055b744e5c3..85a12da67f2 100644
--- a/lib/private/SystemTag/SystemTagManager.php
+++ b/lib/private/SystemTag/SystemTagManager.php
@@ -29,14 +29,14 @@ namespace OC\SystemTag;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
+use OCP\IGroupManager;
+use OCP\IUser;
+use OCP\SystemTag\ISystemTag;
use OCP\SystemTag\ISystemTagManager;
use OCP\SystemTag\ManagerEvent;
use OCP\SystemTag\TagAlreadyExistsException;
use OCP\SystemTag\TagNotFoundException;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use OCP\IGroupManager;
-use OCP\SystemTag\ISystemTag;
-use OCP\IUser;
/**
* Manager class for system tags
diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php
index f8a1b03cd01..f1f39fd7d0a 100644
--- a/lib/private/SystemTag/SystemTagObjectMapper.php
+++ b/lib/private/SystemTag/SystemTagObjectMapper.php
@@ -154,20 +154,26 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper {
'systemtagid' => $query->createParameter('tagid'),
]);
+ $tagsAssigned = [];
foreach ($tagIds as $tagId) {
try {
$query->setParameter('tagid', $tagId);
$query->execute();
+ $tagsAssigned[] = $tagId;
} catch (UniqueConstraintViolationException $e) {
// ignore existing relations
}
}
+ if (empty($tagsAssigned)) {
+ return;
+ }
+
$this->dispatcher->dispatch(MapperEvent::EVENT_ASSIGN, new MapperEvent(
MapperEvent::EVENT_ASSIGN,
$objectType,
$objId,
- $tagIds
+ $tagsAssigned
));
}
diff --git a/lib/private/Tagging/Tag.php b/lib/private/Tagging/Tag.php
index de5ab0a485c..f20f22955a3 100644
--- a/lib/private/Tagging/Tag.php
+++ b/lib/private/Tagging/Tag.php
@@ -23,7 +23,7 @@
namespace OC\Tagging;
-use \OCP\AppFramework\Db\Entity;
+use OCP\AppFramework\Db\Entity;
/**
* Class to represent a tag.
diff --git a/lib/private/Tagging/TagMapper.php b/lib/private/Tagging/TagMapper.php
index e5ca41f69e3..49361ff181a 100644
--- a/lib/private/Tagging/TagMapper.php
+++ b/lib/private/Tagging/TagMapper.php
@@ -24,9 +24,9 @@
namespace OC\Tagging;
-use \OCP\AppFramework\Db\Mapper,
- \OCP\AppFramework\Db\DoesNotExistException,
- \OCP\IDBConnection;
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\AppFramework\Db\Mapper;
+use OCP\IDBConnection;
/**
* Mapper for Tag entity
@@ -76,4 +76,3 @@ class TagMapper extends Mapper {
return true;
}
}
-
diff --git a/lib/private/TempManager.php b/lib/private/TempManager.php
index 6e8683d2f7c..479c41ff7fd 100644
--- a/lib/private/TempManager.php
+++ b/lib/private/TempManager.php
@@ -30,8 +30,8 @@
namespace OC;
-use OCP\ILogger;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\ITempManager;
class TempManager implements ITempManager {
diff --git a/lib/private/Template/IconsCacher.php b/lib/private/Template/IconsCacher.php
index 3c0a270d3f2..75175ad6373 100644
--- a/lib/private/Template/IconsCacher.php
+++ b/lib/private/Template/IconsCacher.php
@@ -24,14 +24,14 @@ declare (strict_types = 1);
namespace OC\Template;
+use OC\Files\AppData\Factory;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
-use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\Files\SimpleFS\ISimpleFile;
+use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\ILogger;
use OCP\IURLGenerator;
-use OC\Files\AppData\Factory;
class IconsCacher {
diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php
index 93683753899..224a7a9b213 100644
--- a/lib/private/Template/JSCombiner.php
+++ b/lib/private/Template/JSCombiner.php
@@ -22,14 +22,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Template;
use OC\SystemConfig;
-use OCP\ICache;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFolder;
+use OCP\ICache;
use OCP\ICacheFactory;
use OCP\ILogger;
use OCP\IURLGenerator;
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index 15e2fd76c48..065bf2545e0 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -25,6 +25,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OC\Template;
use bantu\IniGetWrapper\IniGetWrapper;
@@ -148,6 +149,13 @@ class JSConfigHelper {
}
$outgoingServer2serverShareEnabled = $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
+ $defaultInternalExpireDateEnabled = $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
+ $defaultInternalExpireDate = $defaultInternalExpireDateEnforced = null;
+ if ($defaultInternalExpireDateEnabled) {
+ $defaultInternalExpireDate = (int) $this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
+ $defaultInternalExpireDateEnforced = $this->config->getAppValue('core', 'shareapi_internal_enforce_expire_date', 'no') === 'yes';
+ }
+
$countOfDataLocation = 0;
$dataLocation = str_replace(\OC::$SERVERROOT .'/', '', $this->config->getSystemValue('datadirectory', ''), $countOfDataLocation);
if($countOfDataLocation !== 1 || !$this->groupManager->isAdmin($uid)) {
@@ -254,7 +262,10 @@ class JSConfigHelper {
'resharingAllowed' => \OC\Share\Share::isResharingAllowed(),
'remoteShareAllowed' => $outgoingServer2serverShareEnabled,
'federatedCloudShareDoc' => $this->urlGenerator->linkToDocs('user-sharing-federated'),
- 'allowGroupSharing' => \OC::$server->getShareManager()->allowGroupSharing()
+ 'allowGroupSharing' => \OC::$server->getShareManager()->allowGroupSharing(),
+ 'defaultInternalExpireDateEnabled' => $defaultInternalExpireDateEnabled,
+ 'defaultInternalExpireDate' => $defaultInternalExpireDate,
+ 'defaultInternalExpireDateEnforced' => $defaultInternalExpireDateEnforced,
]
]),
"_theme" => json_encode([
diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php
index 9bdaca3a674..df90fca9817 100644
--- a/lib/private/Template/SCSSCacher.php
+++ b/lib/private/Template/SCSSCacher.php
@@ -32,7 +32,9 @@ use Leafo\ScssPhp\Compiler;
use Leafo\ScssPhp\Exception\ParserException;
use Leafo\ScssPhp\Formatter\Crunched;
use Leafo\ScssPhp\Formatter\Expanded;
+use OC\Files\AppData\Factory;
use OC\Memcache\NullCache;
+use OC\Template\IconsCacher;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
@@ -45,8 +47,6 @@ use OCP\IConfig;
use OCP\ILogger;
use OCP\IMemcache;
use OCP\IURLGenerator;
-use OC\Files\AppData\Factory;
-use OC\Template\IconsCacher;
class SCSSCacher {
@@ -117,7 +117,7 @@ class SCSSCacher {
$this->serverRoot = $serverRoot;
$this->cacheFactory = $cacheFactory;
$this->depsCache = $cacheFactory->createDistributed('SCSS-deps-' . md5($this->urlGenerator->getBaseUrl()));
- $this->isCachedCache = $cacheFactory->createLocal('SCSS-cached-' . md5($this->urlGenerator->getBaseUrl()));
+ $this->isCachedCache = $cacheFactory->createDistributed('SCSS-cached-' . md5($this->urlGenerator->getBaseUrl()));
$lockingCache = $cacheFactory->createDistributed('SCSS-locks-' . md5($this->urlGenerator->getBaseUrl()));
if (!($lockingCache instanceof IMemcache)) {
$lockingCache = new NullCache();
@@ -269,8 +269,8 @@ class SCSSCacher {
private function variablesChanged(): bool {
$injectedVariables = $this->getInjectedVariables();
if ($this->config->getAppValue('core', 'theming.variables') !== md5($injectedVariables)) {
- $this->resetCache();
$this->config->setAppValue('core', 'theming.variables', md5($injectedVariables));
+ $this->resetCache();
return true;
}
return false;
@@ -364,6 +364,9 @@ class SCSSCacher {
* We need to regenerate all files when variables change
*/
public function resetCache() {
+ if (!$this->lockingCache->add('resetCache', 'locked!', 120)) {
+ return;
+ }
$this->injectedVariables = null;
// do not clear locks
@@ -381,6 +384,7 @@ class SCSSCacher {
}
}
$this->logger->debug('SCSSCacher: css cache cleared!');
+ $this->lockingCache->remove('resetCache');
}
/**
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index f23ec97119f..e476ddd275d 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -36,13 +36,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OC;
+use OC\AppFramework\Http\Request;
use OC\Template\JSCombiner;
use OC\Template\JSConfigHelper;
use OC\Template\SCSSCacher;
use OCP\Defaults;
-use OC\AppFramework\Http\Request;
+use OCP\Support\Subscription\IRegistry;
class TemplateLayout extends \OC_Template {
@@ -113,6 +115,8 @@ class TemplateLayout extends \OC_Template {
$this->assign('themingInvertMenu', $util->invertTextColor(\OC::$server->getThemingDefaults()->getColorPrimary()));
} catch (\OCP\AppFramework\QueryException $e) {
$this->assign('themingInvertMenu', false);
+ } catch (\OCP\AutoloadNotAllowedException $e) {
+ $this->assign('themingInvertMenu', false);
}
} else if ($renderAs === 'error') {
@@ -132,7 +136,14 @@ class TemplateLayout extends \OC_Template {
parent::__construct('core', 'layout.public');
$this->assign( 'appid', $appId );
$this->assign('bodyid', 'body-public');
- $this->assign('showSimpleSignUpLink', $this->config->getSystemValue('simpleSignUpLink.shown', true) !== false);
+
+ /** @var IRegistry $subscription */
+ $subscription = \OC::$server->query(IRegistry::class);
+ $showSimpleSignup = $this->config->getSystemValueBool('simpleSignUpLink.shown', true);
+ if ($showSimpleSignup && $subscription->delegateHasValidSubscription()) {
+ $showSimpleSignup = false;
+ }
+ $this->assign('showSimpleSignUpLink', $showSimpleSignup);
} else {
parent::__construct('core', 'layout.base');
@@ -140,7 +151,6 @@ class TemplateLayout extends \OC_Template {
// Send the language and the locale to our layouts
$lang = \OC::$server->getL10NFactory()->findLanguage();
$locale = \OC::$server->getL10NFactory()->findLocale($lang);
- $localeLang = \OC::$server->getL10NFactory()->findLanguageFromLocale('lib', $locale);
$lang = str_replace('_', '-', $lang);
$this->assign('language', $lang);
@@ -162,7 +172,7 @@ class TemplateLayout extends \OC_Template {
if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') {
if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) {
$jsConfigHelper = new JSConfigHelper(
- \OC::$server->getL10N('lib', $localeLang ?: $lang),
+ \OC::$server->getL10N('lib'),
\OC::$server->query(Defaults::class),
\OC::$server->getAppManager(),
\OC::$server->getSession(),
diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php
index 167690f3a6e..1fb69031f03 100644
--- a/lib/private/URLGenerator.php
+++ b/lib/private/URLGenerator.php
@@ -94,8 +94,9 @@ class URLGenerator implements IURLGenerator {
public function linkToOCSRouteAbsolute(string $routeName, array $arguments = []): string {
$route = \OC::$server->getRouter()->generate('ocs.'.$routeName, $arguments, false);
- if (strpos($route, '/index.php') === 0) {
- $route = substr($route, 10);
+ $indexPhpPos = strpos($route, '/index.php/');
+ if ($indexPhpPos !== false) {
+ $route = substr($route, $indexPhpPos + 10);
}
$route = substr($route, 7);
diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php
index 3cbd7061fe0..079ffe7ff44 100644
--- a/lib/private/Updater/VersionCheck.php
+++ b/lib/private/Updater/VersionCheck.php
@@ -33,7 +33,7 @@ class VersionCheck {
/** @var IClientService */
private $clientService;
-
+
/** @var IConfig */
private $config;
@@ -54,6 +54,11 @@ class VersionCheck {
* @return array|bool
*/
public function check() {
+ // If this server is set to have no internet connection this is all not needed
+ if (!$this->config->getSystemValueBool('has_internet_connection', true)) {
+ return false;
+ }
+
// Look up the cache - it is invalidated all 30 minutes
if (((int)$this->config->getAppValue('core', 'lastupdatedat') + 1800) > time()) {
return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true);
@@ -122,4 +127,3 @@ class VersionCheck {
return $response->getBody();
}
}
-
diff --git a/lib/private/User/Backend.php b/lib/private/User/Backend.php
index 30ed962555d..2b9b4d27ea3 100644
--- a/lib/private/User/Backend.php
+++ b/lib/private/User/Backend.php
@@ -23,7 +23,7 @@
namespace OC\User;
-use \OCP\UserInterface;
+use OCP\UserInterface;
/**
* Abstract base class for user management. Provides methods for querying backend
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index 3db96fa02e2..a4c35deb2b8 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -58,7 +58,9 @@ declare(strict_types=1);
namespace OC\User;
use OC\Cache\CappedMemoryCache;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\IDBConnection;
+use OCP\Security\Events\ValidatePasswordPolicyEvent;
use OCP\User\Backend\ABackend;
use OCP\User\Backend\ICheckPasswordBackend;
use OCP\User\Backend\ICountUsersBackend;
@@ -68,7 +70,6 @@ use OCP\User\Backend\IGetHomeBackend;
use OCP\User\Backend\IGetRealUIDBackend;
use OCP\User\Backend\ISetDisplayNameBackend;
use OCP\User\Backend\ISetPasswordBackend;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
/**
@@ -86,7 +87,7 @@ class Database extends ABackend
/** @var CappedMemoryCache */
private $cache;
- /** @var EventDispatcherInterface */
+ /** @var IEventDispatcher */
private $eventDispatcher;
/** @var IDBConnection */
@@ -98,13 +99,13 @@ class Database extends ABackend
/**
* \OC\User\Database constructor.
*
- * @param EventDispatcherInterface $eventDispatcher
+ * @param IEventDispatcher $eventDispatcher
* @param string $table
*/
public function __construct($eventDispatcher = null, $table = 'users') {
$this->cache = new CappedMemoryCache();
$this->table = $table;
- $this->eventDispatcher = $eventDispatcher ? $eventDispatcher : \OC::$server->getEventDispatcher();
+ $this->eventDispatcher = $eventDispatcher ? $eventDispatcher : \OC::$server->query(IEventDispatcher::class);
}
/**
@@ -130,8 +131,7 @@ class Database extends ABackend
$this->fixDI();
if (!$this->userExists($uid)) {
- $event = new GenericEvent($password);
- $this->eventDispatcher->dispatch('OCP\PasswordPolicy::validate', $event);
+ $this->eventDispatcher->dispatchTyped(new ValidatePasswordPolicyEvent($password));
$qb = $this->dbConn->getQueryBuilder();
$qb->insert($this->table)
@@ -199,8 +199,7 @@ class Database extends ABackend
$this->fixDI();
if ($this->userExists($uid)) {
- $event = new GenericEvent($password);
- $this->eventDispatcher->dispatch('OCP\PasswordPolicy::validate', $event);
+ $this->eventDispatcher->dispatchTyped(new ValidatePasswordPolicyEvent($password));
$hasher = \OC::$server->getHasher();
$hashedPassword = $hasher->hash($password);
@@ -259,6 +258,8 @@ class Database extends ABackend
* @return array an array of all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
+ $limit = $this->fixLimit($limit);
+
$this->fixDI();
$query = $this->dbConn->getQueryBuilder();
@@ -380,6 +381,8 @@ class Database extends ABackend
* @return string[] an array of all uids
*/
public function getUsers($search = '', $limit = null, $offset = null) {
+ $limit = $this->fixLimit($limit);
+
$users = $this->getDisplayNames($search, $limit, $offset);
$userIds = array_map(function ($uid) {
return (string)$uid;
@@ -485,5 +488,11 @@ class Database extends ABackend
return $this->cache[$uid]['uid'];
}
+ private function fixLimit($limit) {
+ if (is_int($limit) && $limit >= 0) {
+ return $limit;
+ }
+ return null;
+ }
}
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index 7f9691073c9..29cae3da79b 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -33,12 +33,15 @@ namespace OC\User;
use OC\Hooks\PublicEmitter;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IUser;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IConfig;
use OCP\IGroup;
+use OCP\IUser;
use OCP\IUserBackend;
use OCP\IUserManager;
-use OCP\IConfig;
use OCP\User\Backend\IGetRealUIDBackend;
+use OCP\User\Events\CreateUserEvent;
+use OCP\User\Events\UserCreatedEvent;
use OCP\UserInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -72,17 +75,24 @@ class Manager extends PublicEmitter implements IUserManager {
/** @var IConfig */
private $config;
+
/** @var EventDispatcherInterface */
private $dispatcher;
- public function __construct(IConfig $config, EventDispatcherInterface $dispatcher) {
+ /** @var IEventDispatcher */
+ private $eventDispatcher;
+
+ public function __construct(IConfig $config,
+ EventDispatcherInterface $oldDispatcher,
+ IEventDispatcher $eventDispatcher) {
$this->config = $config;
- $this->dispatcher = $dispatcher;
+ $this->dispatcher = $oldDispatcher;
$cachedUsers = &$this->cachedUsers;
$this->listen('\OC\User', 'postDelete', function ($user) use (&$cachedUsers) {
/** @var \OC\User\User $user */
unset($cachedUsers[$user->getUID()]);
});
+ $this->eventDispatcher = $eventDispatcher;
}
/**
@@ -349,6 +359,7 @@ class Manager extends PublicEmitter implements IUserManager {
}
$this->emit('\OC\User', 'preCreateUser', [$uid, $password]);
+ $this->eventDispatcher->dispatchTyped(new CreateUserEvent($uid, $password));
$state = $backend->createUser($uid, $password);
if($state === false) {
throw new \InvalidArgumentException($l->t('Could not create user'));
@@ -356,6 +367,7 @@ class Manager extends PublicEmitter implements IUserManager {
$user = $this->getUserObject($uid, $backend);
if ($user instanceof IUser) {
$this->emit('\OC\User', 'postCreateUser', [$user, $password]);
+ $this->eventDispatcher->dispatchTyped(new UserCreatedEvent($user, $password));
}
return $user;
}
@@ -460,11 +472,11 @@ class Manager extends PublicEmitter implements IUserManager {
->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('enabled')))
->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'), IQueryBuilder::PARAM_STR));
-
+
$result = $queryBuilder->execute();
$count = $result->fetchColumn();
$result->closeCursor();
-
+
if ($count !== false) {
$count = (int)$count;
} else {
@@ -494,7 +506,7 @@ class Manager extends PublicEmitter implements IUserManager {
$result = $queryBuilder->execute();
$count = $result->fetchColumn();
$result->closeCursor();
-
+
if ($count !== false) {
$count = (int)$count;
} else {
diff --git a/lib/private/User/NoUserException.php b/lib/private/User/NoUserException.php
index a80bf7dc54b..b72fb6a9e25 100644
--- a/lib/private/User/NoUserException.php
+++ b/lib/private/User/NoUserException.php
@@ -22,4 +22,4 @@
namespace OC\User;
-class NoUserException extends \Exception {} \ No newline at end of file
+class NoUserException extends \Exception {}
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 13519d97ef4..3b0231aea03 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -61,6 +61,7 @@ use OCP\IUserSession;
use OCP\Lockdown\ILockdownManager;
use OCP\Security\ISecureRandom;
use OCP\Session\Exceptions\SessionNotAvailableException;
+use OCP\User\Events\PostLoginEvent;
use OCP\Util;
use Symfony\Component\EventDispatcher\GenericEvent;
@@ -315,6 +316,29 @@ class Session implements IUserSession, Emitter {
}
/**
+ * @return mixed
+ */
+ public function getImpersonatingUserID(): ?string {
+
+ return $this->session->get('oldUserId');
+
+ }
+
+ public function setImpersonatingUserID(bool $useCurrentUser = true): void {
+ if ($useCurrentUser === false) {
+ $this->session->remove('oldUserId');
+ return;
+ }
+
+ $currentUser = $this->getUser();
+
+ if ($currentUser === null) {
+ throw new \OC\User\NoUserException();
+ }
+ $this->session->set('oldUserId', $currentUser->getUID());
+
+ }
+ /**
* set the token id
*
* @param int|null $token that was used to log in
@@ -375,13 +399,11 @@ class Session implements IUserSession, Emitter {
$firstTimeLogin = $user->updateLastLoginTimestamp();
}
- $postLoginEvent = new OC\User\Events\PostLoginEvent(
+ $this->dispatcher->dispatchTyped(new PostLoginEvent(
$user,
$loginDetails['password'],
$isToken
- );
- $this->dispatcher->dispatch(OC\User\Events\PostLoginEvent::class, $postLoginEvent);
-
+ ));
$this->manager->emit('\OC\User', 'postLogin', [
$user,
$loginDetails['password'],
@@ -838,7 +860,7 @@ class Session implements IUserSession, Emitter {
try {
$sessionId = $this->session->getId();
- $this->tokenProvider->renewSessionToken($oldSessionId, $sessionId);
+ $token = $this->tokenProvider->renewSessionToken($oldSessionId, $sessionId);
} catch (SessionNotAvailableException $ex) {
return false;
} catch (InvalidTokenException $ex) {
@@ -847,7 +869,6 @@ class Session implements IUserSession, Emitter {
}
$this->setMagicInCookie($user->getUID(), $newToken);
- $token = $this->tokenProvider->getToken($sessionId);
//login
$this->setUser($user);
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 12af787a5a6..96f0f38b82a 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -36,12 +36,12 @@ use OC\Files\Cache\Storage;
use OC\Hooks\Emitter;
use OC_Helper;
use OCP\IAvatarManager;
+use OCP\IConfig;
use OCP\IImage;
use OCP\IURLGenerator;
use OCP\IUser;
-use OCP\IConfig;
+use OCP\IUserBackend;
use OCP\UserInterface;
-use \OCP\IUserBackend;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index 58b617aae45..146262c3f95 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -55,6 +55,7 @@ use OC\App\Platform;
use OC\DB\MigrationService;
use OC\Installer;
use OC\Repair;
+use OC\ServerNotAvailableException;
use OCP\App\ManagerEvent;
use OCP\ILogger;
@@ -153,6 +154,9 @@ class OC_App {
try {
self::requireAppFile($app);
} catch (Throwable $ex) {
+ if($ex instanceof ServerNotAvailableException) {
+ throw $ex;
+ }
\OC::$server->getLogger()->logException($ex);
if (!\OC::$server->getAppManager()->isShipped($app)) {
// Only disable apps which are not shipped
@@ -485,6 +489,7 @@ class OC_App {
*
* @param string $appId
* @return string|false
+ * @deprecated 11.0.0 use \OC::$server->getAppManager()->getAppPath()
*/
public static function getAppPath(string $appId) {
if ($appId === null || trim($appId) === '') {
@@ -503,6 +508,7 @@ class OC_App {
*
* @param string $appId
* @return string|false
+ * @deprecated 18.0.0 use \OC::$server->getAppManager()->getAppWebPath()
*/
public static function getAppWebPath(string $appId) {
if (($dir = self::findAppInDirectories($appId)) != false) {
diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/defaults.php
index d313366abe7..8633113ba5a 100644
--- a/lib/private/legacy/defaults.php
+++ b/lib/private/legacy/defaults.php
@@ -52,7 +52,6 @@ class OC_Defaults {
private $defaultTextColorPrimary;
public function __construct() {
- $l10n = \OC::$server->getL10N('lib');
$config = \OC::$server->getConfig();
$this->defaultEntity = 'Nextcloud'; /* e.g. company name, used for footers and copyright notices */
@@ -65,7 +64,6 @@ class OC_Defaults {
$this->defaultAndroidClientUrl = $config->getSystemValue('customclient_android', 'https://play.google.com/store/apps/details?id=com.nextcloud.client');
$this->defaultDocBaseUrl = 'https://docs.nextcloud.com';
$this->defaultDocVersion = \OC_Util::getVersion()[0]; // used to generate doc links
- $this->defaultSlogan = $l10n->t('a safe home for all your data');
$this->defaultColorPrimary = '#0082c9';
$this->defaultTextColorPrimary = '#ffffff';
@@ -219,6 +217,10 @@ class OC_Defaults {
if ($this->themeExist('getSlogan')) {
return $this->theme->getSlogan();
} else {
+ if ($this->defaultSlogan === null) {
+ $l10n = \OC::$server->getL10N('lib');
+ $this->defaultSlogan = $l10n->t('a safe home for all your data');
+ }
return $this->defaultSlogan;
}
}
diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php
index 1e68dd24af0..aa3d3395443 100644
--- a/lib/private/legacy/eventsource.php
+++ b/lib/private/legacy/eventsource.php
@@ -27,7 +27,7 @@
*/
/**
- * wrapper for server side events (http://en.wikipedia.org/wiki/Server-sent_events)
+ * wrapper for server side events (https://en.wikipedia.org/wiki/Server-sent_events)
* includes a fallback for older browsers and IE
*
* use server side events with caution, to many open requests can hang the server
diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php
index 577392f1edc..140c02e77b6 100644
--- a/lib/private/legacy/files.php
+++ b/lib/private/legacy/files.php
@@ -177,10 +177,21 @@ class OC_Files {
foreach ($files as $file) {
$file = $dir . '/' . $file;
if (\OC\Files\Filesystem::is_file($file)) {
- $fileSize = \OC\Files\Filesystem::filesize($file);
- $fileTime = \OC\Files\Filesystem::filemtime($file);
- $fh = \OC\Files\Filesystem::fopen($file, 'r');
- $streamer->addFileFromStream($fh, basename($file), $fileSize, $fileTime);
+ $userFolder = \OC::$server->getRootFolder()->get(\OC\Files\Filesystem::getRoot());
+ $file = $userFolder->get($file);
+ if($file instanceof \OC\Files\Node\File) {
+ $fh = $file->fopen('r');
+ $fileSize = $file->getSize();
+ $fileTime = $file->getMTime();
+ } else {
+ // File is not a file? …
+ \OC::$server->getLogger()->debug(
+ 'File given, but no Node available. Name {file}',
+ [ 'app' => 'files', 'file' => $file ]
+ );
+ continue;
+ }
+ $streamer->addFileFromStream($fh, $file->getName(), $fileSize, $fileTime);
fclose($fh);
} elseif (\OC\Files\Filesystem::is_dir($file)) {
$streamer->addDirRecursive($file);
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php
index a5ed3a3e24b..3c4915ae748 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/helper.php
@@ -189,6 +189,7 @@ class OC_Helper {
}
/**
+ * @deprecated 18.0.0
* @return \OC\Files\Type\TemplateManager
*/
static public function getFileTemplateManager() {
@@ -585,8 +586,13 @@ class OC_Helper {
$relative = 0;
}
- return array('free' => $free, 'used' => $used, 'total' => $total, 'relative' => $relative);
-
+ return [
+ 'free' => $free,
+ 'used' => $used,
+ 'total' => $total,
+ 'relative' => $relative,
+ 'quota' => $quota
+ ];
}
/**
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/image.php
index d9af45f2226..2efde2ee688 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/image.php
@@ -878,10 +878,8 @@ class OC_Image implements \OCP\IImage {
$widthOrig = imagesx($this->resource);
$heightOrig = imagesy($this->resource);
$process = imagecreatetruecolor($width, $height);
-
- if ($process == false) {
+ if ($process === false) {
$this->logger->error(__METHOD__ . '(): Error creating true color image', array('app' => 'core'));
- imagedestroy($process);
return false;
}
@@ -892,8 +890,8 @@ class OC_Image implements \OCP\IImage {
imagesavealpha($process, true);
}
- imagecopyresampled($process, $this->resource, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig);
- if ($process == false) {
+ $res = imagecopyresampled($process, $this->resource, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig);
+ if ($res === false) {
$this->logger->error(__METHOD__ . '(): Error re-sampling process image', array('app' => 'core'));
imagedestroy($process);
return false;
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php
index 6d9bf7c99f4..26b1b360adc 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/template.php
@@ -266,7 +266,7 @@ class OC_Template extends \OC\Template\Base {
* @return bool
*/
public static function printGuestPage( $application, $name, $parameters = array() ) {
- $content = new OC_Template( $application, $name, "guest" );
+ $content = new OC_Template($application, $name, $name === 'error' ? $name : 'guest');
foreach( $parameters as $key => $value ) {
$content->assign( $key, $value );
}
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 810f22fb9e5..f73756dd240 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -61,11 +61,11 @@
*
*/
+use OC\AppFramework\Http\Request;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IUser;
-use OC\AppFramework\Http\Request;
class OC_Util {
public static $scripts = array();
@@ -1249,6 +1249,18 @@ class OC_Util {
$content = false;
}
+ if (strpos($url, 'https:') === 0) {
+ $url = 'http:' . substr($url, 6);
+ } else {
+ $url = 'https:' . substr($url, 5);
+ }
+
+ try {
+ $fallbackContent = \OC::$server->getHTTPClientService()->newClient()->get($url)->getBody();
+ } catch (\Exception $e) {
+ $fallbackContent = false;
+ }
+
// cleanup
@unlink($testFile);
@@ -1256,7 +1268,7 @@ class OC_Util {
* If the content is not equal to test content our .htaccess
* is working as required
*/
- return $content !== $testContent;
+ return $content !== $testContent && $fallbackContent !== $testContent;
}
/**
diff --git a/lib/public/API.php b/lib/public/API.php
index d3c528ee4f9..5a41dfc7acb 100644
--- a/lib/public/API.php
+++ b/lib/public/API.php
@@ -32,6 +32,7 @@
// 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;
/**
diff --git a/lib/public/Accounts/IAccountProperty.php b/lib/public/Accounts/IAccountProperty.php
index 1f85ac3ca86..c7213e278a6 100644
--- a/lib/public/Accounts/IAccountProperty.php
+++ b/lib/public/Accounts/IAccountProperty.php
@@ -101,5 +101,3 @@ interface IAccountProperty extends \JsonSerializable {
public function getVerified(): string;
}
-
-
diff --git a/lib/public/Activity/IConsumer.php b/lib/public/Activity/IConsumer.php
index d56719c4de3..56dbc840344 100644
--- a/lib/public/Activity/IConsumer.php
+++ b/lib/public/Activity/IConsumer.php
@@ -29,6 +29,7 @@
// 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\Activity;
/**
@@ -46,4 +47,3 @@ interface IConsumer {
*/
public function receive(IEvent $event);
}
-
diff --git a/lib/public/Activity/IEvent.php b/lib/public/Activity/IEvent.php
index e380eca5c24..767d10f965a 100644
--- a/lib/public/Activity/IEvent.php
+++ b/lib/public/Activity/IEvent.php
@@ -29,6 +29,7 @@ declare(strict_types=1);
// 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\Activity;
/**
diff --git a/lib/public/Activity/IFilter.php b/lib/public/Activity/IFilter.php
index b6e2025d2cd..ae5e65c605c 100644
--- a/lib/public/Activity/IFilter.php
+++ b/lib/public/Activity/IFilter.php
@@ -70,4 +70,3 @@ interface IFilter {
*/
public function allowedApps();
}
-
diff --git a/lib/public/Activity/ISetting.php b/lib/public/Activity/ISetting.php
index f3b953e95e0..4aedc03dd22 100644
--- a/lib/public/Activity/ISetting.php
+++ b/lib/public/Activity/ISetting.php
@@ -75,4 +75,3 @@ interface ISetting {
*/
public function isDefaultEnabledMail();
}
-
diff --git a/lib/public/App.php b/lib/public/App.php
index c731a5085f7..ff494e7b2fc 100644
--- a/lib/public/App.php
+++ b/lib/public/App.php
@@ -35,6 +35,7 @@
// 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;
/**
diff --git a/lib/public/App/AppPathNotFoundException.php b/lib/public/App/AppPathNotFoundException.php
index db5a1803c83..fbca8899d3a 100644
--- a/lib/public/App/AppPathNotFoundException.php
+++ b/lib/public/App/AppPathNotFoundException.php
@@ -29,4 +29,4 @@ namespace OCP\App;
* @package OCP\App
* @since 11.0.0
*/
-class AppPathNotFoundException extends \Exception {} \ No newline at end of file
+class AppPathNotFoundException extends \Exception {}
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index aebd47b3a2d..46025d9831b 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -8,6 +8,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Daniel Rudolf <nextcloud.com@daniel-rudolf.de>
*
* @license AGPL-3.0
*
@@ -27,8 +28,8 @@
namespace OCP\App;
-use OCP\IUser;
use OCP\IGroup;
+use OCP\IUser;
/**
* Interface IAppManager
@@ -126,6 +127,16 @@ interface IAppManager {
public function getAppPath($appId);
/**
+ * Get the web path for the given app.
+ *
+ * @param string $appId
+ * @return string
+ * @since 18.0.0
+ * @throws AppPathNotFoundException
+ */
+ public function getAppWebPath(string $appId): string;
+
+ /**
* List all apps enabled for a user
*
* @param \OCP\IUser $user
diff --git a/lib/public/App/ManagerEvent.php b/lib/public/App/ManagerEvent.php
index f46318c2621..27dc3a44dea 100644
--- a/lib/public/App/ManagerEvent.php
+++ b/lib/public/App/ManagerEvent.php
@@ -23,7 +23,7 @@
namespace OCP\App;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class ManagerEvent
diff --git a/lib/public/AppFramework/ApiController.php b/lib/public/AppFramework/ApiController.php
index 5c99e170e00..bb17a34e8ba 100644
--- a/lib/public/AppFramework/ApiController.php
+++ b/lib/public/AppFramework/ApiController.php
@@ -33,7 +33,6 @@ namespace OCP\AppFramework;
use OCP\AppFramework\Http\Response;
use OCP\IRequest;
-
/**
* Base class to inherit your controllers from that are used for RESTful APIs
* @since 7.0.0
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index 06524e4bf02..6fd1646f3f9 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -34,9 +34,9 @@ declare(strict_types=1);
namespace OCP\AppFramework;
use OC\AppFramework\Routing\RouteConfig;
+use OC\ServerContainer;
use OCP\Route\IRouter;
-
/**
* Class App
* @package OCP\AppFramework
@@ -51,8 +51,8 @@ class App {
private $container;
/**
- * Turns an app id into a namespace by convetion. The id is split at the
- * underscores, all parts are camelcased and reassembled. e.g.:
+ * Turns an app id into a namespace by convention. The id is split at the
+ * underscores, all parts are CamelCased and reassembled. e.g.:
* some_app_id -> OCA\SomeAppId
* @param string $appId the app id
* @param string $topNamespace the namespace which should be prepended to
@@ -71,6 +71,36 @@ class App {
* @since 6.0.0
*/
public function __construct(string $appName, array $urlParams = []) {
+ if (\OC::$server->getConfig()->getSystemValueBool('debug')) {
+ $applicationClassName = get_class($this);
+ $e = new \RuntimeException('App class ' . $applicationClassName . ' is not setup via query() but directly');
+ $setUpViaQuery = false;
+
+ $classNameParts = explode('\\', trim($applicationClassName, '\\'));
+
+ foreach ($e->getTrace() as $step) {
+ if (isset($step['class'], $step['function'], $step['args'][0]) &&
+ $step['class'] === ServerContainer::class &&
+ $step['function'] === 'query' &&
+ $step['args'][0] === $applicationClassName) {
+ $setUpViaQuery = true;
+ break;
+ } else if (isset($step['class'], $step['function'], $step['args'][0]) &&
+ $step['class'] === ServerContainer::class &&
+ $step['function'] === 'getAppContainer' &&
+ $step['args'][1] === $classNameParts[1]) {
+ $setUpViaQuery = true;
+ break;
+ }
+ }
+
+ if (!$setUpViaQuery && $applicationClassName !== \OCP\AppFramework\App::class) {
+ \OC::$server->getLogger()->logException($e, [
+ 'app' => $appName,
+ ]);
+ }
+ }
+
try {
$this->container = \OC::$server->getRegisteredAppContainer($appName);
} catch (QueryException $e) {
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index 64be033d1d9..76390d09b4a 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -34,12 +34,11 @@
namespace OCP\AppFramework;
-use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
use OCP\IRequest;
-
/**
* Base class to inherit your controllers from
* @since 6.0.0
diff --git a/lib/public/AppFramework/Db/DoesNotExistException.php b/lib/public/AppFramework/Db/DoesNotExistException.php
index 9823a0a1fa8..563d7d22aa8 100644
--- a/lib/public/AppFramework/Db/DoesNotExistException.php
+++ b/lib/public/AppFramework/Db/DoesNotExistException.php
@@ -22,7 +22,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\AppFramework\Db;
diff --git a/lib/public/AppFramework/Db/Entity.php b/lib/public/AppFramework/Db/Entity.php
index e339707d85f..8bd537211fc 100644
--- a/lib/public/AppFramework/Db/Entity.php
+++ b/lib/public/AppFramework/Db/Entity.php
@@ -24,6 +24,9 @@
namespace OCP\AppFramework\Db;
+use function lcfirst;
+use function substr;
+
/**
* @method integer getId()
* @method void setId(integer $id)
@@ -84,7 +87,7 @@ abstract class Entity {
return $this->_fieldTypes;
}
-
+
/**
* Marks the entity as clean needed for setting the id after the insertion
* @since 7.0.0
@@ -112,7 +115,7 @@ abstract class Entity {
$this->$name = $args[0];
} else {
- throw new \BadFunctionCallException($name .
+ throw new \BadFunctionCallException($name .
' is not a valid attribute');
}
}
@@ -126,7 +129,7 @@ abstract class Entity {
if(property_exists($this, $name)){
return $this->$name;
} else {
- throw new \BadFunctionCallException($name .
+ throw new \BadFunctionCallException($name .
' is not a valid attribute');
}
}
@@ -134,25 +137,37 @@ abstract class Entity {
/**
* Each time a setter is called, push the part after set
- * into an array: for instance setId will save Id in the
+ * into an array: for instance setId will save Id in the
* updated fields array so it can be easily used to create the
* getter method
* @since 7.0.0
*/
- public function __call($methodName, $args){
- $attr = lcfirst( substr($methodName, 3) );
-
- if(strpos($methodName, 'set') === 0){
- $this->setter($attr, $args);
- } elseif(strpos($methodName, 'get') === 0) {
- return $this->getter($attr);
+ public function __call($methodName, $args) {
+ if (strpos($methodName, 'set') === 0) {
+ $this->setter(lcfirst(substr($methodName, 3)), $args);
+ } elseif (strpos($methodName, 'get') === 0) {
+ return $this->getter(lcfirst(substr($methodName, 3)));
+ } elseif ($this->isGetterForBoolProperty($methodName)) {
+ return $this->getter(lcfirst(substr($methodName, 2)));
} else {
- throw new \BadFunctionCallException($methodName .
- ' does not exist');
+ throw new \BadFunctionCallException($methodName .
+ ' does not exist');
}
}
+ /**
+ * @param string $methodName
+ * @return bool
+ * @since 18.0.0
+ */
+ protected function isGetterForBoolProperty(string $methodName): bool {
+ if (strpos($methodName, 'is') === 0) {
+ $fieldName = lcfirst(substr($methodName, 2));
+ return isset($this->_fieldTypes[$fieldName]) && strpos($this->_fieldTypes[$fieldName], 'bool') === 0;
+ }
+ return false;
+ }
/**
* Mark am attribute as updated
@@ -165,7 +180,7 @@ abstract class Entity {
/**
- * Transform a database columnname to a property
+ * Transform a database columnname to a property
* @param string $columnName the name of the column
* @return string the property name
* @since 7.0.0
diff --git a/lib/public/AppFramework/Db/Mapper.php b/lib/public/AppFramework/Db/Mapper.php
index 6910757add0..d8de9e23aa7 100644
--- a/lib/public/AppFramework/Db/Mapper.php
+++ b/lib/public/AppFramework/Db/Mapper.php
@@ -24,12 +24,10 @@
*
*/
-
namespace OCP\AppFramework\Db;
use OCP\IDBConnection;
-
/**
* Simple parent class for inheriting your data access layer from. This class
* may be subject to change in the future
diff --git a/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php b/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
index 3955c417d57..465c76c4dcb 100644
--- a/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
+++ b/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
@@ -22,7 +22,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\AppFramework\Db;
diff --git a/lib/public/AppFramework/Http/DataDownloadResponse.php b/lib/public/AppFramework/Http/DataDownloadResponse.php
index e9fcba8148d..78cf01f1ac7 100644
--- a/lib/public/AppFramework/Http/DataDownloadResponse.php
+++ b/lib/public/AppFramework/Http/DataDownloadResponse.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\AppFramework\Http;
/**
diff --git a/lib/public/AppFramework/Http/DownloadResponse.php b/lib/public/AppFramework/Http/DownloadResponse.php
index 774a6287cb2..4061dc42ad7 100644
--- a/lib/public/AppFramework/Http/DownloadResponse.php
+++ b/lib/public/AppFramework/Http/DownloadResponse.php
@@ -22,7 +22,6 @@
*
*/
-
namespace OCP\AppFramework\Http;
diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
index b3f341ab054..2d32ce0aa01 100644
--- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
@@ -110,6 +110,7 @@ class EmptyContentSecurityPolicy {
* @param bool $state
* @return $this
* @since 8.1.0
+ * @deprecated Eval should not be used anymore. Please update your scripts. This function will stop functioning in a future version of Nextcloud.
*/
public function allowEvalScript($state = true) {
$this->evalScriptAllowed = $state;
diff --git a/lib/public/AppFramework/Http/FileDisplayResponse.php b/lib/public/AppFramework/Http/FileDisplayResponse.php
index 2d2dd29e6a1..a63a77ef4ef 100644
--- a/lib/public/AppFramework/Http/FileDisplayResponse.php
+++ b/lib/public/AppFramework/Http/FileDisplayResponse.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\Http;
use OCP\AppFramework\Http;
diff --git a/lib/public/AppFramework/Http/NotFoundResponse.php b/lib/public/AppFramework/Http/NotFoundResponse.php
index 6d764ec526e..2ae3c41fe4a 100644
--- a/lib/public/AppFramework/Http/NotFoundResponse.php
+++ b/lib/public/AppFramework/Http/NotFoundResponse.php
@@ -37,6 +37,7 @@ class NotFoundResponse extends Response {
public function __construct() {
parent::__construct();
+ $this->setContentSecurityPolicy(new ContentSecurityPolicy());
$this->setStatus(404);
}
diff --git a/lib/public/AppFramework/Http/RedirectResponse.php b/lib/public/AppFramework/Http/RedirectResponse.php
index dc44bbe999c..84f53936fe8 100644
--- a/lib/public/AppFramework/Http/RedirectResponse.php
+++ b/lib/public/AppFramework/Http/RedirectResponse.php
@@ -23,12 +23,10 @@
*
*/
-
namespace OCP\AppFramework\Http;
use OCP\AppFramework\Http;
-
/**
* Redirects to a different URL
* @since 7.0.0
diff --git a/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
index 2ec50137ef9..0a2f4c9d9ee 100644
--- a/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
+++ b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
@@ -19,6 +19,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\Http;
diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php
index bfee7d51549..f46aa9e2880 100644
--- a/lib/public/AppFramework/Http/Response.php
+++ b/lib/public/AppFramework/Http/Response.php
@@ -93,13 +93,9 @@ class Response {
private $throttleMetadata = [];
/**
- * Response constructor.
- *
* @since 17.0.0
*/
public function __construct() {
- $this->setContentSecurityPolicy(new EmptyContentSecurityPolicy());
- $this->setFeaturePolicy(new EmptyFeaturePolicy());
}
/**
@@ -241,12 +237,8 @@ class Response {
$this->lastModified->format(\DateTime::RFC2822);
}
- // Build Content-Security-Policy and use default if none has been specified
- if(is_null($this->contentSecurityPolicy)) {
- $this->setContentSecurityPolicy(new ContentSecurityPolicy());
- }
- $this->headers['Content-Security-Policy'] = $this->contentSecurityPolicy->buildPolicy();
- $this->headers['Feature-Policy'] = $this->featurePolicy->buildPolicy();
+ $this->headers['Content-Security-Policy'] = $this->getContentSecurityPolicy()->buildPolicy();
+ $this->headers['Feature-Policy'] = $this->getFeaturePolicy()->buildPolicy();
if($this->ETag) {
$mergeWith['ETag'] = '"' . $this->ETag . '"';
@@ -296,6 +288,9 @@ class Response {
* @since 8.1.0
*/
public function getContentSecurityPolicy() {
+ if ($this->contentSecurityPolicy === null) {
+ $this->setContentSecurityPolicy(new EmptyContentSecurityPolicy());
+ }
return $this->contentSecurityPolicy;
}
@@ -304,6 +299,9 @@ class Response {
* @since 17.0.0
*/
public function getFeaturePolicy(): EmptyFeaturePolicy {
+ if ($this->featurePolicy === null) {
+ $this->setFeaturePolicy(new EmptyFeaturePolicy());
+ }
return $this->featurePolicy;
}
diff --git a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
index 4d455a9a755..84eb48b954c 100644
--- a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
@@ -25,6 +25,7 @@ namespace OCP\AppFramework\Http\Template;
use OCP\AppFramework\Http\Template\SimpleMenuAction;
use OCP\Util;
+
/**
* Class LinkMenuAction
*
diff --git a/lib/public/AppFramework/Http/Template/IMenuAction.php b/lib/public/AppFramework/Http/Template/IMenuAction.php
index e42d2057981..8a037b62e4b 100644
--- a/lib/public/AppFramework/Http/Template/IMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/IMenuAction.php
@@ -61,4 +61,4 @@ interface IMenuAction {
*/
public function render(): string;
-} \ No newline at end of file
+}
diff --git a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
index a520748a9ea..adffdd9ecdc 100644
--- a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
+++ b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
@@ -155,4 +155,4 @@ class PublicTemplateResponse extends TemplateResponse {
return parent::render();
}
-} \ No newline at end of file
+}
diff --git a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
index 60bb268661c..2a09d89d31a 100644
--- a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
@@ -123,4 +123,4 @@ class SimpleMenuAction implements IMenuAction {
);
}
-} \ No newline at end of file
+}
diff --git a/lib/public/AppFramework/Http/ZipResponse.php b/lib/public/AppFramework/Http/ZipResponse.php
index bec0812ab0c..4223912488b 100644
--- a/lib/public/AppFramework/Http/ZipResponse.php
+++ b/lib/public/AppFramework/Http/ZipResponse.php
@@ -25,8 +25,8 @@ declare(strict_types=1);
namespace OCP\AppFramework\Http;
-use OCP\IRequest;
use OC\Streamer;
+use OCP\IRequest;
/**
* Public library to send several files in one zip archive.
diff --git a/lib/public/AppFramework/Middleware.php b/lib/public/AppFramework/Middleware.php
index 4c9051a0b34..663e8e05452 100644
--- a/lib/public/AppFramework/Middleware.php
+++ b/lib/public/AppFramework/Middleware.php
@@ -33,7 +33,6 @@ namespace OCP\AppFramework;
use OCP\AppFramework\Http\Response;
-
/**
* Middleware is used to provide hooks before or after controller methods and
* deal with possible exceptions raised in the controller methods.
diff --git a/lib/public/AppFramework/OCS/OCSBadRequestException.php b/lib/public/AppFramework/OCS/OCSBadRequestException.php
index 843f8a5e0a4..7e7c775c368 100644
--- a/lib/public/AppFramework/OCS/OCSBadRequestException.php
+++ b/lib/public/AppFramework/OCS/OCSBadRequestException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\OCS;
use Exception;
diff --git a/lib/public/AppFramework/OCS/OCSException.php b/lib/public/AppFramework/OCS/OCSException.php
index 3ef6f3393ab..e6c506aef5c 100644
--- a/lib/public/AppFramework/OCS/OCSException.php
+++ b/lib/public/AppFramework/OCS/OCSException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\OCS;
use Exception;
diff --git a/lib/public/AppFramework/OCS/OCSForbiddenException.php b/lib/public/AppFramework/OCS/OCSForbiddenException.php
index 7545d87c0bf..a163ca5f175 100644
--- a/lib/public/AppFramework/OCS/OCSForbiddenException.php
+++ b/lib/public/AppFramework/OCS/OCSForbiddenException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\OCS;
use Exception;
diff --git a/lib/public/AppFramework/OCS/OCSNotFoundException.php b/lib/public/AppFramework/OCS/OCSNotFoundException.php
index 87a5ce20098..12e135251b4 100644
--- a/lib/public/AppFramework/OCS/OCSNotFoundException.php
+++ b/lib/public/AppFramework/OCS/OCSNotFoundException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\AppFramework\OCS;
use Exception;
diff --git a/lib/public/AppFramework/OCSController.php b/lib/public/AppFramework/OCSController.php
index 29f26bf7e71..e1273a0ca3e 100644
--- a/lib/public/AppFramework/OCSController.php
+++ b/lib/public/AppFramework/OCSController.php
@@ -36,7 +36,6 @@ use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\Response;
use OCP\IRequest;
-
/**
* Base class to inherit your controllers from that are used for RESTful APIs
* @since 8.1.0
diff --git a/lib/public/AppFramework/Utility/IControllerMethodReflector.php b/lib/public/AppFramework/Utility/IControllerMethodReflector.php
index e2074b9fe00..bc9a04f44cf 100644
--- a/lib/public/AppFramework/Utility/IControllerMethodReflector.php
+++ b/lib/public/AppFramework/Utility/IControllerMethodReflector.php
@@ -40,6 +40,7 @@ interface IControllerMethodReflector {
* @param string $method the method which we want to inspect
* @return void
* @since 8.0.0
+ * @deprecated 17.0.0 Reflect should not be called multiple times and only be used internally. This will be removed in Nextcloud 18
*/
public function reflect($object, string $method);
diff --git a/lib/public/Authentication/IApacheBackend.php b/lib/public/Authentication/IApacheBackend.php
index fcc1c1a9b87..3569c50a034 100644
--- a/lib/public/Authentication/IApacheBackend.php
+++ b/lib/public/Authentication/IApacheBackend.php
@@ -29,6 +29,7 @@
// 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\Authentication;
/**
diff --git a/lib/public/Authentication/LoginCredentials/IStore.php b/lib/public/Authentication/LoginCredentials/IStore.php
index 5306eb6d6e9..054e6d85646 100644
--- a/lib/public/Authentication/LoginCredentials/IStore.php
+++ b/lib/public/Authentication/LoginCredentials/IStore.php
@@ -1,4 +1,5 @@
-<?php
+<?php declare(strict_types=1);
+
/**
* @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
*
@@ -29,7 +30,7 @@ use OCP\Authentication\Exceptions\CredentialsUnavailableException;
* @since 12
*/
interface IStore {
-
+
/**
* Get login credentials of the currently logged in user
*
@@ -38,6 +39,6 @@ interface IStore {
* @throws CredentialsUnavailableException
* @return ICredentials the login credentials of the current user
*/
- public function getLoginCredentials();
-
+ public function getLoginCredentials(): ICredentials;
+
}
diff --git a/lib/public/AutoloadNotAllowedException.php b/lib/public/AutoloadNotAllowedException.php
index 6c7b979f2d6..563dbdcfe0f 100644
--- a/lib/public/AutoloadNotAllowedException.php
+++ b/lib/public/AutoloadNotAllowedException.php
@@ -35,4 +35,3 @@ class AutoloadNotAllowedException extends \DomainException {
parent::__construct('Autoload path not allowed: '.$path);
}
}
-
diff --git a/lib/public/Broadcast/Events/IBroadcastEvent.php b/lib/public/Broadcast/Events/IBroadcastEvent.php
new file mode 100644
index 00000000000..0aa7ff45eec
--- /dev/null
+++ b/lib/public/Broadcast/Events/IBroadcastEvent.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Broadcast\Events;
+
+use JsonSerializable;
+
+/**
+ * @since 18.0.0
+ */
+interface IBroadcastEvent {
+
+ /**
+ * @return string the name of the event
+ * @since 18.0.0
+ */
+ public function getName(): string;
+
+ /**
+ * @return string[]
+ * @since 18.0.0
+ */
+ public function getUids(): array;
+
+ /**
+ * @return JsonSerializable the data to be sent to the client
+ * @since 18.0.0
+ */
+ public function getPayload(): JsonSerializable;
+
+ /**
+ * @since 18.0.0
+ */
+ public function setBroadcasted(): void;
+
+}
diff --git a/lib/public/Capabilities/ICapability.php b/lib/public/Capabilities/ICapability.php
index 2a59689665d..918c97f8b68 100644
--- a/lib/public/Capabilities/ICapability.php
+++ b/lib/public/Capabilities/ICapability.php
@@ -44,4 +44,3 @@ interface ICapability {
*/
public function getCapabilities();
}
-
diff --git a/lib/public/Capabilities/IPublicCapability.php b/lib/public/Capabilities/IPublicCapability.php
index c882a24d56f..7f5d39f0ae3 100644
--- a/lib/public/Capabilities/IPublicCapability.php
+++ b/lib/public/Capabilities/IPublicCapability.php
@@ -29,4 +29,3 @@ namespace OCP\Capabilities;
* @since 13.0.0
*/
interface IPublicCapability extends ICapability {}
-
diff --git a/lib/public/Comments/CommentsEntityEvent.php b/lib/public/Comments/CommentsEntityEvent.php
index fe8585a213e..d3ffb710e2e 100644
--- a/lib/public/Comments/CommentsEntityEvent.php
+++ b/lib/public/Comments/CommentsEntityEvent.php
@@ -22,7 +22,7 @@
namespace OCP\Comments;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class CommentsEntityEvent
diff --git a/lib/public/Comments/CommentsEvent.php b/lib/public/Comments/CommentsEvent.php
index eba4cebb3bf..43b8366a22f 100644
--- a/lib/public/Comments/CommentsEvent.php
+++ b/lib/public/Comments/CommentsEvent.php
@@ -23,7 +23,7 @@
namespace OCP\Comments;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class CommentsEvent
diff --git a/lib/public/Comments/IComment.php b/lib/public/Comments/IComment.php
index c7c846bbe9d..3249d70f496 100644
--- a/lib/public/Comments/IComment.php
+++ b/lib/public/Comments/IComment.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
/**
@@ -262,4 +263,3 @@ interface IComment {
public function setObject($objectType, $objectId);
}
-
diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php
index 744263643ec..061dacba480 100644
--- a/lib/public/Comments/ICommentsManager.php
+++ b/lib/public/Comments/ICommentsManager.php
@@ -24,6 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
use OCP\IUser;
diff --git a/lib/public/Comments/ICommentsManagerFactory.php b/lib/public/Comments/ICommentsManagerFactory.php
index 4a38d992bc3..bdd15c816cb 100644
--- a/lib/public/Comments/ICommentsManagerFactory.php
+++ b/lib/public/Comments/ICommentsManagerFactory.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
use OCP\IServerContainer;
diff --git a/lib/public/Comments/IllegalIDChangeException.php b/lib/public/Comments/IllegalIDChangeException.php
index 97f18fee12e..605f373acf2 100644
--- a/lib/public/Comments/IllegalIDChangeException.php
+++ b/lib/public/Comments/IllegalIDChangeException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
/**
diff --git a/lib/public/Comments/MessageTooLongException.php b/lib/public/Comments/MessageTooLongException.php
index 4c46ed46524..19c93b8252e 100644
--- a/lib/public/Comments/MessageTooLongException.php
+++ b/lib/public/Comments/MessageTooLongException.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
/**
diff --git a/lib/public/Comments/NotFoundException.php b/lib/public/Comments/NotFoundException.php
index ab83e4095c2..56b48efcff0 100644
--- a/lib/public/Comments/NotFoundException.php
+++ b/lib/public/Comments/NotFoundException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Comments;
/**
diff --git a/lib/public/Console/ConsoleEvent.php b/lib/public/Console/ConsoleEvent.php
index 7b3201999a3..6645b20ac2e 100644
--- a/lib/public/Console/ConsoleEvent.php
+++ b/lib/public/Console/ConsoleEvent.php
@@ -22,7 +22,7 @@
namespace OCP\Console;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class ConsoleEvent
diff --git a/lib/public/Contacts/IManager.php b/lib/public/Contacts/IManager.php
index 84948a929c0..b3ada74ba2d 100644
--- a/lib/public/Contacts/IManager.php
+++ b/lib/public/Contacts/IManager.php
@@ -30,6 +30,7 @@
// 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;
/**
diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
index 1e17290f145..d82d3ada8cf 100644
--- a/lib/public/DB/QueryBuilder/IFunctionBuilder.php
+++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
@@ -104,5 +104,55 @@ interface IFunctionBuilder {
* @return IQueryFunction
* @since 14.0.0
*/
- public function count($count, $alias = '');
+ public function count($count = '', $alias = '');
+
+ /**
+ * Takes the maximum of all rows in a column
+ *
+ * If you want to get the maximum value of multiple columns in the same row, use `greatest` instead
+ *
+ * @param mixed $field the column to maximum
+ *
+ * @return IQueryFunction
+ * @since 18.0.0
+ */
+ public function max($field);
+
+ /**
+ * Takes the minimum of all rows in a column
+ *
+ * If you want to get the minimum value of multiple columns in the same row, use `least` instead
+ *
+ * @param mixed $field the column to minimum
+ *
+ * @return IQueryFunction
+ * @since 18.0.0
+ */
+ public function min($field);
+
+ /**
+ * Takes the maximum of multiple values
+ *
+ * If you want to get the maximum value of all rows in a column, use `max` instead
+ *
+ * @param mixed $x the first input field or number
+ * @param mixed $y the first input field or number
+ *
+ * @return IQueryFunction
+ * @since 18.0.0
+ */
+ public function greatest($x, $y);
+
+ /**
+ * Takes the minimum of multiple values
+ *
+ * If you want to get the minimum value of all rows in a column, use `min` instead
+ *
+ * @param mixed $x the first input field or number
+ * @param mixed $y the first input field or number
+ *
+ * @return IQueryFunction
+ * @since 18.0.0
+ */
+ public function least($x, $y);
}
diff --git a/lib/public/DB/QueryBuilder/ILiteral.php b/lib/public/DB/QueryBuilder/ILiteral.php
index 99b45ee7c29..1debf81f2b8 100644
--- a/lib/public/DB/QueryBuilder/ILiteral.php
+++ b/lib/public/DB/QueryBuilder/ILiteral.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\DB\QueryBuilder;
/**
diff --git a/lib/public/DB/QueryBuilder/IParameter.php b/lib/public/DB/QueryBuilder/IParameter.php
index c4e3fe29971..9e50c0905eb 100644
--- a/lib/public/DB/QueryBuilder/IParameter.php
+++ b/lib/public/DB/QueryBuilder/IParameter.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\DB\QueryBuilder;
/**
diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php
index 7fea31f4688..fe5182f21b9 100644
--- a/lib/public/DB/QueryBuilder/IQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php
@@ -180,7 +180,7 @@ interface IQueryBuilder {
* @param mixed $value The parameter value.
* @param string|null|int $type One of the IQueryBuilder::PARAM_* constants.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function setParameter($key, $value, $type = null);
@@ -202,7 +202,7 @@ interface IQueryBuilder {
* @param array $params The query parameters to set.
* @param array $types The query parameters types to set.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function setParameters(array $params, array $types = array());
@@ -248,7 +248,7 @@ interface IQueryBuilder {
*
* @param integer $firstResult The first result to return.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function setFirstResult($firstResult);
@@ -267,7 +267,7 @@ interface IQueryBuilder {
*
* @param integer $maxResults The maximum number of results to retrieve.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function setMaxResults($maxResults);
@@ -294,7 +294,7 @@ interface IQueryBuilder {
*
* @param mixed ...$selects The selection expressions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function select(...$selects);
@@ -312,7 +312,7 @@ interface IQueryBuilder {
* @param mixed $select The selection expressions.
* @param string $alias The column alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.1
*/
public function selectAlias($select, $alias);
@@ -328,7 +328,7 @@ interface IQueryBuilder {
*
* @param mixed $select The selection expressions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 9.0.0
*/
public function selectDistinct($select);
@@ -346,7 +346,7 @@ interface IQueryBuilder {
*
* @param mixed ...$select The selection expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function addSelect(...$select);
@@ -365,7 +365,7 @@ interface IQueryBuilder {
* @param string $delete The table whose rows are subject to the deletion.
* @param string $alias The table alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function delete($delete = null, $alias = null);
@@ -384,7 +384,7 @@ interface IQueryBuilder {
* @param string $update The table whose rows are subject to the update.
* @param string $alias The table alias used in the constructed query.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function update($update = null, $alias = null);
@@ -406,7 +406,7 @@ interface IQueryBuilder {
*
* @param string $insert The table into which the rows should be inserted.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function insert($insert = null);
@@ -424,7 +424,7 @@ interface IQueryBuilder {
* @param string $from The table.
* @param string|null $alias The alias of the table.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function from($from, $alias = null);
@@ -444,7 +444,7 @@ interface IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function join($fromAlias, $join, $alias, $condition = null);
@@ -464,7 +464,7 @@ interface IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function innerJoin($fromAlias, $join, $alias, $condition = null);
@@ -484,7 +484,7 @@ interface IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function leftJoin($fromAlias, $join, $alias, $condition = null);
@@ -504,7 +504,7 @@ interface IQueryBuilder {
* @param string $alias The alias of the join table.
* @param string $condition The condition for the join.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function rightJoin($fromAlias, $join, $alias, $condition = null);
@@ -522,7 +522,7 @@ interface IQueryBuilder {
* @param string $key The column to set.
* @param string $value The value, expression, placeholder, etc.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function set($key, $value);
@@ -551,7 +551,7 @@ interface IQueryBuilder {
*
* @param mixed $predicates The restriction predicates.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function where(...$predicates);
@@ -570,7 +570,7 @@ interface IQueryBuilder {
*
* @param mixed ...$where The query restrictions.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*
* @see where()
* @since 8.2.0
@@ -591,7 +591,7 @@ interface IQueryBuilder {
*
* @param mixed ...$where The WHERE statement.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
*
* @see where()
* @since 8.2.0
@@ -611,7 +611,7 @@ interface IQueryBuilder {
*
* @param mixed ...$groupBys The grouping expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function groupBy(...$groupBys);
@@ -629,7 +629,7 @@ interface IQueryBuilder {
*
* @param mixed ...$groupBy The grouping expression.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function addGroupBy(...$groupBy);
@@ -651,7 +651,7 @@ interface IQueryBuilder {
* @param string $column The column into which the value should be inserted.
* @param string $value The value that should be inserted into the column.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function setValue($column, $value);
@@ -673,7 +673,7 @@ interface IQueryBuilder {
*
* @param array $values The values to specify for the insert query indexed by column names.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function values(array $values);
@@ -684,7 +684,7 @@ interface IQueryBuilder {
*
* @param mixed ...$having The restriction over the groups.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function having(...$having);
@@ -695,7 +695,7 @@ interface IQueryBuilder {
*
* @param mixed ...$having The restriction to append.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function andHaving(...$having);
@@ -706,7 +706,7 @@ interface IQueryBuilder {
*
* @param mixed ...$having The restriction to add.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function orHaving(...$having);
@@ -718,7 +718,7 @@ interface IQueryBuilder {
* @param string $sort The ordering expression.
* @param string $order The ordering direction.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function orderBy($sort, $order = null);
@@ -729,7 +729,7 @@ interface IQueryBuilder {
* @param string $sort The ordering expression.
* @param string $order The ordering direction.
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function addOrderBy($sort, $order = null);
@@ -757,7 +757,7 @@ interface IQueryBuilder {
*
* @param array|null $queryPartNames
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function resetQueryParts($queryPartNames = null);
@@ -767,7 +767,7 @@ interface IQueryBuilder {
*
* @param string $queryPartName
*
- * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
+ * @return $this This QueryBuilder instance.
* @since 8.2.0
*/
public function resetQueryPart($queryPartName);
diff --git a/lib/public/DB/QueryBuilder/IQueryFunction.php b/lib/public/DB/QueryBuilder/IQueryFunction.php
index 5c319194739..afb676db565 100644
--- a/lib/public/DB/QueryBuilder/IQueryFunction.php
+++ b/lib/public/DB/QueryBuilder/IQueryFunction.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\DB\QueryBuilder;
/**
diff --git a/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php b/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php
index 4c3013000e8..1e3d420e0bf 100644
--- a/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php
+++ b/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php
@@ -38,4 +38,3 @@ namespace OCP\Dashboard\Exceptions;
*/
class DashboardAppNotAvailableException extends \Exception {
}
-
diff --git a/lib/public/Dashboard/IDashboardManager.php b/lib/public/Dashboard/IDashboardManager.php
index ede47c4baaf..93f96983583 100644
--- a/lib/public/Dashboard/IDashboardManager.php
+++ b/lib/public/Dashboard/IDashboardManager.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\Dashboard;
@@ -134,4 +133,3 @@ interface IDashboardManager {
public function createGlobalEvent(string $widgetId, array $payload, string $uniqueId = '');
}
-
diff --git a/lib/public/Dashboard/IDashboardWidget.php b/lib/public/Dashboard/IDashboardWidget.php
index bbbdf86da8f..b4bb3892911 100644
--- a/lib/public/Dashboard/IDashboardWidget.php
+++ b/lib/public/Dashboard/IDashboardWidget.php
@@ -27,14 +27,13 @@ declare(strict_types=1);
*
*/
-
namespace OCP\Dashboard;
-use OCP\Dashboard\Model\WidgetSetup;
-use OCP\Dashboard\Model\WidgetTemplate;
use OCP\Dashboard\Model\IWidgetConfig;
use OCP\Dashboard\Model\IWidgetRequest;
+use OCP\Dashboard\Model\WidgetSetup;
+use OCP\Dashboard\Model\WidgetTemplate;
/**
* Interface IDashboardWidget
@@ -144,4 +143,3 @@ interface IDashboardWidget {
public function requestWidget(IWidgetRequest $request);
}
-
diff --git a/lib/public/Dashboard/Model/IWidgetConfig.php b/lib/public/Dashboard/Model/IWidgetConfig.php
index 0ae4cad50a9..b06e97100b4 100644
--- a/lib/public/Dashboard/Model/IWidgetConfig.php
+++ b/lib/public/Dashboard/Model/IWidgetConfig.php
@@ -126,4 +126,3 @@ interface IWidgetConfig {
}
-
diff --git a/lib/public/Dashboard/Model/IWidgetRequest.php b/lib/public/Dashboard/Model/IWidgetRequest.php
index 3a3658b30b2..3df1e2d3693 100644
--- a/lib/public/Dashboard/Model/IWidgetRequest.php
+++ b/lib/public/Dashboard/Model/IWidgetRequest.php
@@ -32,7 +32,6 @@ namespace OCP\Dashboard\Model;
use OCP\Dashboard\IDashboardWidget;
-
/**
* Interface IWidgetRequest
*
@@ -134,4 +133,3 @@ interface IWidgetRequest {
public function addResultArray(string $key, array $result): IWidgetRequest;
}
-
diff --git a/lib/public/Dashboard/Model/WidgetSetting.php b/lib/public/Dashboard/Model/WidgetSetting.php
index 616771f7bca..42d2f810bcd 100644
--- a/lib/public/Dashboard/Model/WidgetSetting.php
+++ b/lib/public/Dashboard/Model/WidgetSetting.php
@@ -32,7 +32,6 @@ namespace OCP\Dashboard\Model;
use JsonSerializable;
-
/**
* Interface WidgetSetting
*
@@ -239,4 +238,3 @@ final class WidgetSetting implements JsonSerializable {
}
-
diff --git a/lib/public/Dashboard/Model/WidgetSetup.php b/lib/public/Dashboard/Model/WidgetSetup.php
index 8f0881a3a17..7073bbc922d 100644
--- a/lib/public/Dashboard/Model/WidgetSetup.php
+++ b/lib/public/Dashboard/Model/WidgetSetup.php
@@ -32,7 +32,6 @@ namespace OCP\Dashboard\Model;
use JsonSerializable;
-
/**
* Interface WidgetSetup
*
@@ -268,4 +267,3 @@ final class WidgetSetup implements JsonSerializable {
];
}
}
-
diff --git a/lib/public/Dashboard/Model/WidgetTemplate.php b/lib/public/Dashboard/Model/WidgetTemplate.php
index 485d6298539..c668cfb7e7c 100644
--- a/lib/public/Dashboard/Model/WidgetTemplate.php
+++ b/lib/public/Dashboard/Model/WidgetTemplate.php
@@ -32,7 +32,6 @@ namespace OCP\Dashboard\Model;
use JsonSerializable;
-
/**
* Interface WidgetTemplate
*
@@ -316,4 +315,3 @@ final class WidgetTemplate implements JsonSerializable {
}
-
diff --git a/lib/public/Dashboard/Service/IEventsService.php b/lib/public/Dashboard/Service/IEventsService.php
index 4262e235fd5..6717b804296 100644
--- a/lib/public/Dashboard/Service/IEventsService.php
+++ b/lib/public/Dashboard/Service/IEventsService.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\Dashboard\Service;
@@ -91,4 +90,3 @@ interface IEventsService {
}
-
diff --git a/lib/public/Dashboard/Service/IWidgetsService.php b/lib/public/Dashboard/Service/IWidgetsService.php
index b9a4482b4fc..e2869f7f70c 100644
--- a/lib/public/Dashboard/Service/IWidgetsService.php
+++ b/lib/public/Dashboard/Service/IWidgetsService.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\Dashboard\Service;
@@ -59,4 +58,3 @@ interface IWidgetsService {
public function getWidgetConfig(string $widgetId, string $userId): IWidgetConfig;
}
-
diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php
index bf790bb7239..82bf5be3843 100644
--- a/lib/public/Defaults.php
+++ b/lib/public/Defaults.php
@@ -32,6 +32,7 @@
// 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;
/**
diff --git a/lib/public/DirectEditing/ACreateEmpty.php b/lib/public/DirectEditing/ACreateEmpty.php
new file mode 100644
index 00000000000..ab7f7fd3ae8
--- /dev/null
+++ b/lib/public/DirectEditing/ACreateEmpty.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+
+use OCP\Files\File;
+
+/**
+ * @since 18.0.0
+ */
+abstract class ACreateEmpty {
+
+ /**
+ * Unique id for the creator to filter templates
+ *
+ * e.g. document/spreadsheet/presentation
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getId(): string;
+
+ /**
+ * Descriptive name for the create action
+ *
+ * e.g Create a new document
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getName(): string;
+
+ /**
+ * Default file extension for the new file
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getExtension(): string;
+
+ /**
+ * Mimetype of the resulting created file
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getMimetype(): string;
+
+ /**
+ * Add content when creating empty files
+ *
+ * @since 18.0.0
+ * @param File $file
+ */
+ public function create(File $file, string $creatorId = null, string $templateId = null): void {
+
+ }
+}
diff --git a/lib/public/DirectEditing/ACreateFromTemplate.php b/lib/public/DirectEditing/ACreateFromTemplate.php
new file mode 100644
index 00000000000..89420a63743
--- /dev/null
+++ b/lib/public/DirectEditing/ACreateFromTemplate.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+/**
+ * @since 18.0.0
+ */
+abstract class ACreateFromTemplate extends ACreateEmpty {
+
+ /**
+ * List of available templates for the create from template action
+ *
+ * @since 18.0.0
+ * @return ATemplate[]
+ */
+ abstract public function getTemplates(): array;
+
+}
diff --git a/lib/public/DirectEditing/ATemplate.php b/lib/public/DirectEditing/ATemplate.php
new file mode 100644
index 00000000000..734317eebef
--- /dev/null
+++ b/lib/public/DirectEditing/ATemplate.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+use JsonSerializable;
+
+/**
+ * Class ATemplate
+ *
+ * @package OCP\DirectEditing
+ * @since 18.0.0
+ */
+abstract class ATemplate implements JsonSerializable {
+
+ /**
+ * Return a unique id so the app can identify the template
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getId(): string;
+
+ /**
+ * Return a title that is displayed to the user
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getTitle(): string;
+
+ /**
+ * Return a link to the template preview image
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ abstract public function getPreview(): string;
+
+ /**
+ * @since 18.0.0
+ * @return array|mixed
+ */
+ public function jsonSerialize() {
+ return [
+ 'id' => $this->getId(),
+ 'title' => $this->getTitle(),
+ 'preview' => $this->getPreview(),
+ ];
+ }
+}
diff --git a/lib/public/DirectEditing/IEditor.php b/lib/public/DirectEditing/IEditor.php
new file mode 100644
index 00000000000..a2bc0d74255
--- /dev/null
+++ b/lib/public/DirectEditing/IEditor.php
@@ -0,0 +1,99 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+
+use OCP\AppFramework\Http\Response;
+
+/**
+ * @since 18.0.0
+ */
+interface IEditor {
+
+ /**
+ * Return a unique identifier for the editor
+ *
+ * e.g. richdocuments
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ public function getId(): string;
+
+ /**
+ * Return a readable name for the editor
+ *
+ * e.g. Collabora Online
+ *
+ * @since 18.0.0
+ * @return string
+ */
+ public function getName(): string;
+
+ /**
+ * A list of mimetypes that should open the editor by default
+ *
+ * @since 18.0.0
+ * @return string[]
+ */
+ public function getMimetypes(): array;
+
+ /**
+ * A list of mimetypes that can be opened in the editor optionally
+ *
+ * @since 18.0.0
+ * @return string[]
+ */
+ public function getMimetypesOptional(): array;
+
+ /**
+ * Return a list of file creation options to be presented to the user
+ *
+ * @since 18.0.0
+ * @return ACreateFromTemplate[]|ACreateEmpty[]
+ */
+ public function getCreators(): array;
+
+ /**
+ * Return if the view is able to securely view a file without downloading it to the browser
+ *
+ * @since 18.0.0
+ * @return bool
+ */
+ public function isSecure(): bool;
+
+ /**
+ * Return a template response for displaying the editor
+ *
+ * open can only be called once when the client requests the editor with a one-time-use token
+ * For handling editing and later requests, editors need to impelement their own token handling and take care of invalidation
+ *
+ * This behavior is similar to the current direct editing implementation in collabora where we generate a one-time token and switch over to the regular wopi token for the actual editing/saving process
+ *
+ * @since 18.0.0
+ * @return Response
+ */
+ public function open(IToken $token): Response;
+}
diff --git a/lib/public/DirectEditing/IManager.php b/lib/public/DirectEditing/IManager.php
new file mode 100644
index 00000000000..07b9c5a1e4e
--- /dev/null
+++ b/lib/public/DirectEditing/IManager.php
@@ -0,0 +1,88 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+use OCP\AppFramework\Http\Response;
+use OCP\Files\NotPermittedException;
+use RuntimeException;
+
+/**
+ * Interface IManager
+ *
+ * @package OCP\DirectEditing
+ * @since 18.0.0
+ */
+interface IManager {
+
+ /**
+ * Register a new editor
+ *
+ * @since 18.0.0
+ * @param IEditor $directEditor
+ */
+ public function registerDirectEditor(IEditor $directEditor): void;
+
+ /**
+ * Open the editing page for a provided token
+ *
+ * @since 18.0.0
+ * @param string $token
+ * @return Response
+ */
+ public function edit(string $token): Response;
+
+ /**
+ * Create a new token based on the file path and editor details
+ *
+ * @since 18.0.0
+ * @param string $path
+ * @param string $editorId
+ * @param string $creatorId
+ * @param null $templateId
+ * @return string
+ * @throws NotPermittedException
+ * @throws RuntimeException
+ */
+ public function create(string $path, string $editorId, string $creatorId, $templateId = null): string;
+
+ /**
+ * Get the token details for a given token
+ *
+ * @since 18.0.0
+ * @param string $token
+ * @return IToken
+ */
+ public function getToken(string $token): IToken;
+
+ /**
+ * Cleanup expired tokens
+ *
+ * @since 18.0.0
+ * @return int number of deleted tokens
+ */
+ public function cleanup(): int;
+
+}
+
diff --git a/lib/public/DirectEditing/IToken.php b/lib/public/DirectEditing/IToken.php
new file mode 100644
index 00000000000..a7eb415e28e
--- /dev/null
+++ b/lib/public/DirectEditing/IToken.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+
+use OCP\Files\File;
+
+/**
+ * @since 18.0.0
+ */
+interface IToken {
+
+ /**
+ * Extend the token validity time
+ *
+ * @since 18.0.0
+ */
+ public function extend(): void;
+
+ /**
+ * Invalidate the token
+ *
+ * @since 18.0.0
+ */
+ public function invalidate(): void;
+
+ /**
+ * Check if the token has already been used
+ *
+ * @since 18.0.0
+ * @return bool
+ */
+ public function hasBeenAccessed(): bool;
+
+ /**
+ * Change to the user scope of the token
+ *
+ * @since 18.0.0
+ */
+ public function useTokenScope(): void;
+
+ /**
+ * Get the file that is related to the token
+ *
+ * @since 18.0.0
+ * @return File
+ */
+ public function getFile(): File;
+
+ /**
+ * @since 18.0.0
+ * @return string
+ */
+ public function getEditor(): string;
+
+ /**
+ * @since 18.0.0
+ * @return string
+ */
+ public function getUser(): string;
+
+}
diff --git a/lib/public/DirectEditing/RegisterDirectEditorEvent.php b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
new file mode 100644
index 00000000000..801e9f8fb1b
--- /dev/null
+++ b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <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 OCP\DirectEditing;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * @since 18.0.0
+ */
+class RegisterDirectEditorEvent extends Event {
+
+ /**
+ * @var IManager
+ */
+ private $manager;
+
+ /**
+ * RegisterDirectEditorEvent constructor.
+ *
+ * @param IManager $manager
+ * @since 18.0.0
+ */
+ public function __construct(IManager $manager) {
+ parent::__construct();
+ $this->manager = $manager;
+ }
+
+ /**
+ * @since 18.0.0
+ * @param IEditor $editor
+ */
+ public function register(IEditor $editor): void {
+ $this->manager->registerDirectEditor($editor);
+ }
+
+}
diff --git a/lib/public/Encryption/IManager.php b/lib/public/Encryption/IManager.php
index b32ccf03eb6..89e5525701b 100644
--- a/lib/public/Encryption/IManager.php
+++ b/lib/public/Encryption/IManager.php
@@ -24,8 +24,8 @@
namespace OCP\Encryption;
-use OC\Encryption\Exceptions\ModuleDoesNotExistsException;
use OC\Encryption\Exceptions\ModuleAlreadyExistsException;
+use OC\Encryption\Exceptions\ModuleDoesNotExistsException;
/**
* This class provides access to files encryption apps.
diff --git a/lib/public/EventDispatcher/ABroadcastedEvent.php b/lib/public/EventDispatcher/ABroadcastedEvent.php
new file mode 100644
index 00000000000..1c240b4fb73
--- /dev/null
+++ b/lib/public/EventDispatcher/ABroadcastedEvent.php
@@ -0,0 +1,71 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\EventDispatcher;
+
+use JsonSerializable;
+
+/**
+ * @since 18.0.0
+ */
+abstract class ABroadcastedEvent extends Event implements JsonSerializable {
+
+ /**
+ * @since 18.0.0
+ */
+ private $broadcasted = false;
+
+ /**
+ * Get the name of the event, as received on the client-side
+ *
+ * Uses the fully qualified event class name by default
+ *
+ * @return string
+ * @since 18.0.0
+ */
+ public function broadcastAs(): string {
+ return get_class($this);
+ }
+
+ /**
+ * @return string[]
+ * @since 18.0.0
+ */
+ abstract public function getUids(): array;
+
+ /**
+ * @since 18.0.0
+ */
+ public function setBroadcasted(): void {
+ $this->broadcasted = true;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function isBroadcasted(): bool {
+ return $this->broadcasted;
+ }
+
+}
diff --git a/lib/public/EventDispatcher/Event.php b/lib/public/EventDispatcher/Event.php
index 7f8554d7a86..368f352292e 100644
--- a/lib/public/EventDispatcher/Event.php
+++ b/lib/public/EventDispatcher/Event.php
@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace OCP\EventDispatcher;
-use Symfony\Component\EventDispatcher\GenericEvent;
+use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent;
/**
* Base event class for the event dispatcher service
@@ -35,6 +35,20 @@ use Symfony\Component\EventDispatcher\GenericEvent;
*
* @since 17.0.0
*/
-class Event extends GenericEvent {
+class Event extends SymfonyEvent {
+
+ /**
+ * Compatibility constructor
+ *
+ * In Nextcloud 17.0.0 this event class used a now deprecated/removed Symfony base
+ * class that had a constructor (with default arguments). To lower the risk of
+ * a breaking change (PHP won't allow parent constructor calls if there is none),
+ * this empty constructor's only purpose is to hopefully not break existing sub-
+ * classes of this class.
+ *
+ * @since 18.0.0
+ */
+ public function __construct() {
+ }
}
diff --git a/lib/public/EventDispatcher/GenericEvent.php b/lib/public/EventDispatcher/GenericEvent.php
new file mode 100644
index 00000000000..4607e6621ae
--- /dev/null
+++ b/lib/public/EventDispatcher/GenericEvent.php
@@ -0,0 +1,169 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\EventDispatcher;
+
+use ArrayAccess;
+use ArrayIterator;
+use InvalidArgumentException;
+use IteratorAggregate;
+use Traversable;
+use function array_key_exists;
+
+/**
+ * Class GenericEvent
+ *
+ * convenience reimplementation of \Symfony\Component\GenericEvent against
+ * \OCP\EventDispatcher\Event
+ *
+ * @package OCP\EventDispatcher
+ * @since 18.0.0
+ */
+class GenericEvent extends Event implements ArrayAccess, IteratorAggregate {
+ protected $subject;
+ protected $arguments;
+
+ /**
+ * Encapsulate an event with $subject and $args.
+ *
+ * @since 18.0.0
+ */
+ public function __construct($subject = null, array $arguments = []) {
+ $this->subject = $subject;
+ $this->arguments = $arguments;
+ }
+
+ /**
+ * Getter for subject property.
+ *
+ * @since 18.0.0
+ */
+ public function getSubject() {
+ return $this->subject;
+ }
+
+ /**
+ * Get argument by key.
+ *
+ * @throws InvalidArgumentException if key is not found
+ * @since 18.0.0
+ */
+ public function getArgument(string $key) {
+ if ($this->hasArgument($key)) {
+ return $this->arguments[$key];
+ }
+
+ throw new InvalidArgumentException(sprintf('Argument "%s" not found.', $key));
+ }
+
+ /**
+ * Add argument to event.
+ *
+ * @since 18.0.0
+ */
+ public function setArgument($key, $value): GenericEvent {
+ $this->arguments[$key] = $value;
+ return $this;
+ }
+
+ /**
+ * Getter for all arguments.
+ *
+ * @since 18.0.0
+ */
+ public function getArguments(): array {
+ return $this->arguments;
+ }
+
+ /**
+ * Set args property.
+ *
+ * @since 18.0.0
+ */
+ public function setArguments(array $args = []): GenericEvent {
+ $this->arguments = $args;
+ return $this;
+ }
+
+ /**
+ * Has argument.
+ *
+ * @since 18.0.0
+ */
+ public function hasArgument($key): bool {
+ return array_key_exists($key, $this->arguments);
+ }
+
+ /**
+ * Retrieve an external iterator
+ *
+ * @link https://php.net/manual/en/iteratoraggregate.getiterator.php
+ * @since 18.0.0
+ */
+ public function getIterator(): Traversable {
+ return new ArrayIterator($this->arguments);
+ }
+
+ /**
+ * Whether a offset exists
+ *
+ * @link https://php.net/manual/en/arrayaccess.offsetexists.php
+ * @since 18.0.0
+ */
+ public function offsetExists($offset): bool {
+ return $this->hasArgument($offset);
+ }
+
+ /**
+ * Offset to retrieve
+ *
+ * @link https://php.net/manual/en/arrayaccess.offsetget.php
+ * @since 18.0.0
+ */
+ public function offsetGet($offset) {
+ return $this->arguments[$offset];
+ }
+
+ /**
+ * Offset to set
+ *
+ * @link https://php.net/manual/en/arrayaccess.offsetset.php
+ * @since 18.0.0
+ */
+ public function offsetSet($offset, $value): void {
+ $this->setArgument($offset, $value);
+ }
+
+ /**
+ * Offset to unset
+ *
+ * @link https://php.net/manual/en/arrayaccess.offsetunset.php
+ * @since 18.0.0
+ */
+ public function offsetUnset($offset): void {
+ if ($this->hasArgument($offset)) {
+ unset($this->arguments[$offset]);
+ }
+ }
+}
diff --git a/lib/public/EventDispatcher/IEventDispatcher.php b/lib/public/EventDispatcher/IEventDispatcher.php
index af4d5316a7b..630b7e3c8a0 100644
--- a/lib/public/EventDispatcher/IEventDispatcher.php
+++ b/lib/public/EventDispatcher/IEventDispatcher.php
@@ -58,4 +58,16 @@ interface IEventDispatcher {
*/
public function dispatch(string $eventName, Event $event): void;
+ /**
+ * Dispatch a typed event
+ *
+ * Only use this with subclasses of ``\OCP\EventDispatcher\Event``.
+ * The object's class will determine the event name.
+ *
+ * @param Event $event
+ *
+ * @since 18.0.0
+ */
+ public function dispatchTyped(Event $event): void;
+
}
diff --git a/lib/public/Federation/ICloudFederationProvider.php b/lib/public/Federation/ICloudFederationProvider.php
index b3574535cb0..ef0c7c9bcc3 100644
--- a/lib/public/Federation/ICloudFederationProvider.php
+++ b/lib/public/Federation/ICloudFederationProvider.php
@@ -25,7 +25,7 @@ use OCP\Federation\Exceptions\ActionNotSupportedException;
use OCP\Federation\Exceptions\AuthenticationFailedException;
use OCP\Federation\Exceptions\BadRequestException;
use OCP\Federation\Exceptions\ProviderCouldNotAddShareException;
-use \OCP\Share\Exceptions\ShareNotFound;
+use OCP\Share\Exceptions\ShareNotFound;
/**
* Interface ICloudFederationProvider
diff --git a/lib/public/Files.php b/lib/public/Files.php
index 1cfd73fb288..e2983a8151d 100644
--- a/lib/public/Files.php
+++ b/lib/public/Files.php
@@ -38,6 +38,7 @@
// 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;
/**
diff --git a/lib/public/Files/AlreadyExistsException.php b/lib/public/Files/AlreadyExistsException.php
index af801959247..51baf5f5d4e 100644
--- a/lib/public/Files/AlreadyExistsException.php
+++ b/lib/public/Files/AlreadyExistsException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/Cache/ICacheEntry.php b/lib/public/Files/Cache/ICacheEntry.php
index bbc9982935e..5223720b006 100644
--- a/lib/public/Files/Cache/ICacheEntry.php
+++ b/lib/public/Files/Cache/ICacheEntry.php
@@ -132,4 +132,28 @@ interface ICacheEntry {
* @since 9.0.0
*/
public function isEncrypted();
+
+ /**
+ * Get the metadata etag for the file
+ *
+ * @return string | null
+ * @since 18.0.0
+ */
+ public function getMetadataEtag(): ?string;
+
+ /**
+ * Get the last modified date as unix timestamp
+ *
+ * @return int | null
+ * @since 18.0.0
+ */
+ public function getCreationTime(): ?int;
+
+ /**
+ * Get the last modified date as unix timestamp
+ *
+ * @return int | null
+ * @since 18.0.0
+ */
+ public function getUploadTime(): ?int;
}
diff --git a/lib/public/Files/Cache/IScanner.php b/lib/public/Files/Cache/IScanner.php
index 8aa4dc04aa9..effd4a45667 100644
--- a/lib/public/Files/Cache/IScanner.php
+++ b/lib/public/Files/Cache/IScanner.php
@@ -81,4 +81,3 @@ interface IScanner {
*/
public function backgroundScan();
}
-
diff --git a/lib/public/Files/EntityTooLargeException.php b/lib/public/Files/EntityTooLargeException.php
index 4a74403106c..0229f8357b0 100644
--- a/lib/public/Files/EntityTooLargeException.php
+++ b/lib/public/Files/EntityTooLargeException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/File.php b/lib/public/Files/File.php
index 29a83b4df7d..bd3b3da0df2 100644
--- a/lib/public/Files/File.php
+++ b/lib/public/Files/File.php
@@ -30,8 +30,11 @@
// 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\Files;
+use OCP\Lock\LockedException;
+
/**
* Interface File
*
@@ -43,7 +46,8 @@ interface File extends Node {
* Get the content of the file as string
*
* @return string
- * @throws \OCP\Files\NotPermittedException
+ * @throws NotPermittedException
+ * @throws LockedException
* @since 6.0.0
*/
public function getContent();
@@ -52,8 +56,9 @@ interface File extends Node {
* Write to the file from string data
*
* @param string|resource $data
- * @throws \OCP\Files\NotPermittedException
- * @throws \OCP\Files\GenericFileException
+ * @throws NotPermittedException
+ * @throws GenericFileException
+ * @throws LockedException
* @since 6.0.0
*/
public function putContent($data);
@@ -71,7 +76,8 @@ interface File extends Node {
*
* @param string $mode
* @return resource
- * @throws \OCP\Files\NotPermittedException
+ * @throws NotPermittedException
+ * @throws LockedException
* @since 6.0.0
*/
public function fopen($mode);
diff --git a/lib/public/Files/FileInfo.php b/lib/public/Files/FileInfo.php
index c256f0980f0..f09896bf93a 100644
--- a/lib/public/Files/FileInfo.php
+++ b/lib/public/Files/FileInfo.php
@@ -25,6 +25,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files;
/**
@@ -268,4 +269,30 @@ interface FileInfo {
* @since 15.0.0
*/
public function getExtension(): string;
+
+ /**
+ * Get the creation date as unix timestamp
+ *
+ * If the creation time is not known, 0 will be returned
+ *
+ * creation time is not set automatically by the server and is generally only available
+ * for files uploaded by the sync clients
+ *
+ * @return int
+ * @since 18.0.0
+ */
+ public function getCreationTime(): int;
+
+ /**
+ * Get the upload date as unix timestamp
+ *
+ * If the upload time is not known, 0 will be returned
+ *
+ * Upload time will be set automatically by the server for files uploaded over DAV
+ * files created by Nextcloud apps generally do not have an the upload time set
+ *
+ * @return int
+ * @since 18.0.0
+ */
+ public function getUploadTime(): int;
}
diff --git a/lib/public/Files/FileNameTooLongException.php b/lib/public/Files/FileNameTooLongException.php
index 8c46b7f5519..d2302cd66f9 100644
--- a/lib/public/Files/FileNameTooLongException.php
+++ b/lib/public/Files/FileNameTooLongException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/Folder.php b/lib/public/Files/Folder.php
index 425813c7e21..8e45051a118 100644
--- a/lib/public/Files/Folder.php
+++ b/lib/public/Files/Folder.php
@@ -29,6 +29,7 @@
// 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\Files;
use OCP\Files\Search\ISearchQuery;
diff --git a/lib/public/Files/ForbiddenException.php b/lib/public/Files/ForbiddenException.php
index 4432c0d4934..03b0286695b 100644
--- a/lib/public/Files/ForbiddenException.php
+++ b/lib/public/Files/ForbiddenException.php
@@ -23,6 +23,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/GenericFileException.php b/lib/public/Files/GenericFileException.php
index b5da4aabebd..dcbcd93bab8 100644
--- a/lib/public/Files/GenericFileException.php
+++ b/lib/public/Files/GenericFileException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Files;
/**
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
index fd0d0649810..875463c98bf 100644
--- a/lib/public/Files/IAppData.php
+++ b/lib/public/Files/IAppData.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Files;
use OCP\Files\SimpleFS\ISimpleRoot;
diff --git a/lib/public/Files/IHomeStorage.php b/lib/public/Files/IHomeStorage.php
index 3144dd8bc94..0d5f351ebad 100644
--- a/lib/public/Files/IHomeStorage.php
+++ b/lib/public/Files/IHomeStorage.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/IMimeTypeDetector.php b/lib/public/Files/IMimeTypeDetector.php
index f66eb4e0b9f..318927f2ffa 100644
--- a/lib/public/Files/IMimeTypeDetector.php
+++ b/lib/public/Files/IMimeTypeDetector.php
@@ -22,6 +22,7 @@
// 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\Files;
diff --git a/lib/public/Files/IRootFolder.php b/lib/public/Files/IRootFolder.php
index b041bcae301..aa5ca5b8dc9 100644
--- a/lib/public/Files/IRootFolder.php
+++ b/lib/public/Files/IRootFolder.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OCP\Files;
use OC\Hooks\Emitter;
@@ -43,4 +42,3 @@ interface IRootFolder extends Folder, Emitter {
*/
public function getUserFolder($userId);
}
-
diff --git a/lib/public/Files/InvalidCharacterInPathException.php b/lib/public/Files/InvalidCharacterInPathException.php
index 8e8f1a15e3a..40c51cb2544 100644
--- a/lib/public/Files/InvalidCharacterInPathException.php
+++ b/lib/public/Files/InvalidCharacterInPathException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/InvalidContentException.php b/lib/public/Files/InvalidContentException.php
index bdde7909b58..b8f449b6462 100644
--- a/lib/public/Files/InvalidContentException.php
+++ b/lib/public/Files/InvalidContentException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/InvalidPathException.php b/lib/public/Files/InvalidPathException.php
index bb8aff50913..2f2caa95a62 100644
--- a/lib/public/Files/InvalidPathException.php
+++ b/lib/public/Files/InvalidPathException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/LockNotAcquiredException.php b/lib/public/Files/LockNotAcquiredException.php
index 1ef0e676b34..ece55b6c375 100644
--- a/lib/public/Files/LockNotAcquiredException.php
+++ b/lib/public/Files/LockNotAcquiredException.php
@@ -29,6 +29,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/Node.php b/lib/public/Files/Node.php
index 016b217afc3..af7d9454ca6 100644
--- a/lib/public/Files/Node.php
+++ b/lib/public/Files/Node.php
@@ -31,8 +31,11 @@
// 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\Files;
+use OCP\Lock\LockedException;
+
/**
* Interface Node
*
@@ -44,15 +47,22 @@ interface Node extends FileInfo {
* Move the file or folder to a new location
*
* @param string $targetPath the absolute target path
- * @throws \OCP\Files\NotPermittedException
- * @return \OCP\Files\Node
+ * @return Node
+ * @throws NotFoundException
+ * @throws NotPermittedException if move not allowed or failed
+ * @throws LockedException
+ * @throws InvalidPathException
* @since 6.0.0
*/
public function move($targetPath);
/**
* Delete the file or folder
+ *
* @return void
+ * @throws NotPermittedException
+ * @throws InvalidPathException
+ * @throws NotFoundException
* @since 6.0.0
*/
public function delete();
@@ -61,7 +71,7 @@ interface Node extends FileInfo {
* Cope the file or folder to a new location
*
* @param string $targetPath the absolute target path
- * @return \OCP\Files\Node
+ * @return Node
* @since 6.0.0
*/
public function copy($targetPath);
@@ -71,7 +81,9 @@ interface Node extends FileInfo {
* If $mtime is omitted the current time will be used
*
* @param int $mtime (optional) modified date as unix timestamp
- * @throws \OCP\Files\NotPermittedException
+ * @throws InvalidPathException
+ * @throws NotFoundException
+ * @throws NotPermittedException
* @return void
* @since 6.0.0
*/
@@ -80,8 +92,8 @@ interface Node extends FileInfo {
/**
* Get the storage backend the file or folder is stored on
*
- * @return \OCP\Files\Storage
- * @throws \OCP\Files\NotFoundException
+ * @return Storage
+ * @throws NotFoundException
* @since 6.0.0
*/
public function getStorage();
@@ -246,7 +258,7 @@ interface Node extends FileInfo {
* any filesystem operation will automatically acquire the relevant locks for that operation.
*
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
* @since 9.1.0
*/
public function lock($type);
@@ -261,7 +273,7 @@ interface Node extends FileInfo {
* Note that this is also the case if no existing lock exists for the file.
*
* @param int $targetType \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
* @since 9.1.0
*/
public function changeLock($targetType);
@@ -274,7 +286,7 @@ interface Node extends FileInfo {
* Note that this method will not give any sort of error when trying to free a lock that doesn't exist.
*
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
- * @throws \OCP\Lock\LockedException
+ * @throws LockedException
* @since 9.1.0
*/
public function unlock($type);
diff --git a/lib/public/Files/NotEnoughSpaceException.php b/lib/public/Files/NotEnoughSpaceException.php
index f4407a95785..f7b4b6c59d4 100644
--- a/lib/public/Files/NotEnoughSpaceException.php
+++ b/lib/public/Files/NotEnoughSpaceException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/NotFoundException.php b/lib/public/Files/NotFoundException.php
index f0ccb90a52b..d285dafd32d 100644
--- a/lib/public/Files/NotFoundException.php
+++ b/lib/public/Files/NotFoundException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/NotPermittedException.php b/lib/public/Files/NotPermittedException.php
index 516c323181b..75f34b787ce 100644
--- a/lib/public/Files/NotPermittedException.php
+++ b/lib/public/Files/NotPermittedException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/ObjectStore/IObjectStore.php b/lib/public/Files/ObjectStore/IObjectStore.php
index 83c4b1065d6..580a92729d9 100644
--- a/lib/public/Files/ObjectStore/IObjectStore.php
+++ b/lib/public/Files/ObjectStore/IObjectStore.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files\ObjectStore;
use OCP\Files\NotFoundException;
diff --git a/lib/public/Files/ReservedWordException.php b/lib/public/Files/ReservedWordException.php
index 67b205de57b..64f88ca5187 100644
--- a/lib/public/Files/ReservedWordException.php
+++ b/lib/public/Files/ReservedWordException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php
index b00f5c482c6..041e915643e 100644
--- a/lib/public/Files/SimpleFS/ISimpleFile.php
+++ b/lib/public/Files/SimpleFS/ISimpleFile.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Files\SimpleFS;
use OCP\Files\NotFoundException;
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
index 54fbd466e46..ab3db007c54 100644
--- a/lib/public/Files/SimpleFS/ISimpleFolder.php
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Files\SimpleFS;
use OCP\Files\NotFoundException;
diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php
index 054106fbaca..649f0233b02 100644
--- a/lib/public/Files/SimpleFS/ISimpleRoot.php
+++ b/lib/public/Files/SimpleFS/ISimpleRoot.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Files\SimpleFS;
use OCP\Files\NotFoundException;
diff --git a/lib/public/Files/Storage.php b/lib/public/Files/Storage.php
index 1cbba104dee..3fab0877990 100644
--- a/lib/public/Files/Storage.php
+++ b/lib/public/Files/Storage.php
@@ -35,6 +35,7 @@
// 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\Files;
use OCP\Files\Storage\IStorage;
diff --git a/lib/public/Files/Storage/IDisableEncryptionStorage.php b/lib/public/Files/Storage/IDisableEncryptionStorage.php
index 5ec4a2be843..8b62491d39a 100644
--- a/lib/public/Files/Storage/IDisableEncryptionStorage.php
+++ b/lib/public/Files/Storage/IDisableEncryptionStorage.php
@@ -28,4 +28,4 @@ namespace OCP\Files\Storage;
*/
interface IDisableEncryptionStorage {
-} \ No newline at end of file
+}
diff --git a/lib/public/Files/Storage/IStorage.php b/lib/public/Files/Storage/IStorage.php
index 1fc45c041c3..1d9fa5363dc 100644
--- a/lib/public/Files/Storage/IStorage.php
+++ b/lib/public/Files/Storage/IStorage.php
@@ -28,6 +28,7 @@
// 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\Files\Storage;
use OCP\Files\Cache\ICache;
diff --git a/lib/public/Files/StorageAuthException.php b/lib/public/Files/StorageAuthException.php
index 4e216b0f01f..526feebb463 100644
--- a/lib/public/Files/StorageAuthException.php
+++ b/lib/public/Files/StorageAuthException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files;
/**
diff --git a/lib/public/Files/StorageBadConfigException.php b/lib/public/Files/StorageBadConfigException.php
index ea525b91f45..6cd3ee06b24 100644
--- a/lib/public/Files/StorageBadConfigException.php
+++ b/lib/public/Files/StorageBadConfigException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files;
/**
diff --git a/lib/public/Files/StorageConnectionException.php b/lib/public/Files/StorageConnectionException.php
index 7702460a2f8..be901b60a04 100644
--- a/lib/public/Files/StorageConnectionException.php
+++ b/lib/public/Files/StorageConnectionException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files;
/**
diff --git a/lib/public/Files/StorageInvalidException.php b/lib/public/Files/StorageInvalidException.php
index c772a714fcd..7f8d489304e 100644
--- a/lib/public/Files/StorageInvalidException.php
+++ b/lib/public/Files/StorageInvalidException.php
@@ -28,6 +28,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files/StorageNotAvailableException.php b/lib/public/Files/StorageNotAvailableException.php
index 7a060417acb..3cf87331999 100644
--- a/lib/public/Files/StorageNotAvailableException.php
+++ b/lib/public/Files/StorageNotAvailableException.php
@@ -33,6 +33,7 @@
// 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\Files;
use OC\HintException;
diff --git a/lib/public/Files/StorageTimeoutException.php b/lib/public/Files/StorageTimeoutException.php
index 90b56095074..614b04c33f8 100644
--- a/lib/public/Files/StorageTimeoutException.php
+++ b/lib/public/Files/StorageTimeoutException.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Files;
/**
diff --git a/lib/public/Files/UnseekableException.php b/lib/public/Files/UnseekableException.php
index 059a8d55126..5185f0c056f 100644
--- a/lib/public/Files/UnseekableException.php
+++ b/lib/public/Files/UnseekableException.php
@@ -27,6 +27,7 @@
// 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\Files;
/**
diff --git a/lib/public/Files_FullTextSearch/Model/AFilesDocument.php b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
index 143788f33ad..d239521da44 100644
--- a/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
+++ b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
@@ -27,14 +27,12 @@ declare(strict_types=1);
*
*/
-
namespace OCP\Files_FullTextSearch\Model;
use OC\FullTextSearch\Model\IndexDocument;
use OCP\FullTextSearch\Model\IIndexDocument;
-
/**
* Abstract Class AFilesDocument
*
@@ -108,4 +106,3 @@ abstract class AFilesDocument extends IndexDocument {
abstract public function getPath(): string;
}
-
diff --git a/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php b/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php
index 4363376f0f4..5d533ff467d 100644
--- a/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php
+++ b/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Exceptions;
/**
@@ -39,4 +38,3 @@ namespace OCP\FullTextSearch\Exceptions;
*/
class FullTextSearchAppNotAvailableException extends \Exception {
}
-
diff --git a/lib/public/FullTextSearch/IFullTextSearchManager.php b/lib/public/FullTextSearch/IFullTextSearchManager.php
index 3c2aa6324d7..1cc58a78909 100644
--- a/lib/public/FullTextSearch/IFullTextSearchManager.php
+++ b/lib/public/FullTextSearch/IFullTextSearchManager.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch;
@@ -37,7 +36,6 @@ use OCP\FullTextSearch\Service\IIndexService;
use OCP\FullTextSearch\Service\IProviderService;
use OCP\FullTextSearch\Service\ISearchService;
-
/**
* Interface IFullTextSearchManager
*
@@ -193,4 +191,3 @@ interface IFullTextSearchManager {
}
-
diff --git a/lib/public/FullTextSearch/IFullTextSearchPlatform.php b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
index 01016269f6b..0ae355b0eef 100644
--- a/lib/public/FullTextSearch/IFullTextSearchPlatform.php
+++ b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch;
@@ -37,7 +36,6 @@ use OCP\FullTextSearch\Model\IIndexDocument;
use OCP\FullTextSearch\Model\IRunner;
use OCP\FullTextSearch\Model\ISearchResult;
-
/**
* Interface IFullTextSearchPlatform
*
@@ -224,4 +222,3 @@ interface IFullTextSearchPlatform {
}
-
diff --git a/lib/public/FullTextSearch/IFullTextSearchProvider.php b/lib/public/FullTextSearch/IFullTextSearchProvider.php
index b72c9e55435..1405a04420d 100644
--- a/lib/public/FullTextSearch/IFullTextSearchProvider.php
+++ b/lib/public/FullTextSearch/IFullTextSearchProvider.php
@@ -27,19 +27,17 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch;
use OCP\FullTextSearch\Model\IIndex;
-use OCP\FullTextSearch\Model\IIndexOptions;
use OCP\FullTextSearch\Model\IIndexDocument;
+use OCP\FullTextSearch\Model\IIndexOptions;
use OCP\FullTextSearch\Model\IRunner;
use OCP\FullTextSearch\Model\ISearchRequest;
use OCP\FullTextSearch\Model\ISearchResult;
use OCP\FullTextSearch\Model\ISearchTemplate;
-
/**
* Interface IFullTextSearchProvider
*
diff --git a/lib/public/FullTextSearch/Model/IDocumentAccess.php b/lib/public/FullTextSearch/Model/IDocumentAccess.php
index 848e2200f60..bbd1e47411b 100644
--- a/lib/public/FullTextSearch/Model/IDocumentAccess.php
+++ b/lib/public/FullTextSearch/Model/IDocumentAccess.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -261,4 +260,3 @@ interface IDocumentAccess {
public function getLinks(): array;
}
-
diff --git a/lib/public/FullTextSearch/Model/IIndex.php b/lib/public/FullTextSearch/Model/IIndex.php
index c1c83db2d4b..fd7a887ca46 100644
--- a/lib/public/FullTextSearch/Model/IIndex.php
+++ b/lib/public/FullTextSearch/Model/IIndex.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -289,4 +288,3 @@ interface IIndex {
}
-
diff --git a/lib/public/FullTextSearch/Model/IIndexDocument.php b/lib/public/FullTextSearch/Model/IIndexDocument.php
index d3184530a7f..3effb2c1afc 100644
--- a/lib/public/FullTextSearch/Model/IIndexDocument.php
+++ b/lib/public/FullTextSearch/Model/IIndexDocument.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -633,4 +632,3 @@ interface IIndexDocument {
public function getInfoAll(): array;
}
-
diff --git a/lib/public/FullTextSearch/Model/IIndexOptions.php b/lib/public/FullTextSearch/Model/IIndexOptions.php
index 8cc5da13d4d..81087101544 100644
--- a/lib/public/FullTextSearch/Model/IIndexOptions.php
+++ b/lib/public/FullTextSearch/Model/IIndexOptions.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -83,4 +82,3 @@ interface IIndexOptions {
public function getOptionBool(string $option, bool $default): bool;
}
-
diff --git a/lib/public/FullTextSearch/Model/IRunner.php b/lib/public/FullTextSearch/Model/IRunner.php
index 0dff82bd5a0..21867be4d59 100644
--- a/lib/public/FullTextSearch/Model/IRunner.php
+++ b/lib/public/FullTextSearch/Model/IRunner.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -139,4 +138,3 @@ interface IRunner {
}
-
diff --git a/lib/public/FullTextSearch/Model/ISearchOption.php b/lib/public/FullTextSearch/Model/ISearchOption.php
index 4ac995ad75f..e8f031e89cb 100644
--- a/lib/public/FullTextSearch/Model/ISearchOption.php
+++ b/lib/public/FullTextSearch/Model/ISearchOption.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
diff --git a/lib/public/FullTextSearch/Model/ISearchRequest.php b/lib/public/FullTextSearch/Model/ISearchRequest.php
index 6874cf161b6..a8117789154 100644
--- a/lib/public/FullTextSearch/Model/ISearchRequest.php
+++ b/lib/public/FullTextSearch/Model/ISearchRequest.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -365,4 +364,3 @@ interface ISearchRequest {
public function getSimpleQueries(): array;
}
-
diff --git a/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php b/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
index 08884e25c2b..e040d5c8d4a 100644
--- a/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
+++ b/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
@@ -136,4 +135,3 @@ interface ISearchRequestSimpleQuery {
public function addValueBool(bool $value): ISearchRequestSimpleQuery;
}
-
diff --git a/lib/public/FullTextSearch/Model/ISearchResult.php b/lib/public/FullTextSearch/Model/ISearchResult.php
index 2ca61c2f37b..53fbaf9bf74 100644
--- a/lib/public/FullTextSearch/Model/ISearchResult.php
+++ b/lib/public/FullTextSearch/Model/ISearchResult.php
@@ -27,13 +27,11 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
use OCP\FullTextSearch\IFullTextSearchProvider;
-
/**
* Interface ISearchResult
*
@@ -195,4 +193,3 @@ interface ISearchResult {
public function setTimedOut(bool $timedOut): ISearchResult;
}
-
diff --git a/lib/public/FullTextSearch/Model/ISearchTemplate.php b/lib/public/FullTextSearch/Model/ISearchTemplate.php
index 9cd6753f2a7..6abeaca581b 100644
--- a/lib/public/FullTextSearch/Model/ISearchTemplate.php
+++ b/lib/public/FullTextSearch/Model/ISearchTemplate.php
@@ -27,13 +27,11 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Model;
use OCP\FullTextSearch\IFullTextSearchProvider;
-
/**
* Class ISearchTemplate
*
@@ -176,4 +174,3 @@ interface ISearchTemplate {
public function getNavigationOptions(): array;
}
-
diff --git a/lib/public/FullTextSearch/Service/IIndexService.php b/lib/public/FullTextSearch/Service/IIndexService.php
index b70c7eb965f..abc0fcb6faa 100644
--- a/lib/public/FullTextSearch/Service/IIndexService.php
+++ b/lib/public/FullTextSearch/Service/IIndexService.php
@@ -27,13 +27,11 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Service;
use OCP\FullTextSearch\Model\IIndex;
-
/**
* Interface IIndexService
*
@@ -110,4 +108,3 @@ interface IIndexService {
public function updateIndexes(array $indexes);
}
-
diff --git a/lib/public/FullTextSearch/Service/IProviderService.php b/lib/public/FullTextSearch/Service/IProviderService.php
index 64153c13965..26ce5d0c56f 100644
--- a/lib/public/FullTextSearch/Service/IProviderService.php
+++ b/lib/public/FullTextSearch/Service/IProviderService.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Service;
@@ -62,4 +61,3 @@ interface IProviderService {
}
-
diff --git a/lib/public/FullTextSearch/Service/ISearchService.php b/lib/public/FullTextSearch/Service/ISearchService.php
index 7da38e44f5c..ac0d252f426 100644
--- a/lib/public/FullTextSearch/Service/ISearchService.php
+++ b/lib/public/FullTextSearch/Service/ISearchService.php
@@ -27,14 +27,12 @@ declare(strict_types=1);
*
*/
-
namespace OCP\FullTextSearch\Service;
use OCP\FullTextSearch\Model\ISearchRequest;
use OCP\FullTextSearch\Model\ISearchResult;
-
/**
* Interface ISearchService
*
@@ -86,4 +84,3 @@ interface ISearchService {
public function search(string $userId, ISearchRequest $searchRequest): array;
}
-
diff --git a/lib/public/GlobalScale/IConfig.php b/lib/public/GlobalScale/IConfig.php
index e67470f2e1a..ef6c22ebd8e 100644
--- a/lib/public/GlobalScale/IConfig.php
+++ b/lib/public/GlobalScale/IConfig.php
@@ -21,7 +21,6 @@
*
*/
-
namespace OCP\GlobalScale;
/**
diff --git a/lib/public/Group/Backend/IGetDisplayNameBackend.php b/lib/public/Group/Backend/IGetDisplayNameBackend.php
index 69d1742a1e5..2d750b83855 100644
--- a/lib/public/Group/Backend/IGetDisplayNameBackend.php
+++ b/lib/public/Group/Backend/IGetDisplayNameBackend.php
@@ -28,7 +28,10 @@ namespace OCP\Group\Backend;
* @since 17.0.0
*/
interface IGetDisplayNameBackend {
+
/**
+ * @param string $gid
+ * @return string
* @since 17.0.0
*/
public function getDisplayName(string $gid): string;
diff --git a/lib/public/Group/Backend/ISetDisplayNameBackend.php b/lib/public/Group/Backend/ISetDisplayNameBackend.php
new file mode 100644
index 00000000000..f75be69438d
--- /dev/null
+++ b/lib/public/Group/Backend/ISetDisplayNameBackend.php
@@ -0,0 +1,38 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Group\Backend;
+
+/**
+ * @since 18.0.0
+ */
+interface ISetDisplayNameBackend {
+
+ /**
+ * @param string $gid
+ * @param string $displayName
+ * @return bool
+ * @since 18.0.0
+ */
+ public function setDisplayName(string $gid, string $displayName): bool;
+
+}
diff --git a/lib/public/GroupInterface.php b/lib/public/GroupInterface.php
index 35d11755fac..2c67aafdba5 100644
--- a/lib/public/GroupInterface.php
+++ b/lib/public/GroupInterface.php
@@ -32,6 +32,7 @@
// 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;
/**
diff --git a/lib/public/IAddressBook.php b/lib/public/IAddressBook.php
index 8d86773e771..77fc7b6567b 100644
--- a/lib/public/IAddressBook.php
+++ b/lib/public/IAddressBook.php
@@ -30,6 +30,7 @@
// 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 {
/**
* Interface IAddressBook
diff --git a/lib/public/IAppConfig.php b/lib/public/IAppConfig.php
index 2f268185e62..aae8bce025c 100644
--- a/lib/public/IAppConfig.php
+++ b/lib/public/IAppConfig.php
@@ -23,6 +23,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP;
/**
diff --git a/lib/public/ICache.php b/lib/public/ICache.php
index ba61100925b..5aa6dc9fc87 100644
--- a/lib/public/ICache.php
+++ b/lib/public/ICache.php
@@ -31,6 +31,7 @@
// 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;
/**
diff --git a/lib/public/IConfig.php b/lib/public/IConfig.php
index 878c0acf0c3..95c72bb1fc8 100644
--- a/lib/public/IConfig.php
+++ b/lib/public/IConfig.php
@@ -34,6 +34,7 @@
// 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;
/**
diff --git a/lib/public/IContainer.php b/lib/public/IContainer.php
index 558c72291c5..b9afa2f1d87 100644
--- a/lib/public/IContainer.php
+++ b/lib/public/IContainer.php
@@ -31,12 +31,12 @@
// 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;
use Closure;
use OCP\AppFramework\QueryException;
-
/**
* Class IContainer
*
diff --git a/lib/public/IDBConnection.php b/lib/public/IDBConnection.php
index 4c66896a2fe..da89d5bb842 100644
--- a/lib/public/IDBConnection.php
+++ b/lib/public/IDBConnection.php
@@ -34,6 +34,7 @@
// 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;
use Doctrine\DBAL\Schema\Schema;
use OCP\DB\QueryBuilder\IQueryBuilder;
diff --git a/lib/public/IGroup.php b/lib/public/IGroup.php
index 48fa84df393..8b0eaf0ec0c 100644
--- a/lib/public/IGroup.php
+++ b/lib/public/IGroup.php
@@ -48,6 +48,15 @@ interface IGroup {
public function getDisplayName();
/**
+ * Set the group display name
+ *
+ * @param string $displayName
+ * @return bool
+ * @since 18.0.0
+ */
+ public function setDisplayName(string $displayName): bool;
+
+ /**
* get all users in the group
*
* @return \OCP\IUser[]
diff --git a/lib/public/IGroupManager.php b/lib/public/IGroupManager.php
index f7a63dfefb7..d8a557777bc 100644
--- a/lib/public/IGroupManager.php
+++ b/lib/public/IGroupManager.php
@@ -75,7 +75,7 @@ interface IGroupManager {
/**
* @param string $gid
- * @return \OCP\IGroup
+ * @return \OCP\IGroup|null
* @since 8.0.0
*/
public function get($gid);
@@ -89,7 +89,7 @@ interface IGroupManager {
/**
* @param string $gid
- * @return \OCP\IGroup
+ * @return \OCP\IGroup|null
* @since 8.0.0
*/
public function createGroup($gid);
diff --git a/lib/public/IL10N.php b/lib/public/IL10N.php
index 53decd78051..f7baa10b5e9 100644
--- a/lib/public/IL10N.php
+++ b/lib/public/IL10N.php
@@ -34,6 +34,7 @@ declare(strict_types=1);
// 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;
/**
diff --git a/lib/public/IMemcache.php b/lib/public/IMemcache.php
index 8f182553b67..19d89b86832 100644
--- a/lib/public/IMemcache.php
+++ b/lib/public/IMemcache.php
@@ -29,6 +29,7 @@
// 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;
/**
diff --git a/lib/public/INavigationManager.php b/lib/public/INavigationManager.php
index f840bc8c8a5..68969d0c3f7 100644
--- a/lib/public/INavigationManager.php
+++ b/lib/public/INavigationManager.php
@@ -32,6 +32,7 @@
// 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;
/**
diff --git a/lib/public/IPreview.php b/lib/public/IPreview.php
index ba32300a284..08a428ebeb1 100644
--- a/lib/public/IPreview.php
+++ b/lib/public/IPreview.php
@@ -32,11 +32,12 @@
// 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;
use OCP\Files\File;
-use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFile;
/**
* This class provides functions to render and show thumbnails and previews of files
@@ -80,18 +81,6 @@ interface IPreview {
public function hasProviders();
/**
- * Return a preview of a file
- * @param string $file The path to the file where you want a thumbnail from
- * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image
- * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image
- * @param boolean $scaleUp Scale smaller images up to the thumbnail size or not. Might look ugly
- * @return \OCP\IImage
- * @since 6.0.0
- * @deprecated 11 Use getPreview
- */
- public function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false);
-
- /**
* Returns a preview of a file
*
* The cache is searched first and if nothing usable was found then a preview is
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index 05948cd480f..f61c1da0885 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -36,6 +36,7 @@ declare(strict_types=1);
// 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;
/**
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index bcdb6e6c9f5..79d4ed9f71b 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -43,14 +43,14 @@
// 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;
-use OCP\Log\ILogFactory;
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
+use OCP\Log\ILogFactory;
use OCP\Security\IContentSecurityPolicyManager;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
/**
* Class IServerContainer
* @package OCP
diff --git a/lib/public/ISession.php b/lib/public/ISession.php
index bbf36c86520..3d2f32f7f75 100644
--- a/lib/public/ISession.php
+++ b/lib/public/ISession.php
@@ -33,6 +33,7 @@ declare(strict_types=1);
// 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;
use OCP\Session\Exceptions\SessionNotAvailableException;
diff --git a/lib/public/ITagManager.php b/lib/public/ITagManager.php
index 60d547e44ad..b0c9f0d7d90 100644
--- a/lib/public/ITagManager.php
+++ b/lib/public/ITagManager.php
@@ -31,6 +31,7 @@
// 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;
/**
diff --git a/lib/public/ITags.php b/lib/public/ITags.php
index fce47bb5bc7..c39117e924f 100644
--- a/lib/public/ITags.php
+++ b/lib/public/ITags.php
@@ -31,6 +31,7 @@
// 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;
use OC\Tags;
diff --git a/lib/public/IUserBackend.php b/lib/public/IUserBackend.php
index 502856fc354..41123e8b7ae 100644
--- a/lib/public/IUserBackend.php
+++ b/lib/public/IUserBackend.php
@@ -28,6 +28,7 @@
// 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;
/**
diff --git a/lib/public/IUserSession.php b/lib/public/IUserSession.php
index d7bf5f9a385..48fe135f28e 100644
--- a/lib/public/IUserSession.php
+++ b/lib/public/IUserSession.php
@@ -33,6 +33,7 @@
// 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;
/**
@@ -42,6 +43,7 @@ namespace OCP;
interface IUserSession {
/**
* Do a user login
+ *
* @param string $user the username
* @param string $password the password
* @return bool true if successful
@@ -52,6 +54,7 @@ interface IUserSession {
/**
* Logs the user out including all the session data
* Logout, destroys session
+ *
* @return void
* @since 6.0.0
*/
@@ -80,4 +83,19 @@ interface IUserSession {
* @since 8.0.0
*/
public function isLoggedIn();
+
+ /**
+ * get getImpersonatingUserID
+ *
+ * @return string|null
+ * @since 18.0.0
+ */
+ public function getImpersonatingUserID(): ?string;
+
+ /**
+ * set setImpersonatingUserID
+ *
+ * @since 18.0.0
+ */
+ public function setImpersonatingUserID(bool $useCurrentUser = true): void;
}
diff --git a/lib/public/Image.php b/lib/public/Image.php
index d583dffe91d..55060f3da48 100644
--- a/lib/public/Image.php
+++ b/lib/public/Image.php
@@ -30,6 +30,7 @@
// 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;
/**
diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index de904d0eec1..04548046f55 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\L10N;
use OCP\IUser;
diff --git a/lib/public/Migration/IOutput.php b/lib/public/Migration/IOutput.php
index 7c6b12ceaf4..8d3ea7cb669 100644
--- a/lib/public/Migration/IOutput.php
+++ b/lib/public/Migration/IOutput.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Migration;
/**
diff --git a/lib/public/Migration/IRepairStep.php b/lib/public/Migration/IRepairStep.php
index 0ba834e2cbf..1a39531bcde 100644
--- a/lib/public/Migration/IRepairStep.php
+++ b/lib/public/Migration/IRepairStep.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Migration;
/**
diff --git a/lib/public/OCS/IDiscoveryService.php b/lib/public/OCS/IDiscoveryService.php
index ad1499e75fd..f294cffe94f 100644
--- a/lib/public/OCS/IDiscoveryService.php
+++ b/lib/public/OCS/IDiscoveryService.php
@@ -22,7 +22,6 @@ declare(strict_types=1);
*
*/
-
namespace OCP\OCS;
/**
diff --git a/lib/public/PreConditionNotMetException.php b/lib/public/PreConditionNotMetException.php
index ea6350afb4d..cbf0ec2f9b7 100644
--- a/lib/public/PreConditionNotMetException.php
+++ b/lib/public/PreConditionNotMetException.php
@@ -22,6 +22,7 @@
// 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;
/**
diff --git a/lib/public/Preview/IProvider.php b/lib/public/Preview/IProvider.php
index 5d62b3ce6d0..6642b7e26c6 100644
--- a/lib/public/Preview/IProvider.php
+++ b/lib/public/Preview/IProvider.php
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Preview;
/**
diff --git a/lib/public/RichObjectStrings/Definitions.php b/lib/public/RichObjectStrings/Definitions.php
index 69cabe638ad..55c31607659 100644
--- a/lib/public/RichObjectStrings/Definitions.php
+++ b/lib/public/RichObjectStrings/Definitions.php
@@ -268,6 +268,25 @@ class Definitions {
],
],
],
+ 'guest' => [
+ 'author' => 'Nextcloud',
+ 'app' => 'spreed',
+ 'since' => '17.0.0',
+ 'parameters' => [
+ 'id' => [
+ 'since' => '17.0.0',
+ 'required' => true,
+ 'description' => 'The id used to identify the guest user',
+ 'example' => '42',
+ ],
+ 'name' => [
+ 'since' => '17.0.0',
+ 'required' => true,
+ 'description' => 'Potential displayname of the guest user',
+ 'example' => 'Foobar Cats',
+ ],
+ ],
+ ],
'highlight' => [
'author' => 'Nextcloud',
'app' => 'core',
@@ -386,6 +405,43 @@ class Definitions {
],
],
],
+ 'talk-attachment' => [
+ 'author' => 'Nextcloud',
+ 'app' => 'talk',
+ 'since' => '18.0.0',
+ 'parameters' => [
+ 'id' => [
+ 'since' => '18.0.0',
+ 'required' => true,
+ 'description' => 'The id used to identify the attachment on the instance',
+ 'example' => '12345',
+ ],
+ 'name' => [
+ 'since' => '18.0.0',
+ 'required' => true,
+ 'description' => 'The name of the attachment',
+ 'example' => 'John Doe',
+ ],
+ 'conversation' => [
+ 'since' => '18.0.0',
+ 'required' => true,
+ 'description' => 'The token of the conversation',
+ 'example' => 'a1b2c3d4',
+ ],
+ 'mimetype' => [
+ 'since' => '18.0.0',
+ 'required' => false,
+ 'description' => 'The mimetype of the file/folder to allow clients to show a placeholder',
+ 'example' => 'text/plain',
+ ],
+ 'preview-available' => [
+ 'since' => '18.0.0',
+ 'required' => false,
+ 'description' => 'Whether or not a preview is available. If `no` the mimetype icon should be used',
+ 'example' => 'yes',
+ ],
+ ],
+ ],
'user' => [
'author' => 'Nextcloud',
'app' => 'core',
diff --git a/lib/public/Route/IRoute.php b/lib/public/Route/IRoute.php
index 9b8218085ad..40566413508 100644
--- a/lib/public/Route/IRoute.php
+++ b/lib/public/Route/IRoute.php
@@ -22,6 +22,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Route;
/**
diff --git a/lib/public/SabrePluginEvent.php b/lib/public/SabrePluginEvent.php
index d75c84965f6..165cccc22d2 100644
--- a/lib/public/SabrePluginEvent.php
+++ b/lib/public/SabrePluginEvent.php
@@ -25,8 +25,8 @@ namespace OCP;
use OCP\AppFramework\Http;
+use OCP\EventDispatcher\Event;
use Sabre\DAV\Server;
-use Symfony\Component\EventDispatcher\Event;
/**
* @since 8.2.0
diff --git a/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php b/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php
index 9bf1d57e77e..9c48f4038d8 100644
--- a/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php
+++ b/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php
@@ -40,6 +40,7 @@ class AddContentSecurityPolicyEvent extends Event {
* @since 17.0.0
*/
public function __construct(ContentSecurityPolicyManager $policyManager) {
+ parent::__construct();
$this->policyManager = $policyManager;
}
diff --git a/lib/public/Security/Events/GenerateSecurePasswordEvent.php b/lib/public/Security/Events/GenerateSecurePasswordEvent.php
new file mode 100644
index 00000000000..a55c8daafbd
--- /dev/null
+++ b/lib/public/Security/Events/GenerateSecurePasswordEvent.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCP\Security\Events;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * @since 18.0.0
+ */
+class GenerateSecurePasswordEvent extends Event {
+
+ /** @var null|string */
+ private $password;
+
+ /**
+ * @since 18.0.0
+ */
+ public function getPassword(): ?string {
+ return $this->password;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function setPassword(string $password): void {
+ $this->password = $password;
+ }
+
+}
diff --git a/lib/public/Security/Events/ValidatePasswordPolicyEvent.php b/lib/public/Security/Events/ValidatePasswordPolicyEvent.php
new file mode 100644
index 00000000000..11378526cc7
--- /dev/null
+++ b/lib/public/Security/Events/ValidatePasswordPolicyEvent.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCP\Security\Events;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * @since 18.0.0
+ */
+class ValidatePasswordPolicyEvent extends Event {
+
+ /** @var string */
+ private $password;
+
+ /**
+ * @since 18.0.0
+ */
+ public function __construct(string $password) {
+ parent::__construct();
+ $this->password = $password;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getPassword(): string {
+ return $this->password;
+ }
+
+}
diff --git a/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php b/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php
index ab93844c3f8..e840f910769 100644
--- a/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php
+++ b/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php
@@ -40,6 +40,7 @@ class AddFeaturePolicyEvent extends Event {
* @since 17.0.0
*/
public function __construct(FeaturePolicyManager $policyManager) {
+ parent::__construct();
$this->policyManager = $policyManager;
}
diff --git a/lib/public/Share.php b/lib/public/Share.php
index f433a35f17a..10c7324d903 100644
--- a/lib/public/Share.php
+++ b/lib/public/Share.php
@@ -34,6 +34,7 @@
// 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;
/**
diff --git a/lib/public/Share/Exceptions/GenericShareException.php b/lib/public/Share/Exceptions/GenericShareException.php
index ef5586a362f..7ccac2fb2db 100644
--- a/lib/public/Share/Exceptions/GenericShareException.php
+++ b/lib/public/Share/Exceptions/GenericShareException.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Share\Exceptions;
use OC\HintException;
diff --git a/lib/public/Share/Exceptions/IllegalIDChangeException.php b/lib/public/Share/Exceptions/IllegalIDChangeException.php
index 46cbe5fbf9f..fd5ef0dc2cd 100644
--- a/lib/public/Share/Exceptions/IllegalIDChangeException.php
+++ b/lib/public/Share/Exceptions/IllegalIDChangeException.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\Share\Exceptions;
/**
diff --git a/lib/public/Share/IManager.php b/lib/public/Share/IManager.php
index 302be523327..3127c74be5e 100644
--- a/lib/public/Share/IManager.php
+++ b/lib/public/Share/IManager.php
@@ -54,6 +54,7 @@ interface IManager {
* Update a share.
* The target of the share can't be changed this way: use moveShare
* The share can't be removed this way (permission 0): use deleteShare
+ * The state can't be changed this way: use acceptShare
*
* @param IShare $share
* @return IShare The share object
@@ -63,6 +64,17 @@ interface IManager {
public function updateShare(IShare $share);
/**
+ * Accept a share.
+ *
+ * @param IShare $share
+ * @param string $recipientId
+ * @return IShare The share object
+ * @throws \InvalidArgumentException
+ * @since 18.0.0
+ */
+ public function acceptShare(IShare $share, string $recipientId): IShare;
+
+ /**
* Delete a share
*
* @param IShare $share
@@ -385,4 +397,16 @@ interface IManager {
*/
public function shareProviderExists($shareType);
+ /**
+ * @Internal
+ *
+ * Get all the shares as iterable to reduce memory overhead
+ * Note, since this opens up database cursors the iterable should
+ * be fully itterated.
+ *
+ * @return iterable
+ * @since 18.0.0
+ */
+ public function getAllShares(): iterable;
+
}
diff --git a/lib/public/Share/IProviderFactory.php b/lib/public/Share/IProviderFactory.php
index ad43b64229d..8d14b78f462 100644
--- a/lib/public/Share/IProviderFactory.php
+++ b/lib/public/Share/IProviderFactory.php
@@ -35,13 +35,6 @@ use OCP\IServerContainer;
interface IProviderFactory {
/**
- * IProviderFactory constructor.
- * @param IServerContainer $serverContainer
- * @since 9.0.0
- */
- public function __construct(IServerContainer $serverContainer);
-
- /**
* @param string $id
* @return IShareProvider
* @throws ProviderException
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index 7bcecbdc872..1064f59e6d5 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -40,6 +40,84 @@ use OCP\Share\Exceptions\IllegalIDChangeException;
interface IShare {
/**
+ * @since 17.0.0
+ */
+ public const TYPE_USER = 0;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_GROUP = 1;
+
+ /**
+ * @internal
+ * @since 18.0.0
+ */
+ public const TYPE_USERGROUP = 2;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_LINK = 3;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_EMAIL = 4;
+
+ /**
+ * ToDo Check if it is still in use otherwise remove it
+ * @since 17.0.0
+ */
+ // public const TYPE_CONTACT = 5;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_REMOTE = 6;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_CIRCLE = 7;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_GUEST = 8;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_REMOTE_GROUP = 9;
+
+ /**
+ * @since 17.0.0
+ */
+ public const TYPE_ROOM = 10;
+
+ /**
+ * Internal type used by RoomShareProvider
+ * @since 17.0.0
+ */
+ // const TYPE_USERROOM = 11;
+
+ /**
+ * @since 18.0.0
+ */
+ public const STATUS_PENDING = 0;
+
+ /**
+ * @since 18.0.0
+ */
+ public const STATUS_ACCEPTED = 1;
+
+ /**
+ * @since 18.0.0
+ */
+ public const STATUS_REJECTED = 2;
+
+ /**
* Set the internal id of the share
* It is only allowed to set the internal id of a share once.
* Attempts to override the internal id will result in an IllegalIDChangeException
@@ -223,6 +301,25 @@ interface IShare {
public function getPermissions();
/**
+ * Set the accepted status
+ * See self::STATUS_*
+ *
+ * @param int $status
+ * @return IShare The modified object
+ * @since 18.0.0
+ */
+ public function setStatus(int $status): IShare;
+
+ /**
+ * Get the accepted status
+ * See self::STATUS_*
+ *
+ * @return int
+ * @since 18.0.0
+ */
+ public function getStatus(): int;
+
+ /**
* Attach a note to a share
*
* @param string $note
@@ -258,6 +355,14 @@ interface IShare {
public function getExpirationDate();
/**
+ * Is the share expired ?
+ *
+ * @return boolean
+ * @since 18.0.0
+ */
+ public function isExpired();
+
+ /**
* set a label for a share, some shares, e.g. public links can have a label
*
* @param string $label
diff --git a/lib/public/Share/IShareHelper.php b/lib/public/Share/IShareHelper.php
index c957a815e89..db9f2adbacd 100644
--- a/lib/public/Share/IShareHelper.php
+++ b/lib/public/Share/IShareHelper.php
@@ -21,6 +21,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCP\Share;
use OCP\Files\Node;
diff --git a/lib/public/Share/IShareProvider.php b/lib/public/Share/IShareProvider.php
index 6731bf8882b..891e8bf1bb8 100644
--- a/lib/public/Share/IShareProvider.php
+++ b/lib/public/Share/IShareProvider.php
@@ -25,9 +25,9 @@
namespace OCP\Share;
use OCP\Files\Folder;
+use OCP\Files\Node;
use OCP\Share\Exceptions\GenericShareException;
use OCP\Share\Exceptions\ShareNotFound;
-use OCP\Files\Node;
/**
* Interface IShareProvider
@@ -64,6 +64,16 @@ interface IShareProvider {
public function update(\OCP\Share\IShare $share);
/**
+ * Accept a share.
+ *
+ * @param IShare $share
+ * @param string $recipient
+ * @return IShare The share object
+ * @since 17.0.0
+ */
+// public function acceptShare(IShare $share, string $recipient): IShare;
+
+ /**
* Delete a share
*
* @param \OCP\Share\IShare $share
@@ -217,4 +227,13 @@ interface IShareProvider {
* @since 12
*/
public function getAccessList($nodes, $currentAccess);
+
+ /**
+ * Get all the shares in this provider returned as iterable to reduce memory
+ * overhead
+ *
+ * @return iterable
+ * @since 18.0.0
+ */
+ public function getAllShares(): iterable;
}
diff --git a/lib/public/Share_Backend.php b/lib/public/Share_Backend.php
index 7ebad8b64d3..4aa55844027 100644
--- a/lib/public/Share_Backend.php
+++ b/lib/public/Share_Backend.php
@@ -25,6 +25,7 @@
// 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;
/**
diff --git a/lib/public/Share_Backend_Collection.php b/lib/public/Share_Backend_Collection.php
index 0c87a58ce95..d5bb97a1c0c 100644
--- a/lib/public/Share_Backend_Collection.php
+++ b/lib/public/Share_Backend_Collection.php
@@ -23,6 +23,7 @@
// 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;
/**
diff --git a/lib/public/Share_Backend_File_Dependent.php b/lib/public/Share_Backend_File_Dependent.php
index a7f866dd7d0..3ff8c86a6c7 100644
--- a/lib/public/Share_Backend_File_Dependent.php
+++ b/lib/public/Share_Backend_File_Dependent.php
@@ -23,6 +23,7 @@
// 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;
/**
diff --git a/lib/public/SystemTag/ISystemTag.php b/lib/public/SystemTag/ISystemTag.php
index da434e8b5a0..8fa959fcc4d 100644
--- a/lib/public/SystemTag/ISystemTag.php
+++ b/lib/public/SystemTag/ISystemTag.php
@@ -67,4 +67,3 @@ interface ISystemTag {
public function isUserAssignable(): bool;
}
-
diff --git a/lib/public/SystemTag/ISystemTagManagerFactory.php b/lib/public/SystemTag/ISystemTagManagerFactory.php
index 25956b41df4..5458cab8340 100644
--- a/lib/public/SystemTag/ISystemTagManagerFactory.php
+++ b/lib/public/SystemTag/ISystemTagManagerFactory.php
@@ -20,6 +20,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
namespace OCP\SystemTag;
use OCP\IServerContainer;
diff --git a/lib/public/SystemTag/ManagerEvent.php b/lib/public/SystemTag/ManagerEvent.php
index 452c0d5da8f..41155a64ea2 100644
--- a/lib/public/SystemTag/ManagerEvent.php
+++ b/lib/public/SystemTag/ManagerEvent.php
@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace OCP\SystemTag;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class ManagerEvent
diff --git a/lib/public/SystemTag/MapperEvent.php b/lib/public/SystemTag/MapperEvent.php
index d98caf1317b..4e2c84fecaf 100644
--- a/lib/public/SystemTag/MapperEvent.php
+++ b/lib/public/SystemTag/MapperEvent.php
@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace OCP\SystemTag;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class MapperEvent
diff --git a/lib/public/SystemTag/SystemTagsEntityEvent.php b/lib/public/SystemTag/SystemTagsEntityEvent.php
index e439c16d9c6..cb4982ae282 100644
--- a/lib/public/SystemTag/SystemTagsEntityEvent.php
+++ b/lib/public/SystemTag/SystemTagsEntityEvent.php
@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace OCP\SystemTag;
-use Symfony\Component\EventDispatcher\Event;
+use OCP\EventDispatcher\Event;
/**
* Class SystemTagsEntityEvent
diff --git a/lib/public/User.php b/lib/public/User.php
index a669a3a06fc..04254db08a1 100644
--- a/lib/public/User.php
+++ b/lib/public/User.php
@@ -38,6 +38,7 @@
// 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;
/**
diff --git a/lib/public/User/Events/CreateUserEvent.php b/lib/public/User/Events/CreateUserEvent.php
new file mode 100644
index 00000000000..877899fcba0
--- /dev/null
+++ b/lib/public/User/Events/CreateUserEvent.php
@@ -0,0 +1,63 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCP\User\Events;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * @since 18.0.0
+ */
+class CreateUserEvent extends Event {
+
+ /** @var string */
+ private $uid;
+
+ /** @var string */
+ private $password;
+
+ /**
+ * @since 18.0.0
+ */
+ public function __construct(string $uid,
+ string $password) {
+ parent::__construct();
+ $this->uid = $uid;
+ $this->password = $password;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getUid(): string {
+ return $this->uid;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getPassword(): string {
+ return $this->password;
+ }
+
+}
diff --git a/lib/private/User/Events/PostLoginEvent.php b/lib/public/User/Events/PostLoginEvent.php
index d14030b5294..7cc7aab4cd3 100644
--- a/lib/private/User/Events/PostLoginEvent.php
+++ b/lib/public/User/Events/PostLoginEvent.php
@@ -1,5 +1,7 @@
<?php
+
declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -22,42 +24,53 @@ declare(strict_types=1);
*
*/
-namespace OC\User\Events;
+namespace OCP\User\Events;
use OCP\EventDispatcher\Event;
use OCP\IUser;
+/**
+ * @since 18.0.0
+ */
class PostLoginEvent extends Event {
/** @var IUser */
private $user;
+
/** @var string */
private $password;
+
/** @var bool */
private $isTokenLogin;
-
+ /**
+ * @since 18.0.0
+ */
public function __construct(IUser $user, string $password, bool $isTokenLogin) {
parent::__construct();
-
$this->user = $user;
$this->password = $password;
$this->isTokenLogin = $isTokenLogin;
}
+ /**
+ * @since 18.0.0
+ */
public function getUser(): IUser {
return $this->user;
}
- public function hasPassword(): bool {
- return $this->password !== '';
- }
-
+ /**
+ * @since 18.0.0
+ */
public function getPassword(): string {
return $this->password;
}
- public function getIsTokenLogin(): bool {
+ /**
+ * @since 18.0.0
+ */
+ public function isTokenLogin(): bool {
return $this->isTokenLogin;
}
}
diff --git a/lib/public/User/Events/UserCreatedEvent.php b/lib/public/User/Events/UserCreatedEvent.php
new file mode 100644
index 00000000000..53debf5ff5c
--- /dev/null
+++ b/lib/public/User/Events/UserCreatedEvent.php
@@ -0,0 +1,71 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCP\User\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\IUser;
+
+/**
+ * @since 18.0.0
+ */
+class UserCreatedEvent extends Event {
+
+ /** @var IUser */
+ private $user;
+
+ /** @var string */
+ private $password;
+
+ /**
+ * @since 18.0.0
+ */
+ public function __construct(IUser $user,
+ string $password) {
+ parent::__construct();
+ $this->user = $user;
+ $this->password = $password;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getUser(): IUser {
+ return $this->user;
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getUid(): string {
+ return $this->user->getUID();
+ }
+
+ /**
+ * @since 18.0.0
+ */
+ public function getPassword(): string {
+ return $this->password;
+ }
+
+}
diff --git a/lib/public/UserInterface.php b/lib/public/UserInterface.php
index b82fc6ba550..d880f2f5df5 100644
--- a/lib/public/UserInterface.php
+++ b/lib/public/UserInterface.php
@@ -30,6 +30,7 @@
// 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;
/**
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 7e9f6b2efbc..a63e53b0720 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -50,6 +50,7 @@
// 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;
/**
diff --git a/lib/public/WorkflowEngine/EntityContext/IDisplayName.php b/lib/public/WorkflowEngine/EntityContext/IDisplayName.php
new file mode 100644
index 00000000000..eeaf7887d5a
--- /dev/null
+++ b/lib/public/WorkflowEngine/EntityContext/IDisplayName.php
@@ -0,0 +1,41 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\EntityContext;
+
+/**
+ * Interface IDisplayName
+ *
+ * @package OCP\WorkflowEngine\EntityContext
+ *
+ * @since 18.0.0
+ */
+interface IDisplayName {
+ /**
+ * returns the end user facing name of the object related to the entity
+ *
+ * @since 18.0.0
+ */
+ public function getDisplayName(): string;
+}
diff --git a/lib/public/WorkflowEngine/EntityContext/IDisplayText.php b/lib/public/WorkflowEngine/EntityContext/IDisplayText.php
new file mode 100644
index 00000000000..5e74171883a
--- /dev/null
+++ b/lib/public/WorkflowEngine/EntityContext/IDisplayText.php
@@ -0,0 +1,47 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\EntityContext;
+
+/**
+ * Interface IDisplayText
+ *
+ * @package OCP\WorkflowEngine\EntityContext
+ *
+ * @since 18.0.0
+ */
+interface IDisplayText {
+
+ /**
+ * returns translated text used for display to the end user. For instance,
+ * it can describe the event in a human readable way.
+ *
+ * The entity may react to a verbosity level that is provided. With the
+ * basic level, 0, it would return brief information, and more with higher
+ * numbers. All information shall be shown at a level of 3.
+ *
+ * @since 18.0.0
+ */
+ public function getDisplayText(int $verbosity = 0): string;
+}
diff --git a/lib/public/WorkflowEngine/EntityContext/IIcon.php b/lib/public/WorkflowEngine/EntityContext/IIcon.php
new file mode 100644
index 00000000000..cde340c9931
--- /dev/null
+++ b/lib/public/WorkflowEngine/EntityContext/IIcon.php
@@ -0,0 +1,42 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\EntityContext;
+
+/**
+ * Interface IIcon
+ *
+ * @package OCP\WorkflowEngine\EntityContext
+ *
+ * @since 18.0.0
+ */
+interface IIcon {
+ /**
+ * returns a URL to an icon that is related to the entity, for instance
+ * a group icon for groups.
+ *
+ * @since 18.0.0
+ */
+ public function getIconUrl(): string;
+}
diff --git a/lib/public/WorkflowEngine/EntityContext/IUrl.php b/lib/public/WorkflowEngine/EntityContext/IUrl.php
new file mode 100644
index 00000000000..a847dfaad05
--- /dev/null
+++ b/lib/public/WorkflowEngine/EntityContext/IUrl.php
@@ -0,0 +1,41 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\EntityContext;
+
+/**
+ * Interface IUrl
+ *
+ * @package OCP\WorkflowEngine\EntityContext
+ *
+ * @since 18.0.0
+ */
+interface IUrl {
+ /**
+ * returns a URL that is related to the entity, e.g. the link to a share
+ *
+ * @since 18.0.0
+ */
+ public function getUrl(): string;
+}
diff --git a/lib/public/WorkflowEngine/GenericEntityEvent.php b/lib/public/WorkflowEngine/GenericEntityEvent.php
new file mode 100644
index 00000000000..3ea34c6fb87
--- /dev/null
+++ b/lib/public/WorkflowEngine/GenericEntityEvent.php
@@ -0,0 +1,79 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Class GenericEntityEvent
+ *
+ * @package OCP\WorkflowEngine
+ *
+ * @since 18.0.0
+ */
+class GenericEntityEvent implements IEntityEvent {
+
+ /** @var string */
+ private $displayName;
+ /** @var string */
+ private $eventName;
+
+ /**
+ * GenericEntityEvent constructor.
+ *
+ * @since 18.0.0
+ */
+ public function __construct(string $displayName, string $eventName) {
+ if(trim($displayName) === '') {
+ throw new \InvalidArgumentException('DisplayName must not be empty');
+ }
+ if(trim($eventName) === '') {
+ throw new \InvalidArgumentException('EventName must not be empty');
+ }
+
+ $this->displayName = trim($displayName);
+ $this->eventName = trim($eventName);
+ }
+
+ /**
+ * returns a translated name to be presented in the web interface.
+ *
+ * Example: "created" (en), "kreita" (eo)
+ *
+ * @since 18.0.0
+ */
+ public function getDisplayName(): string {
+ return $this->displayName;
+ }
+
+ /**
+ * returns the event name that is emitted by the EventDispatcher, e.g.:
+ *
+ * Example: "OCA\MyApp\Factory\Cats::postCreated"
+ *
+ * @since 18.0.0
+ */
+ public function getEventName(): string {
+ return $this->eventName;
+ }
+}
diff --git a/lib/public/WorkflowEngine/ICheck.php b/lib/public/WorkflowEngine/ICheck.php
index 1d4fc966460..f5586e83d51 100644
--- a/lib/public/WorkflowEngine/ICheck.php
+++ b/lib/public/WorkflowEngine/ICheck.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license GNU AGPL version 3 or any later version
@@ -23,9 +24,6 @@
namespace OCP\WorkflowEngine;
-
-use OCP\Files\Storage\IStorage;
-
/**
* Interface ICheck
*
@@ -34,13 +32,6 @@ use OCP\Files\Storage\IStorage;
*/
interface ICheck {
/**
- * @param IStorage $storage
- * @param string $path
- * @since 9.1
- */
- public function setFileInfo(IStorage $storage, $path);
-
- /**
* @param string $operator
* @param string $value
* @return bool
@@ -55,4 +46,28 @@ interface ICheck {
* @since 9.1
*/
public function validateCheck($operator, $value);
+
+ /**
+ * returns a list of Entities the checker supports. The values must match
+ * the class name of the entity.
+ *
+ * An empty result means the check is universally available.
+ *
+ * @since 18.0.0
+ */
+ public function supportedEntities(): array;
+
+ /**
+ * returns whether the operation can be used in the requested scope.
+ *
+ * Scope IDs are defined as constants in OCP\WorkflowEngine\IManager. At
+ * time of writing these are SCOPE_ADMIN and SCOPE_USER.
+ *
+ * For possibly unknown future scopes the recommended behaviour is: if
+ * user scope is permitted, the default behaviour should return `true`,
+ * otherwise `false`.
+ *
+ * @since 18.0.0
+ */
+ public function isAvailableForScope(int $scope): bool;
}
diff --git a/lib/public/WorkflowEngine/IComplexOperation.php b/lib/public/WorkflowEngine/IComplexOperation.php
new file mode 100644
index 00000000000..63a4ca2460a
--- /dev/null
+++ b/lib/public/WorkflowEngine/IComplexOperation.php
@@ -0,0 +1,56 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IComplexOperation
+ *
+ * This interface represents an operator that is less generic and indicates
+ * that some of the tasks it does itself instead of relying on the engine.
+ * This includes:
+ *
+ * * registering listeners – the implementing app needs to ensure that the
+ * business logic registers listeners to the events it listens to. For example
+ * when direct storage access is required, adding a wrapper or listening to
+ * a specific one is required over usual file events.
+ *
+ * @package OCP\WorkflowEngine
+ *
+ * @since 18.0.0
+ */
+interface IComplexOperation extends IOperation {
+
+ /**
+ * As IComplexOperation chooses the triggering events itself, a hint has
+ * to be shown to the user so make clear when this operation is becoming
+ * active. This method returns such a translated string.
+ *
+ * Example: "When a file is accessed" (en)
+ *
+ * @since 18.0.0
+ */
+ public function getTriggerHint(): string;
+
+}
diff --git a/lib/public/WorkflowEngine/IEntity.php b/lib/public/WorkflowEngine/IEntity.php
new file mode 100644
index 00000000000..47e2f102199
--- /dev/null
+++ b/lib/public/WorkflowEngine/IEntity.php
@@ -0,0 +1,85 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * Interface IEntity
+ *
+ * This interface represents an entity that supports events the workflow engine
+ * can listen to. For example a file with the create, update, etc. events.
+ *
+ * Ensure to listen to 'OCP/WorkflowEngine::loadEntities' for registering your
+ * entities.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ */
+interface IEntity {
+
+ /**
+ * returns a translated name to be presented in the web interface.
+ *
+ * Example: "File" (en), "Dosiero" (eo)
+ *
+ * @since 18.0.0
+ */
+ public function getName(): string;
+
+ /**
+ * returns the URL to the icon of the entity for display in the web interface.
+ *
+ * Usually, the implementation would utilize the `imagePath()` method of the
+ * `\OCP\IURLGenerator` instance and simply return its result.
+ *
+ * Example implementation: return $this->urlGenerator->imagePath('myApp', 'cat.svg');
+ *
+ * @since 18.0.0
+ */
+ public function getIcon(): string;
+
+ /**
+ * returns a list of supported events
+ *
+ * @return IEntityEvent[]
+ * @since 18.0.0
+ */
+ public function getEvents(): array;
+
+ /**
+ * @since 18.0.0
+ */
+ public function prepareRuleMatcher(IRuleMatcher $ruleMatcher, string $eventName, Event $event): void;
+
+ /**
+ * returns whether the provided user id is allowed to run a flow against
+ * the known context
+ *
+ * @since 18.0.0
+ */
+ public function isLegitimatedForUserId(string $userId): bool;
+
+}
diff --git a/lib/public/WorkflowEngine/IEntityCheck.php b/lib/public/WorkflowEngine/IEntityCheck.php
new file mode 100644
index 00000000000..d90535b4c99
--- /dev/null
+++ b/lib/public/WorkflowEngine/IEntityCheck.php
@@ -0,0 +1,51 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IFileCheck
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ */
+interface IEntityCheck {
+ /**
+ * Equips the check with a subject fitting the Entity. For instance, an
+ * entity of File will receive an instance of OCP\Files\Node, or a comment
+ * entity might get an IComment.
+ *
+ * The implementing check must be aware of the incoming type.
+ *
+ * If an unsupported subject is passed the implementation MAY throw an
+ * \UnexpectedValueException.
+ *
+ * @param IEntity $entity
+ * @param mixed $subject
+ * @throws \UnexpectedValueException
+ * @since 18.0.0
+ */
+ public function setEntitySubject(IEntity $entity, $subject): void;
+
+}
diff --git a/lib/public/WorkflowEngine/IEntityCompat.php b/lib/public/WorkflowEngine/IEntityCompat.php
new file mode 100644
index 00000000000..1a3ffc7bc10
--- /dev/null
+++ b/lib/public/WorkflowEngine/IEntityCompat.php
@@ -0,0 +1,47 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IEntityCompat
+ *
+ * This interface extends IEntity to provide compatibility with old style
+ * Event classes. It is only present for a transition period and will be
+ * removed in 2023 again.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ * @deprecated
+ */
+interface IEntityCompat extends IEntity {
+ /**
+ * Like prepareRuleMatcherCompat, but works with events that are not based
+ * on \OCP\EventDispatcher\Event.
+ *
+ * @since 18.0.0
+ * @deprecated
+ */
+ public function prepareRuleMatcherCompat(IRuleMatcher $ruleMatcher, string $eventName, $event): void;
+}
diff --git a/lib/public/WorkflowEngine/IEntityEvent.php b/lib/public/WorkflowEngine/IEntityEvent.php
new file mode 100644
index 00000000000..8baa0573fa8
--- /dev/null
+++ b/lib/public/WorkflowEngine/IEntityEvent.php
@@ -0,0 +1,54 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IEntityEvent
+ *
+ * represents an entitiy event that is dispatched via EventDispatcher
+ *
+ * @package OCP\WorkflowEngine
+ *
+ * @since 18.0.0
+ */
+interface IEntityEvent {
+ /**
+ * returns a translated name to be presented in the web interface.
+ *
+ * Example: "created" (en), "kreita" (eo)
+ *
+ * @since 18.0.0
+ */
+ public function getDisplayName(): string;
+
+ /**
+ * returns the event name that is emitted by the EventDispatcher, e.g.:
+ *
+ * Example: "OCA\MyApp\Factory\Cats::postCreated"
+ *
+ * @since 18.0.0
+ */
+ public function getEventName(): string;
+}
diff --git a/lib/public/WorkflowEngine/IFileCheck.php b/lib/public/WorkflowEngine/IFileCheck.php
new file mode 100644
index 00000000000..557ba0f3c10
--- /dev/null
+++ b/lib/public/WorkflowEngine/IFileCheck.php
@@ -0,0 +1,42 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+
+use OCP\Files\Storage\IStorage;
+
+/**
+ * Interface IFileCheck
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ */
+interface IFileCheck extends IEntityCheck {
+ /**
+ * @since 18.0.0
+ */
+ public function setFileInfo(IStorage $storage, string $path);
+
+}
diff --git a/lib/public/WorkflowEngine/IManager.php b/lib/public/WorkflowEngine/IManager.php
index cd323a816f3..78fd718ec9e 100644
--- a/lib/public/WorkflowEngine/IManager.php
+++ b/lib/public/WorkflowEngine/IManager.php
@@ -23,9 +23,6 @@
namespace OCP\WorkflowEngine;
-
-use OCP\Files\Storage\IStorage;
-
/**
* Interface IManager
*
@@ -33,18 +30,40 @@ use OCP\Files\Storage\IStorage;
* @since 9.1
*/
interface IManager {
+
+ const SCOPE_ADMIN = 0;
+ const SCOPE_USER = 1;
+
+ const EVENT_NAME_REG_OPERATION = 'OCP\WorkflowEngine::registerOperations';
+ const EVENT_NAME_REG_ENTITY = 'OCP\WorkflowEngine::registerEntities';
+ const EVENT_NAME_REG_CHECK = 'OCP\WorkflowEngine::registerChecks';
+
+ /**
+ * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_ENTITY` at the
+ * EventDispatcher for registering your entities.
+ *
+ * @since 18.0.0
+ */
+ public function registerEntity(IEntity $entity): void;
+
+ /**
+ * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_OPERATION` at the
+ * EventDispatcher for registering your operators.
+ *
+ * @since 18.0.0
+ */
+ public function registerOperation(IOperation $operator): void;
+
/**
- * @param IStorage $storage
- * @param string $path
- * @since 9.1
+ * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_CHECK` at the
+ * EventDispatcher for registering your operators.
+ *
+ * @since 18.0.0
*/
- public function setFileInfo(IStorage $storage, $path);
+ public function registerCheck(ICheck $check): void;
/**
- * @param string $class
- * @param bool $returnFirstMatchingOperationOnly
- * @return array
- * @since 9.1
+ * @since 18.0.0
*/
- public function getMatchingOperations($class, $returnFirstMatchingOperationOnly = true);
+ public function getRuleMatcher(): IRuleMatcher;
}
diff --git a/lib/public/WorkflowEngine/IOperation.php b/lib/public/WorkflowEngine/IOperation.php
index 491a805909c..d01c6021c5f 100644
--- a/lib/public/WorkflowEngine/IOperation.php
+++ b/lib/public/WorkflowEngine/IOperation.php
@@ -23,6 +23,8 @@
namespace OCP\WorkflowEngine;
+use OCP\EventDispatcher\Event;
+
/**
* Interface IOperation
*
@@ -31,11 +33,71 @@ namespace OCP\WorkflowEngine;
*/
interface IOperation {
/**
- * @param string $name
- * @param array[] $checks
- * @param string $operation
+ * returns a translated name to be presented in the web interface
+ *
+ * Example: "Automated tagging" (en), "Aŭtomata etikedado" (eo)
+ *
+ * @since 18.0.0
+ */
+ public function getDisplayName(): string;
+
+ /**
+ * returns a translated, descriptive text to be presented in the web interface.
+ *
+ * It should be short and precise.
+ *
+ * Example: "Tag based automatic deletion of files after a given time." (en)
+ *
+ * @since 18.0.0
+ */
+ public function getDescription(): string;
+
+ /**
+ * returns the URL to the icon of the operator for display in the web interface.
+ *
+ * Usually, the implementation would utilize the `imagePath()` method of the
+ * `\OCP\IURLGenerator` instance and simply return its result.
+ *
+ * Example implementation: return $this->urlGenerator->imagePath('myApp', 'cat.svg');
+ *
+ * @since 18.0.0
+ */
+ public function getIcon(): string;
+
+ /**
+ * returns whether the operation can be used in the requested scope.
+ *
+ * Scope IDs are defined as constants in OCP\WorkflowEngine\IManager. At
+ * time of writing these are SCOPE_ADMIN and SCOPE_USER.
+ *
+ * For possibly unknown future scopes the recommended behaviour is: if
+ * user scope is permitted, the default behaviour should return `true`,
+ * otherwise `false`.
+ *
+ * @since 18.0.0
+ */
+ public function isAvailableForScope(int $scope): bool;
+
+ /**
+ * Validates whether a configured workflow rule is valid. If it is not,
+ * an `\UnexpectedValueException` is supposed to be thrown.
+ *
* @throws \UnexpectedValueException
* @since 9.1
*/
- public function validateOperation($name, array $checks, $operation);
+ public function validateOperation(string $name, array $checks, string $operation): void;
+
+ /**
+ * Is being called by the workflow engine when an event was triggered that
+ * is configured for this operation. An evaluation whether the event
+ * qualifies for this operation to run has still to be done by the
+ * implementor by calling the RuleMatchers getMatchingOperations method
+ * and evaluating the results.
+ *
+ * If the implementor is an IComplexOperation, this method will not be
+ * called automatically. It can be used or left as no-op by the implementor.
+ *
+ * @since 18.0.0
+ */
+ public function onEvent(string $eventName, Event $event, IRuleMatcher $ruleMatcher): void;
}
diff --git a/lib/public/WorkflowEngine/IOperationCompat.php b/lib/public/WorkflowEngine/IOperationCompat.php
new file mode 100644
index 00000000000..434e6da0316
--- /dev/null
+++ b/lib/public/WorkflowEngine/IOperationCompat.php
@@ -0,0 +1,50 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface IOperationCompat
+ *
+ * This interface extends IOperation to provide compatibility with old style
+ * Event classes. It is only present for a transition period and will be
+ * removed in 2023 again.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ * @deprecated
+ */
+interface IOperationCompat {
+ /**
+ * Like onEvent, but used with events that are not based on
+ * \OCP\EventDispatcher\Event.
+ *
+ * This method is introduced for compatibility reasons and will be removed
+ * in 2023 again.
+ *
+ * @since 18.0.0
+ * @deprecated
+ */
+ public function onEventCompat(string $eventName, $event, IRuleMatcher $ruleMatcher): void;
+}
diff --git a/lib/public/WorkflowEngine/IRuleMatcher.php b/lib/public/WorkflowEngine/IRuleMatcher.php
new file mode 100644
index 00000000000..28abaa56137
--- /dev/null
+++ b/lib/public/WorkflowEngine/IRuleMatcher.php
@@ -0,0 +1,79 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+use RuntimeException;
+
+/**
+ * Class IRuleMatcher
+ *
+ * @package OCP\WorkflowEngine
+ *
+ * @since 18.0.0
+ */
+interface IRuleMatcher extends IFileCheck {
+ /**
+ * This method is left for backwards compatibility and easier porting of
+ * apps. Please use 'getFlows' instead (and setOperation if you implement
+ * an IComplexOperation).
+ *
+ * @since 18.0.0
+ * @deprecated 18.0.0
+ */
+ public function getMatchingOperations(string $class, bool $returnFirstMatchingOperationOnly = true): array;
+
+ /**
+ * @throws RuntimeException
+ * @since 18.0.0
+ */
+ public function getFlows(bool $returnFirstMatchingOperationOnly = true): array;
+
+ /**
+ * this method can only be called once and is typically called by the
+ * Flow engine, unless for IComplexOperations.
+ *
+ * @throws RuntimeException
+ * @since 18.0.0
+ */
+ public function setOperation(IOperation $operation): void;
+
+ /**
+ * this method can only be called once and is typically called by the
+ * Flow engine, unless for IComplexOperations.
+ *
+ * @throws RuntimeException
+ * @since 18.0.0
+ */
+ public function setEntity(IEntity $entity): void;
+
+ /**
+ * returns the entity which might provide more information, depending on
+ * the interfaces it implements
+ *
+ * @return IEntity
+ * @since 18.0.0
+ */
+ public function getEntity(): IEntity;
+}
diff --git a/lib/public/WorkflowEngine/ISpecificOperation.php b/lib/public/WorkflowEngine/ISpecificOperation.php
new file mode 100644
index 00000000000..0b26770a13a
--- /dev/null
+++ b/lib/public/WorkflowEngine/ISpecificOperation.php
@@ -0,0 +1,50 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine;
+
+/**
+ * Interface ISpecificOperation
+ *
+ * This interface represents an operator that is designed to work with exactly
+ * one entity type.
+ *
+ * In almost all of the cases it is not necessary to have this limitation,
+ * because the action is not connected to the event. This mechanism suits
+ * special cases.
+ *
+ * @package OCP\WorkflowEngine
+ * @since 18.0.0
+ */
+interface ISpecificOperation extends IOperation {
+
+ /**
+ * returns the id of the entity the operator is designed for
+ *
+ * Example: 'WorkflowEngine_Entity_File'
+ *
+ * @since 18.0.0
+ */
+ public function getEntityId():string;
+}
diff --git a/lib/versioncheck.php b/lib/versioncheck.php
index ffaa0e510a3..d404f66781e 100644
--- a/lib/versioncheck.php
+++ b/lib/versioncheck.php
@@ -1,17 +1,17 @@
<?php
-// Show warning if a PHP version below 7.1 is used,
-if (version_compare(PHP_VERSION, '7.1') === -1) {
+// Show warning if a PHP version below 7.2 is used,
+if (PHP_VERSION_ID < 70200) {
http_response_code(500);
- echo 'This version of Nextcloud requires at least PHP 7.1<br/>';
+ echo 'This version of Nextcloud requires at least PHP 7.2<br/>';
echo 'You are currently running ' . PHP_VERSION . '. Please update your PHP version.';
exit(-1);
}
-// Show warning if > PHP 7.3 is used as Nextcloud is not compatible with > PHP 7.3 for now
-if (version_compare(PHP_VERSION, '7.4.0') !== -1) {
+// Show warning if > PHP 7.4 is used as Nextcloud is not compatible with > PHP 7.4 for now
+if (PHP_VERSION_ID >= 70500) {
http_response_code(500);
- echo 'This version of Nextcloud is not compatible with > PHP 7.3.<br/>';
+ echo 'This version of Nextcloud is not compatible with > PHP 7.4.<br/>';
echo 'You are currently running ' . PHP_VERSION . '.';
exit(-1);
}