aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/admin_audit/appinfo/info.xml8
-rw-r--r--apps/comments/appinfo/info.xml4
-rw-r--r--apps/comments/js/commentmodel.js36
-rw-r--r--apps/comments/js/commentsummarymodel.js11
-rw-r--r--apps/comments/js/filesplugin.js11
-rw-r--r--apps/comments/l10n/ca.js38
-rw-r--r--apps/comments/l10n/ca.json38
-rw-r--r--apps/comments/l10n/cs_CZ.js8
-rw-r--r--apps/comments/l10n/cs_CZ.json8
-rw-r--r--apps/comments/l10n/de_DE.js10
-rw-r--r--apps/comments/l10n/de_DE.json10
-rw-r--r--apps/comments/l10n/fr.js2
-rw-r--r--apps/comments/l10n/fr.json2
-rw-r--r--apps/comments/l10n/lv.js17
-rw-r--r--apps/comments/l10n/lv.json17
-rw-r--r--apps/comments/l10n/nb_NO.js8
-rw-r--r--apps/comments/l10n/nb_NO.json8
-rw-r--r--apps/comments/l10n/pl.js8
-rw-r--r--apps/comments/l10n/pl.json8
-rw-r--r--apps/comments/l10n/ru.js10
-rw-r--r--apps/comments/l10n/ru.json10
-rw-r--r--apps/comments/l10n/sk_SK.js28
-rw-r--r--apps/comments/l10n/sk_SK.json28
-rw-r--r--apps/comments/l10n/sq.js11
-rw-r--r--apps/comments/l10n/sq.json11
-rw-r--r--apps/comments/l10n/sv.js36
-rw-r--r--apps/comments/l10n/sv.json36
-rw-r--r--apps/comments/l10n/zh_CN.js34
-rw-r--r--apps/comments/l10n/zh_CN.json34
-rw-r--r--apps/comments/lib/Activity/Provider.php2
-rw-r--r--apps/comments/lib/Notification/Listener.php15
-rw-r--r--apps/comments/lib/Notification/Notifier.php6
-rw-r--r--apps/comments/tests/Unit/Notification/ListenerTest.php8
-rw-r--r--apps/dav/appinfo/info.xml5
-rw-r--r--apps/dav/appinfo/v1/caldav.php3
-rw-r--r--apps/dav/appinfo/v1/carddav.php1
-rw-r--r--apps/dav/appinfo/v1/webdav.php1
-rw-r--r--apps/dav/appinfo/v2/remote.php1
-rw-r--r--apps/dav/l10n/bg_BG.js49
-rw-r--r--apps/dav/l10n/bg_BG.json47
-rw-r--r--apps/dav/l10n/cs_CZ.js70
-rw-r--r--apps/dav/l10n/cs_CZ.json70
-rw-r--r--apps/dav/l10n/de.js28
-rw-r--r--apps/dav/l10n/de.json28
-rw-r--r--apps/dav/l10n/de_DE.js24
-rw-r--r--apps/dav/l10n/de_DE.json24
-rw-r--r--apps/dav/l10n/nb_NO.js38
-rw-r--r--apps/dav/l10n/nb_NO.json38
-rw-r--r--apps/dav/l10n/ru.js40
-rw-r--r--apps/dav/l10n/ru.json40
-rw-r--r--apps/dav/l10n/sq.js40
-rw-r--r--apps/dav/l10n/sq.json38
-rw-r--r--apps/dav/l10n/sv.js44
-rw-r--r--apps/dav/l10n/sv.json44
-rw-r--r--apps/dav/lib/CalDAV/Activity/Backend.php4
-rw-r--r--apps/dav/lib/CalDAV/Activity/Setting/Todo.php2
-rw-r--r--apps/dav/lib/CalDAV/BirthdayService.php45
-rw-r--r--apps/dav/lib/CalDAV/CalDavBackend.php32
-rw-r--r--apps/dav/lib/CalDAV/CalendarObject.php8
-rw-r--r--apps/dav/lib/Connector/LegacyDAVACL.php19
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php9
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesReportPlugin.php12
-rw-r--r--apps/dav/lib/Connector/Sabre/TagsPlugin.php6
-rw-r--r--apps/dav/lib/Files/RootCollection.php1
-rw-r--r--apps/dav/lib/Migration/ValueFix.php71
-rw-r--r--apps/dav/lib/Migration/ValueFixInsert.php63
-rw-r--r--apps/dav/lib/Server.php40
-rw-r--r--apps/dav/lib/SystemTag/SystemTagNode.php7
-rw-r--r--apps/dav/tests/travis/caldav/script-new-endpoint.sh (renamed from apps/dav/tests/travis/caldav/script.sh)3
-rw-r--r--apps/dav/tests/travis/caldav/script-old-endpoint.sh23
-rw-r--r--apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml (renamed from apps/dav/tests/travis/caldavtest/serverinfo.xml)0
-rw-r--r--apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml850
-rw-r--r--apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml850
-rw-r--r--apps/dav/tests/travis/carddav/script-new-endpoint.sh25
-rw-r--r--apps/dav/tests/travis/carddav/script-old-endpoint.sh22
-rw-r--r--apps/dav/tests/unit/CalDAV/CalendarTest.php8
-rw-r--r--apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php29
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php2
-rw-r--r--apps/dav/tests/unit/Migration/ValueFixInsertTest.php117
-rw-r--r--apps/dav/tests/unit/Migration/ValueFixTest.php200
-rw-r--r--apps/dav/tests/unit/SystemTag/SystemTagNodeTest.php42
-rw-r--r--apps/encryption/appinfo/info.xml5
-rw-r--r--apps/encryption/css/settings-personal.css5
-rw-r--r--apps/encryption/l10n/cs_CZ.js8
-rw-r--r--apps/encryption/l10n/cs_CZ.json8
-rw-r--r--apps/encryption/l10n/de.js8
-rw-r--r--apps/encryption/l10n/de.json8
-rw-r--r--apps/encryption/l10n/de_DE.js10
-rw-r--r--apps/encryption/l10n/de_DE.json10
-rw-r--r--apps/encryption/l10n/el.js8
-rw-r--r--apps/encryption/l10n/el.json8
-rw-r--r--apps/encryption/l10n/es.js8
-rw-r--r--apps/encryption/l10n/es.json8
-rw-r--r--apps/encryption/l10n/fr.js10
-rw-r--r--apps/encryption/l10n/fr.json10
-rw-r--r--apps/encryption/l10n/hu_HU.js8
-rw-r--r--apps/encryption/l10n/hu_HU.json8
-rw-r--r--apps/encryption/l10n/id.js9
-rw-r--r--apps/encryption/l10n/id.json9
-rw-r--r--apps/encryption/l10n/it.js8
-rw-r--r--apps/encryption/l10n/it.json8
-rw-r--r--apps/encryption/l10n/ja.js8
-rw-r--r--apps/encryption/l10n/ja.json8
-rw-r--r--apps/encryption/l10n/ko.js7
-rw-r--r--apps/encryption/l10n/ko.json7
-rw-r--r--apps/encryption/l10n/lt_LT.js30
-rw-r--r--apps/encryption/l10n/lt_LT.json30
-rw-r--r--apps/encryption/l10n/nb_NO.js8
-rw-r--r--apps/encryption/l10n/nb_NO.json8
-rw-r--r--apps/encryption/l10n/nl.js8
-rw-r--r--apps/encryption/l10n/nl.json8
-rw-r--r--apps/encryption/l10n/pl.js8
-rw-r--r--apps/encryption/l10n/pl.json8
-rw-r--r--apps/encryption/l10n/pt_BR.js8
-rw-r--r--apps/encryption/l10n/pt_BR.json8
-rw-r--r--apps/encryption/l10n/ru.js12
-rw-r--r--apps/encryption/l10n/ru.json12
-rw-r--r--apps/encryption/l10n/sk_SK.js9
-rw-r--r--apps/encryption/l10n/sk_SK.json9
-rw-r--r--apps/encryption/l10n/sq.js5
-rw-r--r--apps/encryption/l10n/sq.json5
-rw-r--r--apps/encryption/l10n/sv.js23
-rw-r--r--apps/encryption/l10n/sv.json23
-rw-r--r--apps/encryption/l10n/zh_CN.js30
-rw-r--r--apps/encryption/l10n/zh_CN.json30
-rw-r--r--apps/encryption/lib/Hooks/UserHooks.php61
-rw-r--r--apps/encryption/lib/KeyManager.php8
-rw-r--r--apps/encryption/tests/Hooks/UserHooksTest.php47
-rw-r--r--apps/encryption/tests/KeyManagerTest.php6
-rw-r--r--apps/federatedfilesharing/appinfo/info.xml4
-rw-r--r--apps/federatedfilesharing/l10n/cs_CZ.js2
-rw-r--r--apps/federatedfilesharing/l10n/cs_CZ.json2
-rw-r--r--apps/federatedfilesharing/l10n/de.js2
-rw-r--r--apps/federatedfilesharing/l10n/de.json2
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.js4
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.json4
-rw-r--r--apps/federatedfilesharing/l10n/es.js2
-rw-r--r--apps/federatedfilesharing/l10n/es.json2
-rw-r--r--apps/federatedfilesharing/l10n/fr.js4
-rw-r--r--apps/federatedfilesharing/l10n/fr.json4
-rw-r--r--apps/federatedfilesharing/l10n/hu_HU.js2
-rw-r--r--apps/federatedfilesharing/l10n/hu_HU.json2
-rw-r--r--apps/federatedfilesharing/l10n/id.js7
-rw-r--r--apps/federatedfilesharing/l10n/id.json7
-rw-r--r--apps/federatedfilesharing/l10n/it.js2
-rw-r--r--apps/federatedfilesharing/l10n/it.json2
-rw-r--r--apps/federatedfilesharing/l10n/nl.js2
-rw-r--r--apps/federatedfilesharing/l10n/nl.json2
-rw-r--r--apps/federatedfilesharing/l10n/pl.js1
-rw-r--r--apps/federatedfilesharing/l10n/pl.json1
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.js2
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.json2
-rw-r--r--apps/federatedfilesharing/l10n/ru.js35
-rw-r--r--apps/federatedfilesharing/l10n/ru.json35
-rw-r--r--apps/federatedfilesharing/l10n/sq.js26
-rw-r--r--apps/federatedfilesharing/l10n/sq.json26
-rw-r--r--apps/federatedfilesharing/l10n/sv.js48
-rw-r--r--apps/federatedfilesharing/l10n/sv.json48
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.js28
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.json28
-rw-r--r--apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php46
-rw-r--r--apps/federatedfilesharing/templates/settings-admin.php2
-rw-r--r--apps/federation/appinfo/info.xml4
-rw-r--r--apps/federation/l10n/ca.js16
-rw-r--r--apps/federation/l10n/ca.json16
-rw-r--r--apps/federation/l10n/cs_CZ.js9
-rw-r--r--apps/federation/l10n/cs_CZ.json9
-rw-r--r--apps/federation/l10n/de.js14
-rw-r--r--apps/federation/l10n/de.json14
-rw-r--r--apps/federation/l10n/de_DE.js12
-rw-r--r--apps/federation/l10n/de_DE.json12
-rw-r--r--apps/federation/l10n/el.js12
-rw-r--r--apps/federation/l10n/el.json12
-rw-r--r--apps/federation/l10n/es.js6
-rw-r--r--apps/federation/l10n/es.json6
-rw-r--r--apps/federation/l10n/fr.js6
-rw-r--r--apps/federation/l10n/fr.json6
-rw-r--r--apps/federation/l10n/hu_HU.js6
-rw-r--r--apps/federation/l10n/hu_HU.json6
-rw-r--r--apps/federation/l10n/id.js10
-rw-r--r--apps/federation/l10n/id.json10
-rw-r--r--apps/federation/l10n/it.js6
-rw-r--r--apps/federation/l10n/it.json6
-rw-r--r--apps/federation/l10n/ja.js6
-rw-r--r--apps/federation/l10n/ja.json6
-rw-r--r--apps/federation/l10n/lv.js19
-rw-r--r--apps/federation/l10n/lv.json17
-rw-r--r--apps/federation/l10n/nl.js6
-rw-r--r--apps/federation/l10n/nl.json6
-rw-r--r--apps/federation/l10n/pl.js6
-rw-r--r--apps/federation/l10n/pl.json6
-rw-r--r--apps/federation/l10n/pt_BR.js6
-rw-r--r--apps/federation/l10n/pt_BR.json6
-rw-r--r--apps/federation/l10n/ru.js18
-rw-r--r--apps/federation/l10n/ru.json18
-rw-r--r--apps/federation/l10n/sl.js9
-rw-r--r--apps/federation/l10n/sl.json9
-rw-r--r--apps/federation/l10n/sq.js22
-rw-r--r--apps/federation/l10n/sq.json22
-rw-r--r--apps/federation/l10n/sv.js16
-rw-r--r--apps/federation/l10n/sv.json16
-rw-r--r--apps/federation/l10n/zh_CN.js16
-rw-r--r--apps/federation/l10n/zh_CN.json16
-rw-r--r--apps/federation/lib/DAV/FedAuth.php8
-rw-r--r--apps/files/appinfo/app.php14
-rw-r--r--apps/files/appinfo/info.xml11
-rw-r--r--apps/files/css/detailsView.css18
-rw-r--r--apps/files/css/files.css41
-rw-r--r--apps/files/css/mobile.css7
-rw-r--r--apps/files/img/app.svg6
-rw-r--r--apps/files/js/file-upload.js84
-rw-r--r--apps/files/js/fileinfomodel.js47
-rw-r--r--apps/files/js/filelist.js29
-rw-r--r--apps/files/js/mainfileinfodetailview.js20
-rw-r--r--apps/files/js/newfilemenu.js10
-rw-r--r--apps/files/js/tagsplugin.js17
-rw-r--r--apps/files/l10n/ast.js18
-rw-r--r--apps/files/l10n/ast.json18
-rw-r--r--apps/files/l10n/bg_BG.js44
-rw-r--r--apps/files/l10n/bg_BG.json44
-rw-r--r--apps/files/l10n/cs_CZ.js49
-rw-r--r--apps/files/l10n/cs_CZ.json49
-rw-r--r--apps/files/l10n/de.js31
-rw-r--r--apps/files/l10n/de.json31
-rw-r--r--apps/files/l10n/de_DE.js43
-rw-r--r--apps/files/l10n/de_DE.json43
-rw-r--r--apps/files/l10n/el.js52
-rw-r--r--apps/files/l10n/el.json52
-rw-r--r--apps/files/l10n/en_GB.js20
-rw-r--r--apps/files/l10n/en_GB.json20
-rw-r--r--apps/files/l10n/es.js30
-rw-r--r--apps/files/l10n/es.json30
-rw-r--r--apps/files/l10n/fi_FI.js24
-rw-r--r--apps/files/l10n/fi_FI.json24
-rw-r--r--apps/files/l10n/fr.js69
-rw-r--r--apps/files/l10n/fr.json69
-rw-r--r--apps/files/l10n/he.js18
-rw-r--r--apps/files/l10n/he.json18
-rw-r--r--apps/files/l10n/hu_HU.js25
-rw-r--r--apps/files/l10n/hu_HU.json25
-rw-r--r--apps/files/l10n/id.js24
-rw-r--r--apps/files/l10n/id.json24
-rw-r--r--apps/files/l10n/is.js24
-rw-r--r--apps/files/l10n/is.json24
-rw-r--r--apps/files/l10n/it.js25
-rw-r--r--apps/files/l10n/it.json25
-rw-r--r--apps/files/l10n/ja.js30
-rw-r--r--apps/files/l10n/ja.json30
-rw-r--r--apps/files/l10n/ko.js87
-rw-r--r--apps/files/l10n/ko.json87
-rw-r--r--apps/files/l10n/lv.js66
-rw-r--r--apps/files/l10n/lv.json66
-rw-r--r--apps/files/l10n/nb_NO.js54
-rw-r--r--apps/files/l10n/nb_NO.json54
-rw-r--r--apps/files/l10n/nl.js25
-rw-r--r--apps/files/l10n/nl.json25
-rw-r--r--apps/files/l10n/pl.js52
-rw-r--r--apps/files/l10n/pl.json52
-rw-r--r--apps/files/l10n/pt_BR.js25
-rw-r--r--apps/files/l10n/pt_BR.json25
-rw-r--r--apps/files/l10n/ru.js56
-rw-r--r--apps/files/l10n/ru.json56
-rw-r--r--apps/files/l10n/sk_SK.js146
-rw-r--r--apps/files/l10n/sk_SK.json146
-rw-r--r--apps/files/l10n/sl.js26
-rw-r--r--apps/files/l10n/sl.json26
-rw-r--r--apps/files/l10n/sq.js78
-rw-r--r--apps/files/l10n/sq.json78
-rw-r--r--apps/files/l10n/sv.js47
-rw-r--r--apps/files/l10n/sv.json47
-rw-r--r--apps/files/l10n/tr.js43
-rw-r--r--apps/files/l10n/tr.json43
-rw-r--r--apps/files/l10n/zh_CN.js166
-rw-r--r--apps/files/l10n/zh_CN.json166
-rw-r--r--apps/files/l10n/zh_TW.js24
-rw-r--r--apps/files/l10n/zh_TW.json24
-rw-r--r--apps/files/lib/Activity/FavoriteProvider.php5
-rw-r--r--apps/files/lib/Activity/Provider.php5
-rw-r--r--apps/files/tests/js/mainfileinfodetailviewSpec.js20
-rw-r--r--apps/files_external/3rdparty/autoload.php2
-rw-r--r--apps/files_external/3rdparty/composer.json4
-rw-r--r--apps/files_external/3rdparty/composer.lock28
-rw-r--r--apps/files_external/3rdparty/composer/ClassLoader.php48
-rw-r--r--apps/files_external/3rdparty/composer/autoload_classmap.php27
-rw-r--r--apps/files_external/3rdparty/composer/autoload_real.php13
-rw-r--r--apps/files_external/3rdparty/composer/autoload_static.php127
-rw-r--r--apps/files_external/3rdparty/composer/installed.json29
-rw-r--r--apps/files_external/3rdparty/icewind/smb/README.md18
-rw-r--r--apps/files_external/3rdparty/icewind/smb/composer.json3
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Change.php40
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Connection.php40
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php11
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php30
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php46
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/IShare.php16
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeFileInfo.php4
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeShare.php26
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeState.php70
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php88
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Parser.php141
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/RawConnection.php2
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Server.php29
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Share.php86
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/System.php12
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Path.php12
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php25
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Wrapper.php2
-rw-r--r--apps/files_external/appinfo/info.xml11
-rw-r--r--apps/files_external/img/app-dark.svg1
-rw-r--r--apps/files_external/js/statusmanager.js6
-rw-r--r--apps/files_external/l10n/cs_CZ.js10
-rw-r--r--apps/files_external/l10n/cs_CZ.json10
-rw-r--r--apps/files_external/l10n/da.js8
-rw-r--r--apps/files_external/l10n/da.json8
-rw-r--r--apps/files_external/l10n/de.js10
-rw-r--r--apps/files_external/l10n/de.json10
-rw-r--r--apps/files_external/l10n/de_DE.js14
-rw-r--r--apps/files_external/l10n/de_DE.json14
-rw-r--r--apps/files_external/l10n/el.js8
-rw-r--r--apps/files_external/l10n/el.json8
-rw-r--r--apps/files_external/l10n/en_GB.js9
-rw-r--r--apps/files_external/l10n/en_GB.json9
-rw-r--r--apps/files_external/l10n/es.js12
-rw-r--r--apps/files_external/l10n/es.json12
-rw-r--r--apps/files_external/l10n/fi_FI.js9
-rw-r--r--apps/files_external/l10n/fi_FI.json9
-rw-r--r--apps/files_external/l10n/fr.js10
-rw-r--r--apps/files_external/l10n/fr.json10
-rw-r--r--apps/files_external/l10n/he.js8
-rw-r--r--apps/files_external/l10n/he.json8
-rw-r--r--apps/files_external/l10n/hu_HU.js11
-rw-r--r--apps/files_external/l10n/hu_HU.json11
-rw-r--r--apps/files_external/l10n/id.js17
-rw-r--r--apps/files_external/l10n/id.json17
-rw-r--r--apps/files_external/l10n/is.js11
-rw-r--r--apps/files_external/l10n/is.json11
-rw-r--r--apps/files_external/l10n/it.js10
-rw-r--r--apps/files_external/l10n/it.json10
-rw-r--r--apps/files_external/l10n/ja.js10
-rw-r--r--apps/files_external/l10n/ja.json10
-rw-r--r--apps/files_external/l10n/ko.js10
-rw-r--r--apps/files_external/l10n/ko.json10
-rw-r--r--apps/files_external/l10n/nb_NO.js11
-rw-r--r--apps/files_external/l10n/nb_NO.json11
-rw-r--r--apps/files_external/l10n/nl.js10
-rw-r--r--apps/files_external/l10n/nl.json10
-rw-r--r--apps/files_external/l10n/pl.js14
-rw-r--r--apps/files_external/l10n/pl.json14
-rw-r--r--apps/files_external/l10n/pt_BR.js10
-rw-r--r--apps/files_external/l10n/pt_BR.json10
-rw-r--r--apps/files_external/l10n/pt_PT.js8
-rw-r--r--apps/files_external/l10n/pt_PT.json8
-rw-r--r--apps/files_external/l10n/ru.js10
-rw-r--r--apps/files_external/l10n/ru.json10
-rw-r--r--apps/files_external/l10n/sl.js9
-rw-r--r--apps/files_external/l10n/sl.json9
-rw-r--r--apps/files_external/l10n/sq.js20
-rw-r--r--apps/files_external/l10n/sq.json20
-rw-r--r--apps/files_external/l10n/sv.js57
-rw-r--r--apps/files_external/l10n/sv.json57
-rw-r--r--apps/files_external/l10n/th_TH.js8
-rw-r--r--apps/files_external/l10n/th_TH.json8
-rw-r--r--apps/files_external/l10n/tr.js9
-rw-r--r--apps/files_external/l10n/tr.json9
-rw-r--r--apps/files_external/l10n/zh_CN.js81
-rw-r--r--apps/files_external/l10n/zh_CN.json81
-rw-r--r--apps/files_external/l10n/zh_TW.js8
-rw-r--r--apps/files_external/l10n/zh_TW.json8
-rw-r--r--apps/files_external/lib/Command/Notify.php57
-rw-r--r--apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php60
-rw-r--r--apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php150
-rw-r--r--apps/files_external/lib/Lib/Storage/AmazonS3.php16
-rw-r--r--apps/files_external/lib/Lib/Storage/Dropbox.php28
-rw-r--r--apps/files_external/lib/Lib/Storage/FTP.php16
-rw-r--r--apps/files_external/lib/Lib/Storage/Google.php144
-rw-r--r--apps/files_external/lib/Lib/Storage/SFTP.php2
-rw-r--r--apps/files_external/lib/Lib/Storage/SMB.php95
-rw-r--r--apps/files_external/lib/Lib/Storage/Swift.php16
-rw-r--r--apps/files_external/lib/Settings/Section.php21
-rw-r--r--apps/files_external/tests/AmazonS3MigrationTest.php146
-rw-r--r--apps/files_external/tests/Command/ListCommandTest.php24
-rw-r--r--apps/files_external/tests/Settings/AdminTest.php20
-rw-r--r--apps/files_external/tests/Settings/SectionTest.php5
-rw-r--r--apps/files_external/tests/Storage/SmbTest.php47
-rwxr-xr-xapps/files_external/tests/env/start-smb-linux.sh42
-rwxr-xr-xapps/files_external/tests/env/start-smb-silvershell.sh67
-rwxr-xr-xapps/files_external/tests/env/start-webdav-apachedrone.sh26
-rwxr-xr-xapps/files_external/tests/env/stop-smb-linux.sh21
-rwxr-xr-xapps/files_external/tests/env/stop-smb-silvershell.sh37
-rwxr-xr-xapps/files_external/tests/env/stop-webdav-apachedrone.sh14
-rw-r--r--apps/files_sharing/appinfo/info.xml8
-rw-r--r--apps/files_sharing/css/authenticate.css8
-rw-r--r--apps/files_sharing/css/public.css64
-rw-r--r--apps/files_sharing/css/sharetabview.css16
-rw-r--r--apps/files_sharing/js/public.js2
-rw-r--r--apps/files_sharing/js/share.js28
-rw-r--r--apps/files_sharing/l10n/cs_CZ.js184
-rw-r--r--apps/files_sharing/l10n/cs_CZ.json184
-rw-r--r--apps/files_sharing/l10n/de.js38
-rw-r--r--apps/files_sharing/l10n/de.json38
-rw-r--r--apps/files_sharing/l10n/de_DE.js52
-rw-r--r--apps/files_sharing/l10n/de_DE.json52
-rw-r--r--apps/files_sharing/l10n/es.js32
-rw-r--r--apps/files_sharing/l10n/es.json32
-rw-r--r--apps/files_sharing/l10n/fr.js36
-rw-r--r--apps/files_sharing/l10n/fr.json36
-rw-r--r--apps/files_sharing/l10n/hu_HU.js32
-rw-r--r--apps/files_sharing/l10n/hu_HU.json32
-rw-r--r--apps/files_sharing/l10n/it.js32
-rw-r--r--apps/files_sharing/l10n/it.json32
-rw-r--r--apps/files_sharing/l10n/nb_NO.js180
-rw-r--r--apps/files_sharing/l10n/nb_NO.json180
-rw-r--r--apps/files_sharing/l10n/nl.js32
-rw-r--r--apps/files_sharing/l10n/nl.json32
-rw-r--r--apps/files_sharing/l10n/pl.js161
-rw-r--r--apps/files_sharing/l10n/pl.json161
-rw-r--r--apps/files_sharing/l10n/pt_BR.js32
-rw-r--r--apps/files_sharing/l10n/pt_BR.json32
-rw-r--r--apps/files_sharing/l10n/ru.js187
-rw-r--r--apps/files_sharing/l10n/ru.json187
-rw-r--r--apps/files_sharing/l10n/sq.js132
-rw-r--r--apps/files_sharing/l10n/sq.json132
-rw-r--r--apps/files_sharing/l10n/sv.js200
-rw-r--r--apps/files_sharing/l10n/sv.json200
-rw-r--r--apps/files_sharing/l10n/zh_CN.js96
-rw-r--r--apps/files_sharing/l10n/zh_CN.json96
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Downloads.php2
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Groups.php2
-rw-r--r--apps/files_sharing/lib/Activity/Providers/PublicLinks.php2
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Users.php2
-rw-r--r--apps/files_sharing/lib/AppInfo/Application.php4
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php4
-rw-r--r--apps/files_sharing/lib/Controller/ShareController.php8
-rw-r--r--apps/files_sharing/lib/Controller/ShareesAPIController.php30
-rw-r--r--apps/files_sharing/lib/Helper.php1
-rw-r--r--apps/files_sharing/lib/Maintainer.php47
-rw-r--r--apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php30
-rw-r--r--apps/files_sharing/lib/MountProvider.php2
-rw-r--r--apps/files_sharing/lib/Scanner.php9
-rw-r--r--apps/files_sharing/lib/SharedMount.php40
-rw-r--r--apps/files_sharing/lib/SharedStorage.php3
-rw-r--r--apps/files_sharing/templates/public.php59
-rw-r--r--apps/files_sharing/tests/Controller/ShareAPIControllerTest.php56
-rw-r--r--apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php42
-rw-r--r--apps/files_sharing/tests/Middleware/SharingCheckMiddlewareTest.php34
-rw-r--r--apps/files_sharing/tests/SharedStorageTest.php28
-rw-r--r--apps/files_trashbin/appinfo/info.xml4
-rw-r--r--apps/files_trashbin/l10n/ca.js6
-rw-r--r--apps/files_trashbin/l10n/ca.json6
-rw-r--r--apps/files_trashbin/l10n/eo.js1
-rw-r--r--apps/files_trashbin/l10n/eo.json1
-rw-r--r--apps/files_trashbin/l10n/sv.js2
-rw-r--r--apps/files_trashbin/l10n/sv.json2
-rw-r--r--apps/files_trashbin/l10n/zh_CN.js6
-rw-r--r--apps/files_trashbin/l10n/zh_CN.json6
-rw-r--r--apps/files_trashbin/lib/Storage.php83
-rw-r--r--apps/files_trashbin/lib/Trashbin.php20
-rw-r--r--apps/files_versions/appinfo/info.xml4
-rw-r--r--apps/files_versions/l10n/ca.js2
-rw-r--r--apps/files_versions/l10n/ca.json2
-rw-r--r--apps/files_versions/l10n/cs_CZ.js1
-rw-r--r--apps/files_versions/l10n/cs_CZ.json1
-rw-r--r--apps/files_versions/l10n/de_DE.js2
-rw-r--r--apps/files_versions/l10n/de_DE.json2
-rw-r--r--apps/files_versions/l10n/el.js2
-rw-r--r--apps/files_versions/l10n/el.json2
-rw-r--r--apps/files_versions/l10n/eo.js1
-rw-r--r--apps/files_versions/l10n/eo.json1
-rw-r--r--apps/files_versions/l10n/fr.js2
-rw-r--r--apps/files_versions/l10n/fr.json2
-rw-r--r--apps/files_versions/l10n/id.js2
-rw-r--r--apps/files_versions/l10n/id.json2
-rw-r--r--apps/files_versions/l10n/ja.js1
-rw-r--r--apps/files_versions/l10n/ja.json1
-rw-r--r--apps/files_versions/l10n/lv.js2
-rw-r--r--apps/files_versions/l10n/lv.json2
-rw-r--r--apps/files_versions/l10n/nb_NO.js2
-rw-r--r--apps/files_versions/l10n/nb_NO.json2
-rw-r--r--apps/files_versions/l10n/pl.js2
-rw-r--r--apps/files_versions/l10n/pl.json2
-rw-r--r--apps/files_versions/l10n/ru.js1
-rw-r--r--apps/files_versions/l10n/ru.json1
-rw-r--r--apps/files_versions/l10n/sk_SK.js2
-rw-r--r--apps/files_versions/l10n/sk_SK.json2
-rw-r--r--apps/files_versions/l10n/sl.js2
-rw-r--r--apps/files_versions/l10n/sl.json2
-rw-r--r--apps/files_versions/l10n/sq.js2
-rw-r--r--apps/files_versions/l10n/sq.json2
-rw-r--r--apps/files_versions/l10n/sv.js4
-rw-r--r--apps/files_versions/l10n/sv.json4
-rw-r--r--apps/files_versions/l10n/zh_CN.js2
-rw-r--r--apps/files_versions/l10n/zh_CN.json2
-rw-r--r--apps/lookup_server_connector/appinfo/info.xml2
-rw-r--r--apps/provisioning_api/appinfo/info.xml4
-rw-r--r--apps/provisioning_api/appinfo/routes.php1
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php105
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php404
-rw-r--r--apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php122
-rw-r--r--apps/sharebymail/appinfo/info.xml4
-rw-r--r--apps/sharebymail/lib/Activity.php2
-rw-r--r--apps/sharebymail/lib/ShareByMailProvider.php19
-rw-r--r--apps/systemtags/appinfo/info.xml4
-rw-r--r--apps/systemtags/l10n/bg_BG.js55
-rw-r--r--apps/systemtags/l10n/bg_BG.json55
-rw-r--r--apps/systemtags/l10n/cs_CZ.js40
-rw-r--r--apps/systemtags/l10n/cs_CZ.json40
-rw-r--r--apps/systemtags/l10n/de.js5
-rw-r--r--apps/systemtags/l10n/de.json5
-rw-r--r--apps/systemtags/l10n/de_DE.js5
-rw-r--r--apps/systemtags/l10n/de_DE.json5
-rw-r--r--apps/systemtags/l10n/es.js9
-rw-r--r--apps/systemtags/l10n/es.json9
-rw-r--r--apps/systemtags/l10n/fr.js3
-rw-r--r--apps/systemtags/l10n/fr.json3
-rw-r--r--apps/systemtags/l10n/hu_HU.js3
-rw-r--r--apps/systemtags/l10n/hu_HU.json3
-rw-r--r--apps/systemtags/l10n/it.js3
-rw-r--r--apps/systemtags/l10n/it.json3
-rw-r--r--apps/systemtags/l10n/nb_NO.js49
-rw-r--r--apps/systemtags/l10n/nb_NO.json49
-rw-r--r--apps/systemtags/l10n/nl.js3
-rw-r--r--apps/systemtags/l10n/nl.json3
-rw-r--r--apps/systemtags/l10n/pt_BR.js3
-rw-r--r--apps/systemtags/l10n/pt_BR.json3
-rw-r--r--apps/systemtags/l10n/ru.js39
-rw-r--r--apps/systemtags/l10n/ru.json39
-rw-r--r--apps/systemtags/l10n/sq.js43
-rw-r--r--apps/systemtags/l10n/sq.json43
-rw-r--r--apps/systemtags/l10n/sv.js61
-rw-r--r--apps/systemtags/l10n/sv.json61
-rw-r--r--apps/testing/appinfo/app.php23
-rw-r--r--apps/testing/appinfo/info.xml7
-rw-r--r--apps/testing/lib/AlternativeHomeUserBackend.php56
-rw-r--r--apps/testing/lib/Application.php42
-rw-r--r--apps/theming/appinfo/info.xml4
-rw-r--r--apps/theming/img/app-dark.svg1
-rw-r--r--apps/theming/lib/Controller/ThemingController.php4
-rw-r--r--apps/theming/lib/Settings/Section.php21
-rw-r--r--apps/theming/lib/Util.php2
-rw-r--r--apps/theming/templates/settings-admin.php2
-rw-r--r--apps/theming/tests/Controller/ThemingControllerTest.php11
-rw-r--r--apps/theming/tests/Settings/SectionTest.php18
-rw-r--r--apps/twofactor_backupcodes/appinfo/app.php3
-rw-r--r--apps/twofactor_backupcodes/appinfo/info.xml17
-rw-r--r--apps/twofactor_backupcodes/appinfo/routes.php2
-rw-r--r--apps/twofactor_backupcodes/l10n/cs_CZ.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/cs_CZ.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/de.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/de.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/de_DE.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/de_DE.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/es.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/es.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/fr.js6
-rw-r--r--apps/twofactor_backupcodes/l10n/fr.json6
-rw-r--r--apps/twofactor_backupcodes/l10n/hu_HU.js1
-rw-r--r--apps/twofactor_backupcodes/l10n/hu_HU.json1
-rw-r--r--apps/twofactor_backupcodes/l10n/it.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/it.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/ko.js10
-rw-r--r--apps/twofactor_backupcodes/l10n/ko.json10
-rw-r--r--apps/twofactor_backupcodes/l10n/lv.js20
-rw-r--r--apps/twofactor_backupcodes/l10n/lv.json18
-rw-r--r--apps/twofactor_backupcodes/l10n/nb_NO.js28
-rw-r--r--apps/twofactor_backupcodes/l10n/nb_NO.json28
-rw-r--r--apps/twofactor_backupcodes/l10n/nl.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/nl.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/pl.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/pl.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/pt_BR.js4
-rw-r--r--apps/twofactor_backupcodes/l10n/pt_BR.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/ru.js16
-rw-r--r--apps/twofactor_backupcodes/l10n/ru.json16
-rw-r--r--apps/twofactor_backupcodes/l10n/sv.js21
-rw-r--r--apps/twofactor_backupcodes/l10n/sv.json19
-rw-r--r--apps/twofactor_backupcodes/lib/Activity/GenericFilter.php66
-rw-r--r--apps/twofactor_backupcodes/lib/Activity/GenericProvider.php77
-rw-r--r--apps/twofactor_backupcodes/lib/Activity/GenericSetting.php65
-rw-r--r--apps/twofactor_backupcodes/lib/Activity/Provider.php72
-rw-r--r--apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php5
-rw-r--r--apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php48
-rw-r--r--apps/twofactor_backupcodes/settings/personal.php3
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Activity/GenericFilterTest.php83
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Activity/GenericProviderTest.php132
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Activity/ProviderTest.php131
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Activity/SettingTest.php73
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php72
-rw-r--r--apps/updatenotification/appinfo/app.php3
-rw-r--r--apps/updatenotification/appinfo/info.xml4
-rw-r--r--apps/updatenotification/l10n/cs_CZ.js3
-rw-r--r--apps/updatenotification/l10n/cs_CZ.json3
-rw-r--r--apps/updatenotification/l10n/de.js3
-rw-r--r--apps/updatenotification/l10n/de.json3
-rw-r--r--apps/updatenotification/l10n/de_DE.js5
-rw-r--r--apps/updatenotification/l10n/de_DE.json5
-rw-r--r--apps/updatenotification/l10n/es.js3
-rw-r--r--apps/updatenotification/l10n/es.json3
-rw-r--r--apps/updatenotification/l10n/fr.js3
-rw-r--r--apps/updatenotification/l10n/fr.json3
-rw-r--r--apps/updatenotification/l10n/hu_HU.js3
-rw-r--r--apps/updatenotification/l10n/hu_HU.json3
-rw-r--r--apps/updatenotification/l10n/it.js2
-rw-r--r--apps/updatenotification/l10n/it.json2
-rw-r--r--apps/updatenotification/l10n/ja.js3
-rw-r--r--apps/updatenotification/l10n/ja.json3
-rw-r--r--apps/updatenotification/l10n/lv.js24
-rw-r--r--apps/updatenotification/l10n/lv.json22
-rw-r--r--apps/updatenotification/l10n/nb_NO.js3
-rw-r--r--apps/updatenotification/l10n/nb_NO.json3
-rw-r--r--apps/updatenotification/l10n/nl.js3
-rw-r--r--apps/updatenotification/l10n/nl.json3
-rw-r--r--apps/updatenotification/l10n/pl.js4
-rw-r--r--apps/updatenotification/l10n/pl.json4
-rw-r--r--apps/updatenotification/l10n/pt_BR.js3
-rw-r--r--apps/updatenotification/l10n/pt_BR.json3
-rw-r--r--apps/updatenotification/l10n/ru.js2
-rw-r--r--apps/updatenotification/l10n/ru.json2
-rw-r--r--apps/updatenotification/l10n/sk_SK.js19
-rw-r--r--apps/updatenotification/l10n/sk_SK.json19
-rw-r--r--apps/updatenotification/l10n/sl.js10
-rw-r--r--apps/updatenotification/l10n/sl.json10
-rw-r--r--apps/updatenotification/l10n/sq.js15
-rw-r--r--apps/updatenotification/l10n/sq.json15
-rw-r--r--apps/updatenotification/l10n/sv.js16
-rw-r--r--apps/updatenotification/l10n/sv.json16
-rw-r--r--apps/updatenotification/l10n/tr.js3
-rw-r--r--apps/updatenotification/l10n/tr.json3
-rw-r--r--apps/updatenotification/l10n/zh_CN.js18
-rw-r--r--apps/updatenotification/l10n/zh_CN.json18
-rw-r--r--apps/updatenotification/l10n/zh_TW.js3
-rw-r--r--apps/updatenotification/l10n/zh_TW.json3
-rw-r--r--apps/updatenotification/lib/Notification/BackgroundJob.php23
-rw-r--r--apps/updatenotification/lib/Notification/Notifier.php36
-rw-r--r--apps/updatenotification/tests/Notification/BackgroundJobTest.php49
-rw-r--r--apps/updatenotification/tests/Notification/NotifierTest.php14
-rw-r--r--apps/user_ldap/appinfo/info.xml4
-rw-r--r--apps/user_ldap/appinfo/routes.php10
-rw-r--r--apps/user_ldap/img/app-dark.svg4
-rw-r--r--apps/user_ldap/js/wizard/wizardTabLoginFilter.js2
-rw-r--r--apps/user_ldap/l10n/ast.js4
-rw-r--r--apps/user_ldap/l10n/ast.json4
-rw-r--r--apps/user_ldap/l10n/cs_CZ.js9
-rw-r--r--apps/user_ldap/l10n/cs_CZ.json9
-rw-r--r--apps/user_ldap/l10n/da.js4
-rw-r--r--apps/user_ldap/l10n/da.json4
-rw-r--r--apps/user_ldap/l10n/de.js5
-rw-r--r--apps/user_ldap/l10n/de.json5
-rw-r--r--apps/user_ldap/l10n/de_DE.js7
-rw-r--r--apps/user_ldap/l10n/de_DE.json7
-rw-r--r--apps/user_ldap/l10n/el.js4
-rw-r--r--apps/user_ldap/l10n/el.json4
-rw-r--r--apps/user_ldap/l10n/en_GB.js4
-rw-r--r--apps/user_ldap/l10n/en_GB.json4
-rw-r--r--apps/user_ldap/l10n/es.js5
-rw-r--r--apps/user_ldap/l10n/es.json5
-rw-r--r--apps/user_ldap/l10n/fr.js19
-rw-r--r--apps/user_ldap/l10n/fr.json19
-rw-r--r--apps/user_ldap/l10n/gl.js4
-rw-r--r--apps/user_ldap/l10n/gl.json4
-rw-r--r--apps/user_ldap/l10n/he.js4
-rw-r--r--apps/user_ldap/l10n/he.json4
-rw-r--r--apps/user_ldap/l10n/hu_HU.js4
-rw-r--r--apps/user_ldap/l10n/hu_HU.json4
-rw-r--r--apps/user_ldap/l10n/id.js10
-rw-r--r--apps/user_ldap/l10n/id.json10
-rw-r--r--apps/user_ldap/l10n/it.js5
-rw-r--r--apps/user_ldap/l10n/it.json5
-rw-r--r--apps/user_ldap/l10n/ja.js5
-rw-r--r--apps/user_ldap/l10n/ja.json5
-rw-r--r--apps/user_ldap/l10n/ko.js4
-rw-r--r--apps/user_ldap/l10n/ko.json4
-rw-r--r--apps/user_ldap/l10n/nb_NO.js3
-rw-r--r--apps/user_ldap/l10n/nb_NO.json3
-rw-r--r--apps/user_ldap/l10n/nl.js5
-rw-r--r--apps/user_ldap/l10n/nl.json5
-rw-r--r--apps/user_ldap/l10n/pl.js25
-rw-r--r--apps/user_ldap/l10n/pl.json25
-rw-r--r--apps/user_ldap/l10n/pt_BR.js5
-rw-r--r--apps/user_ldap/l10n/pt_BR.json5
-rw-r--r--apps/user_ldap/l10n/pt_PT.js4
-rw-r--r--apps/user_ldap/l10n/pt_PT.json4
-rw-r--r--apps/user_ldap/l10n/ru.js9
-rw-r--r--apps/user_ldap/l10n/ru.json9
-rw-r--r--apps/user_ldap/l10n/sk_SK.js4
-rw-r--r--apps/user_ldap/l10n/sk_SK.json4
-rw-r--r--apps/user_ldap/l10n/sl.js4
-rw-r--r--apps/user_ldap/l10n/sl.json4
-rw-r--r--apps/user_ldap/l10n/sq.js14
-rw-r--r--apps/user_ldap/l10n/sq.json14
-rw-r--r--apps/user_ldap/l10n/sr.js4
-rw-r--r--apps/user_ldap/l10n/sr.json4
-rw-r--r--apps/user_ldap/l10n/sv.js38
-rw-r--r--apps/user_ldap/l10n/sv.json38
-rw-r--r--apps/user_ldap/l10n/th_TH.js4
-rw-r--r--apps/user_ldap/l10n/th_TH.json4
-rw-r--r--apps/user_ldap/l10n/tr.js4
-rw-r--r--apps/user_ldap/l10n/tr.json4
-rw-r--r--apps/user_ldap/l10n/zh_CN.js13
-rw-r--r--apps/user_ldap/l10n/zh_CN.json13
-rw-r--r--apps/user_ldap/lib/Access.php147
-rw-r--r--apps/user_ldap/lib/Command/CreateEmptyConfig.php28
-rw-r--r--apps/user_ldap/lib/Configuration.php9
-rw-r--r--apps/user_ldap/lib/Connection.php5
-rw-r--r--apps/user_ldap/lib/Controller/ConfigAPIController.php322
-rw-r--r--apps/user_ldap/lib/Helper.php19
-rw-r--r--apps/user_ldap/lib/Mapping/AbstractMapping.php11
-rw-r--r--apps/user_ldap/lib/Settings/Section.php21
-rw-r--r--apps/user_ldap/tests/Mapping/AbstractMappingTest.php3
-rw-r--r--apps/user_ldap/tests/Settings/SectionTest.php18
-rw-r--r--apps/workflowengine/appinfo/info.xml4
-rw-r--r--apps/workflowengine/l10n/bg_BG.js1
-rw-r--r--apps/workflowengine/l10n/bg_BG.json1
-rw-r--r--apps/workflowengine/l10n/lv.js71
-rw-r--r--apps/workflowengine/l10n/lv.json69
-rw-r--r--apps/workflowengine/l10n/pl.js4
-rw-r--r--apps/workflowengine/l10n/pl.json4
-rw-r--r--apps/workflowengine/l10n/ru.js9
-rw-r--r--apps/workflowengine/l10n/ru.json9
-rw-r--r--apps/workflowengine/l10n/sk_SK.js58
-rw-r--r--apps/workflowengine/l10n/sk_SK.json56
-rw-r--r--apps/workflowengine/l10n/sq.js71
-rw-r--r--apps/workflowengine/l10n/sq.json69
-rw-r--r--apps/workflowengine/l10n/sv.js71
-rw-r--r--apps/workflowengine/l10n/sv.json69
-rw-r--r--apps/workflowengine/l10n/zh_CN.js59
-rw-r--r--apps/workflowengine/l10n/zh_CN.json57
-rw-r--r--apps/workflowengine/lib/Settings/Section.php21
729 files changed, 13936 insertions, 5655 deletions
diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml
index 14bce64aabc..e5ec9db0689 100644
--- a/apps/admin_audit/appinfo/info.xml
+++ b/apps/admin_audit/appinfo/info.xml
@@ -2,14 +2,12 @@
<info>
<id>admin_audit</id>
<name>Auditing / Logging</name>
- <description>Provides logging abilities for Nextcloud such as logging file
- accesses or otherwise sensitive actions.
- </description>
+ <description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
<logging/>
diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml
index 9d5409a2d62..eb711c4b569 100644
--- a/apps/comments/appinfo/info.xml
+++ b/apps/comments/appinfo/info.xml
@@ -6,9 +6,9 @@
<licence>AGPL</licence>
<author>Arthur Schiwon, Vincent Petry</author>
<default_enable/>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
<logging/>
diff --git a/apps/comments/js/commentmodel.js b/apps/comments/js/commentmodel.js
index e75c79b3f08..3711e53c9f3 100644
--- a/apps/comments/js/commentmodel.js
+++ b/apps/comments/js/commentmodel.js
@@ -9,7 +9,20 @@
*/
(function(OC, OCA) {
- var NS_OWNCLOUD = 'http://owncloud.org/ns';
+
+ _.extend(OC.Files.Client, {
+ PROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id',
+ PROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message',
+ PROPERTY_ACTORTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',
+ PROPERTY_ACTORID: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',
+ PROPERTY_ISUNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',
+ PROPERTY_OBJECTID: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',
+ PROPERTY_OBJECTTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',
+ PROPERTY_ACTORDISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',
+ PROPERTY_CREATIONDATETIME: '{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',
+ PROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'
+ });
+
/**
* @class OCA.Comments.CommentModel
* @classdesc
@@ -27,16 +40,16 @@
},
davProperties: {
- 'id': '{' + NS_OWNCLOUD + '}id',
- 'message': '{' + NS_OWNCLOUD + '}message',
- 'actorType': '{' + NS_OWNCLOUD + '}actorType',
- 'actorId': '{' + NS_OWNCLOUD + '}actorId',
- 'actorDisplayName': '{' + NS_OWNCLOUD + '}actorDisplayName',
- 'creationDateTime': '{' + NS_OWNCLOUD + '}creationDateTime',
- 'objectType': '{' + NS_OWNCLOUD + '}objectType',
- 'objectId': '{' + NS_OWNCLOUD + '}objectId',
- 'isUnread': '{' + NS_OWNCLOUD + '}isUnread',
- 'mentions': '{' + NS_OWNCLOUD + '}mentions'
+ 'id': OC.Files.Client.PROPERTY_FILEID,
+ 'message': OC.Files.Client.PROPERTY_MESSAGE,
+ 'actorType': OC.Files.Client.PROPERTY_ACTORTYPE,
+ 'actorId': OC.Files.Client.PROPERTY_ACTORID,
+ 'actorDisplayName': OC.Files.Client.PROPERTY_ACTORDISPLAYNAME,
+ 'creationDateTime': OC.Files.Client.PROPERTY_CREATIONDATETIME,
+ 'objectType': OC.Files.Client.PROPERTY_OBJECTTYPE,
+ 'objectId': OC.Files.Client.PROPERTY_OBJECTID,
+ 'isUnread': OC.Files.Client.PROPERTY_ISUNREAD,
+ 'mentions': OC.Files.Client.PROPERTY_MENTIONS
},
parse: function(data) {
@@ -78,4 +91,3 @@
OCA.Comments.CommentModel = CommentModel;
})(OC, OCA);
-
diff --git a/apps/comments/js/commentsummarymodel.js b/apps/comments/js/commentsummarymodel.js
index d405315ca1f..ffabbc30fb4 100644
--- a/apps/comments/js/commentsummarymodel.js
+++ b/apps/comments/js/commentsummarymodel.js
@@ -9,13 +9,17 @@
*/
(function(OC, OCA) {
- var NS_OWNCLOUD = 'http://owncloud.org/ns';
+
+ _.extend(OC.Files.Client, {
+ PROPERTY_READMARKER: '{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'
+ });
+
/**
* @class OCA.Comments.CommentSummaryModel
* @classdesc
*
* Model containing summary information related to comments
- * like the read marker.
+ * like the read marker.
*
*/
var CommentSummaryModel = OC.Backbone.Model.extend(
@@ -37,7 +41,7 @@
_objectId: null,
davProperties: {
- 'readMarker': '{' + NS_OWNCLOUD + '}readMarker'
+ 'readMarker': OC.Files.Client.PROPERTY_READMARKER
},
/**
@@ -62,4 +66,3 @@
OCA.Comments.CommentSummaryModel = CommentSummaryModel;
})(OC, OCA);
-
diff --git a/apps/comments/js/filesplugin.js b/apps/comments/js/filesplugin.js
index cc419c18ddb..8c5762065a1 100644
--- a/apps/comments/js/filesplugin.js
+++ b/apps/comments/js/filesplugin.js
@@ -11,6 +11,11 @@
/* global Handlebars */
(function() {
+
+ _.extend(OC.Files.Client, {
+ PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'
+ });
+
var TEMPLATE_COMMENTS_UNREAD =
'<a class="action action-comment permanent" title="{{countMessage}}" href="#">' +
'<img class="svg" src="{{iconUrl}}"/>' +
@@ -52,19 +57,17 @@
fileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'));
- var NS_OC = 'http://owncloud.org/ns';
-
var oldGetWebdavProperties = fileList._getWebdavProperties;
fileList._getWebdavProperties = function() {
var props = oldGetWebdavProperties.apply(this, arguments);
- props.push('{' + NS_OC + '}comments-unread');
+ props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD);
return props;
};
fileList.filesClient.addFileInfoParser(function(response) {
var data = {};
var props = response.propStat[0].properties;
- var commentsUnread = props['{' + NS_OC + '}comments-unread'];
+ var commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];
if (!_.isUndefined(commentsUnread) && commentsUnread !== '') {
data.commentsUnread = parseInt(commentsUnread, 10);
}
diff --git a/apps/comments/l10n/ca.js b/apps/comments/l10n/ca.js
index 9ad9f962572..e97f85ec407 100644
--- a/apps/comments/l10n/ca.js
+++ b/apps/comments/l10n/ca.js
@@ -1,23 +1,39 @@
OC.L10N.register(
"comments",
{
- "Type in a new comment..." : "Escriu en un nou comentari...",
+ "Comments" : "Comentaris",
+ "Unknown user" : "Usuari desconegut",
+ "New comment …" : "Nou comentari...",
"Delete comment" : "Esborrar comentari",
"Post" : "Publica",
"Cancel" : "Cancel·la",
"Edit comment" : "Editar comentari",
"[Deleted user]" : "[usuari Esborrat]",
- "Comments" : "Comentaris",
- "No other comments available" : "No hi han altres comentaris disponibles",
- "More comments..." : "Més comentaris",
+ "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
+ "More comments …" : "Més comentaris...",
"Save" : "Desa",
- "Allowed characters {count} of {max}" : "caracters Permessos {count} de {max}",
- "{count} unread comments" : "{count} comentaris no llegits",
+ "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
+ "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}",
+ "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
+ "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
+ "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
"Comment" : "Comentari",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> per arxius <em>(sempre llistat en corrent)",
- "You commented" : "Has comentat",
- "%1$s commented" : "%1$s comentat",
- "You commented on %2$s" : "Has comentat a %2$s",
- "%1$s commented on %2$s" : "%1$s ha comentat a %2$s"
+ "You commented" : "Heu comentat",
+ "%1$s commented" : "%1$s ha comentat",
+ "{author} commented" : "{author} ha comentat",
+ "You commented on %1$s" : "Heu comentat a %1$s",
+ "You commented on {file}" : "Heu comentat a {file}",
+ "%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
+ "{author} commented on {file}" : "{author} ha comentat a {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
+ "Type in a new comment..." : "Escriviu un nou comentari...",
+ "No other comments available" : "No hi ha altres comentaris disponibles",
+ "More comments..." : "Més comentaris...",
+ "{count} unread comments" : "{count} comentaris no llegits",
+ "You commented on %2$s" : "Heu comentat a %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ca.json b/apps/comments/l10n/ca.json
index f6df3abce3b..599ff0afa10 100644
--- a/apps/comments/l10n/ca.json
+++ b/apps/comments/l10n/ca.json
@@ -1,21 +1,37 @@
{ "translations": {
- "Type in a new comment..." : "Escriu en un nou comentari...",
+ "Comments" : "Comentaris",
+ "Unknown user" : "Usuari desconegut",
+ "New comment …" : "Nou comentari...",
"Delete comment" : "Esborrar comentari",
"Post" : "Publica",
"Cancel" : "Cancel·la",
"Edit comment" : "Editar comentari",
"[Deleted user]" : "[usuari Esborrat]",
- "Comments" : "Comentaris",
- "No other comments available" : "No hi han altres comentaris disponibles",
- "More comments..." : "Més comentaris",
+ "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
+ "More comments …" : "Més comentaris...",
"Save" : "Desa",
- "Allowed characters {count} of {max}" : "caracters Permessos {count} de {max}",
- "{count} unread comments" : "{count} comentaris no llegits",
+ "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
+ "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}",
+ "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
+ "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
+ "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
"Comment" : "Comentari",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> per arxius <em>(sempre llistat en corrent)",
- "You commented" : "Has comentat",
- "%1$s commented" : "%1$s comentat",
- "You commented on %2$s" : "Has comentat a %2$s",
- "%1$s commented on %2$s" : "%1$s ha comentat a %2$s"
+ "You commented" : "Heu comentat",
+ "%1$s commented" : "%1$s ha comentat",
+ "{author} commented" : "{author} ha comentat",
+ "You commented on %1$s" : "Heu comentat a %1$s",
+ "You commented on {file}" : "Heu comentat a {file}",
+ "%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
+ "{author} commented on {file}" : "{author} ha comentat a {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
+ "Type in a new comment..." : "Escriviu un nou comentari...",
+ "No other comments available" : "No hi ha altres comentaris disponibles",
+ "More comments..." : "Més comentaris...",
+ "{count} unread comments" : "{count} comentaris no llegits",
+ "You commented on %2$s" : "Heu comentat a %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/cs_CZ.js b/apps/comments/l10n/cs_CZ.js
index 17231a3fa45..da14fcf91b8 100644
--- a/apps/comments/l10n/cs_CZ.js
+++ b/apps/comments/l10n/cs_CZ.js
@@ -20,8 +20,16 @@ OC.L10N.register(
"Comment" : "Komentář",
"You commented" : "Okomentoval(a) jsi",
"%1$s commented" : "%1$s okomentován",
+ "{author} commented" : "{author} okomentoval(a)",
+ "You commented on %1$s" : "Okomentoval(a) jste %1$s",
+ "You commented on {file}" : "Okomentoval(a) jste {file}",
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
+ "{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
+ "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
"Type in a new comment..." : "Zadat nový komentář...",
"No other comments available" : "Nejsou dostupné žádné další komentáře",
"More comments..." : "Více komentářů...",
diff --git a/apps/comments/l10n/cs_CZ.json b/apps/comments/l10n/cs_CZ.json
index a1435f9b3bf..1f1a84b6c09 100644
--- a/apps/comments/l10n/cs_CZ.json
+++ b/apps/comments/l10n/cs_CZ.json
@@ -18,8 +18,16 @@
"Comment" : "Komentář",
"You commented" : "Okomentoval(a) jsi",
"%1$s commented" : "%1$s okomentován",
+ "{author} commented" : "{author} okomentoval(a)",
+ "You commented on %1$s" : "Okomentoval(a) jste %1$s",
+ "You commented on {file}" : "Okomentoval(a) jste {file}",
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
+ "{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
+ "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
"Type in a new comment..." : "Zadat nový komentář...",
"No other comments available" : "Nejsou dostupné žádné další komentáře",
"More comments..." : "Více komentářů...",
diff --git a/apps/comments/l10n/de_DE.js b/apps/comments/l10n/de_DE.js
index ce1e52ffc60..3f7f94fb7c5 100644
--- a/apps/comments/l10n/de_DE.js
+++ b/apps/comments/l10n/de_DE.js
@@ -20,16 +20,16 @@ OC.L10N.register(
"Comment" : "Kommentar",
"You commented" : "Sie haben kommentiert",
"%1$s commented" : "%1$s kommentierte",
- "{author} commented" : "{author} kommentiert",
+ "{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Sie haben %1$s kommentiert",
"You commented on {file}" : "Sie haben {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Nutzer erwähnt Sie in einem Kommentar zu \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Nutzer erwähnt Sie in einem Kommentar zu “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s erwähnt Sie in einem Kommentar zu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} erwähnt Sie in einem Kommentar zu “{file}”",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
+ "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"Type in a new comment..." : "Neuen Kommentar eingeben...",
"No other comments available" : "Keine weiteren Kommentare verfügbar",
"More comments..." : "Weitere Kommentare...",
diff --git a/apps/comments/l10n/de_DE.json b/apps/comments/l10n/de_DE.json
index e83ee533cb2..de0474199ef 100644
--- a/apps/comments/l10n/de_DE.json
+++ b/apps/comments/l10n/de_DE.json
@@ -18,16 +18,16 @@
"Comment" : "Kommentar",
"You commented" : "Sie haben kommentiert",
"%1$s commented" : "%1$s kommentierte",
- "{author} commented" : "{author} kommentiert",
+ "{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Sie haben %1$s kommentiert",
"You commented on {file}" : "Sie haben {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Nutzer erwähnt Sie in einem Kommentar zu \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Nutzer erwähnt Sie in einem Kommentar zu “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s erwähnt Sie in einem Kommentar zu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} erwähnt Sie in einem Kommentar zu “{file}”",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
+ "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"Type in a new comment..." : "Neuen Kommentar eingeben...",
"No other comments available" : "Keine weiteren Kommentare verfügbar",
"More comments..." : "Weitere Kommentare...",
diff --git a/apps/comments/l10n/fr.js b/apps/comments/l10n/fr.js
index 21641df269b..588f429babc 100644
--- a/apps/comments/l10n/fr.js
+++ b/apps/comments/l10n/fr.js
@@ -9,7 +9,7 @@ OC.L10N.register(
"Cancel" : "Annuler",
"Edit comment" : "Modifier le commentaire",
"[Deleted user]" : "[Utilisateur supprimé]",
- "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrer la conversation!",
+ "No comments yet, start the conversation!" : "Aucun commentaire actuellement, débutez une conversation !",
"More comments …" : "Plus de commentaires ...",
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
diff --git a/apps/comments/l10n/fr.json b/apps/comments/l10n/fr.json
index c8aa168fc3c..71e3823b84a 100644
--- a/apps/comments/l10n/fr.json
+++ b/apps/comments/l10n/fr.json
@@ -7,7 +7,7 @@
"Cancel" : "Annuler",
"Edit comment" : "Modifier le commentaire",
"[Deleted user]" : "[Utilisateur supprimé]",
- "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrer la conversation!",
+ "No comments yet, start the conversation!" : "Aucun commentaire actuellement, débutez une conversation !",
"More comments …" : "Plus de commentaires ...",
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
diff --git a/apps/comments/l10n/lv.js b/apps/comments/l10n/lv.js
index c30721e9df4..ff597383f15 100644
--- a/apps/comments/l10n/lv.js
+++ b/apps/comments/l10n/lv.js
@@ -2,25 +2,36 @@ OC.L10N.register(
"comments",
{
"Comments" : "Komentāri",
+ "Unknown user" : "Nezināms lietotājs",
+ "New comment …" : "Jauns komentārs...",
"Delete comment" : "Dzēst komentāru",
"Post" : "Pievienot",
"Cancel" : "Atcelt",
"Edit comment" : "Rediģēt komentāru",
"[Deleted user]" : "[Dzēsts lietotājs]",
+ "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!",
+ "More comments …" : "Vairāk komentāri...",
"Save" : "Saglabāt",
"Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}",
"Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}",
"Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}",
"Error occurred while posting comment" : "Notika kļūda pievienojot komentāru",
+ "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"],
"Comment" : "Komentārs",
- "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
"You commented" : "Tu komentēji",
"%1$s commented" : "%1$s komentēja",
- "You commented on %2$s" : "Tu komentēji %2$s",
+ "{author} commented" : "{author} komentēja",
+ "You commented on %1$s" : "Tu komentēji %1$s",
+ "You commented on {file}" : "Tu komentēji {file}",
"%1$s commented on %2$s" : "%1$s komentēja %2$s",
+ "{author} commented on {file}" : "{author} komentārs {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”",
"Type in a new comment..." : "Raksti jaunu komentāru...",
"No other comments available" : "Nav pieejami citi komentāri",
"More comments..." : "Vairāk komentāri...",
- "{count} unread comments" : "{count} neizlasītu komentāru"
+ "{count} unread comments" : "{count} neizlasītu komentāru",
+ "You commented on %2$s" : "Tu komentēji %2$s"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/comments/l10n/lv.json b/apps/comments/l10n/lv.json
index 153e7c4edfd..b61037fb568 100644
--- a/apps/comments/l10n/lv.json
+++ b/apps/comments/l10n/lv.json
@@ -1,24 +1,35 @@
{ "translations": {
"Comments" : "Komentāri",
+ "Unknown user" : "Nezināms lietotājs",
+ "New comment …" : "Jauns komentārs...",
"Delete comment" : "Dzēst komentāru",
"Post" : "Pievienot",
"Cancel" : "Atcelt",
"Edit comment" : "Rediģēt komentāru",
"[Deleted user]" : "[Dzēsts lietotājs]",
+ "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!",
+ "More comments …" : "Vairāk komentāri...",
"Save" : "Saglabāt",
"Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}",
"Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}",
"Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}",
"Error occurred while posting comment" : "Notika kļūda pievienojot komentāru",
+ "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"],
"Comment" : "Komentārs",
- "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
"You commented" : "Tu komentēji",
"%1$s commented" : "%1$s komentēja",
- "You commented on %2$s" : "Tu komentēji %2$s",
+ "{author} commented" : "{author} komentēja",
+ "You commented on %1$s" : "Tu komentēji %1$s",
+ "You commented on {file}" : "Tu komentēji {file}",
"%1$s commented on %2$s" : "%1$s komentēja %2$s",
+ "{author} commented on {file}" : "{author} komentārs {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”",
"Type in a new comment..." : "Raksti jaunu komentāru...",
"No other comments available" : "Nav pieejami citi komentāri",
"More comments..." : "Vairāk komentāri...",
- "{count} unread comments" : "{count} neizlasītu komentāru"
+ "{count} unread comments" : "{count} neizlasītu komentāru",
+ "You commented on %2$s" : "Tu komentēji %2$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/apps/comments/l10n/nb_NO.js b/apps/comments/l10n/nb_NO.js
index 40c0c3663ad..d6ac9a2b7b6 100644
--- a/apps/comments/l10n/nb_NO.js
+++ b/apps/comments/l10n/nb_NO.js
@@ -20,8 +20,16 @@ OC.L10N.register(
"Comment" : "Kommentar",
"You commented" : "Du kommenterte",
"%1$s commented" : "%1$s kommentert",
+ "{author} commented" : "{author} kommenterte",
+ "You commented on %1$s" : "Du kommenterte på %1$s",
+ "You commented on {file}" : "Du kommenterte på {file}",
"%1$s commented on %2$s" : "%1$s kommenterte %2$s",
+ "{author} commented on {file}" : "{author} kommenterte på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
"Type in a new comment..." : "Skriv inn en ny kommentar...",
"No other comments available" : "Ingen andre kommentarer tilgjengelig",
"More comments..." : "Flere kommentarer..",
diff --git a/apps/comments/l10n/nb_NO.json b/apps/comments/l10n/nb_NO.json
index 00db3510fee..293eca39e84 100644
--- a/apps/comments/l10n/nb_NO.json
+++ b/apps/comments/l10n/nb_NO.json
@@ -18,8 +18,16 @@
"Comment" : "Kommentar",
"You commented" : "Du kommenterte",
"%1$s commented" : "%1$s kommentert",
+ "{author} commented" : "{author} kommenterte",
+ "You commented on %1$s" : "Du kommenterte på %1$s",
+ "You commented on {file}" : "Du kommenterte på {file}",
"%1$s commented on %2$s" : "%1$s kommenterte %2$s",
+ "{author} commented on {file}" : "{author} kommenterte på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
"Type in a new comment..." : "Skriv inn en ny kommentar...",
"No other comments available" : "Ingen andre kommentarer tilgjengelig",
"More comments..." : "Flere kommentarer..",
diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js
index 19d5148477c..79c2f364578 100644
--- a/apps/comments/l10n/pl.js
+++ b/apps/comments/l10n/pl.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Comments" : "Komentarze",
"Unknown user" : "Nieznany użytkownik",
- "New comment …" : "Nowy komentarz ...",
+ "New comment …" : "Nowy komentarz...",
"Delete comment" : "Skasuj komentarz",
"Post" : "Zapisz",
"Cancel" : "Anuluj",
@@ -16,9 +16,9 @@ OC.L10N.register(
"Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
- "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy"],
+ "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś/łaś",
+ "You commented" : "Skomentowałeś",
"%1$s commented" : "%1$s skomentował",
"{author} commented" : "{author} skomentował",
"You commented on %1$s" : "Skomentowałeś w %1$s",
@@ -34,6 +34,6 @@ OC.L10N.register(
"No other comments available" : "Nie ma więcej komentarzy",
"More comments..." : "Więcej komentarzy...",
"{count} unread comments" : "{count} nieprzeczytanych komentarzy",
- "You commented on %2$s" : "Skomentowałeś/łaś %2$s"
+ "You commented on %2$s" : "Skomentowałeś %2$s"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json
index 838f4d1aa44..90566fdfd86 100644
--- a/apps/comments/l10n/pl.json
+++ b/apps/comments/l10n/pl.json
@@ -1,7 +1,7 @@
{ "translations": {
"Comments" : "Komentarze",
"Unknown user" : "Nieznany użytkownik",
- "New comment …" : "Nowy komentarz ...",
+ "New comment …" : "Nowy komentarz...",
"Delete comment" : "Skasuj komentarz",
"Post" : "Zapisz",
"Cancel" : "Anuluj",
@@ -14,9 +14,9 @@
"Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
- "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy"],
+ "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś/łaś",
+ "You commented" : "Skomentowałeś",
"%1$s commented" : "%1$s skomentował",
"{author} commented" : "{author} skomentował",
"You commented on %1$s" : "Skomentowałeś w %1$s",
@@ -32,6 +32,6 @@
"No other comments available" : "Nie ma więcej komentarzy",
"More comments..." : "Więcej komentarzy...",
"{count} unread comments" : "{count} nieprzeczytanych komentarzy",
- "You commented on %2$s" : "Skomentowałeś/łaś %2$s"
+ "You commented on %2$s" : "Skomentowałeś %2$s"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ru.js b/apps/comments/l10n/ru.js
index 83231e9b7cc..650ff5c7d3d 100644
--- a/apps/comments/l10n/ru.js
+++ b/apps/comments/l10n/ru.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"comments",
{
"Comments" : "Комментарии",
- "Unknown user" : "Пользователь неизвестен",
+ "Unknown user" : "Неизвестный пользователь",
"New comment …" : "Новый комментарий...",
"Delete comment" : "Удалить комментарий",
"Post" : "Опубликовать",
@@ -20,8 +20,16 @@ OC.L10N.register(
"Comment" : "Комментарий",
"You commented" : "Вы прокомментировали",
"%1$s commented" : "%1$s прокомментировано",
+ "{author} commented" : "{author} прокомментировал",
+ "You commented on %1$s" : "Вы прокомментировали %1$s",
+ "You commented on {file}" : "Вы прокомментировали {file}",
"%1$s commented on %2$s" : "%1$s прокомментировано на %2$s",
+ "{author} commented on {file}" : "{author} прокомментировал {file}",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”.",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"",
+ "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.",
"Type in a new comment..." : "Напишите новый комментарий...",
"No other comments available" : "Другие комментарии отсутствуют",
"More comments..." : "Ещё комментарии...",
diff --git a/apps/comments/l10n/ru.json b/apps/comments/l10n/ru.json
index 277ecdcecdf..91974f9cdad 100644
--- a/apps/comments/l10n/ru.json
+++ b/apps/comments/l10n/ru.json
@@ -1,6 +1,6 @@
{ "translations": {
"Comments" : "Комментарии",
- "Unknown user" : "Пользователь неизвестен",
+ "Unknown user" : "Неизвестный пользователь",
"New comment …" : "Новый комментарий...",
"Delete comment" : "Удалить комментарий",
"Post" : "Опубликовать",
@@ -18,8 +18,16 @@
"Comment" : "Комментарий",
"You commented" : "Вы прокомментировали",
"%1$s commented" : "%1$s прокомментировано",
+ "{author} commented" : "{author} прокомментировал",
+ "You commented on %1$s" : "Вы прокомментировали %1$s",
+ "You commented on {file}" : "Вы прокомментировали {file}",
"%1$s commented on %2$s" : "%1$s прокомментировано на %2$s",
+ "{author} commented on {file}" : "{author} прокомментировал {file}",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”.",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"",
+ "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.",
"Type in a new comment..." : "Напишите новый комментарий...",
"No other comments available" : "Другие комментарии отсутствуют",
"More comments..." : "Ещё комментарии...",
diff --git a/apps/comments/l10n/sk_SK.js b/apps/comments/l10n/sk_SK.js
index 808e0bff4d4..ed68f8f11ed 100644
--- a/apps/comments/l10n/sk_SK.js
+++ b/apps/comments/l10n/sk_SK.js
@@ -1,8 +1,34 @@
OC.L10N.register(
"comments",
{
+ "Comments" : "Komentáre",
+ "Unknown user" : "Neznámy používateľ",
+ "New comment …" : "Nový komentár ...",
+ "Delete comment" : "Zmazať komentár",
+ "Post" : "Odoslať",
"Cancel" : "Zrušiť",
+ "Edit comment" : "Upraviť komentár",
+ "[Deleted user]" : "[Zmazaný užívateľ]",
+ "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
+ "More comments …" : "Ďalšie komentáre ...",
"Save" : "Uložiť",
- "Comment" : "Komentár"
+ "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
+ "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
+ "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
+ "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
+ "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
+ "Comment" : "Komentár",
+ "You commented" : "Komentovali ste",
+ "%1$s commented" : "%1$s komentoval",
+ "{author} commented" : "{author} komentoval",
+ "You commented on %1$s" : "Komentovali ste %1$s",
+ "You commented on {file}" : "Komentovali ste {file}",
+ "%1$s commented on %2$s" : "%1$s komentoval %2$s",
+ "{author} commented on {file}" : "{author} komentoval {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
+ "Type in a new comment..." : "Zadať nový komentár...",
+ "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné",
+ "More comments..." : "Ďalšie komentáre...",
+ "{count} unread comments" : "{count} neprečítaných komentárov"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/comments/l10n/sk_SK.json b/apps/comments/l10n/sk_SK.json
index 649d040de7a..f85f7dfb3e2 100644
--- a/apps/comments/l10n/sk_SK.json
+++ b/apps/comments/l10n/sk_SK.json
@@ -1,6 +1,32 @@
{ "translations": {
+ "Comments" : "Komentáre",
+ "Unknown user" : "Neznámy používateľ",
+ "New comment …" : "Nový komentár ...",
+ "Delete comment" : "Zmazať komentár",
+ "Post" : "Odoslať",
"Cancel" : "Zrušiť",
+ "Edit comment" : "Upraviť komentár",
+ "[Deleted user]" : "[Zmazaný užívateľ]",
+ "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
+ "More comments …" : "Ďalšie komentáre ...",
"Save" : "Uložiť",
- "Comment" : "Komentár"
+ "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
+ "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
+ "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
+ "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
+ "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
+ "Comment" : "Komentár",
+ "You commented" : "Komentovali ste",
+ "%1$s commented" : "%1$s komentoval",
+ "{author} commented" : "{author} komentoval",
+ "You commented on %1$s" : "Komentovali ste %1$s",
+ "You commented on {file}" : "Komentovali ste {file}",
+ "%1$s commented on %2$s" : "%1$s komentoval %2$s",
+ "{author} commented on {file}" : "{author} komentoval {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
+ "Type in a new comment..." : "Zadať nový komentár...",
+ "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné",
+ "More comments..." : "Ďalšie komentáre...",
+ "{count} unread comments" : "{count} neprečítaných komentárov"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sq.js b/apps/comments/l10n/sq.js
index 2297b7dd768..845b9e5cfb1 100644
--- a/apps/comments/l10n/sq.js
+++ b/apps/comments/l10n/sq.js
@@ -14,8 +14,9 @@ OC.L10N.register(
"Save" : "Ruaje",
"Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
"Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}",
- "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id{id}",
+ "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}",
"Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti",
+ "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "],
"Comment" : "Koment",
"You commented" : "Komentuat",
"%1$s commented" : "%1$s komentoi",
@@ -23,8 +24,12 @@ OC.L10N.register(
"You commented on %1$s" : "Ju komentuat në %1$s",
"You commented on {file}" : "Ju komentuat në {file}",
"%1$s commented on %2$s" : "%1$s komentoi te %2$s",
- "{author} commented on {file}" : "{autori} komentoj në {file}",
- "<strong>Comments</strong> for files" : "<strong>Komente</strong> për file-et",
+ "{author} commented on {file}" : "{author} komentoi në {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”",
"Type in a new comment..." : "Shtypni një koment të ri…",
"No other comments available" : "S’ka komente të tjera",
"More comments..." : "Më tepër komente…",
diff --git a/apps/comments/l10n/sq.json b/apps/comments/l10n/sq.json
index 98d68f922a1..9b0eab39905 100644
--- a/apps/comments/l10n/sq.json
+++ b/apps/comments/l10n/sq.json
@@ -12,8 +12,9 @@
"Save" : "Ruaje",
"Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
"Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}",
- "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id{id}",
+ "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}",
"Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti",
+ "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "],
"Comment" : "Koment",
"You commented" : "Komentuat",
"%1$s commented" : "%1$s komentoi",
@@ -21,8 +22,12 @@
"You commented on %1$s" : "Ju komentuat në %1$s",
"You commented on {file}" : "Ju komentuat në {file}",
"%1$s commented on %2$s" : "%1$s komentoi te %2$s",
- "{author} commented on {file}" : "{autori} komentoj në {file}",
- "<strong>Comments</strong> for files" : "<strong>Komente</strong> për file-et",
+ "{author} commented on {file}" : "{author} komentoi në {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”",
"Type in a new comment..." : "Shtypni një koment të ri…",
"No other comments available" : "S’ka komente të tjera",
"More comments..." : "Më tepër komente…",
diff --git a/apps/comments/l10n/sv.js b/apps/comments/l10n/sv.js
index 72b91da0fbe..1f66e311e75 100644
--- a/apps/comments/l10n/sv.js
+++ b/apps/comments/l10n/sv.js
@@ -1,23 +1,39 @@
OC.L10N.register(
"comments",
{
- "Type in a new comment..." : "Skriv en ny kommentar",
+ "Comments" : "Kommentarer",
+ "Unknown user" : "Okänd användare",
+ "New comment …" : "Ny kommentar ...",
"Delete comment" : "Radera kommentar",
"Post" : "Skicka",
"Cancel" : "Avbryt",
"Edit comment" : "Redigera kommentar",
"[Deleted user]" : "[Raderad användare]",
- "Comments" : "Kommentarer",
- "No other comments available" : "Inga andra kommentarer tillgängliga",
- "More comments..." : "Fler kommentarter,,,",
+ "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
+ "More comments …" : "Fler kommentarer ...",
"Save" : "Spara",
- "Allowed characters {count} of {max}" : "Tillåtet antal tecken {count} av {max}",
- "{count} unread comments" : "{count} olästa kommentarer",
+ "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}",
+ "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}",
+ "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}",
+ "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar",
+ "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"],
"Comment" : "Kommentar",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Kommentarer</strong> för filer <em>(listad alltid i flödet)</em>",
"You commented" : "Du kommenterade",
- "%1$s commented" : "%1$s har kommenterat",
- "You commented on %2$s" : "Du kommenterade %2$s",
- "%1$s commented on %2$s" : "%1$s kommenterade på %2$s"
+ "%1$s commented" : "%1$s kommenterade",
+ "{author} commented" : "{author} kommenterade",
+ "You commented on %1$s" : "Du kommenterade på %1$s",
+ "You commented on {file}" : "Du kommenterade på {file}",
+ "%1$s commented on %2$s" : "%1$s kommenterade på %2$s",
+ "{author} commented on {file}" : "{author} kommenterade på {file}",
+ "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"",
+ "Type in a new comment..." : "Skriv en ny kommentar...",
+ "No other comments available" : "Inga andra kommentarer tillgängliga",
+ "More comments..." : "Fler kommentarer...",
+ "{count} unread comments" : "{count} olästa kommentarer",
+ "You commented on %2$s" : "Du kommenterade %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/sv.json b/apps/comments/l10n/sv.json
index f078ea0e120..696e8f3a078 100644
--- a/apps/comments/l10n/sv.json
+++ b/apps/comments/l10n/sv.json
@@ -1,21 +1,37 @@
{ "translations": {
- "Type in a new comment..." : "Skriv en ny kommentar",
+ "Comments" : "Kommentarer",
+ "Unknown user" : "Okänd användare",
+ "New comment …" : "Ny kommentar ...",
"Delete comment" : "Radera kommentar",
"Post" : "Skicka",
"Cancel" : "Avbryt",
"Edit comment" : "Redigera kommentar",
"[Deleted user]" : "[Raderad användare]",
- "Comments" : "Kommentarer",
- "No other comments available" : "Inga andra kommentarer tillgängliga",
- "More comments..." : "Fler kommentarter,,,",
+ "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
+ "More comments …" : "Fler kommentarer ...",
"Save" : "Spara",
- "Allowed characters {count} of {max}" : "Tillåtet antal tecken {count} av {max}",
- "{count} unread comments" : "{count} olästa kommentarer",
+ "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}",
+ "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}",
+ "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}",
+ "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar",
+ "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"],
"Comment" : "Kommentar",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Kommentarer</strong> för filer <em>(listad alltid i flödet)</em>",
"You commented" : "Du kommenterade",
- "%1$s commented" : "%1$s har kommenterat",
- "You commented on %2$s" : "Du kommenterade %2$s",
- "%1$s commented on %2$s" : "%1$s kommenterade på %2$s"
+ "%1$s commented" : "%1$s kommenterade",
+ "{author} commented" : "{author} kommenterade",
+ "You commented on %1$s" : "Du kommenterade på %1$s",
+ "You commented on {file}" : "Du kommenterade på {file}",
+ "%1$s commented on %2$s" : "%1$s kommenterade på %2$s",
+ "{author} commented on {file}" : "{author} kommenterade på {file}",
+ "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\"",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"",
+ "Type in a new comment..." : "Skriv en ny kommentar...",
+ "No other comments available" : "Inga andra kommentarer tillgängliga",
+ "More comments..." : "Fler kommentarer...",
+ "{count} unread comments" : "{count} olästa kommentarer",
+ "You commented on %2$s" : "Du kommenterade %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_CN.js b/apps/comments/l10n/zh_CN.js
index 326fa6407a4..9a459c92b6e 100644
--- a/apps/comments/l10n/zh_CN.js
+++ b/apps/comments/l10n/zh_CN.js
@@ -1,23 +1,39 @@
OC.L10N.register(
"comments",
{
- "Type in a new comment..." : "添加新评论...",
+ "Comments" : "评论",
+ "Unknown user" : "未知用户",
+ "New comment …" : "新评论 ...",
"Delete comment" : "删除评论",
"Post" : "发布",
"Cancel" : "取消",
"Edit comment" : "编辑评论",
- "[Deleted user]" : "[Deleted user]",
- "Comments" : "评论",
- "No other comments available" : "没有其他评论",
- "More comments..." : "更多评论...",
+ "[Deleted user]" : "[已删除用户]",
+ "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
+ "More comments …" : "更多评论 ...",
"Save" : "保存",
"Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
- "{count} unread comments" : "{count} 条未读评论",
+ "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
+ "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
+ "Error occurred while posting comment" : "发布评论出错",
+ "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
"Comment" : "评论",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "文件的<strong>评论</strong><em>(始终在数据流中列出)</em>",
"You commented" : "您的评论",
"%1$s commented" : "%1$s 已评论",
- "You commented on %2$s" : "你评论了 %2$s",
- "%1$s commented on %2$s" : "%1$s 评论了 %2$s"
+ "{author} commented" : "{author} 评论了",
+ "You commented on %1$s" : "您在 %1$s 的评论",
+ "You commented on {file}" : "您对 {file} 的评论",
+ "%1$s commented on %2$s" : "%1$s 评论了 %2$s",
+ "{author} commented on {file}" : "{author} 对 {file} 的评论",
+ "<strong>Comments</strong> for files" : "文件的<strong>评论</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您",
+ "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您",
+ "Type in a new comment..." : "添加新评论...",
+ "No other comments available" : "没有其他评论",
+ "More comments..." : "更多评论...",
+ "{count} unread comments" : "{count} 条未读评论",
+ "You commented on %2$s" : "您评论了 %2$s"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/zh_CN.json b/apps/comments/l10n/zh_CN.json
index 98aa243e1c2..be867c5b856 100644
--- a/apps/comments/l10n/zh_CN.json
+++ b/apps/comments/l10n/zh_CN.json
@@ -1,21 +1,37 @@
{ "translations": {
- "Type in a new comment..." : "添加新评论...",
+ "Comments" : "评论",
+ "Unknown user" : "未知用户",
+ "New comment …" : "新评论 ...",
"Delete comment" : "删除评论",
"Post" : "发布",
"Cancel" : "取消",
"Edit comment" : "编辑评论",
- "[Deleted user]" : "[Deleted user]",
- "Comments" : "评论",
- "No other comments available" : "没有其他评论",
- "More comments..." : "更多评论...",
+ "[Deleted user]" : "[已删除用户]",
+ "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
+ "More comments …" : "更多评论 ...",
"Save" : "保存",
"Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
- "{count} unread comments" : "{count} 条未读评论",
+ "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
+ "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
+ "Error occurred while posting comment" : "发布评论出错",
+ "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
"Comment" : "评论",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "文件的<strong>评论</strong><em>(始终在数据流中列出)</em>",
"You commented" : "您的评论",
"%1$s commented" : "%1$s 已评论",
- "You commented on %2$s" : "你评论了 %2$s",
- "%1$s commented on %2$s" : "%1$s 评论了 %2$s"
+ "{author} commented" : "{author} 评论了",
+ "You commented on %1$s" : "您在 %1$s 的评论",
+ "You commented on {file}" : "您对 {file} 的评论",
+ "%1$s commented on %2$s" : "%1$s 评论了 %2$s",
+ "{author} commented on {file}" : "{author} 对 {file} 的评论",
+ "<strong>Comments</strong> for files" : "文件的<strong>评论</strong>",
+ "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您",
+ "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您",
+ "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您",
+ "Type in a new comment..." : "添加新评论...",
+ "No other comments available" : "没有其他评论",
+ "More comments..." : "更多评论...",
+ "{count} unread comments" : "{count} 条未读评论",
+ "You commented on %2$s" : "您评论了 %2$s"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php
index 170b20d7c27..c55982827b3 100644
--- a/apps/comments/lib/Activity/Provider.php
+++ b/apps/comments/lib/Activity/Provider.php
@@ -206,7 +206,7 @@ class Provider implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php
index d30c59c93d5..365f93ce8dd 100644
--- a/apps/comments/lib/Notification/Listener.php
+++ b/apps/comments/lib/Notification/Listener.php
@@ -23,7 +23,6 @@ namespace OCA\Comments\Notification;
use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
-use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\Notification\IManager;
@@ -34,25 +33,19 @@ class Listener {
/** @var IUserManager */
protected $userManager;
- /** @var IURLGenerator */
- protected $urlGenerator;
-
/**
* Listener constructor.
*
* @param IManager $notificationManager
* @param IUserManager $userManager
- * @param IURLGenerator $urlGenerator
*/
public function __construct(
IManager $notificationManager,
- IUserManager $userManager,
- IURLGenerator $urlGenerator
+ IUserManager $userManager
) {
$this->notificationManager = $notificationManager;
$this->userManager = $userManager;
- $this->urlGenerator = $urlGenerator;
}
/**
@@ -100,11 +93,7 @@ class Listener {
->setApp('comments')
->setObject('comment', $comment->getId())
->setSubject('mention', [ $comment->getObjectType(), $comment->getObjectId() ])
- ->setDateTime($comment->getCreationDateTime())
- ->setLink($this->urlGenerator->linkToRouteAbsolute(
- 'comments.Notifications.view',
- ['id' => $comment->getId()])
- );
+ ->setDateTime($comment->getCreationDateTime());
return $notification;
}
diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php
index 170538512d8..a9daef3031f 100644
--- a/apps/comments/lib/Notification/Notifier.php
+++ b/apps/comments/lib/Notification/Notifier.php
@@ -139,7 +139,11 @@ class Notifier implements INotifier {
]
);
}
- $notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg')));
+ $notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg')))
+ ->setLink($this->url->linkToRouteAbsolute(
+ 'comments.Notifications.view',
+ ['id' => $comment->getId()])
+ );
return $notification;
break;
diff --git a/apps/comments/tests/Unit/Notification/ListenerTest.php b/apps/comments/tests/Unit/Notification/ListenerTest.php
index 3007b78cb3d..ef84d1c60de 100644
--- a/apps/comments/tests/Unit/Notification/ListenerTest.php
+++ b/apps/comments/tests/Unit/Notification/ListenerTest.php
@@ -46,14 +46,12 @@ class ListenerTest extends TestCase {
protected function setUp() {
parent::setUp();
- $this->notificationManager = $this->getMockBuilder('\OCP\Notification\IManager')->getMock();
- $this->userManager = $this->getMockBuilder('\OCP\IUserManager')->getMock();
- $this->urlGenerator = $this->getMockBuilder('OCP\IURLGenerator')->getMock();
+ $this->notificationManager = $this->createMock(\OCP\Notification\IManager::class);
+ $this->userManager = $this->createMock(\OCP\IUserManager::class);
$this->listener = new Listener(
$this->notificationManager,
- $this->userManager,
- $this->urlGenerator
+ $this->userManager
);
}
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index f362c882f97..4cd606007c3 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>WebDAV endpoint</description>
<licence>AGPL</licence>
<author>owncloud.org</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<default_enable/>
<types>
<filesystem/>
@@ -15,7 +15,7 @@
<webdav>appinfo/v1/publicwebdav.php</webdav>
</public>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<background-jobs>
<job>OCA\DAV\CardDAV\SyncJob</job>
@@ -23,6 +23,7 @@
<repair-steps>
<post-migration>
<step>OCA\DAV\Migration\FixBirthdayCalendarComponent</step>
+ <step>OCA\DAV\Migration\ValueFixInsert</step>
</post-migration>
</repair-steps>
<commands>
diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php
index 9f12a92f4cd..f524c47a821 100644
--- a/apps/dav/appinfo/v1/caldav.php
+++ b/apps/dav/appinfo/v1/caldav.php
@@ -49,7 +49,7 @@ $db = \OC::$server->getDatabaseConnection();
$userManager = \OC::$server->getUserManager();
$random = \OC::$server->getSecureRandom();
$dispatcher = \OC::$server->getEventDispatcher();
-$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, $random, $dispatcher);
+$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, $random, $dispatcher, true);
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
@@ -80,6 +80,7 @@ if ($debugging) {
$server->addPlugin(new Sabre\DAV\Browser\Plugin());
}
+$server->addPlugin(new \Sabre\DAV\Sync\Plugin());
$server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
$server->addPlugin(new \Sabre\CalDAV\Schedule\Plugin());
$server->addPlugin(new \OCA\DAV\CalDAV\Schedule\IMipPlugin( \OC::$server->getMailer(), \OC::$server->getLogger()));
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index e379707807f..b70045d420b 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -78,6 +78,7 @@ if ($debugging) {
$server->addPlugin(new Sabre\DAV\Browser\Plugin());
}
+$server->addPlugin(new \Sabre\DAV\Sync\Plugin());
$server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());
$server->addPlugin(new \OCA\DAV\CardDAV\ImageExportPlugin(\OC::$server->getLogger()));
$server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger()));
diff --git a/apps/dav/appinfo/v1/webdav.php b/apps/dav/appinfo/v1/webdav.php
index f04bf406334..5ad11ceada8 100644
--- a/apps/dav/appinfo/v1/webdav.php
+++ b/apps/dav/appinfo/v1/webdav.php
@@ -25,6 +25,7 @@
// no php execution timeout for webdav
set_time_limit(0);
+ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
diff --git a/apps/dav/appinfo/v2/remote.php b/apps/dav/appinfo/v2/remote.php
index ab05e376503..b4a6578a41a 100644
--- a/apps/dav/appinfo/v2/remote.php
+++ b/apps/dav/appinfo/v2/remote.php
@@ -21,6 +21,7 @@
*/
// no php execution timeout for webdav
set_time_limit(0);
+ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
diff --git a/apps/dav/l10n/bg_BG.js b/apps/dav/l10n/bg_BG.js
new file mode 100644
index 00000000000..3f55af78124
--- /dev/null
+++ b/apps/dav/l10n/bg_BG.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "dav",
+ {
+ "Calendar" : "Календар",
+ "Todos" : "Задачи",
+ "{actor} created calendar {calendar}" : "{actor} направи календар {calendar}",
+ "You created calendar {calendar}" : "Направихте календар {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} изтри календар {calendar}",
+ "You deleted calendar {calendar}" : "Изтрихте календар {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} обнови календар {calendar}",
+ "You updated calendar {calendar}" : "Обновихте календар {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} сподели календар {calendar} с теб",
+ "You shared calendar {calendar} with {user}" : "Споделихте календар {calendar} с {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} сподели календар {calendar} с {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} отказа споделяне на календар {calendar} с теб",
+ "You unshared calendar {calendar} from {user}" : "Отказахте споделяне на календар {calendar} от {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} отказа споделяне на календар {calendar} от {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} отказа споделяне на календар {calendar} от себеси",
+ "You shared calendar {calendar} with group {group}" : "Споделихте календар {calendar} с група {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} сподели календар {calendar} с група {group}",
+ "You unshared calendar {calendar} from group {group}" : "Отказахте споделяне на календар {calendar} от група {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} отказа споделяне с календар {calendar} от група {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} създаде събитие {event} в календар {calendar}",
+ "You created event {event} in calendar {calendar}" : "Създадохте събитие {event} в календар {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} изтри събитие {event} от календар {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Изтрихте събитие {event} от календар {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} обнови събитие {event} в календар {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Обновихте събитие {event} в календар {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} създаде задача {todo} в списък {calendar}",
+ "You created todo {todo} in list {calendar}" : "Създадохте задача {todo} в списък {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} изтри задача {todo} от списък {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Изтрихте задача {todo} от лист {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} актуализира задача {todo} в списък {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Променихте задача {todo} в списък {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} реши задача {todo} в списък {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Решихте задача {todo} в списък {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} възобнови задача {todo} в списък {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Възобновихте задача {todo} в списък {calendar}",
+ "A <strong>calendar</strong> was modified" : "<strong>Календар</strong> беше променен",
+ "A calendar <strong>event</strong> was modified" : "Календарно <strong>събитие</strong> беше променено",
+ "A calendar <strong>todo</strong> was modified" : "Календарна <strong>задача</strong> беше променена",
+ "Contact birthdays" : "Рождени дни на контакти",
+ "Personal" : "Личен",
+ "Contacts" : "Контакти",
+ "Technical details" : "Технически детайли",
+ "Remote Address: %s" : "Отдалечен адрес: %s",
+ "Request ID: %s" : "ID на заявка: %s"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/bg_BG.json b/apps/dav/l10n/bg_BG.json
new file mode 100644
index 00000000000..03238418d18
--- /dev/null
+++ b/apps/dav/l10n/bg_BG.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Calendar" : "Календар",
+ "Todos" : "Задачи",
+ "{actor} created calendar {calendar}" : "{actor} направи календар {calendar}",
+ "You created calendar {calendar}" : "Направихте календар {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} изтри календар {calendar}",
+ "You deleted calendar {calendar}" : "Изтрихте календар {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} обнови календар {calendar}",
+ "You updated calendar {calendar}" : "Обновихте календар {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} сподели календар {calendar} с теб",
+ "You shared calendar {calendar} with {user}" : "Споделихте календар {calendar} с {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} сподели календар {calendar} с {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} отказа споделяне на календар {calendar} с теб",
+ "You unshared calendar {calendar} from {user}" : "Отказахте споделяне на календар {calendar} от {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} отказа споделяне на календар {calendar} от {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} отказа споделяне на календар {calendar} от себеси",
+ "You shared calendar {calendar} with group {group}" : "Споделихте календар {calendar} с група {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} сподели календар {calendar} с група {group}",
+ "You unshared calendar {calendar} from group {group}" : "Отказахте споделяне на календар {calendar} от група {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} отказа споделяне с календар {calendar} от група {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} създаде събитие {event} в календар {calendar}",
+ "You created event {event} in calendar {calendar}" : "Създадохте събитие {event} в календар {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} изтри събитие {event} от календар {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Изтрихте събитие {event} от календар {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} обнови събитие {event} в календар {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Обновихте събитие {event} в календар {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} създаде задача {todo} в списък {calendar}",
+ "You created todo {todo} in list {calendar}" : "Създадохте задача {todo} в списък {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} изтри задача {todo} от списък {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Изтрихте задача {todo} от лист {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} актуализира задача {todo} в списък {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Променихте задача {todo} в списък {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} реши задача {todo} в списък {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Решихте задача {todo} в списък {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} възобнови задача {todo} в списък {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Възобновихте задача {todo} в списък {calendar}",
+ "A <strong>calendar</strong> was modified" : "<strong>Календар</strong> беше променен",
+ "A calendar <strong>event</strong> was modified" : "Календарно <strong>събитие</strong> беше променено",
+ "A calendar <strong>todo</strong> was modified" : "Календарна <strong>задача</strong> беше променена",
+ "Contact birthdays" : "Рождени дни на контакти",
+ "Personal" : "Личен",
+ "Contacts" : "Контакти",
+ "Technical details" : "Технически детайли",
+ "Remote Address: %s" : "Отдалечен адрес: %s",
+ "Request ID: %s" : "ID на заявка: %s"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/dav/l10n/cs_CZ.js b/apps/dav/l10n/cs_CZ.js
index 3ffe09c4fe3..acd0b85b03f 100644
--- a/apps/dav/l10n/cs_CZ.js
+++ b/apps/dav/l10n/cs_CZ.js
@@ -1,44 +1,44 @@
OC.L10N.register(
"dav",
{
+ "Calendar" : "Kalendář",
+ "Todos" : "Úkoly",
+ "{actor} created calendar {calendar}" : "{actor} vytvořil(a) kalendář {calendar}",
+ "You created calendar {calendar}" : "Vytvořil(a",
+ "{actor} deleted calendar {calendar}" : "{actor} smazal(a) kalendář {calendar}",
+ "You deleted calendar {calendar}" : "Smazal(a) jste kalendář {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} aktualizoval(a) kalendář {calendar}",
+ "You updated calendar {calendar}" : "Aktualizoval(a) jste kalendář {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} s vámi nasdílel(a) kalendář {calendar}",
+ "You shared calendar {calendar} with {user}" : "S uživatelem {user} jste začal(a) sdílet kalendář {calendar}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} začal sdílet kalendář {calendar} s uživatelem {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} s vámi přestal(a) sdílet kalendář {calendar}",
+ "You unshared calendar {calendar} from {user}" : "S uživatelem {user} jste přestal(a) sdílet kalendář {calendar}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} přestal(a) sdílet kalendář {calendar} s uživatelem {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} přestal sdílet kalendář {calendar} sám se sebou",
+ "You shared calendar {calendar} with group {group}" : "Se skupinou {group} jste začal(a) sdílet kalendář {calendar}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} nasdílel(a) kalendář {calendar} skupině {group}",
+ "You unshared calendar {calendar} from group {group}" : "Zrušil(a) jste sdílení kalendáře {calendar} skupině {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} přestal(a) sdílet kalendář {calendar} se skupinou {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} vytvořil(a) událost {event} v kalendáři {calendar}",
+ "You created event {event} in calendar {calendar}" : "V kalendáři {calendar} jste vytvořil(a) událost {event}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} z kalendáře {calendar} smazal(a) událost {event}",
+ "You deleted event {event} from calendar {calendar}" : "Smazal(a) jste událost {event} z kalendáře {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval(a) událost {event} v kalendáři {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Aktualizoval(a) jste událost {event} v kalendáři {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} vytvořil(a) v seznamu {calendar} vytvořila úkol {todo}",
+ "You created todo {todo} in list {calendar}" : "V seznamu {calendar} jste vytvořil(a) úkol {todo}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} smazal(a) úkol {todo} ze seznamu {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Ze seznamu {todo} jste smazal(a) úkol {todo}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} aktualizoval(a) úkol {todo} v seznamu {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Aktualizoval(a) jste úkol {todo} v seznamu {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} vyřešil(a) úkol {todo} v seznamu {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Vyřešil(a) jste úkol {todo} v seznamu {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} znovu otevřel(a) úkol {todo} v seznamu {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Znovu jste otevřel(a) úkol {todo} v seznamu {calendar}",
"A <strong>calendar</strong> was modified" : "<strong>Kalendář</strong> byl změněn",
"A calendar <strong>event</strong> was modified" : "<strong>Událost</strong> v kalendáři byla změněna",
"A calendar <strong>todo</strong> was modified" : "<strong>Úkol</strong> v kalendáři byl změněn",
- "%1$s created calendar %2$s" : "%1$s vytvořil(a) kalendář %2$s",
- "You created calendar %2$s" : "Vytvořili jste kalendář %2$s",
- "%1$s deleted calendar %2$s" : "%1$s vymazal(a) kalendář %2$s",
- "You deleted calendar %2$s" : "Smazali jste kalendář %2$s",
- "%1$s updated calendar %2$s" : "%1$s aktualizoval(a) kalendář %2$s",
- "You updated calendar %2$s" : "Aktualizovali jste kalendář %2$s",
- "%1$s shared calendar %2$s with you" : "%1$s s vámi začal(a) sdílet kalendář %2$s",
- "You shared calendar %2$s with %1$s" : "S uživatelem %1$s jste začal(a) sdílet kalendář %2$s",
- "%3$s shared calendar %2$s with %1$s" : "%3$s nasdílel(a) s %1$s kalendář %2$s",
- "%1$s unshared calendar %2$s from you" : "%1$s s vámi přestal(a) sdílet kalendář %2$s",
- "You unshared calendar %2$s from %1$s" : "S %1$s jste přestal(a) sdílet kalendář %2$s",
- "%3$s unshared calendar %2$s from %1$s" : "%3$s přestal s %1$s sdílet kalendář %2$s",
- "%1$s unshared calendar %2$s from themselves" : "%1$s přestal sám se sebou sdílet kalendář %2$s",
- "You shared calendar %2$s with group %1$s" : "Se skupinou %1$s jste nasdílel(a) kalendář %2$s",
- "%3$s shared calendar %2$s with group %1$s" : "%3$s se skupinou %1$s začal(a) sdílet kalendář %2$s",
- "You unshared calendar %2$s from group %1$s" : "Se skupinou %1$s jste přestal(a) sdílet kalendář %2$s",
- "%3$s unshared calendar %2$s from group %1$s" : "%3$s přestal ve skupině %1$s sdílet kalendář %2$s",
- "%1$s created event %3$s in calendar %2$s" : "%1$s v kalendáři %2$s vytvořil událost %3$s",
- "You created event %3$s in calendar %2$s" : "V kalendáři %2$s jste vytvořil(a) událost %3$s",
- "%1$s deleted event %3$s from calendar %2$s" : "%1$s z kalendáře %2$s smazal(a) událost %3$s",
- "You deleted event %3$s from calendar %2$s" : "V kalendáři %2$s jste smazal(a) událost %3$s",
- "%1$s updated event %3$s in calendar %2$s" : "%1$s v kalendáři %2$s aktualizoval(a) událost %3$s",
- "You updated event %3$s in calendar %2$s" : "Aktualizoval(a) jste událost %3$s v kalendáři %2$s",
- "%1$s created todo %3$s in list %2$s" : "%1$s v seznamu %2$s vytvořil(a) úkol %3$s",
- "You created todo %3$s in list %2$s" : "V seznamu %2$s jste vytvořil(a) úkol %3$s",
- "%1$s deleted todo %3$s from list %2$s" : "%1$s ze seznamu %2$s smazal(a) úkol %3$s",
- "You deleted todo %3$s from list %2$s" : "Ze seznamu %2$s jste odstranil(a) úkol %3$s",
- "%1$s updated todo %3$s in list %2$s" : "%1$s v seznamu %2$s aktualizoval(a) úkol %3$s",
- "You updated todo %3$s in list %2$s" : "Aktualizoval(a) jste úkol %3$s v seznamu %2$s",
- "%1$s solved todo %3$s in list %2$s" : "%1$s v seznamu %2$s vyřešil(a) úkol %3$s",
- "You solved todo %3$s in list %2$s" : "Vyřešil(a) jste úkol %3$s v seznamu %2$s",
- "%1$s reopened todo %3$s in list %2$s" : "%1$s znovu otevřel úkol %3$s v seznamu %2$s",
- "You reopened todo %3$s in list %2$s" : "Znovu jste otevřel(a) úkol %3$s v seznamu %2$s",
- "Calendar" : "Kalendář",
- "Todos" : "Úkoly",
"Contact birthdays" : "Narozeniny kontaktů",
"Personal" : "Osobní",
"Contacts" : "Kontakty",
diff --git a/apps/dav/l10n/cs_CZ.json b/apps/dav/l10n/cs_CZ.json
index abe873a2094..c1a25b3401e 100644
--- a/apps/dav/l10n/cs_CZ.json
+++ b/apps/dav/l10n/cs_CZ.json
@@ -1,42 +1,42 @@
{ "translations": {
+ "Calendar" : "Kalendář",
+ "Todos" : "Úkoly",
+ "{actor} created calendar {calendar}" : "{actor} vytvořil(a) kalendář {calendar}",
+ "You created calendar {calendar}" : "Vytvořil(a",
+ "{actor} deleted calendar {calendar}" : "{actor} smazal(a) kalendář {calendar}",
+ "You deleted calendar {calendar}" : "Smazal(a) jste kalendář {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} aktualizoval(a) kalendář {calendar}",
+ "You updated calendar {calendar}" : "Aktualizoval(a) jste kalendář {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} s vámi nasdílel(a) kalendář {calendar}",
+ "You shared calendar {calendar} with {user}" : "S uživatelem {user} jste začal(a) sdílet kalendář {calendar}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} začal sdílet kalendář {calendar} s uživatelem {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} s vámi přestal(a) sdílet kalendář {calendar}",
+ "You unshared calendar {calendar} from {user}" : "S uživatelem {user} jste přestal(a) sdílet kalendář {calendar}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} přestal(a) sdílet kalendář {calendar} s uživatelem {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} přestal sdílet kalendář {calendar} sám se sebou",
+ "You shared calendar {calendar} with group {group}" : "Se skupinou {group} jste začal(a) sdílet kalendář {calendar}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} nasdílel(a) kalendář {calendar} skupině {group}",
+ "You unshared calendar {calendar} from group {group}" : "Zrušil(a) jste sdílení kalendáře {calendar} skupině {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} přestal(a) sdílet kalendář {calendar} se skupinou {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} vytvořil(a) událost {event} v kalendáři {calendar}",
+ "You created event {event} in calendar {calendar}" : "V kalendáři {calendar} jste vytvořil(a) událost {event}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} z kalendáře {calendar} smazal(a) událost {event}",
+ "You deleted event {event} from calendar {calendar}" : "Smazal(a) jste událost {event} z kalendáře {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval(a) událost {event} v kalendáři {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Aktualizoval(a) jste událost {event} v kalendáři {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} vytvořil(a) v seznamu {calendar} vytvořila úkol {todo}",
+ "You created todo {todo} in list {calendar}" : "V seznamu {calendar} jste vytvořil(a) úkol {todo}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} smazal(a) úkol {todo} ze seznamu {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Ze seznamu {todo} jste smazal(a) úkol {todo}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} aktualizoval(a) úkol {todo} v seznamu {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Aktualizoval(a) jste úkol {todo} v seznamu {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} vyřešil(a) úkol {todo} v seznamu {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Vyřešil(a) jste úkol {todo} v seznamu {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} znovu otevřel(a) úkol {todo} v seznamu {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Znovu jste otevřel(a) úkol {todo} v seznamu {calendar}",
"A <strong>calendar</strong> was modified" : "<strong>Kalendář</strong> byl změněn",
"A calendar <strong>event</strong> was modified" : "<strong>Událost</strong> v kalendáři byla změněna",
"A calendar <strong>todo</strong> was modified" : "<strong>Úkol</strong> v kalendáři byl změněn",
- "%1$s created calendar %2$s" : "%1$s vytvořil(a) kalendář %2$s",
- "You created calendar %2$s" : "Vytvořili jste kalendář %2$s",
- "%1$s deleted calendar %2$s" : "%1$s vymazal(a) kalendář %2$s",
- "You deleted calendar %2$s" : "Smazali jste kalendář %2$s",
- "%1$s updated calendar %2$s" : "%1$s aktualizoval(a) kalendář %2$s",
- "You updated calendar %2$s" : "Aktualizovali jste kalendář %2$s",
- "%1$s shared calendar %2$s with you" : "%1$s s vámi začal(a) sdílet kalendář %2$s",
- "You shared calendar %2$s with %1$s" : "S uživatelem %1$s jste začal(a) sdílet kalendář %2$s",
- "%3$s shared calendar %2$s with %1$s" : "%3$s nasdílel(a) s %1$s kalendář %2$s",
- "%1$s unshared calendar %2$s from you" : "%1$s s vámi přestal(a) sdílet kalendář %2$s",
- "You unshared calendar %2$s from %1$s" : "S %1$s jste přestal(a) sdílet kalendář %2$s",
- "%3$s unshared calendar %2$s from %1$s" : "%3$s přestal s %1$s sdílet kalendář %2$s",
- "%1$s unshared calendar %2$s from themselves" : "%1$s přestal sám se sebou sdílet kalendář %2$s",
- "You shared calendar %2$s with group %1$s" : "Se skupinou %1$s jste nasdílel(a) kalendář %2$s",
- "%3$s shared calendar %2$s with group %1$s" : "%3$s se skupinou %1$s začal(a) sdílet kalendář %2$s",
- "You unshared calendar %2$s from group %1$s" : "Se skupinou %1$s jste přestal(a) sdílet kalendář %2$s",
- "%3$s unshared calendar %2$s from group %1$s" : "%3$s přestal ve skupině %1$s sdílet kalendář %2$s",
- "%1$s created event %3$s in calendar %2$s" : "%1$s v kalendáři %2$s vytvořil událost %3$s",
- "You created event %3$s in calendar %2$s" : "V kalendáři %2$s jste vytvořil(a) událost %3$s",
- "%1$s deleted event %3$s from calendar %2$s" : "%1$s z kalendáře %2$s smazal(a) událost %3$s",
- "You deleted event %3$s from calendar %2$s" : "V kalendáři %2$s jste smazal(a) událost %3$s",
- "%1$s updated event %3$s in calendar %2$s" : "%1$s v kalendáři %2$s aktualizoval(a) událost %3$s",
- "You updated event %3$s in calendar %2$s" : "Aktualizoval(a) jste událost %3$s v kalendáři %2$s",
- "%1$s created todo %3$s in list %2$s" : "%1$s v seznamu %2$s vytvořil(a) úkol %3$s",
- "You created todo %3$s in list %2$s" : "V seznamu %2$s jste vytvořil(a) úkol %3$s",
- "%1$s deleted todo %3$s from list %2$s" : "%1$s ze seznamu %2$s smazal(a) úkol %3$s",
- "You deleted todo %3$s from list %2$s" : "Ze seznamu %2$s jste odstranil(a) úkol %3$s",
- "%1$s updated todo %3$s in list %2$s" : "%1$s v seznamu %2$s aktualizoval(a) úkol %3$s",
- "You updated todo %3$s in list %2$s" : "Aktualizoval(a) jste úkol %3$s v seznamu %2$s",
- "%1$s solved todo %3$s in list %2$s" : "%1$s v seznamu %2$s vyřešil(a) úkol %3$s",
- "You solved todo %3$s in list %2$s" : "Vyřešil(a) jste úkol %3$s v seznamu %2$s",
- "%1$s reopened todo %3$s in list %2$s" : "%1$s znovu otevřel úkol %3$s v seznamu %2$s",
- "You reopened todo %3$s in list %2$s" : "Znovu jste otevřel(a) úkol %3$s v seznamu %2$s",
- "Calendar" : "Kalendář",
- "Todos" : "Úkoly",
"Contact birthdays" : "Narozeniny kontaktů",
"Personal" : "Osobní",
"Contacts" : "Kontakty",
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js
index 5ee0af7dbaa..d5ebd166a29 100644
--- a/apps/dav/l10n/de.js
+++ b/apps/dav/l10n/de.js
@@ -6,10 +6,10 @@ OC.L10N.register(
"{actor} created calendar {calendar}" : "{actor} hat den Kalender {calendar} erstellt",
"You created calendar {calendar}" : "Du hast den Kalender {calendar} erstellt",
"{actor} deleted calendar {calendar}" : "{actor} hat den Kalender {calendar} gelöscht",
- "You deleted calendar {calendar}" : "Du hast hat den Kalender {calendar} gelöscht",
+ "You deleted calendar {calendar}" : "Du hast den Kalender {calendar} gelöscht",
"{actor} updated calendar {calendar}" : "{actor} hat den Kalender {calendar} aktualisiert",
"You updated calendar {calendar}" : "Du hast den Kalender {calendar} aktualisiert",
- "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit Ihnen geteilt",
+ "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit dir geteilt",
"You shared calendar {calendar} with {user}" : "Du hast den Kalender {calendar} mit {user} geteilt",
"{actor} shared calendar {calendar} with {user}" : "{actor} hat den Kalender {calendar} mit {user} geteilt",
"{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit dir",
@@ -26,16 +26,16 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Du hast das Ereignis {event} im Kalender {calendar} gelöscht",
"{actor} updated event {event} in calendar {calendar}" : "{actor} hat das Ereignis {event} im Kalender {calendar} aktualisiert",
"You updated event {event} in calendar {calendar}" : "Du hast das Ereignis {event} im Kalender {calendar} aktualisiert",
- "{actor} created todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erstellt",
- "You created todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} erstellt",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} gelöscht",
- "You deleted todo {todo} from list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} gelöscht",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} aktualisiert",
- "You updated todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} aktualisiert",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erledigt",
- "You solved todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} erledigt",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} wieder geöffnet",
- "You reopened todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} wieder geöffnet",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "You created todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "You deleted todo {todo} from list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "You updated todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "You solved todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} wieder geöffnet",
+ "You reopened todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} wieder geöffnet",
"A <strong>calendar</strong> was modified" : "Ein <strong>Kalender</strong> wurde bearbeitet",
"A calendar <strong>event</strong> was modified" : "Ein <strong>Ereignis</strong> wurde bearbeitet",
"A calendar <strong>todo</strong> was modified" : "Eine <strong>Aufgabe</strong> wurde bearbeitet",
@@ -43,7 +43,7 @@ OC.L10N.register(
"Personal" : "Persönlich",
"Contacts" : "Kontakte",
"Technical details" : "Technische Details",
- "Remote Address: %s" : "Entfernte Adresse: %s",
- "Request ID: %s" : "Anfragekennung: %s"
+ "Remote Address: %s" : "Remote-Adresse: %s",
+ "Request ID: %s" : "Anfrage-ID: %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json
index 915c2cfb540..dbec1faa87b 100644
--- a/apps/dav/l10n/de.json
+++ b/apps/dav/l10n/de.json
@@ -4,10 +4,10 @@
"{actor} created calendar {calendar}" : "{actor} hat den Kalender {calendar} erstellt",
"You created calendar {calendar}" : "Du hast den Kalender {calendar} erstellt",
"{actor} deleted calendar {calendar}" : "{actor} hat den Kalender {calendar} gelöscht",
- "You deleted calendar {calendar}" : "Du hast hat den Kalender {calendar} gelöscht",
+ "You deleted calendar {calendar}" : "Du hast den Kalender {calendar} gelöscht",
"{actor} updated calendar {calendar}" : "{actor} hat den Kalender {calendar} aktualisiert",
"You updated calendar {calendar}" : "Du hast den Kalender {calendar} aktualisiert",
- "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit Ihnen geteilt",
+ "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit dir geteilt",
"You shared calendar {calendar} with {user}" : "Du hast den Kalender {calendar} mit {user} geteilt",
"{actor} shared calendar {calendar} with {user}" : "{actor} hat den Kalender {calendar} mit {user} geteilt",
"{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit dir",
@@ -24,16 +24,16 @@
"You deleted event {event} from calendar {calendar}" : "Du hast das Ereignis {event} im Kalender {calendar} gelöscht",
"{actor} updated event {event} in calendar {calendar}" : "{actor} hat das Ereignis {event} im Kalender {calendar} aktualisiert",
"You updated event {event} in calendar {calendar}" : "Du hast das Ereignis {event} im Kalender {calendar} aktualisiert",
- "{actor} created todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erstellt",
- "You created todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} erstellt",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} gelöscht",
- "You deleted todo {todo} from list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} gelöscht",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} aktualisiert",
- "You updated todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} aktualisiert",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erledigt",
- "You solved todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} erledigt",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} wieder geöffnet",
- "You reopened todo {todo} in list {calendar}" : "Du hast das ToDo {todo} in der Liste {calendar} wieder geöffnet",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "You created todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "You deleted todo {todo} from list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "You updated todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "You solved todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} wieder geöffnet",
+ "You reopened todo {todo} in list {calendar}" : "Du hast die Aufgabe {todo} in der Liste {calendar} wieder geöffnet",
"A <strong>calendar</strong> was modified" : "Ein <strong>Kalender</strong> wurde bearbeitet",
"A calendar <strong>event</strong> was modified" : "Ein <strong>Ereignis</strong> wurde bearbeitet",
"A calendar <strong>todo</strong> was modified" : "Eine <strong>Aufgabe</strong> wurde bearbeitet",
@@ -41,7 +41,7 @@
"Personal" : "Persönlich",
"Contacts" : "Kontakte",
"Technical details" : "Technische Details",
- "Remote Address: %s" : "Entfernte Adresse: %s",
- "Request ID: %s" : "Anfragekennung: %s"
+ "Remote Address: %s" : "Remote-Adresse: %s",
+ "Request ID: %s" : "Anfrage-ID: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js
index 03da3d51f7c..07758a7b122 100644
--- a/apps/dav/l10n/de_DE.js
+++ b/apps/dav/l10n/de_DE.js
@@ -26,19 +26,19 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Sie haben das Ereignis {event} im Kalender {calendar} gelöscht",
"{actor} updated event {event} in calendar {calendar}" : "{actor} hat das Ereignis {event} im Kalender {calendar} aktualisiert",
"You updated event {event} in calendar {calendar}" : "Sie haben das Ereignis {event} im Kalender {calendar} aktualisiert",
- "{actor} created todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erstellt",
- "You created todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} erstellt",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} gelöscht",
- "You deleted todo {todo} from list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} gelöscht",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} aktualisiert",
- "You updated todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} aktualisiert",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erledigt",
- "You solved todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} erledigt",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} wieder geöffnet",
- "You reopened todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} wieder geöffnet",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "You created todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "You deleted todo {todo} from list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "You updated todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "You solved todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} wiedereröffnet",
+ "You reopened todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} wiedereröffnet",
"A <strong>calendar</strong> was modified" : "Ein <strong>Kalender</strong> wurde bearbeitet",
- "A calendar <strong>event</strong> was modified" : "Ein <strong>Ereignis</strong> wurde bearbeitet",
- "A calendar <strong>todo</strong> was modified" : "Eine <strong>Aufgabe</strong> wurde bearbeitet",
+ "A calendar <strong>event</strong> was modified" : "Ein Kalender-<strong>Ereignis</strong> wurde bearbeitet",
+ "A calendar <strong>todo</strong> was modified" : "Eine Kalender-<strong>Aufgabe</strong> wurde bearbeitet",
"Contact birthdays" : "Geburtstage von Kontakten",
"Personal" : "Persönlich",
"Contacts" : "Kontakte",
diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json
index b7751ee32a4..8440fb0ca50 100644
--- a/apps/dav/l10n/de_DE.json
+++ b/apps/dav/l10n/de_DE.json
@@ -24,19 +24,19 @@
"You deleted event {event} from calendar {calendar}" : "Sie haben das Ereignis {event} im Kalender {calendar} gelöscht",
"{actor} updated event {event} in calendar {calendar}" : "{actor} hat das Ereignis {event} im Kalender {calendar} aktualisiert",
"You updated event {event} in calendar {calendar}" : "Sie haben das Ereignis {event} im Kalender {calendar} aktualisiert",
- "{actor} created todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erstellt",
- "You created todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} erstellt",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} gelöscht",
- "You deleted todo {todo} from list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} gelöscht",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} aktualisiert",
- "You updated todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} aktualisiert",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} erledigt",
- "You solved todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} erledigt",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat das ToDo {todo} in der Liste {calendar} wieder geöffnet",
- "You reopened todo {todo} in list {calendar}" : "Sie haben das ToDo {todo} in der Liste {calendar} wieder geöffnet",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "You created todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} erstellt",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "You deleted todo {todo} from list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} gelöscht",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "You updated todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} aktualisiert",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "You solved todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} erledigt",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} wiedereröffnet",
+ "You reopened todo {todo} in list {calendar}" : "Sie haben die Aufgabe {todo} in der Liste {calendar} wiedereröffnet",
"A <strong>calendar</strong> was modified" : "Ein <strong>Kalender</strong> wurde bearbeitet",
- "A calendar <strong>event</strong> was modified" : "Ein <strong>Ereignis</strong> wurde bearbeitet",
- "A calendar <strong>todo</strong> was modified" : "Eine <strong>Aufgabe</strong> wurde bearbeitet",
+ "A calendar <strong>event</strong> was modified" : "Ein Kalender-<strong>Ereignis</strong> wurde bearbeitet",
+ "A calendar <strong>todo</strong> was modified" : "Eine Kalender-<strong>Aufgabe</strong> wurde bearbeitet",
"Contact birthdays" : "Geburtstage von Kontakten",
"Personal" : "Persönlich",
"Contacts" : "Kontakte",
diff --git a/apps/dav/l10n/nb_NO.js b/apps/dav/l10n/nb_NO.js
index 7c620457436..364f305189d 100644
--- a/apps/dav/l10n/nb_NO.js
+++ b/apps/dav/l10n/nb_NO.js
@@ -1,6 +1,44 @@
OC.L10N.register(
"dav",
{
+ "Calendar" : "Kalender",
+ "Todos" : "Gjøremål",
+ "{actor} created calendar {calendar}" : "{actor} opprettet kalenderen {calendar}",
+ "You created calendar {calendar}" : "Du opprettet kalenderen {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} slettet kalenderen {calendar}",
+ "You deleted calendar {calendar}" : "Du slettet kalenderen {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} oppdaterte kalenderen {calendar}",
+ "You updated calendar {calendar}" : "Du oppdaterte kalenderen {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} delte kalenderen {calendar} med deg",
+ "You shared calendar {calendar} with {user}" : "Du delte kalenderen {calendar} med {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} delte kalenderen {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} fjernet delingen av kalenderen {calendar} med deg",
+ "You unshared calendar {calendar} from {user}" : "Du fjernet delingen av kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} fjernet delingen av kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} fjernet delingen av kalender {calendar} med seg selv",
+ "You shared calendar {calendar} with group {group}" : "Du delte kalender {calendar} med gruppe {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} delte kalenderen {calendar} med gruppe {group}",
+ "You unshared calendar {calendar} from group {group}" : "Du fjernet deling av kalenderen {calendar} med gruppe {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} fjernet deling av kalenderen {calendar} med gruppe {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} opprettet en hendelse {event} i kalenderen {calendar}",
+ "You created event {event} in calendar {calendar}" : "Du opprettet en hendelse {event} i kalenderen {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} slettet hendelsen {event} fra kalenderen {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Du slettet hendelsen {event} fra kalenderen {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} oppdaterte hendelse {event} i kalenderen {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Du oppdaterte hendelse {event} i kalenderen {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} opprettet en oppgave {todo} i listen {calendar}",
+ "You created todo {todo} in list {calendar}" : "Du opprettet en oppgave {todo} i listen {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} slettet en oppgave {todo} fra listen {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Du slettet en oppgave {todo} fra listen {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} oppdaterte en oppgave {todo} i listen {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Du oppdaterte en oppgave {todo} i listen {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} ferdigstilte oppgaven {todo} i listen {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Du ferdigstilte oppgaven {todo} i listen {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} gjenåpnet oppgaven {todo} i listen {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Du gjenåpnet oppgaven {todo} i listen {calendar}",
+ "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> ble endret",
+ "A calendar <strong>event</strong> was modified" : "En kalender <strong>hendelse</strong> ble endret",
+ "A calendar <strong>todo</strong> was modified" : "En kalende <strong>gjøremål</strong> ble endret",
"Contact birthdays" : "Kontakters fødelsdag",
"Personal" : "Personlig",
"Contacts" : "Kontakter",
diff --git a/apps/dav/l10n/nb_NO.json b/apps/dav/l10n/nb_NO.json
index 5c305db045c..3725ba697fa 100644
--- a/apps/dav/l10n/nb_NO.json
+++ b/apps/dav/l10n/nb_NO.json
@@ -1,4 +1,42 @@
{ "translations": {
+ "Calendar" : "Kalender",
+ "Todos" : "Gjøremål",
+ "{actor} created calendar {calendar}" : "{actor} opprettet kalenderen {calendar}",
+ "You created calendar {calendar}" : "Du opprettet kalenderen {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} slettet kalenderen {calendar}",
+ "You deleted calendar {calendar}" : "Du slettet kalenderen {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} oppdaterte kalenderen {calendar}",
+ "You updated calendar {calendar}" : "Du oppdaterte kalenderen {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} delte kalenderen {calendar} med deg",
+ "You shared calendar {calendar} with {user}" : "Du delte kalenderen {calendar} med {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} delte kalenderen {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} fjernet delingen av kalenderen {calendar} med deg",
+ "You unshared calendar {calendar} from {user}" : "Du fjernet delingen av kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} fjernet delingen av kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} fjernet delingen av kalender {calendar} med seg selv",
+ "You shared calendar {calendar} with group {group}" : "Du delte kalender {calendar} med gruppe {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} delte kalenderen {calendar} med gruppe {group}",
+ "You unshared calendar {calendar} from group {group}" : "Du fjernet deling av kalenderen {calendar} med gruppe {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} fjernet deling av kalenderen {calendar} med gruppe {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} opprettet en hendelse {event} i kalenderen {calendar}",
+ "You created event {event} in calendar {calendar}" : "Du opprettet en hendelse {event} i kalenderen {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} slettet hendelsen {event} fra kalenderen {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Du slettet hendelsen {event} fra kalenderen {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} oppdaterte hendelse {event} i kalenderen {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Du oppdaterte hendelse {event} i kalenderen {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} opprettet en oppgave {todo} i listen {calendar}",
+ "You created todo {todo} in list {calendar}" : "Du opprettet en oppgave {todo} i listen {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} slettet en oppgave {todo} fra listen {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Du slettet en oppgave {todo} fra listen {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} oppdaterte en oppgave {todo} i listen {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Du oppdaterte en oppgave {todo} i listen {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} ferdigstilte oppgaven {todo} i listen {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Du ferdigstilte oppgaven {todo} i listen {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} gjenåpnet oppgaven {todo} i listen {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Du gjenåpnet oppgaven {todo} i listen {calendar}",
+ "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> ble endret",
+ "A calendar <strong>event</strong> was modified" : "En kalender <strong>hendelse</strong> ble endret",
+ "A calendar <strong>todo</strong> was modified" : "En kalende <strong>gjøremål</strong> ble endret",
"Contact birthdays" : "Kontakters fødelsdag",
"Personal" : "Personlig",
"Contacts" : "Kontakter",
diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js
index 5cda18af266..e6749e7fb1b 100644
--- a/apps/dav/l10n/ru.js
+++ b/apps/dav/l10n/ru.js
@@ -1,10 +1,48 @@
OC.L10N.register(
"dav",
{
+ "Calendar" : "Календарь",
+ "Todos" : "Задачи",
+ "{actor} created calendar {calendar}" : "{actor} создал календарь {calendar}",
+ "You created calendar {calendar}" : "Вы создали календарь {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} удалил календарь {calendar}",
+ "You deleted calendar {calendar}" : "Вы удалили календарь {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} обновил календарь {calendar}",
+ "You updated calendar {calendar}" : "Вы обновили календарь {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} поделился календарем {calendar} с вами",
+ "You shared calendar {calendar} with {user}" : "Вы поделились календарем {calendar} с {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} поделился календарем {calendar} с {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} закрыл для вас доступ к календарю {calendar}",
+ "You unshared calendar {calendar} from {user}" : "Вы закрыли доступ к календарю {calendar} для {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} закрыл доступ к календарю {calendar} для {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} закрыл доступ к календарю {calendar} для себя",
+ "You shared calendar {calendar} with group {group}" : "Вы поделились календарем {calendar} с группой {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} поделился календарем {calendar} с группой {group}",
+ "You unshared calendar {calendar} from group {group}" : "Вы закрыли доступ к календарю {calendar} для группы {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} закрыл доступ к календарю {calendar} для группы {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} создал событие {event} в календаре {calendar}",
+ "You created event {event} in calendar {calendar}" : "Вы создали событие {event} в календаре {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} удалил событие {event} из календаря {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Вы удалили событие {event} из календаря {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} обновил событие {event} в календаре {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Вы обновили событие {event} в календаре {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} создал задачу {todo} в списке {calendar}",
+ "You created todo {todo} in list {calendar}" : "Вы создали задачу {todo} в списке {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} удалил задачу {todo} из списка {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Вы удалили задачу {todo} из списка {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} обновил задачу {todo} из списка {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Вы обновили задачу {todo} из списка {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} завершил задачу {todo} из списка {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Вы завершили задачу {todo} из списка {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} повторно открыл задачу {todo} из списка {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Вы повторно открыли задачу {todo} из списка {calendar}",
+ "A <strong>calendar</strong> was modified" : "<strong>Календарь</strong> был изменен",
+ "A calendar <strong>event</strong> was modified" : "<strong>Событие</strong> календаря была изменена",
+ "A calendar <strong>todo</strong> was modified" : "<strong>Задача</strong> календаря была изменена",
"Contact birthdays" : "Дни рождения контакта",
"Personal" : "Личное",
"Contacts" : "Контакты",
- "Technical details" : "Технические характеристики",
+ "Technical details" : "Технические подробности",
"Remote Address: %s" : "Удаленный адрес: %s",
"Request ID: %s" : "ID запроса: %s"
},
diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json
index bdee4d3cca9..538be85207e 100644
--- a/apps/dav/l10n/ru.json
+++ b/apps/dav/l10n/ru.json
@@ -1,8 +1,46 @@
{ "translations": {
+ "Calendar" : "Календарь",
+ "Todos" : "Задачи",
+ "{actor} created calendar {calendar}" : "{actor} создал календарь {calendar}",
+ "You created calendar {calendar}" : "Вы создали календарь {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} удалил календарь {calendar}",
+ "You deleted calendar {calendar}" : "Вы удалили календарь {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} обновил календарь {calendar}",
+ "You updated calendar {calendar}" : "Вы обновили календарь {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} поделился календарем {calendar} с вами",
+ "You shared calendar {calendar} with {user}" : "Вы поделились календарем {calendar} с {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} поделился календарем {calendar} с {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} закрыл для вас доступ к календарю {calendar}",
+ "You unshared calendar {calendar} from {user}" : "Вы закрыли доступ к календарю {calendar} для {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} закрыл доступ к календарю {calendar} для {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} закрыл доступ к календарю {calendar} для себя",
+ "You shared calendar {calendar} with group {group}" : "Вы поделились календарем {calendar} с группой {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} поделился календарем {calendar} с группой {group}",
+ "You unshared calendar {calendar} from group {group}" : "Вы закрыли доступ к календарю {calendar} для группы {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} закрыл доступ к календарю {calendar} для группы {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} создал событие {event} в календаре {calendar}",
+ "You created event {event} in calendar {calendar}" : "Вы создали событие {event} в календаре {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} удалил событие {event} из календаря {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Вы удалили событие {event} из календаря {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} обновил событие {event} в календаре {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Вы обновили событие {event} в календаре {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} создал задачу {todo} в списке {calendar}",
+ "You created todo {todo} in list {calendar}" : "Вы создали задачу {todo} в списке {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} удалил задачу {todo} из списка {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Вы удалили задачу {todo} из списка {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} обновил задачу {todo} из списка {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Вы обновили задачу {todo} из списка {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} завершил задачу {todo} из списка {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Вы завершили задачу {todo} из списка {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} повторно открыл задачу {todo} из списка {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Вы повторно открыли задачу {todo} из списка {calendar}",
+ "A <strong>calendar</strong> was modified" : "<strong>Календарь</strong> был изменен",
+ "A calendar <strong>event</strong> was modified" : "<strong>Событие</strong> календаря была изменена",
+ "A calendar <strong>todo</strong> was modified" : "<strong>Задача</strong> календаря была изменена",
"Contact birthdays" : "Дни рождения контакта",
"Personal" : "Личное",
"Contacts" : "Контакты",
- "Technical details" : "Технические характеристики",
+ "Technical details" : "Технические подробности",
"Remote Address: %s" : "Удаленный адрес: %s",
"Request ID: %s" : "ID запроса: %s"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
diff --git a/apps/dav/l10n/sq.js b/apps/dav/l10n/sq.js
new file mode 100644
index 00000000000..e84a2e2354f
--- /dev/null
+++ b/apps/dav/l10n/sq.js
@@ -0,0 +1,40 @@
+OC.L10N.register(
+ "dav",
+ {
+ "Calendar" : "Kalendar",
+ "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}",
+ "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}",
+ "You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} përditësoi kalendarin {calendar}",
+ "You updated calendar {calendar}" : "Ju përditësuat kalendarin {calendar}",
+ "{actor} shared calendar {calendar} with you" : " {actor} ndau kalendarin {calendar} me ju",
+ "You shared calendar {calendar} with {user}" : "Ju ndat kalendarin {calendar} me {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} ndau kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} ndaloj së ndari kalendarin {calendar} me ju",
+ "You unshared calendar {calendar} from {user}" : "Ju ndaluat së ndari kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} ndaloj së ndari kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} ndaloj së ndari kalendarin {calendar} me veten",
+ "You shared calendar {calendar} with group {group}" : "Ju ndat kalendarin {calendar} me grupin {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} ndau kalendarin {calendar} me grupin {group}",
+ "You unshared calendar {calendar} from group {group}" : "Ju ndaluat së ndari kalendarin {calendar} me grupin {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} ndaloj së ndari kalendarin {calendar} me grupin {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} krijoj eventin {event} në kalendarin {calendar}",
+ "You created event {event} in calendar {calendar}" : "Ju krijuat eventin {event} në kalendarin {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} fshiu eventin {event} nga kalendari {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Ju fshit eventin {event} nga kalndari {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} përditsoi eventin {event} në kalndarin {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Ju përditësuat eventin {event} në kalndarin {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} u krijua todo{todo} në listën {calendar}",
+ "You created todo {todo} in list {calendar}" : "Ju krijuat todo {todo} në listën {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}",
+ "A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua",
+ "A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua",
+ "Personal" : "Personale",
+ "Contacts" : "Kontaktet",
+ "Technical details" : "Detaje teknike",
+ "Remote Address: %s" : "Adresa remote: %s",
+ "Request ID: %s" : "ID e kërkesës: %s"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/sq.json b/apps/dav/l10n/sq.json
new file mode 100644
index 00000000000..922e7122069
--- /dev/null
+++ b/apps/dav/l10n/sq.json
@@ -0,0 +1,38 @@
+{ "translations": {
+ "Calendar" : "Kalendar",
+ "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}",
+ "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}",
+ "You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} përditësoi kalendarin {calendar}",
+ "You updated calendar {calendar}" : "Ju përditësuat kalendarin {calendar}",
+ "{actor} shared calendar {calendar} with you" : " {actor} ndau kalendarin {calendar} me ju",
+ "You shared calendar {calendar} with {user}" : "Ju ndat kalendarin {calendar} me {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} ndau kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} ndaloj së ndari kalendarin {calendar} me ju",
+ "You unshared calendar {calendar} from {user}" : "Ju ndaluat së ndari kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} ndaloj së ndari kalendarin {calendar} me {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} ndaloj së ndari kalendarin {calendar} me veten",
+ "You shared calendar {calendar} with group {group}" : "Ju ndat kalendarin {calendar} me grupin {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} ndau kalendarin {calendar} me grupin {group}",
+ "You unshared calendar {calendar} from group {group}" : "Ju ndaluat së ndari kalendarin {calendar} me grupin {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} ndaloj së ndari kalendarin {calendar} me grupin {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} krijoj eventin {event} në kalendarin {calendar}",
+ "You created event {event} in calendar {calendar}" : "Ju krijuat eventin {event} në kalendarin {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} fshiu eventin {event} nga kalendari {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Ju fshit eventin {event} nga kalndari {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} përditsoi eventin {event} në kalndarin {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Ju përditësuat eventin {event} në kalndarin {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} u krijua todo{todo} në listën {calendar}",
+ "You created todo {todo} in list {calendar}" : "Ju krijuat todo {todo} në listën {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}",
+ "A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua",
+ "A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua",
+ "Personal" : "Personale",
+ "Contacts" : "Kontaktet",
+ "Technical details" : "Detaje teknike",
+ "Remote Address: %s" : "Adresa remote: %s",
+ "Request ID: %s" : "ID e kërkesës: %s"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js
index 07a5521092d..25cd0d797c8 100644
--- a/apps/dav/l10n/sv.js
+++ b/apps/dav/l10n/sv.js
@@ -1,11 +1,49 @@
OC.L10N.register(
"dav",
{
- "Contact birthdays" : "Kontaktfödelsedagar",
- "Personal" : "Personligt",
+ "Calendar" : "Kalender",
+ "Todos" : "Uppgifter",
+ "{actor} created calendar {calendar}" : "{actor} skapade kalender {calendar}",
+ "You created calendar {calendar}" : "Du skapade kalender {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} raderade kalender {calendar}",
+ "You deleted calendar {calendar}" : "Du raderade kalender {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} uppdaterade kalender {calendar}",
+ "You updated calendar {calendar}" : "Du uppdaterade kalender {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} delade kalender {calendar} med dig",
+ "You shared calendar {calendar} with {user}" : "Du delade kalender {calendar} med {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} delade kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} slutade dela kalender {calendar} med dig",
+ "You unshared calendar {calendar} from {user}" : "Du slutade dela kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} slutade dela kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} slutade dela kalender {calendar} med sig själv",
+ "You shared calendar {calendar} with group {group}" : "Du delade kalender {calendar} med grupp {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} delade kalender {calendar} med grupp {group}",
+ "You unshared calendar {calendar} from group {group}" : "Du slutade dela kalender {calendar} med gruppen {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} slutade dela kalender {calendar} med gruppen {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} skapade händelse {event} i kalender {calendar}",
+ "You created event {event} in calendar {calendar}" : "Du skapade händelse {event} i kalender {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} raderade händelse {event} från kalender {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Du raderade händelse {event} från kalender {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} uppdaterade händelse {event} i kalender {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Du uppdaterade händelse {event} i kalender {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} skapade uppgift {todo} i listan {calendar}",
+ "You created todo {todo} in list {calendar}" : "Du skapade uppgift {todo} i listan {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} raderade uppgift {todo} från listan {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Du raderade uppgift {todo} från listan {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} uppdaterade uppgift {todo} i listan {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Du uppdaterade uppgift {todo} i listan {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} löste uppgift {todo} i listan {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Du löste uppgift {todo} i listan {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} återupptog uppgift {todo} i listan {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Du återupptog uppgift {todo} i listan {calendar}",
+ "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> modifierades",
+ "A calendar <strong>event</strong> was modified" : "En kalender-<strong>händelse</strong> modifierades",
+ "A calendar <strong>todo</strong> was modified" : "En kalender <strong>uppgift</strong> modifierades",
+ "Contact birthdays" : "Födelsedagar",
+ "Personal" : "Privat",
"Contacts" : "Kontakter",
"Technical details" : "Tekniska detaljer",
- "Remote Address: %s" : "Fjärradress: %s",
+ "Remote Address: %s" : "Extern adress: %s",
"Request ID: %s" : "Begär ID: %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json
index 361e3131470..ba76ca55329 100644
--- a/apps/dav/l10n/sv.json
+++ b/apps/dav/l10n/sv.json
@@ -1,9 +1,47 @@
{ "translations": {
- "Contact birthdays" : "Kontaktfödelsedagar",
- "Personal" : "Personligt",
+ "Calendar" : "Kalender",
+ "Todos" : "Uppgifter",
+ "{actor} created calendar {calendar}" : "{actor} skapade kalender {calendar}",
+ "You created calendar {calendar}" : "Du skapade kalender {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} raderade kalender {calendar}",
+ "You deleted calendar {calendar}" : "Du raderade kalender {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} uppdaterade kalender {calendar}",
+ "You updated calendar {calendar}" : "Du uppdaterade kalender {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} delade kalender {calendar} med dig",
+ "You shared calendar {calendar} with {user}" : "Du delade kalender {calendar} med {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} delade kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} slutade dela kalender {calendar} med dig",
+ "You unshared calendar {calendar} from {user}" : "Du slutade dela kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} slutade dela kalender {calendar} med {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} slutade dela kalender {calendar} med sig själv",
+ "You shared calendar {calendar} with group {group}" : "Du delade kalender {calendar} med grupp {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} delade kalender {calendar} med grupp {group}",
+ "You unshared calendar {calendar} from group {group}" : "Du slutade dela kalender {calendar} med gruppen {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} slutade dela kalender {calendar} med gruppen {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} skapade händelse {event} i kalender {calendar}",
+ "You created event {event} in calendar {calendar}" : "Du skapade händelse {event} i kalender {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} raderade händelse {event} från kalender {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Du raderade händelse {event} från kalender {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} uppdaterade händelse {event} i kalender {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Du uppdaterade händelse {event} i kalender {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} skapade uppgift {todo} i listan {calendar}",
+ "You created todo {todo} in list {calendar}" : "Du skapade uppgift {todo} i listan {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} raderade uppgift {todo} från listan {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Du raderade uppgift {todo} från listan {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} uppdaterade uppgift {todo} i listan {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Du uppdaterade uppgift {todo} i listan {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} löste uppgift {todo} i listan {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Du löste uppgift {todo} i listan {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} återupptog uppgift {todo} i listan {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Du återupptog uppgift {todo} i listan {calendar}",
+ "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> modifierades",
+ "A calendar <strong>event</strong> was modified" : "En kalender-<strong>händelse</strong> modifierades",
+ "A calendar <strong>todo</strong> was modified" : "En kalender <strong>uppgift</strong> modifierades",
+ "Contact birthdays" : "Födelsedagar",
+ "Personal" : "Privat",
"Contacts" : "Kontakter",
"Technical details" : "Tekniska detaljer",
- "Remote Address: %s" : "Fjärradress: %s",
+ "Remote Address: %s" : "Extern adress: %s",
"Request ID: %s" : "Begär ID: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/lib/CalDAV/Activity/Backend.php b/apps/dav/lib/CalDAV/Activity/Backend.php
index 953fdcea832..f8cc82407fd 100644
--- a/apps/dav/lib/CalDAV/Activity/Backend.php
+++ b/apps/dav/lib/CalDAV/Activity/Backend.php
@@ -103,7 +103,7 @@ class Backend {
}
$principal = explode('/', $calendarData['principaluri']);
- $owner = $principal[2];
+ $owner = array_pop($principal);
$currentUser = $this->userSession->getUser();
if ($currentUser instanceof IUser) {
@@ -369,7 +369,7 @@ class Backend {
}
$principal = explode('/', $calendarData['principaluri']);
- $owner = $principal[2];
+ $owner = array_pop($principal);
$currentUser = $this->userSession->getUser();
if ($currentUser instanceof IUser) {
diff --git a/apps/dav/lib/CalDAV/Activity/Setting/Todo.php b/apps/dav/lib/CalDAV/Activity/Setting/Todo.php
index 0c8215f4843..234774bfea4 100644
--- a/apps/dav/lib/CalDAV/Activity/Setting/Todo.php
+++ b/apps/dav/lib/CalDAV/Activity/Setting/Todo.php
@@ -42,7 +42,7 @@ class Todo implements ISetting {
* @since 11.0.0
*/
public function getIdentifier() {
- return 'calendar_todos';
+ return 'calendar_todo';
}
/**
diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php
index 104eec6b496..702b74bf1b3 100644
--- a/apps/dav/lib/CalDAV/BirthdayService.php
+++ b/apps/dav/lib/CalDAV/BirthdayService.php
@@ -30,6 +30,11 @@ use Exception;
use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\DAV\GroupPrincipalBackend;
use Sabre\VObject\Component\VCalendar;
+use Sabre\VObject\Component\VCard;
+use Sabre\VObject\DateTimeParser;
+use Sabre\VObject\Document;
+use Sabre\VObject\InvalidDataException;
+use Sabre\VObject\Property\VCard\DateAndOrTime;
use Sabre\VObject\Reader;
class BirthdayService {
@@ -129,6 +134,12 @@ class BirthdayService {
}
try {
$doc = Reader::read($cardData);
+ // We're always converting to vCard 4.0 so we can rely on the
+ // VCardConverter handling the X-APPLE-OMIT-YEAR property for us.
+ if (!$doc instanceof VCard) {
+ return null;
+ }
+ $doc = $doc->convert(Document::VCARD40);
} catch (Exception $e) {
return null;
}
@@ -136,21 +147,43 @@ class BirthdayService {
if (!isset($doc->{$dateField})) {
return null;
}
+ if (!isset($doc->FN)) {
+ return null;
+ }
$birthday = $doc->{$dateField};
if (!(string)$birthday) {
return null;
}
- $title = str_replace('{name}',
- strtr((string)$doc->FN, array('\,' => ',', '\;' => ';')),
- '{name}'
- );
+ // Skip if the BDAY property is not of the right type.
+ if (!$birthday instanceof DateAndOrTime) {
+ return null;
+ }
+
+ // Skip if we can't parse the BDAY value.
+ try {
+ $dateParts = DateTimeParser::parseVCardDateTime($birthday->getValue());
+ } catch (InvalidDataException $e) {
+ return null;
+ }
+
+ $unknownYear = false;
+ if (!$dateParts['year']) {
+ $birthday = '1900-' . $dateParts['month'] . '-' . $dateParts['date'];
+
+ $unknownYear = true;
+ }
+
try {
$date = new \DateTime($birthday);
} catch (Exception $e) {
return null;
}
-
- $summary = $title . ' (' . $summarySymbol . $date->format('Y') . ')';
+ if ($unknownYear) {
+ $summary = $doc->FN->getValue() . ' ' . $summarySymbol;
+ } else {
+ $year = (int)$date->format('Y');
+ $summary = $doc->FN->getValue() . " ($summarySymbol$year)";
+ }
$vCal = new VCalendar();
$vCal->VERSION = '2.0';
$vEvent = $vCal->createComponent('VEVENT');
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php
index d77c761a2cf..dfef3111324 100644
--- a/apps/dav/lib/CalDAV/CalDavBackend.php
+++ b/apps/dav/lib/CalDAV/CalDavBackend.php
@@ -131,6 +131,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
/** @var EventDispatcherInterface */
private $dispatcher;
+ /** @var bool */
+ private $legacyEndpoint;
+
/**
* CalDavBackend constructor.
*
@@ -139,18 +142,21 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
* @param IUserManager $userManager
* @param ISecureRandom $random
* @param EventDispatcherInterface $dispatcher
+ * @param bool $legacyEndpoint
*/
public function __construct(IDBConnection $db,
Principal $principalBackend,
IUserManager $userManager,
ISecureRandom $random,
- EventDispatcherInterface $dispatcher) {
+ EventDispatcherInterface $dispatcher,
+ $legacyEndpoint = false) {
$this->db = $db;
$this->principalBackend = $principalBackend;
$this->userManager = $userManager;
$this->sharingBackend = new Backend($this->db, $principalBackend, 'calendar');
$this->random = $random;
$this->dispatcher = $dispatcher;
+ $this->legacyEndpoint = $legacyEndpoint;
}
/**
@@ -230,12 +236,12 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['uri'],
- 'principaluri' => $this->convertPrincipal($row['principaluri'], false),
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
'{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' => new ScheduleCalendarTransp($row['transparent']?'transparent':'opaque'),
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $principalUri,
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $this->convertPrincipal($principalUri, !$this->legacyEndpoint),
];
foreach($this->propertyMap as $xmlName=>$dbName) {
@@ -282,12 +288,12 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $uri,
- 'principaluri' => $principalUri,
+ 'principaluri' => $this->convertPrincipal($principalUri, !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
'{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' => new ScheduleCalendarTransp($row['transparent']?'transparent':'opaque'),
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => (int)$row['access'] === Backend::ACCESS_READ,
];
@@ -328,7 +334,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['uri'],
- 'principaluri' => $this->convertPrincipal($row['principaluri'], false),
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
@@ -392,12 +398,12 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['publicuri'],
- 'principaluri' => $row['principaluri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
'{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' => new ScheduleCalendarTransp($row['transparent']?'transparent':'opaque'),
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $this->convertPrincipal($row['principaluri'], $this->legacyEndpoint),
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => (int)$row['access'] === Backend::ACCESS_READ,
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}public' => (int)$row['access'] === self::ACCESS_PUBLIC,
];
@@ -456,12 +462,12 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['publicuri'],
- 'principaluri' => $row['principaluri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
'{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' => new ScheduleCalendarTransp($row['transparent']?'transparent':'opaque'),
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => (int)$row['access'] === Backend::ACCESS_READ,
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}public' => (int)$row['access'] === self::ACCESS_PUBLIC,
];
@@ -510,7 +516,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['uri'],
- 'principaluri' => $row['principaluri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
@@ -554,7 +560,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar = [
'id' => $row['id'],
'uri' => $row['uri'],
- 'principaluri' => $row['principaluri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], !$this->legacyEndpoint),
'{' . Plugin::NS_CALENDARSERVER . '}getctag' => 'http://sabre.io/ns/sync/' . ($row['synctoken']?$row['synctoken']:'0'),
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
@@ -581,7 +587,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
*/
function createCalendar($principalUri, $calendarUri, array $properties) {
$values = [
- 'principaluri' => $principalUri,
+ 'principaluri' => $this->convertPrincipal($principalUri, true),
'uri' => $calendarUri,
'synctoken' => 1,
'transparent' => 0,
diff --git a/apps/dav/lib/CalDAV/CalendarObject.php b/apps/dav/lib/CalDAV/CalendarObject.php
index 6d429fa6bf5..c5dc50650af 100644
--- a/apps/dav/lib/CalDAV/CalendarObject.php
+++ b/apps/dav/lib/CalDAV/CalendarObject.php
@@ -1,8 +1,10 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2017, Georg Ehrke
*
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license AGPL-3.0
*
@@ -42,7 +44,11 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject {
}
private function isShared() {
- return isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal']);
+ if (!isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
+ return false;
+ }
+
+ return $this->calendarInfo['{http://owncloud.org/ns}owner-principal'] !== $this->calendarInfo['principaluri'];
}
/**
diff --git a/apps/dav/lib/Connector/LegacyDAVACL.php b/apps/dav/lib/Connector/LegacyDAVACL.php
index 83b08ec44fb..d5185ecd03b 100644
--- a/apps/dav/lib/Connector/LegacyDAVACL.php
+++ b/apps/dav/lib/Connector/LegacyDAVACL.php
@@ -33,24 +33,9 @@ use Sabre\DAVACL\Xml\Property\Principal;
class LegacyDAVACL extends DavAclPlugin {
/**
- * Converts the v1 principal `principal/<username>` to the new v2
- * `principal/users/<username>` which is required for permission checks
- *
* @inheritdoc
*/
- function getCurrentUserPrincipal() {
- $principalV1 = parent::getCurrentUserPrincipal();
- if (is_null($principalV1)) {
- return $principalV1;
- }
- return $this->convertPrincipal($principalV1, true);
- }
-
-
- /**
- * @inheritdoc
- */
- function getCurrentUserPrincipals() {
+ public function getCurrentUserPrincipals() {
$principalV2 = $this->getCurrentUserPrincipal();
if (is_null($principalV2)) return [];
@@ -73,7 +58,7 @@ class LegacyDAVACL extends DavAclPlugin {
return "principals/$name";
}
- function propFind(PropFind $propFind, INode $node) {
+ public function propFind(PropFind $propFind, INode $node) {
/* Overload current-user-principal */
$propFind->handle('{DAV:}current-user-principal', function () {
if ($url = parent::getCurrentUserPrincipal()) {
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index 59b326243ee..5e401b88481 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -247,8 +247,10 @@ class FilesPlugin extends ServerPlugin {
$node = $this->tree->getNodeForPath($request->getPath());
if (!($node instanceof IFile)) return;
- // adds a 'Content-Disposition: attachment' header
- if ($this->downloadAttachment) {
+ // adds a 'Content-Disposition: attachment' header in case no disposition
+ // header has been set before
+ if ($this->downloadAttachment &&
+ $response->getHeader('Content-Disposition') === null) {
$filename = $node->getName();
if ($this->request->isUserAgent(
[
@@ -326,6 +328,9 @@ class FilesPlugin extends ServerPlugin {
$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
});
+ $propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
+ return $node->getSize();
+ });
}
if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
diff --git a/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php b/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php
index bc0c1c2f603..81c082b9105 100644
--- a/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php
@@ -24,9 +24,7 @@
namespace OCA\DAV\Connector\Sabre;
use OC\Files\View;
-use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\Exception\PreconditionFailed;
-use Sabre\DAV\Exception\ReportNotSupported;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\ServerPlugin;
use Sabre\DAV\Tree;
@@ -105,7 +103,7 @@ class FilesReportPlugin extends ServerPlugin {
* @param ITagManager $fileTagger manager for private tags
* @param IUserSession $userSession
* @param IGroupManager $groupManager
- * @param Folder $userfolder
+ * @param Folder $userFolder
*/
public function __construct(Tree $tree,
View $view,
@@ -161,11 +159,12 @@ class FilesReportPlugin extends ServerPlugin {
* REPORT operations to look for files
*
* @param string $reportName
- * @param [] $report
+ * @param $report
* @param string $uri
* @return bool
- * @throws NotFound
- * @throws ReportNotSupported
+ * @throws BadRequest
+ * @throws PreconditionFailed
+ * @internal param $ [] $report
*/
public function onReport($reportName, $report, $uri) {
$reportTargetNode = $this->server->tree->getNodeForPath($uri);
@@ -232,7 +231,6 @@ class FilesReportPlugin extends ServerPlugin {
private function getFilesBaseUri($uri, $subPath) {
$uri = trim($uri, '/');
$subPath = trim($subPath, '/');
- $filesUri = '';
if (empty($subPath)) {
$filesUri = $uri;
} else {
diff --git a/apps/dav/lib/Connector/Sabre/TagsPlugin.php b/apps/dav/lib/Connector/Sabre/TagsPlugin.php
index ef6bece58bc..59e4ab4546d 100644
--- a/apps/dav/lib/Connector/Sabre/TagsPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/TagsPlugin.php
@@ -250,7 +250,11 @@ class TagsPlugin extends \Sabre\DAV\ServerPlugin
if (is_null($isFav)) {
list(, $isFav) = $this->getTagsAndFav($node->getId());
}
- return $isFav;
+ if ($isFav) {
+ return 1;
+ } else {
+ return 0;
+ }
});
}
diff --git a/apps/dav/lib/Files/RootCollection.php b/apps/dav/lib/Files/RootCollection.php
index 345015530e2..c73d7c175ce 100644
--- a/apps/dav/lib/Files/RootCollection.php
+++ b/apps/dav/lib/Files/RootCollection.php
@@ -21,6 +21,7 @@
*/
namespace OCA\DAV\Files;
+use Sabre\DAV\INode;
use Sabre\DAVACL\AbstractPrincipalCollection;
use Sabre\HTTP\URLUtil;
use Sabre\DAV\SimpleCollection;
diff --git a/apps/dav/lib/Migration/ValueFix.php b/apps/dav/lib/Migration/ValueFix.php
new file mode 100644
index 00000000000..2ad043b409d
--- /dev/null
+++ b/apps/dav/lib/Migration/ValueFix.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * @copyright 2016, 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 OCA\DAV\Migration;
+
+use OC\BackgroundJob\QueuedJob;
+use OCA\DAV\CalDAV\CalDavBackend;
+use OCP\ILogger;
+use Sabre\VObject\InvalidDataException;
+
+class ValueFix extends QueuedJob {
+
+ /** @var CalDavBackend */
+ private $calDavBackend;
+
+ /** @var ILogger */
+ private $logger;
+
+ public function __construct(CalDavBackend $calDavBackend, ILogger $logger) {
+ $this->calDavBackend = $calDavBackend;
+ $this->logger = $logger;
+ }
+
+ public function run($argument) {
+ $user = $argument['user'];
+
+ $pattern = '/;VALUE=:/';
+ $principal = 'principals/users/' . $user;
+ $calendars = $this->calDavBackend->getCalendarsForUser($principal);
+ foreach ($calendars as $calendar) {
+ $objects = $this->calDavBackend->getCalendarObjects($calendar['id']);
+ foreach ($objects as $object) {
+ $calObject = $this->calDavBackend->getCalendarObject($calendar['id'], $object['uri']);
+ $data = preg_replace($pattern, ':', $calObject['calendardata']);
+ if ($data !== $calObject['calendardata']) {
+ try {
+ $this->calDavBackend->getDenormalizedData($data);
+ } catch (InvalidDataException $e) {
+ $this->logger->info('Calendar object for calendar {cal} with uri {uri} still invalid', [
+ 'app'=> 'dav',
+ 'cal' => $calendar['id'],
+ 'uri' => $object['uri'],
+ ]);
+ continue;
+ }
+ $this->calDavBackend->updateCalendarObject($calendar['id'], $object['uri'], $data);
+ }
+ }
+ }
+ }
+
+}
diff --git a/apps/dav/lib/Migration/ValueFixInsert.php b/apps/dav/lib/Migration/ValueFixInsert.php
new file mode 100644
index 00000000000..25917691b20
--- /dev/null
+++ b/apps/dav/lib/Migration/ValueFixInsert.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * @copyright 2016, 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 OCA\DAV\Migration;
+
+use OCP\BackgroundJob\IJobList;
+use OCP\IConfig;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class ValueFixInsert implements IRepairStep {
+
+ /** @var IUserManager */
+ private $userManager;
+
+ /** @var IJobList */
+ private $jobList;
+
+ /** @var IConfig */
+ private $config;
+
+ public function __construct(IUserManager $userManager,
+ IJobList $jobList,
+ IConfig $config) {
+ $this->userManager = $userManager;
+ $this->jobList = $jobList;
+ $this->config = $config;
+ }
+
+ public function getName() {
+ return 'Insert ValueFix background job for each user';
+ }
+
+ public function run(IOutput $output) {
+ if ($this->config->getAppValue('dav', self::class . '_ran', 'false') !== 'true') {
+ $this->userManager->callForSeenUsers(function (IUser $user) {
+ $this->jobList->add(ValueFix::class, ['user' => $user->getUID()]);
+ });
+ $this->config->setAppValue('dav', self::class . '_ran', 'true');
+ }
+ }
+}
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php
index 1205d018241..79c4301a8d8 100644
--- a/apps/dav/lib/Server.php
+++ b/apps/dav/lib/Server.php
@@ -33,11 +33,14 @@ use OCA\DAV\CardDAV\ImageExportPlugin;
use OCA\DAV\Comments\CommentsPlugin;
use OCA\DAV\Connector\Sabre\Auth;
use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin;
+use OCA\DAV\Connector\Sabre\CommentPropertiesPlugin;
use OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin;
use OCA\DAV\Connector\Sabre\DavAclPlugin;
use OCA\DAV\Connector\Sabre\DummyGetResponsePlugin;
use OCA\DAV\Connector\Sabre\FakeLockerPlugin;
use OCA\DAV\Connector\Sabre\FilesPlugin;
+use OCA\DAV\Connector\Sabre\FilesReportPlugin;
+use OCA\DAV\Connector\Sabre\SharesPlugin;
use OCA\DAV\DAV\PublicAuth;
use OCA\DAV\Connector\Sabre\QuotaPlugin;
use OCA\DAV\Files\BrowserErrorPagePlugin;
@@ -85,7 +88,6 @@ class Server {
$this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
$authPlugin = new Plugin();
- $authPlugin->addBackend($authBackend);
$authPlugin->addBackend(new PublicAuth());
$this->server->addPlugin($authPlugin);
@@ -166,7 +168,7 @@ class Server {
// custom properties plugin must be the last one
$userSession = \OC::$server->getUserSession();
$user = $userSession->getUser();
- if (!is_null($user)) {
+ if ($user !== null) {
$view = \OC\Files\Filesystem::getView();
$this->server->addPlugin(
new FilesPlugin(
@@ -188,9 +190,10 @@ class Server {
)
)
);
- $this->server->addPlugin(
- new QuotaPlugin($view)
- );
+ if ($view !== null) {
+ $this->server->addPlugin(
+ new QuotaPlugin($view));
+ }
$this->server->addPlugin(
new TagsPlugin(
$this->server->tree, \OC::$server->getTagManager()
@@ -198,28 +201,29 @@ class Server {
);
// TODO: switch to LazyUserFolder
$userFolder = \OC::$server->getUserFolder();
- $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\SharesPlugin(
+ $this->server->addPlugin(new SharesPlugin(
$this->server->tree,
$userSession,
$userFolder,
\OC::$server->getShareManager()
));
- $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\CommentPropertiesPlugin(
+ $this->server->addPlugin(new CommentPropertiesPlugin(
\OC::$server->getCommentsManager(),
$userSession
));
- $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\FilesReportPlugin(
- $this->server->tree,
- $view,
- \OC::$server->getSystemTagManager(),
- \OC::$server->getSystemTagObjectMapper(),
- \OC::$server->getTagManager(),
- $userSession,
- \OC::$server->getGroupManager(),
- $userFolder
- ));
+ if ($view !== null) {
+ $this->server->addPlugin(new FilesReportPlugin(
+ $this->server->tree,
+ $view,
+ \OC::$server->getSystemTagManager(),
+ \OC::$server->getSystemTagObjectMapper(),
+ \OC::$server->getTagManager(),
+ $userSession,
+ \OC::$server->getGroupManager(),
+ $userFolder
+ ));
+ }
}
- $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin());
});
}
diff --git a/apps/dav/lib/SystemTag/SystemTagNode.php b/apps/dav/lib/SystemTag/SystemTagNode.php
index 36fddcd8240..bd21082f783 100644
--- a/apps/dav/lib/SystemTag/SystemTagNode.php
+++ b/apps/dav/lib/SystemTag/SystemTagNode.php
@@ -157,12 +157,13 @@ class SystemTagNode implements \Sabre\DAV\INode {
public function delete() {
try {
+ if (!$this->isAdmin) {
+ throw new Forbidden('No permission to delete tag ' . $this->tag->getId());
+ }
+
if (!$this->tagManager->canUserSeeTag($this->tag, $this->user)) {
throw new NotFound('Tag with id ' . $this->tag->getId() . ' not found');
}
- if (!$this->tagManager->canUserAssignTag($this->tag, $this->user)) {
- throw new Forbidden('No permission to delete tag ' . $this->tag->getId());
- }
$this->tagManager->deleteTags($this->tag->getId());
} catch (TagNotFoundException $e) {
diff --git a/apps/dav/tests/travis/caldav/script.sh b/apps/dav/tests/travis/caldav/script-new-endpoint.sh
index 636235349c5..c9bb7307c7c 100644
--- a/apps/dav/tests/travis/caldav/script.sh
+++ b/apps/dav/tests/travis/caldav/script-new-endpoint.sh
@@ -2,6 +2,9 @@
SCRIPT=`realpath $0`
SCRIPTPATH=`dirname $SCRIPT`
+# Move the endpoint to the serverinfo file
+cp "$SCRIPTPATH/../caldavtest/serverinfo-new-endpoint.xml" "$SCRIPTPATH/../caldavtest/serverinfo.xml"
+
# start the server
php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." &
diff --git a/apps/dav/tests/travis/caldav/script-old-endpoint.sh b/apps/dav/tests/travis/caldav/script-old-endpoint.sh
new file mode 100644
index 00000000000..6e08f27310b
--- /dev/null
+++ b/apps/dav/tests/travis/caldav/script-old-endpoint.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+SCRIPT=`realpath $0`
+SCRIPTPATH=`dirname $SCRIPT`
+
+# Move the endpoint to the serverinfo file
+cp "$SCRIPTPATH/../caldavtest/serverinfo-old-caldav-endpoint.xml" "$SCRIPTPATH/../caldavtest/serverinfo.xml"
+
+# start the server
+php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." &
+
+sleep 30
+
+# run the tests
+cd "$SCRIPTPATH/CalDAVTester"
+PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail --basedir "$SCRIPTPATH/../caldavtest/" -o cdt.txt \
+ "CalDAV/current-user-principal.xml" \
+ "CalDAV/sync-report.xml"
+
+RESULT=$?
+
+tail "$/../../../../../data-autotest/nextcloud.log"
+
+exit $RESULT
diff --git a/apps/dav/tests/travis/caldavtest/serverinfo.xml b/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml
index c3ba99ee03d..c3ba99ee03d 100644
--- a/apps/dav/tests/travis/caldavtest/serverinfo.xml
+++ b/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml
diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml
new file mode 100644
index 00000000000..8ac822d8e4e
--- /dev/null
+++ b/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml
@@ -0,0 +1,850 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM
+ "/home/deepdiver/Development/ownCloud/master/apps/dav/tests/travis/caldavtest/serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006-2015 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<serverinfo>
+ <host>localhost</host>
+ <nonsslport>8888</nonsslport>
+ <authtype>basic</authtype>
+ <!-- <unix>/tmp/caldavd_requests/unsecured.sock</unix> -->
+
+ <waitcount>120</waitcount>
+ <waitdelay>0.25</waitdelay>
+ <waitsuccess>30</waitsuccess>
+
+ <features>
+ <!-- Generic WebDAV extensions -->
+ <feature>COPY Method</feature> <!-- COPY method -->
+ <feature>MOVE Method</feature> <!-- MOVE method -->
+ <feature>Extended MKCOL</feature> <!-- Extended MKCOL -->
+
+ <!-- ACL related -->
+ <feature>ACL Method</feature> <!-- ACL method -->
+ <feature>acl-principal-prop-set REPORT</feature> <!-- ACL acl-principal-prop-set REPORT -->
+ <feature>principal-match REPORT</feature> <!-- ACL principal-match REPORT -->
+ <feature>principal-property-search REPORT</feature> <!-- ACL principal-property-search REPORT -->
+ <feature>principal-search-property-set REPORT</feature> <!-- ACL principal-search-property-set REPORT -->
+ <feature>calendarserver-principal-search REPORT</feature> <!-- ACL calendarserver-principal-search REPORT -->
+
+ <feature>add-member</feature> <!-- Add-member used to create resources -->
+ <!-- <feature>auth-on-root</feature> --> <!-- Whether the server requires authentication on the root URI -->
+ <feature>brief</feature> <!-- Brief header for PROPFIND, REPORT -->
+ <feature>bulk-post</feature> <!-- Bulk POST requests -->
+ <feature>ctag</feature> <!-- ctag extension -->
+ <feature>current-user-principal</feature> <!-- current-user-principal extension -->
+ <feature>directory listing</feature> <!-- GET on collection -->
+ <feature>extended-principal-search</feature> <!-- Extended principal-property-search REPORT extension -->
+ <feature>expand-property</feature> <!-- Expand property REPORT -->
+ <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups -->
+ <feature>limits</feature> <!-- max-collections and max-resources limits -->
+ <feature>own-root</feature> <!-- / is owned by this service -->
+ <feature>prefer</feature> <!-- Prefer header overall support -->
+ <feature>prefer-minimal</feature> <!-- Prefer header return=minimal -->
+ <feature>prefer-representation</feature> <!-- Prefer header return=representation -->
+ <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot -->
+ <feature>quota</feature> <!-- WebDAV QUOTA -->
+ <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources -->
+ <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property -->
+ <feature>sync-report</feature> <!-- WebDAV collection sync REPORT -->
+ <!-- <feature>sync-report-limit</feature> --> <!-- WebDAV collection sync REPORT DAV:limit support -->
+ <!--<feature>sync-report-home</feature> &lt;!&ndash; WebDAV collection sync REPORT on Homes &ndash;&gt;-->
+ <feature>sync-report-config-token</feature> <!-- Sync REPORT token includes configuration component -->
+ <feature>well-known</feature> <!-- well-known feature -->
+
+ <!-- <feature>per-object-ACLs</feature> --> <!-- ACL for objects in calendar/address books -->
+ <!-- <feature>regular-collection</feature> --> <!-- Regular collections allowed in calendar/address book homes -->
+
+ <feature>json-data</feature> <!-- jCal and jCard support -->
+
+ <!-- CalendarServer specific extensions -->
+ <feature>control-api</feature> <!-- Control API support -->
+
+ <!-- CalDAV specific extension -->
+ <feature>caldav</feature> <!-- Basic CalDAV feature enabler -->
+ <feature>attachments-collection</feature> <!-- Server uses a collection in same WebDAV tree to store attachments -->
+ <feature>auto-accept</feature> <!-- Auto-accept for rooms & locations -->
+ <feature>auto-accept-modes</feature> <!-- Auto-accept modes -->
+ <feature>client-fix-TRANSP</feature> <!-- fix client TRANSP -->
+ <!-- <feature>dropbox</feature> --> <!-- dropbox extension -->
+ <feature>default-alarms</feature> <!-- default alarms extension -->
+ <feature>EMAIL parameter</feature> <!-- Server normalizes cuaddress and adds EMAIL parameter -->
+ <feature>extended-freebusy</feature> <!-- Extended freebusy response -->
+ <feature>freebusy-url</feature> <!-- Freebusy URL -->
+ <feature>group-attendee-expansion</feature> <!-- Auto-expansion of group attendees -->
+ <feature>implicit-scheduling</feature> <!-- CalDAV scheduling - implicit -->
+ <feature>location-resource-tracking</feature> <!-- Server tracks who makes unscheduled changes to locations and resources -->
+ <feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
+ <feature>maskuid</feature> <!-- maskuid extension -->
+ <feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
+ <!-- <feature>podding</feature> --> <!-- Podded server -->
+ <feature>private-comments</feature> <!-- private-comments extension -->
+ <feature>private-events</feature> <!-- private-events extension -->
+ <feature>proxy</feature> <!-- calendar-user-proxy extension -->
+ <!-- <feature>proxy-authz</feature> --> <!-- sudo user extension -->
+ <feature>recurrence-splitting</feature> <!-- Recurring components can be split -->
+ <feature>remove-duplicate-alarms</feature> <!-- Server removes any duplicate alarms on PUT -->
+ <feature>query-extended</feature> <!-- calendar-query-extended extension -->
+ <feature>shared-calendars</feature> <!-- Shared calendars extension -->
+ <feature>share-calendars-to-groups</feature> <!-- Share calendars to groups extension -->
+ <feature>schedule-changes</feature> <!-- schedule-changes property extension -->
+ <feature>split-calendars</feature> <!-- Calendars are split by component type -->
+ <feature>supported-component-sets</feature> <!-- CALDAV:supported-calendar-component-sets on calendar homes -->
+ <feature>supported-component-sets-one</feature> <!-- Only single component calendars allowed to be created -->
+ <feature>timerange-low-limit</feature> <!-- Time-range only valid one year back -->
+ <feature>timerange-high-limit</feature> <!-- Time-range only valid 5 years ahead -->
+ <feature>timezones-by-reference</feature> <!-- Timezones by reference enabled -->
+ <feature>timezone-service</feature> <!-- Timezone service extension for Wiki -->
+ <feature>timezone-std-service</feature> <!-- Timezone standard service extension -->
+ <!-- <feature>trash-collection</feature> --> <!-- Trash collection enabled -->
+ <feature>travel-time-busy</feature> <!-- Travel time appears as busy -->
+ <feature>vavailability</feature> <!-- VAVAILABILITY on inbox -->
+ <!-- <feature>vpoll</feature> --> <!-- VPOLL support for store and scheduling -->
+ <feature>webcal</feature> <!-- Internet calendar subscription via GET on calendar collection -->
+
+ <!-- CardDAV specific extension -->
+ <feature>carddav</feature> <!-- Basic CardDAV feature enabler -->
+ <feature>default-addressbook</feature> <!-- Default address book behavior -->
+ <feature>shared-addressbooks</feature> <!-- Shared address books extension -->
+ <feature>shared-addressbook-groups</feature> <!-- Shared address book groups extension -->
+ <feature>directory-gateway</feature> <!-- Directory gateway extension -->
+
+ </features>
+
+ <substitutions>
+ <!-- Useful xpath shortcuts for verifiers -->
+ <substitution>
+ <key>$multistatus-response-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response</value>
+ </substitution>
+ <substitution>
+ <key>$multistatus-href-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}href</value>
+ </substitution>
+ <substitution>
+ <key>$verify-response-prefix:</key>
+ <value>{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-property-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-bad-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}status</value>
+ </substitution>
+ <substitution>
+ <key>$verify-error-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}error</value>
+ </substitution>
+ <substitution>
+ <key>$CALDAV:</key>
+ <value>urn:ietf:params:xml:ns:caldav</value>
+ </substitution>
+ <substitution>
+ <key>$CARDDAV:</key>
+ <value>urn:ietf:params:xml:ns:carddav</value>
+ </substitution>
+ <substitution>
+ <key>$CS:</key>
+ <value>http://calendarserver.org/ns/</value>
+ </substitution>
+
+ <!-- Server configuration settings -->
+ <!-- $host: and $hostssl: are implicitly added by CalDAVTester based
+ on the host/nonsslport/sslport values and ssl command line switch -->
+
+ <!-- relative path to caldav root-->
+ <substitution>
+ <key>$root:</key>
+ <value>/remote.php/caldav/</value>
+ </substitution>
+
+ <!-- relative path to main principal collection-->
+ <substitution>
+ <key>$principalcollection:</key>
+ <value>$root:principals/</value>
+ </substitution>
+
+ <!-- the core recored type collections-->
+ <substitution>
+ <key>$uidstype:</key>
+ <value>__uids__</value>
+ </substitution>
+ <substitution>
+ <key>$groupstype:</key>
+ <value>groups</value>
+ </substitution>
+ <substitution>
+ <key>$locationstype:</key>
+ <value>locations</value>
+ </substitution>
+ <substitution>
+ <key>$resourcestype:</key>
+ <value>resources</value>
+ </substitution>
+
+ <!-- relative path to record type principal collections-->
+ <substitution>
+ <key>$principals_uids:</key>
+ <value>$principalcollection:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_users:</key>
+ <value>$principalcollection:</value>
+ </substitution>
+ <substitution>
+ <key>$principals_groups:</key>
+ <value>$principalcollection:$groupstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_resources:</key>
+ <value>$principalcollection:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_locations:</key>
+ <value>$principalcollection:$locationstype:/</value>
+ </substitution>
+
+ <!-- relative path to calendars collection-->
+ <substitution>
+ <key>$calendars:</key>
+ <value>$root:calendars/</value>
+ </substitution>
+
+ <!-- relative path to record type calendar collections-->
+ <substitution>
+ <key>$calendars_uids:</key>
+ <value>$calendars:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_users:</key>
+ <value>$calendars:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_resources:</key>
+ <value>$calendars:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_locations:</key>
+ <value>$calendars:$locationstype:/</value>
+ </substitution>
+
+ <!-- primary calendar name-->
+ <substitution>
+ <key>$calendar:</key>
+ <value>calendar</value>
+ </substitution>
+
+ <!-- primary tasks-only calendar name-->
+ <substitution>
+ <key>$tasks:</key>
+ <value>tasks</value>
+ </substitution>
+
+ <!-- primary polls-only calendar name-->
+ <substitution>
+ <key>$polls:</key>
+ <value>polls</value>
+ </substitution>
+
+ <!-- inbox name-->
+ <substitution>
+ <key>$inbox:</key>
+ <value>inbox</value>
+ </substitution>
+
+ <!-- outbox name-->
+ <substitution>
+ <key>$outbox:</key>
+ <value>outbox</value>
+ </substitution>
+
+ <!-- dropbox name-->
+ <substitution>
+ <key>$dropbox:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- attachments name-->
+ <substitution>
+ <key>$attachments:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- notification name-->
+ <substitution>
+ <key>$notification:</key>
+ <value>notification</value>
+ </substitution>
+
+ <!-- freebusy name-->
+ <substitution>
+ <key>$freebusy:</key>
+ <value>freebusy</value>
+ </substitution>
+
+ <!-- Sync home collection items - use "-" to include the home resource-->
+ <substitution>
+ <key>$calendar_home_items_initial_sync:</key>
+ <value>[-,$calendar:/,$tasks:/,$inbox:/,$outbox:/,$freebusy:,$notification:/]</value>
+ </substitution>
+
+ <!-- Sync collection extra items - use "-" to include the collection-->
+ <substitution>
+ <key>$calendar_sync_extra_items:</key>
+ <value>[-]</value>
+ </substitution>
+
+ <!-- Sync collection extra count - gets added to the totalcount value-->
+ <substitution>
+ <key>$calendar_sync_extra_count:</key>
+ <value>1</value> <!-- the request-uri resource is returned when no token passed-->
+ </substitution>
+
+ <!-- server-to-server inbox-->
+ <substitution>
+ <key>$servertoserver:</key>
+ <value>$root:inbox</value>
+ </substitution>
+
+ <!-- timezone service-->
+ <substitution>
+ <key>$timezoneservice:</key>
+ <value>$root:timezones</value>
+ </substitution>
+
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
+ <!-- relative path to addressbooks collection-->
+ <substitution>
+ <key>$addressbooks:</key>
+ <value>$root:addressbooks/</value>
+ </substitution>
+
+ <!-- relative path to record type addressbook collections-->
+ <substitution>
+ <key>$addressbooks_uids:</key>
+ <value>$addressbooks:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$addressbooks_users:</key>
+ <value>$addressbooks:/</value>
+ </substitution>
+
+ <!-- primary addressbook name -->
+ <substitution>
+ <key>$addressbook:</key>
+ <value>addressbook</value>
+ </substitution>
+
+ <!-- directory name -->
+ <substitution>
+ <key>$directory:</key>
+ <value>$root:directory/</value>
+ </substitution>
+
+ <!-- POST add-member URI suffix -->
+ <substitution>
+ <key>$add-member:</key>
+ <value>;add-member</value>
+ </substitution>
+
+ <!-- user id for admin user -->
+ <substitution>
+ <key>$useradmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- guid for admin user -->
+ <substitution>
+ <key>$useradminguid:</key>
+ <value>0C8BDE62-E600-4696-83D3-8B5ECABDFD2E</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdadmin:</key>
+ <value>admin</value>
+ </substitution>
+
+ <!-- relative path to admin principal resource-->
+ <substitution>
+ <key>$principal_admin:</key>
+ <value>$principals_users:$useradmin:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri_admin:</key>
+ <value>$principals_uids:$useradminguid:/</value>
+ </substitution>
+
+ <!-- user id for apprentice user -->
+ <substitution>
+ <key>$userapprentice:</key>
+ <value>apprentice</value>
+ </substitution>
+ <!-- guid for apprentice user -->
+ <substitution>
+ <key>$userapprenticeguid:</key>
+ <value>29B6C503-11DF-43EC-8CCA-40C7003149CE</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdapprentice:</key>
+ <value>apprentice</value>
+ </substitution>
+
+ <!-- relative path to apprentice principal resource-->
+ <substitution>
+ <key>$principal_apprentice:</key>
+ <value>$principals_users:$userapprentice:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri_apprentice:</key>
+ <value>$principals_uids:$userapprenticeguid:/</value>
+ </substitution>
+
+ <!-- user id for proxy user -->
+ <substitution>
+ <key>$userproxy:</key>
+ <value>superuser</value>
+ </substitution>
+ <!-- password for proxy user -->
+ <substitution>
+ <key>$pswdproxy:</key>
+ <value>superuser</value>
+ </substitution>
+
+ <!-- Forty user accounts -->
+ <repeat count="40">
+ <!-- user id -->
+ <substitution>
+ <key>$userid%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$userguid%d:</key>
+ <value>10000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$username%d:</key>
+ <value>User %02d</value>
+ </substitution>
+ <!-- user name URI encoded -->
+ <substitution>
+ <key>$username-encoded%d:</key>
+ <value>User%%20%02d</value>
+ </substitution>
+ <!-- first name -->
+ <substitution>
+ <key>$firstname%d:</key>
+ <value>User</value>
+ </substitution>
+ <!-- last name -->
+ <substitution>
+ <key>$lastname%d:</key>
+ <value>%02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$pswd%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$principal%d:</key>
+ <value>$principals_users:$userid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri%d:</key>
+ <value>$principals_users:$userid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principal%dnoslash:</key>
+ <value>$principals_users:$userid%d:</value>
+ </substitution>
+
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$calendarhome%d:</key>
+ <value>$calendars:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar home-->
+ <substitution>
+ <key>$calendarhomealt%d:</key>
+ <value>$calendars_users:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$calendarpath%d:</key>
+ <value>$calendarhome%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar-->
+ <substitution>
+ <key>$calendarpathalt%d:</key>
+ <value>$calendarhomealt%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user tasks calendar-->
+ <substitution>
+ <key>$taskspath%d:</key>
+ <value>$calendarhome%d:/$tasks:</value>
+ </substitution>
+ <!-- relative path to user polls calendar-->
+ <substitution>
+ <key>$pollspath%d:</key>
+ <value>$calendarhome%d:/$polls:</value>
+ </substitution>
+ <!-- relative path to user inbox-->
+ <substitution>
+ <key>$inboxpath%d:</key>
+ <value>$calendarhome%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to user outbox-->
+ <substitution>
+ <key>$outboxpath%d:</key>
+ <value>$calendarhome%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to user dropbox-->
+ <substitution>
+ <key>$dropboxpath%d:</key>
+ <value>$calendarhome%d:/$dropbox:</value>
+ </substitution>
+ <!-- relative path to user notification-->
+ <substitution>
+ <key>$notificationpath%d:</key>
+ <value>$calendarhome%d:/$notification:</value>
+ </substitution>
+ <!-- relative path to user freebusy-->
+ <substitution>
+ <key>$freebusypath%d:</key>
+ <value>$calendarhome%d:/$freebusy:</value>
+ </substitution>
+ <substitution>
+ <key>$email%d:</key>
+ <value>$userid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$cuaddr%d:</key>
+ <value>mailto:$email%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddralt%d:</key>
+ <value>$cuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddraltnoslash%d:</key>
+ <value>$cuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddrurn%d:</key>
+ <value>urn:x-uid:$userguid%d:</value>
+ </substitution>
+
+ <!-- relative path to user addressbook home-->
+ <substitution>
+ <key>$addressbookhome%d:</key>
+ <value>$addressbooks:users/$userid%d:</value>
+ </substitution>
+ <!-- relative path to user addressbook-->
+ <substitution>
+ <key>$addressbookpath%d:</key>
+ <value>$addressbookhome%d:/$addressbook:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Ten public accounts -->
+ <repeat count="10">
+ <!-- user id -->
+ <substitution>
+ <key>$publicuserid%d:</key>
+ <value>public%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$publicuserguid%d:</key>
+ <value>50000000-0000-0000-0000-0000000000%02d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$publicusername%d:</key>
+ <value>Public %02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$publicpswd%d:</key>
+ <value>public%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$publicprincipal%d:</key>
+ <value>$principals_users:$publicuserid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$publicprincipaluri%d:</key>
+ <value>$principals_uids:$publicuserguid%d:/</value>
+ </substitution>
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$publiccalendarhome%d:</key>
+ <value>$calendars_uids:$publicuserguid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$publiccalendarpath%d:</key>
+ <value>$calendars_uids:$publicuserguid%d:/$calendar:</value>
+ </substitution>
+ <substitution>
+ <key>$publicemail%d:</key>
+ <value>$publicuserid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$publiccuaddr%d:</key>
+ <value>mailto:$publicemail%d:</value>
+ </substitution>
+ <substitution>
+ <key>$publiccuaddralt%d:</key>
+ <value>$publiccuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$publiccuaddrurn%d:</key>
+ <value>urn:x-uid:$publicuserguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Twenty resource accounts -->
+ <repeat count="20">
+ <substitution>
+ <key>$resourceid%d:</key>
+ <value>resource%02d</value>
+ </substitution>
+ <!-- resource guid-->
+ <substitution>
+ <key>$resourceguid%d:</key>
+ <value>40000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- resource name-->
+ <substitution>
+ <key>$resourcename%d:</key>
+ <value>Resource %02d</value>
+ </substitution>
+ <!-- relative path to first resource calendar home-->
+ <substitution>
+ <key>$rcalendarhome%d:</key>
+ <value>$calendars_uids:$resourceguid%d:</value>
+ </substitution>
+ <!-- relative path to first resource calendar home-->
+ <substitution>
+ <key>$rcalendarpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to first resource inbox-->
+ <substitution>
+ <key>$rinboxpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to first resource outbox-->
+ <substitution>
+ <key>$routboxpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to first resource principal resource-->
+ <substitution>
+ <key>$rprincipal%d:</key>
+ <value>$principals_resources:$resourceid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$rprincipaluri%d:</key>
+ <value>$principals_uids:$resourceguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$rcuaddralt%d:</key>
+ <value>$rcuaddrurn%d:</value>
+ </substitution>
+ <substitution>
+ <key>$rcuaddrurn%d:</key>
+ <value>urn:x-uid:$resourceguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Ten Location accounts -->
+ <repeat count="10">
+ <substitution>
+ <key>$locationid%d:</key>
+ <value>location%02d</value>
+ </substitution>
+ <!-- location guid-->
+ <substitution>
+ <key>$locationguid%d:</key>
+ <value>30000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- location name-->
+ <substitution>
+ <key>$locationname%d:</key>
+ <value>Location %02d</value>
+ </substitution>
+ <!-- relative path to first location calendar home-->
+ <substitution>
+ <key>$lcalendarhome%d:</key>
+ <value>$calendars_uids:$locationguid%d:</value>
+ </substitution>
+ <!-- relative path to first location calendar home-->
+ <substitution>
+ <key>$lcalendarpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to first location inbox-->
+ <substitution>
+ <key>$linboxpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to first location outbox-->
+ <substitution>
+ <key>$loutboxpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to first location principal resource-->
+ <substitution>
+ <key>$lprincipal%d:</key>
+ <value>$principals_resources:$locationid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$lprincipaluri%d:</key>
+ <value>$principals_uids:$locationguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$lcuaddralt%d:</key>
+ <value>$lprincipaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$lcuaddrurn%d:</key>
+ <value>urn:x-uid:$locationguid%d:</value>
+ </substitution>
+ </repeat>
+
+
+ <!-- Ten Group accounts -->
+ <repeat count="40">
+ <substitution>
+ <key>$groupid%d:</key>
+ <value>group%02d</value>
+ </substitution>
+ <!-- group guid-->
+ <substitution>
+ <key>$groupguid%d:</key>
+ <value>20000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- group name-->
+ <substitution>
+ <key>$groupname%d:</key>
+ <value>Group %02d</value>
+ </substitution>
+ <!-- relative path to first group principal resource-->
+ <substitution>
+ <key>$gprincipal%d:</key>
+ <value>$principals_resources:$groupid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$gprincipaluri%d:</key>
+ <value>$principals_uids:$groupguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$gemail%d:</key>
+ <value>$groupid%d:@example.com</value>
+ </substitution>
+ <substitution>
+ <key>$gcuaddralt%d:</key>
+ <value>$gprincipaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$gcuaddrurn%d:</key>
+ <value>urn:x-uid:$groupguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- User with non-ascii name -->
+ <substitution>
+ <key>$i18nid:</key>
+ <value>i18nuser</value>
+ </substitution>
+ <!-- group guid-->
+ <substitution>
+ <key>$i18nguid:</key>
+ <value>860B3EE9-6D7C-4296-9639-E6B998074A78</value>
+ </substitution>
+ <!-- group name-->
+ <substitution>
+ <key>$i18nname:</key>
+ <value>まだ</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$i18npswd:</key>
+ <value>i18nuser</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$i18ncalendarpath:</key>
+ <value>$calendars_uids:$i18nguid:/$calendar:</value>
+ </substitution>
+ <substitution>
+ <key>$i18nemail:</key>
+ <value>$i18nid:@example.com</value>
+ </substitution>
+ <!-- CUAddrs -->
+ <substitution>
+ <key>$i18ncuaddr:</key>
+ <value>mailto:$i18nemail:</value>
+ </substitution>
+ <substitution>
+ <key>$i18ncuaddrurn:</key>
+ <value>urn:x-uid:$i18nguid:</value>
+ </substitution>
+
+ <!-- relative path to disabled group principal resource-->
+ <substitution>
+ <key>$principaldisabled:</key>
+ <value>$principals_groups:disabledgroup/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluridisabled:</key>
+ <value>$principals_uids:disabledgroup/</value>
+ </substitution>
+ <!-- calendar user address of disabled group-->
+ <substitution>
+ <key>$cuaddrdisabled:</key>
+ <value>$principals_uids:disabledgroup/</value>
+ </substitution>
+
+ <!-- Override some of the above definitions for special cases -->
+
+ <!-- calendar user address of second user-->
+ <substitution>
+ <key>$cuaddr2:</key>
+ <value>MAILTO:$email2:</value>
+ </substitution>
+
+ </substitutions>
+</serverinfo>
diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml
new file mode 100644
index 00000000000..bd9f83a4814
--- /dev/null
+++ b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml
@@ -0,0 +1,850 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM
+ "/home/deepdiver/Development/ownCloud/master/apps/dav/tests/travis/caldavtest/serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006-2015 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<serverinfo>
+ <host>localhost</host>
+ <nonsslport>8888</nonsslport>
+ <authtype>basic</authtype>
+ <!-- <unix>/tmp/caldavd_requests/unsecured.sock</unix> -->
+
+ <waitcount>120</waitcount>
+ <waitdelay>0.25</waitdelay>
+ <waitsuccess>30</waitsuccess>
+
+ <features>
+ <!-- Generic WebDAV extensions -->
+ <feature>COPY Method</feature> <!-- COPY method -->
+ <feature>MOVE Method</feature> <!-- MOVE method -->
+ <feature>Extended MKCOL</feature> <!-- Extended MKCOL -->
+
+ <!-- ACL related -->
+ <feature>ACL Method</feature> <!-- ACL method -->
+ <feature>acl-principal-prop-set REPORT</feature> <!-- ACL acl-principal-prop-set REPORT -->
+ <feature>principal-match REPORT</feature> <!-- ACL principal-match REPORT -->
+ <feature>principal-property-search REPORT</feature> <!-- ACL principal-property-search REPORT -->
+ <feature>principal-search-property-set REPORT</feature> <!-- ACL principal-search-property-set REPORT -->
+ <feature>calendarserver-principal-search REPORT</feature> <!-- ACL calendarserver-principal-search REPORT -->
+
+ <feature>add-member</feature> <!-- Add-member used to create resources -->
+ <!-- <feature>auth-on-root</feature> --> <!-- Whether the server requires authentication on the root URI -->
+ <feature>brief</feature> <!-- Brief header for PROPFIND, REPORT -->
+ <feature>bulk-post</feature> <!-- Bulk POST requests -->
+ <feature>ctag</feature> <!-- ctag extension -->
+ <feature>current-user-principal</feature> <!-- current-user-principal extension -->
+ <feature>directory listing</feature> <!-- GET on collection -->
+ <feature>extended-principal-search</feature> <!-- Extended principal-property-search REPORT extension -->
+ <feature>expand-property</feature> <!-- Expand property REPORT -->
+ <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups -->
+ <feature>limits</feature> <!-- max-collections and max-resources limits -->
+ <feature>own-root</feature> <!-- / is owned by this service -->
+ <feature>prefer</feature> <!-- Prefer header overall support -->
+ <feature>prefer-minimal</feature> <!-- Prefer header return=minimal -->
+ <feature>prefer-representation</feature> <!-- Prefer header return=representation -->
+ <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot -->
+ <feature>quota</feature> <!-- WebDAV QUOTA -->
+ <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources -->
+ <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property -->
+ <feature>sync-report</feature> <!-- WebDAV collection sync REPORT -->
+ <!-- <feature>sync-report-limit</feature> --> <!-- WebDAV collection sync REPORT DAV:limit support -->
+ <!--<feature>sync-report-home</feature> &lt;!&ndash; WebDAV collection sync REPORT on Homes &ndash;&gt;-->
+ <feature>sync-report-config-token</feature> <!-- Sync REPORT token includes configuration component -->
+ <feature>well-known</feature> <!-- well-known feature -->
+
+ <!-- <feature>per-object-ACLs</feature> --> <!-- ACL for objects in calendar/address books -->
+ <!-- <feature>regular-collection</feature> --> <!-- Regular collections allowed in calendar/address book homes -->
+
+ <feature>json-data</feature> <!-- jCal and jCard support -->
+
+ <!-- CalendarServer specific extensions -->
+ <feature>control-api</feature> <!-- Control API support -->
+
+ <!-- CalDAV specific extension -->
+ <feature>caldav</feature> <!-- Basic CalDAV feature enabler -->
+ <feature>attachments-collection</feature> <!-- Server uses a collection in same WebDAV tree to store attachments -->
+ <feature>auto-accept</feature> <!-- Auto-accept for rooms & locations -->
+ <feature>auto-accept-modes</feature> <!-- Auto-accept modes -->
+ <feature>client-fix-TRANSP</feature> <!-- fix client TRANSP -->
+ <!-- <feature>dropbox</feature> --> <!-- dropbox extension -->
+ <feature>default-alarms</feature> <!-- default alarms extension -->
+ <feature>EMAIL parameter</feature> <!-- Server normalizes cuaddress and adds EMAIL parameter -->
+ <feature>extended-freebusy</feature> <!-- Extended freebusy response -->
+ <feature>freebusy-url</feature> <!-- Freebusy URL -->
+ <feature>group-attendee-expansion</feature> <!-- Auto-expansion of group attendees -->
+ <feature>implicit-scheduling</feature> <!-- CalDAV scheduling - implicit -->
+ <feature>location-resource-tracking</feature> <!-- Server tracks who makes unscheduled changes to locations and resources -->
+ <feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
+ <feature>maskuid</feature> <!-- maskuid extension -->
+ <feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
+ <!-- <feature>podding</feature> --> <!-- Podded server -->
+ <feature>private-comments</feature> <!-- private-comments extension -->
+ <feature>private-events</feature> <!-- private-events extension -->
+ <feature>proxy</feature> <!-- calendar-user-proxy extension -->
+ <!-- <feature>proxy-authz</feature> --> <!-- sudo user extension -->
+ <feature>recurrence-splitting</feature> <!-- Recurring components can be split -->
+ <feature>remove-duplicate-alarms</feature> <!-- Server removes any duplicate alarms on PUT -->
+ <feature>query-extended</feature> <!-- calendar-query-extended extension -->
+ <feature>shared-calendars</feature> <!-- Shared calendars extension -->
+ <feature>share-calendars-to-groups</feature> <!-- Share calendars to groups extension -->
+ <feature>schedule-changes</feature> <!-- schedule-changes property extension -->
+ <feature>split-calendars</feature> <!-- Calendars are split by component type -->
+ <feature>supported-component-sets</feature> <!-- CALDAV:supported-calendar-component-sets on calendar homes -->
+ <feature>supported-component-sets-one</feature> <!-- Only single component calendars allowed to be created -->
+ <feature>timerange-low-limit</feature> <!-- Time-range only valid one year back -->
+ <feature>timerange-high-limit</feature> <!-- Time-range only valid 5 years ahead -->
+ <feature>timezones-by-reference</feature> <!-- Timezones by reference enabled -->
+ <feature>timezone-service</feature> <!-- Timezone service extension for Wiki -->
+ <feature>timezone-std-service</feature> <!-- Timezone standard service extension -->
+ <!-- <feature>trash-collection</feature> --> <!-- Trash collection enabled -->
+ <feature>travel-time-busy</feature> <!-- Travel time appears as busy -->
+ <feature>vavailability</feature> <!-- VAVAILABILITY on inbox -->
+ <!-- <feature>vpoll</feature> --> <!-- VPOLL support for store and scheduling -->
+ <feature>webcal</feature> <!-- Internet calendar subscription via GET on calendar collection -->
+
+ <!-- CardDAV specific extension -->
+ <feature>carddav</feature> <!-- Basic CardDAV feature enabler -->
+ <feature>default-addressbook</feature> <!-- Default address book behavior -->
+ <feature>shared-addressbooks</feature> <!-- Shared address books extension -->
+ <feature>shared-addressbook-groups</feature> <!-- Shared address book groups extension -->
+ <feature>directory-gateway</feature> <!-- Directory gateway extension -->
+
+ </features>
+
+ <substitutions>
+ <!-- Useful xpath shortcuts for verifiers -->
+ <substitution>
+ <key>$multistatus-response-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response</value>
+ </substitution>
+ <substitution>
+ <key>$multistatus-href-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}href</value>
+ </substitution>
+ <substitution>
+ <key>$verify-response-prefix:</key>
+ <value>{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-property-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-bad-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}status</value>
+ </substitution>
+ <substitution>
+ <key>$verify-error-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}error</value>
+ </substitution>
+ <substitution>
+ <key>$CALDAV:</key>
+ <value>urn:ietf:params:xml:ns:caldav</value>
+ </substitution>
+ <substitution>
+ <key>$CARDDAV:</key>
+ <value>urn:ietf:params:xml:ns:carddav</value>
+ </substitution>
+ <substitution>
+ <key>$CS:</key>
+ <value>http://calendarserver.org/ns/</value>
+ </substitution>
+
+ <!-- Server configuration settings -->
+ <!-- $host: and $hostssl: are implicitly added by CalDAVTester based
+ on the host/nonsslport/sslport values and ssl command line switch -->
+
+ <!-- relative path to caldav root-->
+ <substitution>
+ <key>$root:</key>
+ <value>/remote.php/carddav/</value>
+ </substitution>
+
+ <!-- relative path to main principal collection-->
+ <substitution>
+ <key>$principalcollection:</key>
+ <value>$root:principals/</value>
+ </substitution>
+
+ <!-- the core recored type collections-->
+ <substitution>
+ <key>$uidstype:</key>
+ <value>__uids__</value>
+ </substitution>
+ <substitution>
+ <key>$groupstype:</key>
+ <value>groups</value>
+ </substitution>
+ <substitution>
+ <key>$locationstype:</key>
+ <value>locations</value>
+ </substitution>
+ <substitution>
+ <key>$resourcestype:</key>
+ <value>resources</value>
+ </substitution>
+
+ <!-- relative path to record type principal collections-->
+ <substitution>
+ <key>$principals_uids:</key>
+ <value>$principalcollection:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_users:</key>
+ <value>$principalcollection:</value>
+ </substitution>
+ <substitution>
+ <key>$principals_groups:</key>
+ <value>$principalcollection:$groupstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_resources:</key>
+ <value>$principalcollection:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_locations:</key>
+ <value>$principalcollection:$locationstype:/</value>
+ </substitution>
+
+ <!-- relative path to calendars collection-->
+ <substitution>
+ <key>$calendars:</key>
+ <value>$root:calendars/</value>
+ </substitution>
+
+ <!-- relative path to record type calendar collections-->
+ <substitution>
+ <key>$calendars_uids:</key>
+ <value>$calendars:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_users:</key>
+ <value>$calendars:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_resources:</key>
+ <value>$calendars:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_locations:</key>
+ <value>$calendars:$locationstype:/</value>
+ </substitution>
+
+ <!-- primary calendar name-->
+ <substitution>
+ <key>$calendar:</key>
+ <value>calendar</value>
+ </substitution>
+
+ <!-- primary tasks-only calendar name-->
+ <substitution>
+ <key>$tasks:</key>
+ <value>tasks</value>
+ </substitution>
+
+ <!-- primary polls-only calendar name-->
+ <substitution>
+ <key>$polls:</key>
+ <value>polls</value>
+ </substitution>
+
+ <!-- inbox name-->
+ <substitution>
+ <key>$inbox:</key>
+ <value>inbox</value>
+ </substitution>
+
+ <!-- outbox name-->
+ <substitution>
+ <key>$outbox:</key>
+ <value>outbox</value>
+ </substitution>
+
+ <!-- dropbox name-->
+ <substitution>
+ <key>$dropbox:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- attachments name-->
+ <substitution>
+ <key>$attachments:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- notification name-->
+ <substitution>
+ <key>$notification:</key>
+ <value>notification</value>
+ </substitution>
+
+ <!-- freebusy name-->
+ <substitution>
+ <key>$freebusy:</key>
+ <value>freebusy</value>
+ </substitution>
+
+ <!-- Sync home collection items - use "-" to include the home resource-->
+ <substitution>
+ <key>$calendar_home_items_initial_sync:</key>
+ <value>[-,$calendar:/,$tasks:/,$inbox:/,$outbox:/,$freebusy:,$notification:/]</value>
+ </substitution>
+
+ <!-- Sync collection extra items - use "-" to include the collection-->
+ <substitution>
+ <key>$calendar_sync_extra_items:</key>
+ <value>[-]</value>
+ </substitution>
+
+ <!-- Sync collection extra count - gets added to the totalcount value-->
+ <substitution>
+ <key>$calendar_sync_extra_count:</key>
+ <value>1</value> <!-- the request-uri resource is returned when no token passed-->
+ </substitution>
+
+ <!-- server-to-server inbox-->
+ <substitution>
+ <key>$servertoserver:</key>
+ <value>$root:inbox</value>
+ </substitution>
+
+ <!-- timezone service-->
+ <substitution>
+ <key>$timezoneservice:</key>
+ <value>$root:timezones</value>
+ </substitution>
+
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
+ <!-- relative path to addressbooks collection-->
+ <substitution>
+ <key>$addressbooks:</key>
+ <value>$root:addressbooks/</value>
+ </substitution>
+
+ <!-- relative path to record type addressbook collections-->
+ <substitution>
+ <key>$addressbooks_uids:</key>
+ <value>$addressbooks:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$addressbooks_users:</key>
+ <value>$addressbooks:/</value>
+ </substitution>
+
+ <!-- primary addressbook name -->
+ <substitution>
+ <key>$addressbook:</key>
+ <value>addressbook</value>
+ </substitution>
+
+ <!-- directory name -->
+ <substitution>
+ <key>$directory:</key>
+ <value>$root:directory/</value>
+ </substitution>
+
+ <!-- POST add-member URI suffix -->
+ <substitution>
+ <key>$add-member:</key>
+ <value>;add-member</value>
+ </substitution>
+
+ <!-- user id for admin user -->
+ <substitution>
+ <key>$useradmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- guid for admin user -->
+ <substitution>
+ <key>$useradminguid:</key>
+ <value>0C8BDE62-E600-4696-83D3-8B5ECABDFD2E</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdadmin:</key>
+ <value>admin</value>
+ </substitution>
+
+ <!-- relative path to admin principal resource-->
+ <substitution>
+ <key>$principal_admin:</key>
+ <value>$principals_users:$useradmin:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri_admin:</key>
+ <value>$principals_uids:$useradminguid:/</value>
+ </substitution>
+
+ <!-- user id for apprentice user -->
+ <substitution>
+ <key>$userapprentice:</key>
+ <value>apprentice</value>
+ </substitution>
+ <!-- guid for apprentice user -->
+ <substitution>
+ <key>$userapprenticeguid:</key>
+ <value>29B6C503-11DF-43EC-8CCA-40C7003149CE</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdapprentice:</key>
+ <value>apprentice</value>
+ </substitution>
+
+ <!-- relative path to apprentice principal resource-->
+ <substitution>
+ <key>$principal_apprentice:</key>
+ <value>$principals_users:$userapprentice:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri_apprentice:</key>
+ <value>$principals_uids:$userapprenticeguid:/</value>
+ </substitution>
+
+ <!-- user id for proxy user -->
+ <substitution>
+ <key>$userproxy:</key>
+ <value>superuser</value>
+ </substitution>
+ <!-- password for proxy user -->
+ <substitution>
+ <key>$pswdproxy:</key>
+ <value>superuser</value>
+ </substitution>
+
+ <!-- Forty user accounts -->
+ <repeat count="40">
+ <!-- user id -->
+ <substitution>
+ <key>$userid%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$userguid%d:</key>
+ <value>10000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$username%d:</key>
+ <value>User %02d</value>
+ </substitution>
+ <!-- user name URI encoded -->
+ <substitution>
+ <key>$username-encoded%d:</key>
+ <value>User%%20%02d</value>
+ </substitution>
+ <!-- first name -->
+ <substitution>
+ <key>$firstname%d:</key>
+ <value>User</value>
+ </substitution>
+ <!-- last name -->
+ <substitution>
+ <key>$lastname%d:</key>
+ <value>%02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$pswd%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$principal%d:</key>
+ <value>$principals_users:$userid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri%d:</key>
+ <value>$principals_users:$userid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principal%dnoslash:</key>
+ <value>$principals_users:$userid%d:</value>
+ </substitution>
+
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$calendarhome%d:</key>
+ <value>$calendars:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar home-->
+ <substitution>
+ <key>$calendarhomealt%d:</key>
+ <value>$calendars_users:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$calendarpath%d:</key>
+ <value>$calendarhome%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar-->
+ <substitution>
+ <key>$calendarpathalt%d:</key>
+ <value>$calendarhomealt%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user tasks calendar-->
+ <substitution>
+ <key>$taskspath%d:</key>
+ <value>$calendarhome%d:/$tasks:</value>
+ </substitution>
+ <!-- relative path to user polls calendar-->
+ <substitution>
+ <key>$pollspath%d:</key>
+ <value>$calendarhome%d:/$polls:</value>
+ </substitution>
+ <!-- relative path to user inbox-->
+ <substitution>
+ <key>$inboxpath%d:</key>
+ <value>$calendarhome%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to user outbox-->
+ <substitution>
+ <key>$outboxpath%d:</key>
+ <value>$calendarhome%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to user dropbox-->
+ <substitution>
+ <key>$dropboxpath%d:</key>
+ <value>$calendarhome%d:/$dropbox:</value>
+ </substitution>
+ <!-- relative path to user notification-->
+ <substitution>
+ <key>$notificationpath%d:</key>
+ <value>$calendarhome%d:/$notification:</value>
+ </substitution>
+ <!-- relative path to user freebusy-->
+ <substitution>
+ <key>$freebusypath%d:</key>
+ <value>$calendarhome%d:/$freebusy:</value>
+ </substitution>
+ <substitution>
+ <key>$email%d:</key>
+ <value>$userid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$cuaddr%d:</key>
+ <value>mailto:$email%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddralt%d:</key>
+ <value>$cuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddraltnoslash%d:</key>
+ <value>$cuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddrurn%d:</key>
+ <value>urn:x-uid:$userguid%d:</value>
+ </substitution>
+
+ <!-- relative path to user addressbook home-->
+ <substitution>
+ <key>$addressbookhome%d:</key>
+ <value>$addressbooks:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user addressbook-->
+ <substitution>
+ <key>$addressbookpath%d:</key>
+ <value>$addressbookhome%d:/$addressbook:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Ten public accounts -->
+ <repeat count="10">
+ <!-- user id -->
+ <substitution>
+ <key>$publicuserid%d:</key>
+ <value>public%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$publicuserguid%d:</key>
+ <value>50000000-0000-0000-0000-0000000000%02d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$publicusername%d:</key>
+ <value>Public %02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$publicpswd%d:</key>
+ <value>public%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$publicprincipal%d:</key>
+ <value>$principals_users:$publicuserid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$publicprincipaluri%d:</key>
+ <value>$principals_uids:$publicuserguid%d:/</value>
+ </substitution>
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$publiccalendarhome%d:</key>
+ <value>$calendars_uids:$publicuserguid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$publiccalendarpath%d:</key>
+ <value>$calendars_uids:$publicuserguid%d:/$calendar:</value>
+ </substitution>
+ <substitution>
+ <key>$publicemail%d:</key>
+ <value>$publicuserid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$publiccuaddr%d:</key>
+ <value>mailto:$publicemail%d:</value>
+ </substitution>
+ <substitution>
+ <key>$publiccuaddralt%d:</key>
+ <value>$publiccuaddr%d:</value>
+ </substitution>
+ <substitution>
+ <key>$publiccuaddrurn%d:</key>
+ <value>urn:x-uid:$publicuserguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Twenty resource accounts -->
+ <repeat count="20">
+ <substitution>
+ <key>$resourceid%d:</key>
+ <value>resource%02d</value>
+ </substitution>
+ <!-- resource guid-->
+ <substitution>
+ <key>$resourceguid%d:</key>
+ <value>40000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- resource name-->
+ <substitution>
+ <key>$resourcename%d:</key>
+ <value>Resource %02d</value>
+ </substitution>
+ <!-- relative path to first resource calendar home-->
+ <substitution>
+ <key>$rcalendarhome%d:</key>
+ <value>$calendars_uids:$resourceguid%d:</value>
+ </substitution>
+ <!-- relative path to first resource calendar home-->
+ <substitution>
+ <key>$rcalendarpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to first resource inbox-->
+ <substitution>
+ <key>$rinboxpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to first resource outbox-->
+ <substitution>
+ <key>$routboxpath%d:</key>
+ <value>$calendars_uids:$resourceguid%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to first resource principal resource-->
+ <substitution>
+ <key>$rprincipal%d:</key>
+ <value>$principals_resources:$resourceid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$rprincipaluri%d:</key>
+ <value>$principals_uids:$resourceguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$rcuaddralt%d:</key>
+ <value>$rcuaddrurn%d:</value>
+ </substitution>
+ <substitution>
+ <key>$rcuaddrurn%d:</key>
+ <value>urn:x-uid:$resourceguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Ten Location accounts -->
+ <repeat count="10">
+ <substitution>
+ <key>$locationid%d:</key>
+ <value>location%02d</value>
+ </substitution>
+ <!-- location guid-->
+ <substitution>
+ <key>$locationguid%d:</key>
+ <value>30000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- location name-->
+ <substitution>
+ <key>$locationname%d:</key>
+ <value>Location %02d</value>
+ </substitution>
+ <!-- relative path to first location calendar home-->
+ <substitution>
+ <key>$lcalendarhome%d:</key>
+ <value>$calendars_uids:$locationguid%d:</value>
+ </substitution>
+ <!-- relative path to first location calendar home-->
+ <substitution>
+ <key>$lcalendarpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to first location inbox-->
+ <substitution>
+ <key>$linboxpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to first location outbox-->
+ <substitution>
+ <key>$loutboxpath%d:</key>
+ <value>$calendars_uids:$locationguid%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to first location principal resource-->
+ <substitution>
+ <key>$lprincipal%d:</key>
+ <value>$principals_resources:$locationid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$lprincipaluri%d:</key>
+ <value>$principals_uids:$locationguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$lcuaddralt%d:</key>
+ <value>$lprincipaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$lcuaddrurn%d:</key>
+ <value>urn:x-uid:$locationguid%d:</value>
+ </substitution>
+ </repeat>
+
+
+ <!-- Ten Group accounts -->
+ <repeat count="40">
+ <substitution>
+ <key>$groupid%d:</key>
+ <value>group%02d</value>
+ </substitution>
+ <!-- group guid-->
+ <substitution>
+ <key>$groupguid%d:</key>
+ <value>20000000-0000-0000-0000-000000000%03d</value>
+ </substitution>
+ <!-- group name-->
+ <substitution>
+ <key>$groupname%d:</key>
+ <value>Group %02d</value>
+ </substitution>
+ <!-- relative path to first group principal resource-->
+ <substitution>
+ <key>$gprincipal%d:</key>
+ <value>$principals_resources:$groupid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$gprincipaluri%d:</key>
+ <value>$principals_uids:$groupguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$gemail%d:</key>
+ <value>$groupid%d:@example.com</value>
+ </substitution>
+ <substitution>
+ <key>$gcuaddralt%d:</key>
+ <value>$gprincipaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$gcuaddrurn%d:</key>
+ <value>urn:x-uid:$groupguid%d:</value>
+ </substitution>
+ </repeat>
+
+ <!-- User with non-ascii name -->
+ <substitution>
+ <key>$i18nid:</key>
+ <value>i18nuser</value>
+ </substitution>
+ <!-- group guid-->
+ <substitution>
+ <key>$i18nguid:</key>
+ <value>860B3EE9-6D7C-4296-9639-E6B998074A78</value>
+ </substitution>
+ <!-- group name-->
+ <substitution>
+ <key>$i18nname:</key>
+ <value>まだ</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$i18npswd:</key>
+ <value>i18nuser</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$i18ncalendarpath:</key>
+ <value>$calendars_uids:$i18nguid:/$calendar:</value>
+ </substitution>
+ <substitution>
+ <key>$i18nemail:</key>
+ <value>$i18nid:@example.com</value>
+ </substitution>
+ <!-- CUAddrs -->
+ <substitution>
+ <key>$i18ncuaddr:</key>
+ <value>mailto:$i18nemail:</value>
+ </substitution>
+ <substitution>
+ <key>$i18ncuaddrurn:</key>
+ <value>urn:x-uid:$i18nguid:</value>
+ </substitution>
+
+ <!-- relative path to disabled group principal resource-->
+ <substitution>
+ <key>$principaldisabled:</key>
+ <value>$principals_groups:disabledgroup/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluridisabled:</key>
+ <value>$principals_uids:disabledgroup/</value>
+ </substitution>
+ <!-- calendar user address of disabled group-->
+ <substitution>
+ <key>$cuaddrdisabled:</key>
+ <value>$principals_uids:disabledgroup/</value>
+ </substitution>
+
+ <!-- Override some of the above definitions for special cases -->
+
+ <!-- calendar user address of second user-->
+ <substitution>
+ <key>$cuaddr2:</key>
+ <value>MAILTO:$email2:</value>
+ </substitution>
+
+ </substitutions>
+</serverinfo>
diff --git a/apps/dav/tests/travis/carddav/script-new-endpoint.sh b/apps/dav/tests/travis/carddav/script-new-endpoint.sh
new file mode 100644
index 00000000000..9140c37b45f
--- /dev/null
+++ b/apps/dav/tests/travis/carddav/script-new-endpoint.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+SCRIPT=`realpath $0`
+SCRIPTPATH=`dirname $SCRIPT`
+
+# Move the endpoint to the serverinfo file
+cp "$SCRIPTPATH/../caldavtest/serverinfo-new-endpoint.xml" "$SCRIPTPATH/../caldavtest/serverinfo.xml"
+
+# start the server
+php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." &
+
+sleep 30
+
+# run the tests
+cd "$SCRIPTPATH/CalDAVTester"
+PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail --basedir "$SCRIPTPATH/../caldavtest/" -o cdt.txt \
+ "CardDAV/current-user-principal.xml" \
+ "CardDAV/sync-report.xml" \
+ "CardDAV/sharing-addressbooks.xml"
+
+
+RESULT=$?
+
+tail "$/../../../../../data-autotest/nextcloud.log"
+
+exit $RESULT
diff --git a/apps/dav/tests/travis/carddav/script-old-endpoint.sh b/apps/dav/tests/travis/carddav/script-old-endpoint.sh
new file mode 100644
index 00000000000..216f2f5af31
--- /dev/null
+++ b/apps/dav/tests/travis/carddav/script-old-endpoint.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+SCRIPT=`realpath $0`
+SCRIPTPATH=`dirname $SCRIPT`
+
+# Move the endpoint to the serverinfo file
+cp "$SCRIPTPATH/../caldavtest/serverinfo-old-carddav-endpoint.xml" "$SCRIPTPATH/../caldavtest/serverinfo.xml"
+
+# start the server
+php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." &
+
+
+# run the tests
+cd "$SCRIPTPATH/CalDAVTester"
+PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail --basedir "$SCRIPTPATH/../caldavtest/" -o cdt.txt \
+ "CardDAV/current-user-principal.xml" \
+ "CardDAV/sync-report.xml"
+
+RESULT=$?
+
+tail "$/../../../../../data-autotest/nextcloud.log"
+
+exit $RESULT
diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php
index d0fb2d19243..70a072f04de 100644
--- a/apps/dav/tests/unit/CalDAV/CalendarTest.php
+++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php
@@ -334,17 +334,15 @@ EOD;
->willReturn($calObject1)->with(666, 'event-1');
$calendarInfo = [
+ '{http://owncloud.org/ns}owner-principal' => $isShared ? 'user1' : 'user2',
'principaluri' => 'user2',
'id' => 666,
'uri' => 'cal',
];
-
- if ($isShared) {
- $calendarInfo['{http://owncloud.org/ns}owner-principal'] = 'user1';
-
- }
$c = new Calendar($backend, $calendarInfo, $this->l10n);
+ $this->assertEquals(count($c->getChildren()), $expectedChildren);
+
// test private event
$privateEvent = $c->getChild('event-1');
$calData = $privateEvent->get();
diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
index 5eeb6772a60..cecf07ef1d8 100644
--- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
@@ -55,18 +55,18 @@ class BirthdayServiceTest extends TestCase {
/**
* @dataProvider providesVCards
- * @param boolean $nullExpected
+ * @param boolean $expectedSummary
* @param string | null $data
*/
- public function testBuildBirthdayFromContact($nullExpected, $data) {
+ public function testBuildBirthdayFromContact($expectedSummary, $data) {
$cal = $this->service->buildDateFromContact($data, 'BDAY', '*');
- if ($nullExpected) {
+ if ($expectedSummary === null) {
$this->assertNull($cal);
} else {
$this->assertInstanceOf('Sabre\VObject\Component\VCalendar', $cal);
$this->assertTrue(isset($cal->VEVENT));
$this->assertEquals('FREQ=YEARLY', $cal->VEVENT->RRULE->getValue());
- $this->assertEquals('12345 (*1900)', $cal->VEVENT->SUMMARY->getValue());
+ $this->assertEquals($expectedSummary, $cal->VEVENT->SUMMARY->getValue());
$this->assertEquals('TRANSPARENT', $cal->VEVENT->TRANSP->getValue());
}
}
@@ -233,14 +233,19 @@ class BirthdayServiceTest extends TestCase {
public function providesVCards() {
return [
- [true, null],
- [true, ''],
- [true, 'yasfewf'],
- [true, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
- [true, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
- [true, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:someday\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
- [false, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:1900-01-01\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
- [false, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:1900-12-31\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ [null, null],
+ [null, ''],
+ [null, 'yasfewf'],
+ [null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ [null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ [null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:someday\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ ['12345 (*1900)', "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:19000101\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ ['12345 (*1900)', "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:19001231\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ ['12345 *', "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:--1231\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ ['12345 *', "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ [null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:;VALUE=text:circa 1800\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ [null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nN:12345;;;;\r\nBDAY:20031231\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
+ ['12345 (*900)', "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nBDAY:09001231\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
];
}
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
index c6e833033d5..1c9ebdd09b6 100644
--- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
@@ -188,8 +188,6 @@ class FilesPluginTest extends TestCase {
$node->expects($this->exactly(2))
->method('getOwner')
->will($this->returnValue($user));
- $node->expects($this->never())
- ->method('getSize');
$this->plugin->handleGetProperties(
$propFind,
diff --git a/apps/dav/tests/unit/Migration/ValueFixInsertTest.php b/apps/dav/tests/unit/Migration/ValueFixInsertTest.php
new file mode 100644
index 00000000000..26152e7d01d
--- /dev/null
+++ b/apps/dav/tests/unit/Migration/ValueFixInsertTest.php
@@ -0,0 +1,117 @@
+<?php
+/**
+ * @copyright 2016, 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 OCA\DAV\Tests\Unit\DAV\Migration;
+
+use OCA\DAV\Migration\ValueFix;
+use OCA\DAV\Migration\ValueFixInsert;
+use OCP\BackgroundJob\IJobList;
+use OCP\IConfig;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\Migration\IOutput;
+use Test\TestCase;
+
+class ValueFixInsertTest extends TestCase {
+ /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
+ private $userManager;
+
+ /** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
+ private $jobList;
+
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $config;
+
+ /** @var ValueFixInsert */
+ private $job;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->userManager = $this->createMock(IUserManager::class);
+ $this->jobList = $this->createMock(IJobList::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->job = new ValueFixInsert(
+ $this->userManager,
+ $this->jobList,
+ $this->config
+ );
+ }
+
+ public function testGetName() {
+ $this->assertSame('Insert ValueFix background job for each user', $this->job->getName());
+ }
+
+ public function testRun() {
+ $user1 = $this->createMock(IUser::class);
+ $user1->method('getUID')->willReturn('user1');
+ $user2 = $this->createMock(IUser::class);
+ $user2->method('getUID')->willReturn('user2');
+
+ $this->config->method('getAppValue')
+ ->with(
+ $this->equalTo('dav'),
+ $this->equalTo(ValueFixInsert::class.'_ran'),
+ $this->anything()
+ )->will($this->returnCallback(function($app, $key, $value) {
+ return $value;
+ }));
+
+ $this->userManager->method('callForSeenUsers')
+ ->will($this->returnCallback(function(\Closure $function) use ($user1, $user2) {
+ $function($user1);
+ $function($user2);
+ }));
+
+ $this->jobList->expects($this->at(0))
+ ->method('add')
+ ->with(
+ $this->equalTo(ValueFix::class),
+ $this->equalTo(['user' => 'user1'])
+ );
+ $this->jobList->expects($this->at(1))
+ ->method('add')
+ ->with(
+ $this->equalTo(ValueFix::class),
+ $this->equalTo(['user' => 'user2'])
+ );
+
+ $this->job->run($this->createMock(IOutput::class));
+ }
+
+ public function testRunOnlyOnce() {
+ $this->config->method('getAppValue')
+ ->with(
+ $this->equalTo('dav'),
+ $this->equalTo(ValueFixInsert::class.'_ran'),
+ $this->anything()
+ )->willReturn('true');
+
+ $this->userManager->expects($this->never())
+ ->method($this->anything());;
+
+ $this->jobList->expects($this->never())
+ ->method($this->anything());
+
+ $this->job->run($this->createMock(IOutput::class));
+ }
+}
diff --git a/apps/dav/tests/unit/Migration/ValueFixTest.php b/apps/dav/tests/unit/Migration/ValueFixTest.php
new file mode 100644
index 00000000000..58b6f79621f
--- /dev/null
+++ b/apps/dav/tests/unit/Migration/ValueFixTest.php
@@ -0,0 +1,200 @@
+<?php
+/**
+ * @copyright 2016, 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 OCA\DAV\Tests\Unit\DAV\Migration;
+
+use OCA\DAV\CalDAV\CalDavBackend;
+use OCA\DAV\Migration\ValueFix;
+use OCP\ILogger;
+use Sabre\VObject\InvalidDataException;
+use Test\TestCase;
+
+class ValueFixTest extends TestCase {
+
+ /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
+ private $logger;
+
+ /** @var CalDavBackend|\PHPUnit_Framework_MockObject_MockObject */
+ private $backend;
+
+ /** @var string */
+ private $invalid = 'BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//Mac OS X 10.11.2//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+TRANSP:OPAQUE
+DTEND;VALUE=:20151223T223000Z
+LAST-MODIFIED:20151214T091032Z
+ORGANIZER;CN="User 1":mailto:user1@example.com
+UID:1234567890@example.com
+DTSTAMP:20151214T091032Z
+STATUS:CONFIRMED
+SEQUENCE:0
+SUMMARY:Ein Geburtstag
+DTSTART;VALUE=:20151223T173000Z
+X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
+CREATED;VALUE=:20151214T091032Z
+END:VEVENT
+END:VCALENDAR';
+
+ /** @var string */
+ private $valid = 'BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//Mac OS X 10.11.2//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+TRANSP:OPAQUE
+DTEND:20151223T223000Z
+LAST-MODIFIED:20151214T091032Z
+ORGANIZER;CN="User 1":mailto:user1@example.com
+UID:1234567890@example.com
+DTSTAMP:20151214T091032Z
+STATUS:CONFIRMED
+SEQUENCE:0
+SUMMARY:Ein Geburtstag
+DTSTART:20151223T173000Z
+X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
+CREATED:20151214T091032Z
+END:VEVENT
+END:VCALENDAR';
+
+ /** @var ValueFix */
+ private $job;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->logger = $this->createMock(ILogger::class);
+ $this->backend = $this->createMock(CalDavBackend::class);
+ $this->job = new ValueFix(
+ $this->backend,
+ $this->logger
+ );
+ }
+
+ public function testRunInvalid() {
+ $calendars = [['id' => 42]];
+ $objects = [['uri' => 'myuri']];
+
+ $this->backend->method('getCalendarsForUser')
+ ->with($this->equalTo('principals/users/u1'))
+ ->willReturn($calendars);
+
+ $this->backend->method('getCalendarObjects')
+ ->with($this->equalTo(42))
+ ->willReturn($objects);
+
+ $this->backend->method('getCalendarObject')
+ ->with(
+ $this->equalTo(42),
+ $this->equalTo('myuri')
+ )->willReturn([
+ 'calendardata' => $this->invalid
+ ]);
+
+ $this->backend->expects($this->once())
+ ->method('getDenormalizedData')
+ ->with($this->valid);
+
+ $this->backend->expects($this->once())
+ ->method('updateCalendarObject')
+ ->with(
+ $this->equalTo(42),
+ $this->equalTo('myuri'),
+ $this->equalTo($this->valid)
+ );
+
+ $this->job->run(['user' => 'u1']);
+ }
+
+ public function testRunValid() {
+ $calendars = [['id' => 42]];
+ $objects = [['uri' => 'myuri']];
+
+ $this->backend->method('getCalendarsForUser')
+ ->with($this->equalTo('principals/users/u1'))
+ ->willReturn($calendars);
+
+ $this->backend->method('getCalendarObjects')
+ ->with($this->equalTo(42))
+ ->willReturn($objects);
+
+ $this->backend->method('getCalendarObject')
+ ->with(
+ $this->equalTo(42),
+ $this->equalTo('myuri')
+ )->willReturn([
+ 'calendardata' => $this->valid
+ ]);
+
+ $this->backend->expects($this->never())
+ ->method('getDenormalizedData');
+
+ $this->backend->expects($this->never())
+ ->method('updateCalendarObject');
+
+ $this->job->run(['user' => 'u1']);
+ }
+
+ public function testRunStillInvalid() {
+ $calendars = [['id' => 42]];
+ $objects = [['uri' => 'myuri']];
+
+ $this->backend->method('getCalendarsForUser')
+ ->with($this->equalTo('principals/users/u1'))
+ ->willReturn($calendars);
+
+ $this->backend->method('getCalendarObjects')
+ ->with($this->equalTo(42))
+ ->willReturn($objects);
+
+ $this->backend->method('getCalendarObject')
+ ->with(
+ $this->equalTo(42),
+ $this->equalTo('myuri')
+ )->willReturn([
+ 'calendardata' => $this->invalid
+ ]);
+
+ $this->backend->expects($this->once())
+ ->method('getDenormalizedData')
+ ->with($this->valid)
+ ->willThrowException(new InvalidDataException());
+
+ $this->logger->expects($this->once())
+ ->method('info')
+ ->with(
+ $this->equalTo('Calendar object for calendar {cal} with uri {uri} still invalid'),
+ $this->equalTo([
+ 'app'=> 'dav',
+ 'cal' => 42,
+ 'uri' => 'myuri',
+ ])
+ );
+
+ $this->backend->expects($this->never())
+ ->method('updateCalendarObject');
+
+ $this->job->run(['user' => 'u1']);
+ }
+}
diff --git a/apps/dav/tests/unit/SystemTag/SystemTagNodeTest.php b/apps/dav/tests/unit/SystemTag/SystemTagNodeTest.php
index 43674f4b795..3722bd9d25a 100644
--- a/apps/dav/tests/unit/SystemTag/SystemTagNodeTest.php
+++ b/apps/dav/tests/unit/SystemTag/SystemTagNodeTest.php
@@ -24,19 +24,17 @@
namespace OCA\DAV\Tests\unit\SystemTag;
-use Sabre\DAV\Exception\NotFound;
-use Sabre\DAV\Exception\MethodNotAllowed;
-use Sabre\DAV\Exception\Conflict;
use OC\SystemTag\SystemTag;
use OCP\SystemTag\TagNotFoundException;
use OCP\SystemTag\TagAlreadyExistsException;
use OCP\SystemTag\ISystemTag;
+use Sabre\DAV\Exception\Forbidden;
class SystemTagNodeTest extends \Test\TestCase {
/**
- * @var \OCP\SystemTag\ISystemTagManager
+ * @var \OCP\SystemTag\ISystemTagManager|\PHPUnit_Framework_MockObject_MockObject
*/
private $tagManager;
@@ -113,7 +111,7 @@ class SystemTagNodeTest extends \Test\TestCase {
/**
* @dataProvider tagNodeProvider
*/
- public function testUpdateTag($isAdmin, $originalTag, $changedArgs) {
+ public function testUpdateTag($isAdmin, ISystemTag $originalTag, $changedArgs) {
$this->tagManager->expects($this->once())
->method('canUserSeeTag')
->with($originalTag)
@@ -173,7 +171,7 @@ class SystemTagNodeTest extends \Test\TestCase {
/**
* @dataProvider tagNodeProviderPermissionException
*/
- public function testUpdateTagPermissionException($originalTag, $changedArgs, $expectedException = null) {
+ public function testUpdateTagPermissionException(ISystemTag $originalTag, $changedArgs, $expectedException = null) {
$this->tagManager->expects($this->any())
->method('canUserSeeTag')
->with($originalTag)
@@ -242,17 +240,16 @@ class SystemTagNodeTest extends \Test\TestCase {
*/
public function testDeleteTag($isAdmin) {
$tag = new SystemTag(1, 'tag1', true, true);
- $this->tagManager->expects($this->once())
+ $this->tagManager->expects($isAdmin ? $this->once() : $this->never())
->method('canUserSeeTag')
->with($tag)
->will($this->returnValue(true));
- $this->tagManager->expects($this->once())
- ->method('canUserAssignTag')
- ->with($tag)
- ->will($this->returnValue(true));
- $this->tagManager->expects($this->once())
+ $this->tagManager->expects($isAdmin ? $this->once() : $this->never())
->method('deleteTags')
->with('1');
+ if (!$isAdmin) {
+ $this->setExpectedException(Forbidden::class);
+ }
$this->getTagNode($isAdmin, $tag)->delete();
}
@@ -261,7 +258,7 @@ class SystemTagNodeTest extends \Test\TestCase {
[
// cannot delete invisible tag
new SystemTag(1, 'Original', false, true),
- 'Sabre\DAV\Exception\NotFound',
+ 'Sabre\DAV\Exception\Forbidden',
],
[
// cannot delete non-assignable tag
@@ -279,20 +276,11 @@ class SystemTagNodeTest extends \Test\TestCase {
->method('canUserSeeTag')
->with($tag)
->will($this->returnValue($tag->isUserVisible()));
- $this->tagManager->expects($this->any())
- ->method('canUserAssignTag')
- ->with($tag)
- ->will($this->returnValue($tag->isUserAssignable()));
$this->tagManager->expects($this->never())
->method('deleteTags');
- try {
- $this->getTagNode(false, $tag)->delete();
- } catch (\Exception $e) {
- $thrown = $e;
- }
-
- $this->assertInstanceOf($expectedException, $thrown);
+ $this->setExpectedException($expectedException);
+ $this->getTagNode(false, $tag)->delete();
}
/**
@@ -304,14 +292,10 @@ class SystemTagNodeTest extends \Test\TestCase {
->method('canUserSeeTag')
->with($tag)
->will($this->returnValue($tag->isUserVisible()));
- $this->tagManager->expects($this->any())
- ->method('canUserAssignTag')
- ->with($tag)
- ->will($this->returnValue($tag->isUserAssignable()));
$this->tagManager->expects($this->once())
->method('deleteTags')
->with('1')
->will($this->throwException(new TagNotFoundException()));
- $this->getTagNode(false, $tag)->delete();
+ $this->getTagNode(true, $tag)->delete();
}
}
diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml
index 0bb3efebf5f..307fef4ad8a 100644
--- a/apps/encryption/appinfo/info.xml
+++ b/apps/encryption/appinfo/info.xml
@@ -18,14 +18,13 @@
<user>user-encryption</user>
<admin>admin-encryption</admin>
</documentation>
- <rememberlogin>false</rememberlogin>
- <version>1.4.1</version>
+ <version>1.6.0</version>
<types>
<filesystem/>
</types>
<dependencies>
<lib>openssl</lib>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
<admin>OCA\Encryption\Settings\Admin</admin>
diff --git a/apps/encryption/css/settings-personal.css b/apps/encryption/css/settings-personal.css
index 8eb5bedcb06..4bab1a8d46b 100644
--- a/apps/encryption/css/settings-personal.css
+++ b/apps/encryption/css/settings-personal.css
@@ -8,3 +8,8 @@
, #recoveryEnabledSuccess {
display: none;
}
+
+/* icons for sidebar */
+.nav-icon-basic-encryption-module {
+ background-image: url('../img/app.svg?v=1');
+} \ No newline at end of file
diff --git a/apps/encryption/l10n/cs_CZ.js b/apps/encryption/l10n/cs_CZ.js
index 5dfabbe8ec2..6539f76e69b 100644
--- a/apps/encryption/l10n/cs_CZ.js
+++ b/apps/encryption/l10n/cs_CZ.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Povolit obnovu hesla:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo",
"Enabled" : "Povoleno",
- "Disabled" : "Zakázáno",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (Nextcloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora.",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče v osobním nastavení, abyste znovu získali přístup ke svým zašifrovaným souborům.",
- "Encryption App is enabled and ready" : "Aplikace šifrování je již povolena a připravena",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu Nextcloud' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ahoj!<br><br>Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla <strong>%s<strong>.<br><br>Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu Nextcloud\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.<br><br>",
- "Nextcloud basic encryption module" : "Základní šifrovací modul Nextcloud"
+ "Disabled" : "Zakázáno"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/encryption/l10n/cs_CZ.json b/apps/encryption/l10n/cs_CZ.json
index 41b8a26fd3e..c45606bbe17 100644
--- a/apps/encryption/l10n/cs_CZ.json
+++ b/apps/encryption/l10n/cs_CZ.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Povolit obnovu hesla:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo",
"Enabled" : "Povoleno",
- "Disabled" : "Zakázáno",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (Nextcloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora.",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče v osobním nastavení, abyste znovu získali přístup ke svým zašifrovaným souborům.",
- "Encryption App is enabled and ready" : "Aplikace šifrování je již povolena a připravena",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu Nextcloud' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ahoj!<br><br>Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla <strong>%s<strong>.<br><br>Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu Nextcloud\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.<br><br>",
- "Nextcloud basic encryption module" : "Základní šifrovací modul Nextcloud"
+ "Disabled" : "Zakázáno"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js
index 8f7cb476085..ab78c42e81d 100644
--- a/apps/encryption/l10n/de.js
+++ b/apps/encryption/l10n/de.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst",
"Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du musst Deine Verschlüsselungs-Schlüssel von der Alten Vershlüsselung (ownCloud <= 8.0) zur neuen migrieren. Bitte führe 'occ encryption:migrate' aus oder kontaktiere den Administrator",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte Ihr privates Schlüssel-Passwort aktualisieren, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
- "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit.",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Nextcloud-Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich im Web-Interface an, gehe in deine persönlichen Einstellungen. Dort findest du die Option 'Nextcloud-Basisverschlüsselungsmodul' und aktualisiere dort dein Verschlüsselungspasswort indem du das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingibst.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud-Basisverschlüsselungsmodul"
+ "Disabled" : "Deaktiviert"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json
index b1ba0ec586d..e326123e21b 100644
--- a/apps/encryption/l10n/de.json
+++ b/apps/encryption/l10n/de.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst",
"Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du musst Deine Verschlüsselungs-Schlüssel von der Alten Vershlüsselung (ownCloud <= 8.0) zur neuen migrieren. Bitte führe 'occ encryption:migrate' aus oder kontaktiere den Administrator",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte Ihr privates Schlüssel-Passwort aktualisieren, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
- "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit.",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Nextcloud-Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich im Web-Interface an, gehe in deine persönlichen Einstellungen. Dort findest du die Option 'Nextcloud-Basisverschlüsselungsmodul' und aktualisiere dort dein Verschlüsselungspasswort indem du das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingibst.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud-Basisverschlüsselungsmodul"
+ "Disabled" : "Deaktiviert"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/de_DE.js b/apps/encryption/l10n/de_DE.js
index 5580dc11a64..2a90f6eaf1e 100644
--- a/apps/encryption/l10n/de_DE.js
+++ b/apps/encryption/l10n/de_DE.js
@@ -33,7 +33,7 @@ OC.L10N.register(
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte melden Sie sich im Web-Interface an, gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.\n\n",
"The share will expire on %s." : "Die Freigabe wird am %s ablaufen.",
"Cheers!" : "Noch einen schönen Tag!",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an, gehe Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.<br><br>",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hollo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an und gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Login-Passwort-' und in das 'aktuelles Login-Passwort' Feld eingeben.<br><br>",
"Default encryption module" : "Standard Verschlüsselungsmodul",
"Encrypt the home storage" : "Benutzerverzeichnis verschlüsslen",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt",
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
"Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (Nextcloud <= 8.0) zur neuen migrieren. Bitte führen Sie 'occ encryption:migrate' aus oder kontaktieren Sie Ihren Administrator. ",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
- "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Nextcloud-Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an, gehe Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Nextcloud-Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud Basisverschlüsselungsmodul"
+ "Disabled" : "Deaktiviert"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/de_DE.json b/apps/encryption/l10n/de_DE.json
index 49f7a677fcc..00964f8eabf 100644
--- a/apps/encryption/l10n/de_DE.json
+++ b/apps/encryption/l10n/de_DE.json
@@ -31,7 +31,7 @@
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte melden Sie sich im Web-Interface an, gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.\n\n",
"The share will expire on %s." : "Die Freigabe wird am %s ablaufen.",
"Cheers!" : "Noch einen schönen Tag!",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an, gehe Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.<br><br>",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hollo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an und gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Login-Passwort-' und in das 'aktuelles Login-Passwort' Feld eingeben.<br><br>",
"Default encryption module" : "Standard Verschlüsselungsmodul",
"Encrypt the home storage" : "Benutzerverzeichnis verschlüsslen",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt",
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
"Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (Nextcloud <= 8.0) zur neuen migrieren. Bitte führen Sie 'occ encryption:migrate' aus oder kontaktieren Sie Ihren Administrator. ",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
- "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Nextcloud-Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hey,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an, gehe Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Nextcloud-Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud Basisverschlüsselungsmodul"
+ "Disabled" : "Deaktiviert"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js
index 5ca8b383e04..346520235b3 100644
--- a/apps/encryption/l10n/el.js
+++ b/apps/encryption/l10n/el.js
@@ -22,8 +22,11 @@ OC.L10N.register(
"The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
"Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη",
"Bad Signature" : "Κακή υπογραφή",
+ "Missing Signature" : "Ελλιπής υπογραφή",
"one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.",
@@ -31,6 +34,7 @@ OC.L10N.register(
"The share will expire on %s." : "Ο διαμοιρασμός θα λήξει σε %s.",
"Cheers!" : "Χαιρετισμούς!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Χαίρετε,<br><br>ο διαχειριστής ενεργοποίησε την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>Παρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα \"μονάδα βασικής κρυπτογράφησης\" τωνπ ροσωπικών σας ρυθμίσεων και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σύνδεσης\" και τον τωρινό σας κωδικό σύνδεσης.",
+ "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης",
"Encrypt the home storage" : "Κρυπτογράφηση του κεντρικού χώρου αποθήκευσης",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεργοποίηση αυτή της επιλογής κρυπτογραφεί όλα τα αρχεία που βρίσκονται στον κύριο αποθηκευτικό χώρο, αλλιώς μόνο τα αρχεία σε εξωτερικούς αποθηκευτικούς χώρους θα κρυπτογραφηθούν.",
"Enable recovery key" : "Ενεργοποίηση κλειδιού ανάκτησης",
@@ -43,6 +47,7 @@ OC.L10N.register(
"New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης",
"Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης",
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
+ "Basic encryption module" : "Βασική μονάδα κρυπτογράφησης",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
@@ -53,7 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας",
"Enabled" : "Ενεργοποιημένο",
- "Disabled" : "Απενεργοποιημένο",
- "Nextcloud basic encryption module" : "Βασικό άρθρωμα κρυπτογράφησης Netcloud"
+ "Disabled" : "Απενεργοποιημένο"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json
index f668f535ea1..c94d56a61f1 100644
--- a/apps/encryption/l10n/el.json
+++ b/apps/encryption/l10n/el.json
@@ -20,8 +20,11 @@
"The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
"Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη",
"Bad Signature" : "Κακή υπογραφή",
+ "Missing Signature" : "Ελλιπής υπογραφή",
"one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.",
@@ -29,6 +32,7 @@
"The share will expire on %s." : "Ο διαμοιρασμός θα λήξει σε %s.",
"Cheers!" : "Χαιρετισμούς!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Χαίρετε,<br><br>ο διαχειριστής ενεργοποίησε την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>Παρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα \"μονάδα βασικής κρυπτογράφησης\" τωνπ ροσωπικών σας ρυθμίσεων και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σύνδεσης\" και τον τωρινό σας κωδικό σύνδεσης.",
+ "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης",
"Encrypt the home storage" : "Κρυπτογράφηση του κεντρικού χώρου αποθήκευσης",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεργοποίηση αυτή της επιλογής κρυπτογραφεί όλα τα αρχεία που βρίσκονται στον κύριο αποθηκευτικό χώρο, αλλιώς μόνο τα αρχεία σε εξωτερικούς αποθηκευτικούς χώρους θα κρυπτογραφηθούν.",
"Enable recovery key" : "Ενεργοποίηση κλειδιού ανάκτησης",
@@ -41,6 +45,7 @@
"New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης",
"Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης",
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
+ "Basic encryption module" : "Βασική μονάδα κρυπτογράφησης",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
@@ -51,7 +56,6 @@
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας",
"Enabled" : "Ενεργοποιημένο",
- "Disabled" : "Απενεργοποιημένο",
- "Nextcloud basic encryption module" : "Βασικό άρθρωμα κρυπτογράφησης Netcloud"
+ "Disabled" : "Απενεργοποιημένο"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js
index ea00c610b8f..e8ee7f52b9f 100644
--- a/apps/encryption/l10n/es.js
+++ b/apps/encryption/l10n/es.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña",
"Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necesita migrar sus claves de cifrado desde el antiguo modelo de cifrado (Nextcloud <= 8.0) al nuevo. Por favor ejecute 'occ encryption:migrate' o contáctese con su administrador.",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualice la contraseña de su clave privada en sus ajustes personales para recuperar el acceso a sus archivos cifrados.",
- "Encryption App is enabled and ready" : "La app de cifrado esta habilitada y preparada",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña '%s'.\n\nPor favor, inicia tu sesión desde la interfaz web, ve a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "¡Hola!<br><br> El administrador ha habilitado el cifrado en el servidor. Sus archivos han sido cifrados usando la contraseña <strong>%s</strong>.<br><br>Por favor, regístrese en la interfaz web, vaya a la sección \"Módulo de cifrado básico de Nextcloud\" de sus configuraciones personales y actualice su contraseña de cifrado introduciendo esta contraseña en el campo \"contraseña de acceso antigua\" y su contraseña de acceso actual.<br><br>",
- "Nextcloud basic encryption module" : "Modulo básico de cifrado de Nextcloud "
+ "Disabled" : "Deshabilitado"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json
index b5a8ede960c..6b0656f808a 100644
--- a/apps/encryption/l10n/es.json
+++ b/apps/encryption/l10n/es.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña",
"Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necesita migrar sus claves de cifrado desde el antiguo modelo de cifrado (Nextcloud <= 8.0) al nuevo. Por favor ejecute 'occ encryption:migrate' o contáctese con su administrador.",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualice la contraseña de su clave privada en sus ajustes personales para recuperar el acceso a sus archivos cifrados.",
- "Encryption App is enabled and ready" : "La app de cifrado esta habilitada y preparada",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña '%s'.\n\nPor favor, inicia tu sesión desde la interfaz web, ve a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "¡Hola!<br><br> El administrador ha habilitado el cifrado en el servidor. Sus archivos han sido cifrados usando la contraseña <strong>%s</strong>.<br><br>Por favor, regístrese en la interfaz web, vaya a la sección \"Módulo de cifrado básico de Nextcloud\" de sus configuraciones personales y actualice su contraseña de cifrado introduciendo esta contraseña en el campo \"contraseña de acceso antigua\" y su contraseña de acceso actual.<br><br>",
- "Nextcloud basic encryption module" : "Modulo básico de cifrado de Nextcloud "
+ "Disabled" : "Deshabilitado"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js
index 326466c8e04..14b693baa28 100644
--- a/apps/encryption/l10n/fr.js
+++ b/apps/encryption/l10n/fr.js
@@ -12,7 +12,7 @@ OC.L10N.register(
"Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération",
"Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération",
"Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération",
- "Password successfully changed." : "Mot de passe changé avec succès.",
+ "Password successfully changed." : "Mot de passe modifié avec succès.",
"Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.",
"Recovery Key disabled" : "Clé de récupération désactivée",
"Recovery Key enabled" : "Clef de récupération activée",
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Activer la récupération du mot de passe :",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe",
"Enabled" : "Activé",
- "Disabled" : "Désactivé",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (NextCloud <= 8.0) vers la nouvelle. Veuillez exécuter 'occ encryption:migrate' ou contacter votre administrateur",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée pour Encryption App est invalide. Veuillez mettre à jour votre mot de passe de la clef privée dans vos paramètres personnels afin de retrouver l'accès à vos fichiers chiffrés.",
- "Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour\n\nL'administrateur du serveur à activé le chiffrement côté serveur. Vos fichiers seront chiffrés en utilisant le mot de passe '%s'.\n\nMerci de vous connecter à l'interface web, aller dans la section 'Module de chiffrement basique' dans vos paramètres personnes et mettez à jour votre mot de passe de chiffrement en entrant se mot de passe dans le champs 'ancien mot de passe de connexion' et vos identifiant mots de passe actuels.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour, <br><br>l'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant : <strong>%s</strong>.<br><br>Veuillez vous connectez à l'interface web, allez à la section \"Module de chiffrement basique Nextcloud\" dans vos paramètres personnels et entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\", entrez votre mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\".<br><br>",
- "Nextcloud basic encryption module" : "Module de chiffrement Nextcloud"
+ "Disabled" : "Désactivé"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json
index 209991c3869..74c0b7492a8 100644
--- a/apps/encryption/l10n/fr.json
+++ b/apps/encryption/l10n/fr.json
@@ -10,7 +10,7 @@
"Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération",
"Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération",
"Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération",
- "Password successfully changed." : "Mot de passe changé avec succès.",
+ "Password successfully changed." : "Mot de passe modifié avec succès.",
"Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.",
"Recovery Key disabled" : "Clé de récupération désactivée",
"Recovery Key enabled" : "Clef de récupération activée",
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Activer la récupération du mot de passe :",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe",
"Enabled" : "Activé",
- "Disabled" : "Désactivé",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (NextCloud <= 8.0) vers la nouvelle. Veuillez exécuter 'occ encryption:migrate' ou contacter votre administrateur",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée pour Encryption App est invalide. Veuillez mettre à jour votre mot de passe de la clef privée dans vos paramètres personnels afin de retrouver l'accès à vos fichiers chiffrés.",
- "Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour\n\nL'administrateur du serveur à activé le chiffrement côté serveur. Vos fichiers seront chiffrés en utilisant le mot de passe '%s'.\n\nMerci de vous connecter à l'interface web, aller dans la section 'Module de chiffrement basique' dans vos paramètres personnes et mettez à jour votre mot de passe de chiffrement en entrant se mot de passe dans le champs 'ancien mot de passe de connexion' et vos identifiant mots de passe actuels.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour, <br><br>l'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant : <strong>%s</strong>.<br><br>Veuillez vous connectez à l'interface web, allez à la section \"Module de chiffrement basique Nextcloud\" dans vos paramètres personnels et entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\", entrez votre mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\".<br><br>",
- "Nextcloud basic encryption module" : "Module de chiffrement Nextcloud"
+ "Disabled" : "Désactivé"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/hu_HU.js b/apps/encryption/l10n/hu_HU.js
index eaa09295111..620bcb8bd62 100644
--- a/apps/encryption/l10n/hu_HU.js
+++ b/apps/encryption/l10n/hu_HU.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Jelszó-visszaállítás bekapcsolása",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított fájlok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát",
"Enabled" : "Bekapcsolva",
- "Disabled" : "Kikapcsolva",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Migrálni kell a titkosítási kulcsaidat a rég titkosításról (Nextcloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A titkosító alkalmazás privát kulcsa érvénytelen. A titkosított fájljaidhoz való hozzáféréshez frissítsd a privát kulcsod jelszavát a személyes beállításoknál.",
- "Encryption App is enabled and ready" : "A titkosító alkalmazás engedélyezve és készen áll",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Szia!\n\nAz adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'Nextcloud alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Szia!<br><br>Az adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: <strong>%s</strong>.<br><br>Kérlek jelentkezz be a webes felületre és a személyes beállítások 'Nextcloud alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud alap titkosítási modul"
+ "Disabled" : "Kikapcsolva"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/hu_HU.json b/apps/encryption/l10n/hu_HU.json
index a4d3de9da44..fd3595fdfa0 100644
--- a/apps/encryption/l10n/hu_HU.json
+++ b/apps/encryption/l10n/hu_HU.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Jelszó-visszaállítás bekapcsolása",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított fájlok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát",
"Enabled" : "Bekapcsolva",
- "Disabled" : "Kikapcsolva",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Migrálni kell a titkosítási kulcsaidat a rég titkosításról (Nextcloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A titkosító alkalmazás privát kulcsa érvénytelen. A titkosított fájljaidhoz való hozzáféréshez frissítsd a privát kulcsod jelszavát a személyes beállításoknál.",
- "Encryption App is enabled and ready" : "A titkosító alkalmazás engedélyezve és készen áll",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Szia!\n\nAz adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'Nextcloud alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Szia!<br><br>Az adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: <strong>%s</strong>.<br><br>Kérlek jelentkezz be a webes felületre és a személyes beállítások 'Nextcloud alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud alap titkosítási modul"
+ "Disabled" : "Kikapcsolva"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/id.js b/apps/encryption/l10n/id.js
index 3a8a7369397..41a6cfd74a7 100644
--- a/apps/encryption/l10n/id.js
+++ b/apps/encryption/l10n/id.js
@@ -34,6 +34,7 @@ OC.L10N.register(
"The share will expire on %s." : "Pembagian akan berakhir pada %s.",
"Cheers!" : "Horee!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>",
+ "Default encryption module" : "Modul bawaan enkripsi",
"Encrypt the home storage" : "Enkripsi penyimpanan rumah",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Mengaktifkan opsi ini akan mengenkripsi semua berkas yang disimpan pada penyimpanan utama, jika tidak diaktifkan maka hanya berkas pada penyimpanan eksternal saja yang akan dienkripsi.",
"Enable recovery key" : "Aktifkan kunci pemulihan",
@@ -57,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Aktifkan sandi pemulihan:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi",
"Enabled" : "Diaktifkan",
- "Disabled" : "Dinonaktifkan",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (Nextcloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk aplikasi enkripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienkripsi.",
- "Encryption App is enabled and ready" : "Apl enkripsi aktif dan siap",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hai,\n\nadmin telah mengaktifkan enkripsi server-side. Berkas Anda dienkripsi dengan menggunakan sandi '%s'.\n\nMogon log masuk ke tampilan web, masuk ke bagian 'modul enkripsi dasar Nextcloud' dalam pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini ke 'sandi masuk yang lama' dan sandi masuk yang sekarang.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar Nextcloud' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>",
- "Nextcloud basic encryption module" : "Modul enkripsi dasar Nextcloud"
+ "Disabled" : "Dinonaktifkan"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/id.json b/apps/encryption/l10n/id.json
index be04544f582..e653db4f950 100644
--- a/apps/encryption/l10n/id.json
+++ b/apps/encryption/l10n/id.json
@@ -32,6 +32,7 @@
"The share will expire on %s." : "Pembagian akan berakhir pada %s.",
"Cheers!" : "Horee!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>",
+ "Default encryption module" : "Modul bawaan enkripsi",
"Encrypt the home storage" : "Enkripsi penyimpanan rumah",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Mengaktifkan opsi ini akan mengenkripsi semua berkas yang disimpan pada penyimpanan utama, jika tidak diaktifkan maka hanya berkas pada penyimpanan eksternal saja yang akan dienkripsi.",
"Enable recovery key" : "Aktifkan kunci pemulihan",
@@ -55,12 +56,6 @@
"Enable password recovery:" : "Aktifkan sandi pemulihan:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi",
"Enabled" : "Diaktifkan",
- "Disabled" : "Dinonaktifkan",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (Nextcloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk aplikasi enkripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienkripsi.",
- "Encryption App is enabled and ready" : "Apl enkripsi aktif dan siap",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hai,\n\nadmin telah mengaktifkan enkripsi server-side. Berkas Anda dienkripsi dengan menggunakan sandi '%s'.\n\nMogon log masuk ke tampilan web, masuk ke bagian 'modul enkripsi dasar Nextcloud' dalam pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini ke 'sandi masuk yang lama' dan sandi masuk yang sekarang.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar Nextcloud' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>",
- "Nextcloud basic encryption module" : "Modul enkripsi dasar Nextcloud"
+ "Disabled" : "Dinonaktifkan"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/it.js b/apps/encryption/l10n/it.js
index 6a5c7450ed3..f8a88ee68ce 100644
--- a/apps/encryption/l10n/it.js
+++ b/apps/encryption/l10n/it.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Abilita il ripristino della password:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password",
"Enabled" : "Abilitata",
- "Disabled" : "Disabilitata",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (Nextcloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
- "Encryption App is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ciao,\n\nl'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati\ncifrati utilizzando la password '%s'.\n\nAccedi all'interfaccia web, vai alla sezione 'modulo di cifratura base di Nextcloud' dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo 'vecchia password di accesso' e la tua nuova password.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ciao,<br><br>l'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati cifrati utilizzando la password <strong>%s</strong>.<br><br>Accedi all'interfaccia web, vai alla sezione \"modulo di cifratura base di Nextcloud\" dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo \"vecchia password di accesso\" e la tua nuova password.<br><br>",
- "Nextcloud basic encryption module" : "Modulo di cifratura base di Nextcloud"
+ "Disabled" : "Disabilitata"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json
index f7bf9bc9f46..78c47025416 100644
--- a/apps/encryption/l10n/it.json
+++ b/apps/encryption/l10n/it.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Abilita il ripristino della password:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password",
"Enabled" : "Abilitata",
- "Disabled" : "Disabilitata",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (Nextcloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
- "Encryption App is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ciao,\n\nl'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati\ncifrati utilizzando la password '%s'.\n\nAccedi all'interfaccia web, vai alla sezione 'modulo di cifratura base di Nextcloud' dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo 'vecchia password di accesso' e la tua nuova password.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ciao,<br><br>l'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati cifrati utilizzando la password <strong>%s</strong>.<br><br>Accedi all'interfaccia web, vai alla sezione \"modulo di cifratura base di Nextcloud\" dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo \"vecchia password di accesso\" e la tua nuova password.<br><br>",
- "Nextcloud basic encryption module" : "Modulo di cifratura base di Nextcloud"
+ "Disabled" : "Disabilitata"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js
index 8f2a9e0253c..5121897cc05 100644
--- a/apps/encryption/l10n/ja.js
+++ b/apps/encryption/l10n/ja.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "パスワードリカバリを有効に:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。",
"Enabled" : "有効",
- "Disabled" : "無効",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(Nextcloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate' を実行するか、管理者に問い合わせてください。",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
- "Encryption App is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'Nextcloud基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"Nextcloud基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud 基本暗号化モジュール"
+ "Disabled" : "無効"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json
index 28c4a528a94..072e9fbf612 100644
--- a/apps/encryption/l10n/ja.json
+++ b/apps/encryption/l10n/ja.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "パスワードリカバリを有効に:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。",
"Enabled" : "有効",
- "Disabled" : "無効",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(Nextcloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate' を実行するか、管理者に問い合わせてください。",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
- "Encryption App is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'Nextcloud基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"Nextcloud基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud 基本暗号化モジュール"
+ "Disabled" : "無効"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ko.js b/apps/encryption/l10n/ko.js
index 6f2ccc3ca52..acce11543d1 100644
--- a/apps/encryption/l10n/ko.js
+++ b/apps/encryption/l10n/ko.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Missing recovery key password" : "잊어버린 복구 키 암호 복구",
"Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오",
- "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다",
+ "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 일치하지 않습니다",
"Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다",
"Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
"Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다",
@@ -22,6 +22,9 @@ OC.L10N.register(
"The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.",
"Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
+ "Encryption app is enabled and ready" : "암호화 앱이 활성화되었고 준비됨",
"Bad Signature" : "잘못된 서명",
"Missing Signature" : "서명 없음",
"one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호",
@@ -31,6 +34,7 @@ OC.L10N.register(
"The share will expire on %s." : "이 공유는 %s 까지 유지됩니다.",
"Cheers!" : "감사합니다!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "안녕하세요,<br><br>시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 <strong>%s</strong>으(로) 암호화되었습니다.<br><br>웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.<br><br>",
+ "Default encryption module" : "기본 암호화 모듈",
"Encrypt the home storage" : "홈 저장소 암호화",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다",
"Enable recovery key" : "복구 키 활성화",
@@ -43,6 +47,7 @@ OC.L10N.register(
"New recovery key password" : "새 복구 키 암호",
"Repeat new recovery key password" : "새 복구 키 암호 확인",
"Change Password" : "암호 변경",
+ "Basic encryption module" : "기본 암호화 모듈",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
diff --git a/apps/encryption/l10n/ko.json b/apps/encryption/l10n/ko.json
index ee3ccce2869..9d708c55e68 100644
--- a/apps/encryption/l10n/ko.json
+++ b/apps/encryption/l10n/ko.json
@@ -1,7 +1,7 @@
{ "translations": {
"Missing recovery key password" : "잊어버린 복구 키 암호 복구",
"Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오",
- "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다",
+ "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 일치하지 않습니다",
"Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다",
"Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
"Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다",
@@ -20,6 +20,9 @@
"The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.",
"Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
+ "Encryption app is enabled and ready" : "암호화 앱이 활성화되었고 준비됨",
"Bad Signature" : "잘못된 서명",
"Missing Signature" : "서명 없음",
"one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호",
@@ -29,6 +32,7 @@
"The share will expire on %s." : "이 공유는 %s 까지 유지됩니다.",
"Cheers!" : "감사합니다!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "안녕하세요,<br><br>시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 <strong>%s</strong>으(로) 암호화되었습니다.<br><br>웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.<br><br>",
+ "Default encryption module" : "기본 암호화 모듈",
"Encrypt the home storage" : "홈 저장소 암호화",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다",
"Enable recovery key" : "복구 키 활성화",
@@ -41,6 +45,7 @@
"New recovery key password" : "새 복구 키 암호",
"Repeat new recovery key password" : "새 복구 키 암호 확인",
"Change Password" : "암호 변경",
+ "Basic encryption module" : "기본 암호화 모듈",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js
index ea6154366fc..125d8bf8e76 100644
--- a/apps/encryption/l10n/lt_LT.js
+++ b/apps/encryption/l10n/lt_LT.js
@@ -2,26 +2,26 @@ OC.L10N.register(
"encryption",
{
"Missing recovery key password" : "Nėra atstatymo rakto slaptažodžio",
- "Please repeat the recovery key password" : "Pakartokite atstatymo rakto slaptažodį",
+ "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį",
"Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu",
"Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas",
- "Could not enable recovery key. Please check your recovery key password!" : "Neišėjo įjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
+ "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas",
- "Could not disable recovery key. Please check your recovery key password!" : "Neišėjo išjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
+ "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Missing parameters" : "Trūksta parametrų",
"Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį",
- "Please provide a new recovery password" : "Įveskite naują atstatymo slaptažodį",
+ "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį",
"Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį",
- "Password successfully changed." : "Slaptažodis sėkmingai pakeistas",
- "Could not change the password. Maybe the old password was not correct." : "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.",
- "Recovery Key disabled" : "Atstatymo raktas išjungtas",
+ "Password successfully changed." : "Slaptažodis sėkmingai pakeistas.",
+ "Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.",
+ "Recovery Key disabled" : "Atkūrimo raktas išjungtas",
"Recovery Key enabled" : "Atstatymo raktas įjungtas",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atstatymo rakto, bandykite dar kartą arba susisiekite su administratoriumi",
- "Could not update the private key password." : "Nepavyko atnaujinti privataus rakto slaptažodžio.",
- "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, pakartokite.",
- "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis neteisingas, bandykite dar kartą.",
- "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.",
- "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Reikalinga šifravimo raktų migracija iš senos versijos ( ownCloud <= 8.0) į naują. Įvykdykite komanda 'occ encryption:migrate' arba susisiekite su adminstratoriumi",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi",
+ "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.",
+ "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.",
+ "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.",
+ "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi",
"one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.",
"The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
@@ -36,14 +36,14 @@ OC.L10N.register(
"Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį",
"Change Password" : "Pakeisti slaptažodį",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti",
- "Your private key password no longer matches your log-in password." : "Privataus rakto slaptažodis nebe sutampa su prisijungimo slaptažodžiu.",
+ "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.",
"Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
"Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį.",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį",
"Enabled" : "Įjungta",
"Disabled" : "Išjungta"
},
diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json
index e7e56b656aa..58bbc459067 100644
--- a/apps/encryption/l10n/lt_LT.json
+++ b/apps/encryption/l10n/lt_LT.json
@@ -1,25 +1,25 @@
{ "translations": {
"Missing recovery key password" : "Nėra atstatymo rakto slaptažodžio",
- "Please repeat the recovery key password" : "Pakartokite atstatymo rakto slaptažodį",
+ "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį",
"Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu",
"Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas",
- "Could not enable recovery key. Please check your recovery key password!" : "Neišėjo įjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
+ "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas",
- "Could not disable recovery key. Please check your recovery key password!" : "Neišėjo išjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
+ "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!",
"Missing parameters" : "Trūksta parametrų",
"Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį",
- "Please provide a new recovery password" : "Įveskite naują atstatymo slaptažodį",
+ "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį",
"Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį",
- "Password successfully changed." : "Slaptažodis sėkmingai pakeistas",
- "Could not change the password. Maybe the old password was not correct." : "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.",
- "Recovery Key disabled" : "Atstatymo raktas išjungtas",
+ "Password successfully changed." : "Slaptažodis sėkmingai pakeistas.",
+ "Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.",
+ "Recovery Key disabled" : "Atkūrimo raktas išjungtas",
"Recovery Key enabled" : "Atstatymo raktas įjungtas",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atstatymo rakto, bandykite dar kartą arba susisiekite su administratoriumi",
- "Could not update the private key password." : "Nepavyko atnaujinti privataus rakto slaptažodžio.",
- "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, pakartokite.",
- "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis neteisingas, bandykite dar kartą.",
- "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.",
- "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Reikalinga šifravimo raktų migracija iš senos versijos ( ownCloud <= 8.0) į naują. Įvykdykite komanda 'occ encryption:migrate' arba susisiekite su adminstratoriumi",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi",
+ "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.",
+ "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.",
+ "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.",
+ "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi",
"one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.",
"The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
@@ -34,14 +34,14 @@
"Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį",
"Change Password" : "Pakeisti slaptažodį",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti",
- "Your private key password no longer matches your log-in password." : "Privataus rakto slaptažodis nebe sutampa su prisijungimo slaptažodžiu.",
+ "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.",
"Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
"Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį.",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį",
"Enabled" : "Įjungta",
"Disabled" : "Išjungta"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
diff --git a/apps/encryption/l10n/nb_NO.js b/apps/encryption/l10n/nb_NO.js
index 5d279a493b5..3862b035fcb 100644
--- a/apps/encryption/l10n/nb_NO.js
+++ b/apps/encryption/l10n/nb_NO.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Aktiver gjenoppretting av passord:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt.",
"Enabled" : "Aktiv",
- "Disabled" : "Inaktiv",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (Nextcloud <= 8.0) til den nye. Vennligst kjør 'occ encryption:migrate' eller kontakt en administrator",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
- "Encryption App is enabled and ready" : "Krypteringsappen er aktivert og klar",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nAdministratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet '%s'.\n\nVennligst logg inn på web-grensesnittet, gå til seksjonen 'grunnleggende krypteringsmodul' i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet 'gammelt påloggingspassord' sammen med ditt nåværende påloggingspassord.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Vennligst logg inn på web-grensesnittet, gå til seksjonen \"grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud grunnleggende krypteringsmodul"
+ "Disabled" : "Inaktiv"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/nb_NO.json b/apps/encryption/l10n/nb_NO.json
index da8182789ae..af83288309c 100644
--- a/apps/encryption/l10n/nb_NO.json
+++ b/apps/encryption/l10n/nb_NO.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Aktiver gjenoppretting av passord:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt.",
"Enabled" : "Aktiv",
- "Disabled" : "Inaktiv",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (Nextcloud <= 8.0) til den nye. Vennligst kjør 'occ encryption:migrate' eller kontakt en administrator",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
- "Encryption App is enabled and ready" : "Krypteringsappen er aktivert og klar",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nAdministratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet '%s'.\n\nVennligst logg inn på web-grensesnittet, gå til seksjonen 'grunnleggende krypteringsmodul' i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet 'gammelt påloggingspassord' sammen med ditt nåværende påloggingspassord.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Vennligst logg inn på web-grensesnittet, gå til seksjonen \"grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>",
- "Nextcloud basic encryption module" : "Nextcloud grunnleggende krypteringsmodul"
+ "Disabled" : "Inaktiv"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/nl.js b/apps/encryption/l10n/nl.js
index 190424b9041..b071020af66 100644
--- a/apps/encryption/l10n/nl.js
+++ b/apps/encryption/l10n/nl.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Activeren wachtwoord herstel:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om je versleutelde bestanden te benaderen als je wachtwoord kwijt is",
"Enabled" : "Geactiveerd",
- "Disabled" : "Gedeactiveerd",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Je moet je cryptosleutels van de oude versleuteling (Nextcloud <= 8.0) migreren naar de nieuwe. Start 'occ encryption:migrate' of neem contact op met je beheerder",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor de crypto app. Werk het privésleutel wachtwoord bij in je persoonlijke instellingen om opnieuw toegang te krijgen tot je versleutelde bestanden.",
- "Encryption App is enabled and ready" : "Encryptie app is geactiveerd en gereed",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallo daar,\n\nde beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord '%s'.\n\nLogin op de webinterface, ga naar de sectie 'Nextcloud basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het 'oude inlog wachtwoord' veld in te vullen alsmede in je huidige inlogwachtwoord.\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo daar,<br><br>de beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord <strong>%s</strong>.<br><br>Login op de webinterface, ga naar 'Nextcloud basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in je huidige inlogwachtwoord.<br><br>",
- "Nextcloud basic encryption module" : "Nextc;oud basis versleutelingsmodule"
+ "Disabled" : "Gedeactiveerd"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/nl.json b/apps/encryption/l10n/nl.json
index f28ec926b3b..1940a92b797 100644
--- a/apps/encryption/l10n/nl.json
+++ b/apps/encryption/l10n/nl.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Activeren wachtwoord herstel:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om je versleutelde bestanden te benaderen als je wachtwoord kwijt is",
"Enabled" : "Geactiveerd",
- "Disabled" : "Gedeactiveerd",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Je moet je cryptosleutels van de oude versleuteling (Nextcloud <= 8.0) migreren naar de nieuwe. Start 'occ encryption:migrate' of neem contact op met je beheerder",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor de crypto app. Werk het privésleutel wachtwoord bij in je persoonlijke instellingen om opnieuw toegang te krijgen tot je versleutelde bestanden.",
- "Encryption App is enabled and ready" : "Encryptie app is geactiveerd en gereed",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallo daar,\n\nde beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord '%s'.\n\nLogin op de webinterface, ga naar de sectie 'Nextcloud basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het 'oude inlog wachtwoord' veld in te vullen alsmede in je huidige inlogwachtwoord.\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo daar,<br><br>de beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord <strong>%s</strong>.<br><br>Login op de webinterface, ga naar 'Nextcloud basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in je huidige inlogwachtwoord.<br><br>",
- "Nextcloud basic encryption module" : "Nextc;oud basis versleutelingsmodule"
+ "Disabled" : "Gedeactiveerd"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/pl.js b/apps/encryption/l10n/pl.js
index 640f925426a..2b0e29b7c48 100644
--- a/apps/encryption/l10n/pl.js
+++ b/apps/encryption/l10n/pl.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Włącz hasło odzyskiwania:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła",
"Enabled" : "Włączone",
- "Disabled" : "Wyłączone",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musisz przenieść swoje klucze szyfrowania ze starego sposobu szyfrowania (Nextcloud <= 8,0) na nowy. Proszę uruchomić 'occ encryption:migrate' lub skontaktować się z administratorem",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Nieprawidłowy klucz prywatny do szyfrowania aplikacji. Należy zaktualizować hasło klucza prywatnego w ustawieniach osobistych, aby odzyskać dostęp do zaszyfrowanych plików.",
- "Encryption App is enabled and ready" : "Szyfrowanie aplikacji jest włączone i gotowe",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hej tam, \n\nadmin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła '%s'.\n\nProszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hej tam,<br><br>admin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła <strong>%s</strong>.<br><br>Proszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.<br><br>",
- "Nextcloud basic encryption module" : "Podstawowy moduł szyfrujący Nextcloud"
+ "Disabled" : "Wyłączone"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/encryption/l10n/pl.json b/apps/encryption/l10n/pl.json
index eb1b709b2b2..f9f76af7555 100644
--- a/apps/encryption/l10n/pl.json
+++ b/apps/encryption/l10n/pl.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Włącz hasło odzyskiwania:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła",
"Enabled" : "Włączone",
- "Disabled" : "Wyłączone",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musisz przenieść swoje klucze szyfrowania ze starego sposobu szyfrowania (Nextcloud <= 8,0) na nowy. Proszę uruchomić 'occ encryption:migrate' lub skontaktować się z administratorem",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Nieprawidłowy klucz prywatny do szyfrowania aplikacji. Należy zaktualizować hasło klucza prywatnego w ustawieniach osobistych, aby odzyskać dostęp do zaszyfrowanych plików.",
- "Encryption App is enabled and ready" : "Szyfrowanie aplikacji jest włączone i gotowe",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hej tam, \n\nadmin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła '%s'.\n\nProszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hej tam,<br><br>admin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła <strong>%s</strong>.<br><br>Proszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.<br><br>",
- "Nextcloud basic encryption module" : "Podstawowy moduł szyfrujący Nextcloud"
+ "Disabled" : "Wyłączone"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js
index 0e9f0d2b003..76feda658a5 100644
--- a/apps/encryption/l10n/pt_BR.js
+++ b/apps/encryption/l10n/pt_BR.js
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Habilitar recuperação de senha:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha",
"Enabled" : "Habilitado",
- "Disabled" : "Desabilitado",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Voce precisará migrar suas chaves de criptografia de uma chave antiga (Nextcloud <=8.0) para uma nova. Por favor execute 'occ encryption:migrate' ou contate seu administrador",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para criptografia do App. Por favor, atualize a senha da sua chave privada no menu de configurações pessoais para recuperar o acesso dos seus arquivos criptografamos",
- "Encryption App is enabled and ready" : "Criptografia de App esta habilitada e pronta",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ola\n\nO admin habilitou a criptografia do lado-servidor. Seus arquivos serão criptografados usando a senha '%s'\n\nPor favor, acessa a interface web, vá até a sessão criptografia básica Nexcloud, atualize seus dados e senha\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ola<br><br>,O admin habilitou a criptografia do lado-servidor. Seus arquivos serão criptografados usando a senha<strong> '%s'</strong>. Por favor, acessa a interface web, vá até a sessão criptografia básica Nexcloud, atualize seus dados e senha.<br><br>",
- "Nextcloud basic encryption module" : "Módulo de criptografia básico"
+ "Disabled" : "Desabilitado"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json
index 26228df954e..d38b7b2dfa5 100644
--- a/apps/encryption/l10n/pt_BR.json
+++ b/apps/encryption/l10n/pt_BR.json
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Habilitar recuperação de senha:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha",
"Enabled" : "Habilitado",
- "Disabled" : "Desabilitado",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Voce precisará migrar suas chaves de criptografia de uma chave antiga (Nextcloud <=8.0) para uma nova. Por favor execute 'occ encryption:migrate' ou contate seu administrador",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para criptografia do App. Por favor, atualize a senha da sua chave privada no menu de configurações pessoais para recuperar o acesso dos seus arquivos criptografamos",
- "Encryption App is enabled and ready" : "Criptografia de App esta habilitada e pronta",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ola\n\nO admin habilitou a criptografia do lado-servidor. Seus arquivos serão criptografados usando a senha '%s'\n\nPor favor, acessa a interface web, vá até a sessão criptografia básica Nexcloud, atualize seus dados e senha\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ola<br><br>,O admin habilitou a criptografia do lado-servidor. Seus arquivos serão criptografados usando a senha<strong> '%s'</strong>. Por favor, acessa a interface web, vá até a sessão criptografia básica Nexcloud, atualize seus dados e senha.<br><br>",
- "Nextcloud basic encryption module" : "Módulo de criptografia básico"
+ "Disabled" : "Desabilitado"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js
index 7fcda371f07..a20e361bc61 100644
--- a/apps/encryption/l10n/ru.js
+++ b/apps/encryption/l10n/ru.js
@@ -14,8 +14,8 @@ OC.L10N.register(
"Please repeat the new recovery password" : "Повторите новый пароль восстановления",
"Password successfully changed." : "Пароль успешно изменен.",
"Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно, указанный старый пароль не верен.",
- "Recovery Key disabled" : "Ключ Восстановления отключен",
- "Recovery Key enabled" : "Ключ Восстановления включен",
+ "Recovery Key disabled" : "Ключ восстановления отключен",
+ "Recovery Key enabled" : "Ключ восстановления включен",
"Could not enable the recovery key, please try again or contact your administrator" : "Не возможно задействовать ключ восстановления, попробуйте снова или обратитесь к вашему системному администатору",
"Could not update the private key password." : "Невозможно обновить пароль закрытого ключа.",
"The old password was not correct, please try again." : "Указан неверный старый пароль, повторите попытку.",
@@ -58,12 +58,6 @@ OC.L10N.register(
"Enable password recovery:" : "Включить восстановление пароля:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля",
"Enabled" : "Включено",
- "Disabled" : "Отключено",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста, запустите команду 'occ encryption:migrate' или обратитесь к администратору",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.",
- "Encryption App is enabled and ready" : "Приложение шифрования включено и готово к использованию",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Обратите внимание,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы паролем '%s'.\n\nВойдите в веб-приложение, найдите в личных настройках раздел 'простой модуль шифрования Nextcloud' и обновите ваш пароль шифрования.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Обратите внимание,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы паролем <strong>%s</strong>.<br><br>Войдите в веб-приложение, найдите в личных настройках раздел 'простой модуль шифрования Nextcloud' и обновите ваш пароль шифрования.<br><br>",
- "Nextcloud basic encryption module" : "Простой модуль шифрования Nextcloud"
+ "Disabled" : "Отключено"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json
index 95f69c395a8..1c1c3abb0de 100644
--- a/apps/encryption/l10n/ru.json
+++ b/apps/encryption/l10n/ru.json
@@ -12,8 +12,8 @@
"Please repeat the new recovery password" : "Повторите новый пароль восстановления",
"Password successfully changed." : "Пароль успешно изменен.",
"Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно, указанный старый пароль не верен.",
- "Recovery Key disabled" : "Ключ Восстановления отключен",
- "Recovery Key enabled" : "Ключ Восстановления включен",
+ "Recovery Key disabled" : "Ключ восстановления отключен",
+ "Recovery Key enabled" : "Ключ восстановления включен",
"Could not enable the recovery key, please try again or contact your administrator" : "Не возможно задействовать ключ восстановления, попробуйте снова или обратитесь к вашему системному администатору",
"Could not update the private key password." : "Невозможно обновить пароль закрытого ключа.",
"The old password was not correct, please try again." : "Указан неверный старый пароль, повторите попытку.",
@@ -56,12 +56,6 @@
"Enable password recovery:" : "Включить восстановление пароля:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля",
"Enabled" : "Включено",
- "Disabled" : "Отключено",
- "You need to migrate your encryption keys from the old encryption (Nextcloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста, запустите команду 'occ encryption:migrate' или обратитесь к администратору",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.",
- "Encryption App is enabled and ready" : "Приложение шифрования включено и готово к использованию",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'Nextcloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Обратите внимание,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы паролем '%s'.\n\nВойдите в веб-приложение, найдите в личных настройках раздел 'простой модуль шифрования Nextcloud' и обновите ваш пароль шифрования.\n\n",
- "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Nextcloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Обратите внимание,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы паролем <strong>%s</strong>.<br><br>Войдите в веб-приложение, найдите в личных настройках раздел 'простой модуль шифрования Nextcloud' и обновите ваш пароль шифрования.<br><br>",
- "Nextcloud basic encryption module" : "Простой модуль шифрования Nextcloud"
+ "Disabled" : "Отключено"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/sk_SK.js b/apps/encryption/l10n/sk_SK.js
index 798a5939ff9..7678ed60ac7 100644
--- a/apps/encryption/l10n/sk_SK.js
+++ b/apps/encryption/l10n/sk_SK.js
@@ -22,11 +22,19 @@ OC.L10N.register(
"The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.",
"Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Neplatný súkromný kľúč pre šifrovanie. Aktualizujte prosím heslo vášho súkromného kľúča v osobných nastaveniach pre obnovenie prístupu k vaším šifrovaným súborom.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia pre šifrovanie je povolená, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
+ "Encryption app is enabled and ready" : "Aplikácia pre šifrovanie je povolená a pripravená",
+ "Bad Signature" : "Zlý podpis",
+ "Missing Signature" : "Chýbajúci podpis",
"one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné rozšifrovať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné prečítať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Dobrý deň,\n\nAdministrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla '%s'.\n\nPrihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.\n\n",
"The share will expire on %s." : "Sprístupnenie vyprší %s.",
"Cheers!" : "Pekný deň!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Dobrý deň,<br><br>Administrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla <strong>%s</strong>.<br><br>Prihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.<br><br>",
+ "Default encryption module" : "Predvolený šifrovací modul",
"Encrypt the home storage" : "Šifrovať domáce úložisko",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Zapnutím tejto voľby zašifrujete všetky súbory v hlavnom úložisku, v opačnom prípade zašifrujete iba súbory na externom úložisku.",
"Enable recovery key" : "Povoliť obnovovací kľúč",
@@ -39,6 +47,7 @@ OC.L10N.register(
"New recovery key password" : "Nové heslo obnovovacieho kľúča",
"Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča",
"Change Password" : "Zmeniť heslo",
+ "Basic encryption module" : "Základný šifrovací modul",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
diff --git a/apps/encryption/l10n/sk_SK.json b/apps/encryption/l10n/sk_SK.json
index cf259c2223d..91fbf2aa577 100644
--- a/apps/encryption/l10n/sk_SK.json
+++ b/apps/encryption/l10n/sk_SK.json
@@ -20,11 +20,19 @@
"The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.",
"Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Neplatný súkromný kľúč pre šifrovanie. Aktualizujte prosím heslo vášho súkromného kľúča v osobných nastaveniach pre obnovenie prístupu k vaším šifrovaným súborom.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia pre šifrovanie je povolená, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
+ "Encryption app is enabled and ready" : "Aplikácia pre šifrovanie je povolená a pripravená",
+ "Bad Signature" : "Zlý podpis",
+ "Missing Signature" : "Chýbajúci podpis",
"one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné rozšifrovať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné prečítať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Dobrý deň,\n\nAdministrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla '%s'.\n\nPrihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.\n\n",
"The share will expire on %s." : "Sprístupnenie vyprší %s.",
"Cheers!" : "Pekný deň!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Dobrý deň,<br><br>Administrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla <strong>%s</strong>.<br><br>Prihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.<br><br>",
+ "Default encryption module" : "Predvolený šifrovací modul",
"Encrypt the home storage" : "Šifrovať domáce úložisko",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Zapnutím tejto voľby zašifrujete všetky súbory v hlavnom úložisku, v opačnom prípade zašifrujete iba súbory na externom úložisku.",
"Enable recovery key" : "Povoliť obnovovací kľúč",
@@ -37,6 +45,7 @@
"New recovery key password" : "Nové heslo obnovovacieho kľúča",
"Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča",
"Change Password" : "Zmeniť heslo",
+ "Basic encryption module" : "Základný šifrovací modul",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js
index 814cf35f52f..f730f904533 100644
--- a/apps/encryption/l10n/sq.js
+++ b/apps/encryption/l10n/sq.js
@@ -22,6 +22,9 @@ OC.L10N.register(
"The current log-in password was not correct, please try again." : "Fjalëkalimi i tanishëm i hyrjeve s’qe i saktë, ju lutemi, riprovoni.",
"Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen",
+ "Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati",
"Bad Signature" : "Nënshkrim i Keq",
"Missing Signature" : "Mungon Nënshkrimi",
"one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi",
@@ -31,6 +34,7 @@ OC.L10N.register(
"The share will expire on %s." : "Ndarja do të skadojë më %s.",
"Cheers!" : "Gëzuar!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Njatjeta,<br><br>përgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin <strong>%s</strong>.<br><br>Ju lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja \"modul i thjeshtëpër fshehtëzime\" e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha \"old log-in password\" dhe fjalëkalimin tuaj të tanishëm për hyrjet.<br><br>",
+ "Default encryption module" : "Modul i parazgjedhur fshehtëzimi",
"Encrypt the home storage" : "Fshehtëzo depozitën bazë",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivizimi i kësaj mundësie fshehtëzon krejt kartelat e depozituara në depon bazë, përndryshe do të fshehtëzohen vetëm kartelat në depozitën e jashtme",
"Enable recovery key" : "Aktivizo kyç rimarrjesh",
@@ -43,6 +47,7 @@ OC.L10N.register(
"New recovery key password" : "Fjalëkalimi i ri kyçi rimarrjesh",
"Repeat new recovery key password" : "Rijepni fjalëkalimin e ri kyçi rimarrjesh",
"Change Password" : "Ndryshoni Fjalëkalimin",
+ "Basic encryption module" : "Modul i thjeshtë fshehtëzimesh",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen",
"Your private key password no longer matches your log-in password." : "Fjalëkalimi juaj për kyçe privatë s’përputhet më me fjalëkalimin për hyrjet.",
"Set your old private key password to your current log-in password:" : "Fjalëkalimit të vjetër të kyçit privat jepini vlerën e fjalëkalimit tuaj të tanishëm për hyrjet:",
diff --git a/apps/encryption/l10n/sq.json b/apps/encryption/l10n/sq.json
index 4a2ad0ce664..f844f0b54eb 100644
--- a/apps/encryption/l10n/sq.json
+++ b/apps/encryption/l10n/sq.json
@@ -20,6 +20,9 @@
"The current log-in password was not correct, please try again." : "Fjalëkalimi i tanishëm i hyrjeve s’qe i saktë, ju lutemi, riprovoni.",
"Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen",
+ "Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati",
"Bad Signature" : "Nënshkrim i Keq",
"Missing Signature" : "Mungon Nënshkrimi",
"one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi",
@@ -29,6 +32,7 @@
"The share will expire on %s." : "Ndarja do të skadojë më %s.",
"Cheers!" : "Gëzuar!",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Njatjeta,<br><br>përgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin <strong>%s</strong>.<br><br>Ju lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja \"modul i thjeshtëpër fshehtëzime\" e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha \"old log-in password\" dhe fjalëkalimin tuaj të tanishëm për hyrjet.<br><br>",
+ "Default encryption module" : "Modul i parazgjedhur fshehtëzimi",
"Encrypt the home storage" : "Fshehtëzo depozitën bazë",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivizimi i kësaj mundësie fshehtëzon krejt kartelat e depozituara në depon bazë, përndryshe do të fshehtëzohen vetëm kartelat në depozitën e jashtme",
"Enable recovery key" : "Aktivizo kyç rimarrjesh",
@@ -41,6 +45,7 @@
"New recovery key password" : "Fjalëkalimi i ri kyçi rimarrjesh",
"Repeat new recovery key password" : "Rijepni fjalëkalimin e ri kyçi rimarrjesh",
"Change Password" : "Ndryshoni Fjalëkalimin",
+ "Basic encryption module" : "Modul i thjeshtë fshehtëzimesh",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen",
"Your private key password no longer matches your log-in password." : "Fjalëkalimi juaj për kyçe privatë s’përputhet më me fjalëkalimin për hyrjet.",
"Set your old private key password to your current log-in password:" : "Fjalëkalimit të vjetër të kyçit privat jepini vlerën e fjalëkalimit tuaj të tanishëm për hyrjet:",
diff --git a/apps/encryption/l10n/sv.js b/apps/encryption/l10n/sv.js
index 689523abc04..2a5893af8bf 100644
--- a/apps/encryption/l10n/sv.js
+++ b/apps/encryption/l10n/sv.js
@@ -22,25 +22,32 @@ OC.L10N.register(
"The current log-in password was not correct, please try again." : "Det nuvarande inloggningslösenordet var inte korrekt. Vänligen försök igen.",
"Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (ownCloud <= 8.0) till den nya. Kör 'occ encryption:migrate' eller kontakta din administratör",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel för krypteringsappen. Uppdatera din privata nyckels lösenord i dina personliga inställningar för att återställa tillgång till dina krypterade filer.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsappen är aktiverad men dina krypteringsnycklar har inte aktiverats, logga ut och logga in igen.",
+ "Encryption app is enabled and ready" : "Krypteringsfunktionen är aktiverad och redo",
"Bad Signature" : "Dålig signatur",
"Missing Signature" : "Saknar signatur",
"one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ej dekryptera denna fil, förmodligen är det en delad fil. Be ägaren av filen att dela den med dig.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Filen kan inte läsas, troligtvis är det en delad fil. Be ägaren av filen att dela den med dig igen.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallå där, \n\nAdministratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: %s\n\nGå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.\n\n",
"The share will expire on %s." : "Utdelningen kommer att upphöra %s.",
"Cheers!" : "Ha de fint!",
- "Encrypt the home storage" : "Kryptera hemmalagringen",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallå där, <br> Administratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: <strong>%s</ strong>. <br> Gå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.<br>",
+ "Default encryption module" : "Krypteringsfunktion",
+ "Encrypt the home storage" : "Kryptera alla filer i molnet",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av det här alternativet krypterar alla filer som är lagrade på huvudlagringsplatsen, annars kommer bara filer på extern lagringsplats att krypteras",
"Enable recovery key" : "Aktivera återställningsnyckel",
"Disable recovery key" : "Inaktivera återställningsnyckel",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Återställningsnyckeln är en extra krypteringsnyckel som används för att kryptera filer. Den gör det möjligt att återställa en användares filer om användaren glömmer sitt lösenord.",
- "Recovery key password" : "Lösenord för återställningsnyckel",
- "Repeat recovery key password" : "Upprepa lösenord för återställningsnyckeln",
- "Change recovery key password:" : "Ändra lösenord för återställningsnyckel:",
- "Old recovery key password" : "Gammalt lösenord för återställningsnyckeln",
- "New recovery key password" : "Nytt lösenord för återställningsnyckeln",
- "Repeat new recovery key password" : "Upprepa nytt lösenord för återställningsnyckeln",
+ "Recovery key password" : "Ange lösenord",
+ "Repeat recovery key password" : "Repetera lösenord",
+ "Change recovery key password:" : "Ändra lösenord för återställningsnyckel",
+ "Old recovery key password" : "Gammalt lösenord",
+ "New recovery key password" : "Nytt lösenord",
+ "Repeat new recovery key password" : "Repetera lösenord",
"Change Password" : "Byt lösenord",
+ "Basic encryption module" : "Kryptering",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen",
"Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.",
"Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:",
@@ -48,7 +55,7 @@ OC.L10N.register(
"Old log-in password" : "Gammalt inloggningslösenord",
"Current log-in password" : "Nuvarande inloggningslösenord",
"Update Private Key Password" : "Uppdatera lösenordet för din privata nyckel",
- "Enable password recovery:" : "Aktivera lösenordsåterställning",
+ "Enable password recovery:" : "Aktivera lösenordsåterställning:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord",
"Enabled" : "Aktiverad",
"Disabled" : "Inaktiverad"
diff --git a/apps/encryption/l10n/sv.json b/apps/encryption/l10n/sv.json
index c3a748c5d2d..f0e64f2c807 100644
--- a/apps/encryption/l10n/sv.json
+++ b/apps/encryption/l10n/sv.json
@@ -20,25 +20,32 @@
"The current log-in password was not correct, please try again." : "Det nuvarande inloggningslösenordet var inte korrekt. Vänligen försök igen.",
"Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (ownCloud <= 8.0) till den nya. Kör 'occ encryption:migrate' eller kontakta din administratör",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel för krypteringsappen. Uppdatera din privata nyckels lösenord i dina personliga inställningar för att återställa tillgång till dina krypterade filer.",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsappen är aktiverad men dina krypteringsnycklar har inte aktiverats, logga ut och logga in igen.",
+ "Encryption app is enabled and ready" : "Krypteringsfunktionen är aktiverad och redo",
"Bad Signature" : "Dålig signatur",
"Missing Signature" : "Saknar signatur",
"one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ej dekryptera denna fil, förmodligen är det en delad fil. Be ägaren av filen att dela den med dig.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Filen kan inte läsas, troligtvis är det en delad fil. Be ägaren av filen att dela den med dig igen.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallå där, \n\nAdministratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: %s\n\nGå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.\n\n",
"The share will expire on %s." : "Utdelningen kommer att upphöra %s.",
"Cheers!" : "Ha de fint!",
- "Encrypt the home storage" : "Kryptera hemmalagringen",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallå där, <br> Administratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: <strong>%s</ strong>. <br> Gå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.<br>",
+ "Default encryption module" : "Krypteringsfunktion",
+ "Encrypt the home storage" : "Kryptera alla filer i molnet",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av det här alternativet krypterar alla filer som är lagrade på huvudlagringsplatsen, annars kommer bara filer på extern lagringsplats att krypteras",
"Enable recovery key" : "Aktivera återställningsnyckel",
"Disable recovery key" : "Inaktivera återställningsnyckel",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Återställningsnyckeln är en extra krypteringsnyckel som används för att kryptera filer. Den gör det möjligt att återställa en användares filer om användaren glömmer sitt lösenord.",
- "Recovery key password" : "Lösenord för återställningsnyckel",
- "Repeat recovery key password" : "Upprepa lösenord för återställningsnyckeln",
- "Change recovery key password:" : "Ändra lösenord för återställningsnyckel:",
- "Old recovery key password" : "Gammalt lösenord för återställningsnyckeln",
- "New recovery key password" : "Nytt lösenord för återställningsnyckeln",
- "Repeat new recovery key password" : "Upprepa nytt lösenord för återställningsnyckeln",
+ "Recovery key password" : "Ange lösenord",
+ "Repeat recovery key password" : "Repetera lösenord",
+ "Change recovery key password:" : "Ändra lösenord för återställningsnyckel",
+ "Old recovery key password" : "Gammalt lösenord",
+ "New recovery key password" : "Nytt lösenord",
+ "Repeat new recovery key password" : "Repetera lösenord",
"Change Password" : "Byt lösenord",
+ "Basic encryption module" : "Kryptering",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen",
"Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.",
"Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:",
@@ -46,7 +53,7 @@
"Old log-in password" : "Gammalt inloggningslösenord",
"Current log-in password" : "Nuvarande inloggningslösenord",
"Update Private Key Password" : "Uppdatera lösenordet för din privata nyckel",
- "Enable password recovery:" : "Aktivera lösenordsåterställning",
+ "Enable password recovery:" : "Aktivera lösenordsåterställning:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord",
"Enabled" : "Aktiverad",
"Disabled" : "Inaktiverad"
diff --git a/apps/encryption/l10n/zh_CN.js b/apps/encryption/l10n/zh_CN.js
index e2f9212c8cf..729bf2a962c 100644
--- a/apps/encryption/l10n/zh_CN.js
+++ b/apps/encryption/l10n/zh_CN.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Missing recovery key password" : "丢失的回复密钥",
"Please repeat the recovery key password" : "请替换恢复密钥",
+ "Repeated recovery key password does not match the provided recovery key password" : "重复的恢复密钥密码与提供的恢复密钥密码不匹配",
"Recovery key successfully enabled" : "恢复密钥成功启用",
"Could not enable recovery key. Please check your recovery key password!" : "不能启用恢复密钥。请检查恢复密钥密码!",
"Recovery key successfully disabled" : "恢复密钥成功禁用",
@@ -13,18 +14,43 @@ OC.L10N.register(
"Please repeat the new recovery password" : "请替换新的恢复密码",
"Password successfully changed." : "密码修改成功。",
"Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。",
+ "Recovery Key disabled" : "恢复密钥已禁用",
+ "Recovery Key enabled" : "恢复密钥已启用",
+ "Could not enable the recovery key, please try again or contact your administrator" : "无法启用恢复密钥,请重试或联系您的管理员.",
"Could not update the private key password." : "不能更新私有密钥。",
"The old password was not correct, please try again." : "原始密码错误,请重试。",
"The current log-in password was not correct, please try again." : "当前登录密码不正确,请重试。",
"Private key password successfully updated." : "私钥密码成功更新。",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。",
- "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "您需要从旧版本 (ownCloud <= 8.0) 迁移您的加密密钥. 请运行 'occ encryption:migrate' 或联系您的管理员.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的加密应用程序私钥。请在您的个人设置中更新您的私钥密码,以恢复对加密文件的访问。",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录",
+ "Encryption app is enabled and ready" : "加密应用程序已启用并准备就绪",
+ "Bad Signature" : "签名已损坏",
+ "Missing Signature" : "签名已丢失",
+ "one-time password for server-side-encryption" : "用于服务器端加密的一次性密码",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您分享这个文件。",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n",
"The share will expire on %s." : "此分享将在 %s 过期。",
"Cheers!" : "干杯!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "您好,<br><br>管理员已启用服务器端加密,您的文件已使用密码 <strong>%s</strong> 加密。<br><br>\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。<br><br>",
+ "Default encryption module" : "默认加密模块",
+ "Encrypt the home storage" : "加密主目录储存",
+ "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "启用此选项将加密存储在主存储上的所有文件,否则只会加密外部存储上的文件.",
+ "Enable recovery key" : "启用恢复密钥",
+ "Disable recovery key" : "禁用恢复密钥",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "恢复密钥是用于加密文件的额外加密密钥.如果用户忘记了密码,它允许用户恢复文件.",
"Recovery key password" : "恢复密钥密码",
+ "Repeat recovery key password" : "重复恢复密码",
"Change recovery key password:" : "更改恢复密钥密码",
+ "Old recovery key password" : "旧的恢复密码",
+ "New recovery key password" : "新恢复密码",
+ "Repeat new recovery key password" : "重复新的恢复密码",
"Change Password" : "修改密码",
+ "Basic encryption module" : "基础加密模块",
+ "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
+ "Your private key password no longer matches your log-in password." : "您的私钥不再与您的登录密码匹配.",
+ "Set your old private key password to your current log-in password:" : "将的私钥设置为当前登录密码:",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您记不住旧的密码,您可以请求管理员恢复您的文件。",
"Old log-in password" : "旧登录密码",
"Current log-in password" : "当前登录密码",
diff --git a/apps/encryption/l10n/zh_CN.json b/apps/encryption/l10n/zh_CN.json
index 8ac6c9eef01..8fc58e8824e 100644
--- a/apps/encryption/l10n/zh_CN.json
+++ b/apps/encryption/l10n/zh_CN.json
@@ -1,6 +1,7 @@
{ "translations": {
"Missing recovery key password" : "丢失的回复密钥",
"Please repeat the recovery key password" : "请替换恢复密钥",
+ "Repeated recovery key password does not match the provided recovery key password" : "重复的恢复密钥密码与提供的恢复密钥密码不匹配",
"Recovery key successfully enabled" : "恢复密钥成功启用",
"Could not enable recovery key. Please check your recovery key password!" : "不能启用恢复密钥。请检查恢复密钥密码!",
"Recovery key successfully disabled" : "恢复密钥成功禁用",
@@ -11,18 +12,43 @@
"Please repeat the new recovery password" : "请替换新的恢复密码",
"Password successfully changed." : "密码修改成功。",
"Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。",
+ "Recovery Key disabled" : "恢复密钥已禁用",
+ "Recovery Key enabled" : "恢复密钥已启用",
+ "Could not enable the recovery key, please try again or contact your administrator" : "无法启用恢复密钥,请重试或联系您的管理员.",
"Could not update the private key password." : "不能更新私有密钥。",
"The old password was not correct, please try again." : "原始密码错误,请重试。",
"The current log-in password was not correct, please try again." : "当前登录密码不正确,请重试。",
"Private key password successfully updated." : "私钥密码成功更新。",
- "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。",
- "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "您需要从旧版本 (ownCloud <= 8.0) 迁移您的加密密钥. 请运行 'occ encryption:migrate' 或联系您的管理员.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的加密应用程序私钥。请在您的个人设置中更新您的私钥密码,以恢复对加密文件的访问。",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录",
+ "Encryption app is enabled and ready" : "加密应用程序已启用并准备就绪",
+ "Bad Signature" : "签名已损坏",
+ "Missing Signature" : "签名已丢失",
+ "one-time password for server-side-encryption" : "用于服务器端加密的一次性密码",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您分享这个文件。",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n",
"The share will expire on %s." : "此分享将在 %s 过期。",
"Cheers!" : "干杯!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "您好,<br><br>管理员已启用服务器端加密,您的文件已使用密码 <strong>%s</strong> 加密。<br><br>\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。<br><br>",
+ "Default encryption module" : "默认加密模块",
+ "Encrypt the home storage" : "加密主目录储存",
+ "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "启用此选项将加密存储在主存储上的所有文件,否则只会加密外部存储上的文件.",
+ "Enable recovery key" : "启用恢复密钥",
+ "Disable recovery key" : "禁用恢复密钥",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "恢复密钥是用于加密文件的额外加密密钥.如果用户忘记了密码,它允许用户恢复文件.",
"Recovery key password" : "恢复密钥密码",
+ "Repeat recovery key password" : "重复恢复密码",
"Change recovery key password:" : "更改恢复密钥密码",
+ "Old recovery key password" : "旧的恢复密码",
+ "New recovery key password" : "新恢复密码",
+ "Repeat new recovery key password" : "重复新的恢复密码",
"Change Password" : "修改密码",
+ "Basic encryption module" : "基础加密模块",
+ "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
+ "Your private key password no longer matches your log-in password." : "您的私钥不再与您的登录密码匹配.",
+ "Set your old private key password to your current log-in password:" : "将的私钥设置为当前登录密码:",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您记不住旧的密码,您可以请求管理员恢复您的文件。",
"Old log-in password" : "旧登录密码",
"Current log-in password" : "当前登录密码",
diff --git a/apps/encryption/lib/Hooks/UserHooks.php b/apps/encryption/lib/Hooks/UserHooks.php
index 16e4e962432..d189ce3eeef 100644
--- a/apps/encryption/lib/Hooks/UserHooks.php
+++ b/apps/encryption/lib/Hooks/UserHooks.php
@@ -40,6 +40,13 @@ use OCA\Encryption\Session;
use OCA\Encryption\Recovery;
class UserHooks implements IHook {
+
+ /**
+ * list of user for which we perform a password reset
+ * @var array
+ */
+ protected static $passwordResetUsers = [];
+
/**
* @var KeyManager
*/
@@ -132,6 +139,16 @@ class UserHooks implements IHook {
$this,
'preSetPassphrase');
+ OCUtil::connectHook('\OC\Core\LostPassword\Controller\LostController',
+ 'post_passwordReset',
+ $this,
+ 'postPasswordReset');
+
+ OCUtil::connectHook('\OC\Core\LostPassword\Controller\LostController',
+ 'pre_passwordReset',
+ $this,
+ 'prePasswordReset');
+
OCUtil::connectHook('OC_User',
'post_createUser',
$this,
@@ -202,6 +219,22 @@ class UserHooks implements IHook {
}
}
+ public function prePasswordReset($params) {
+ if (App::isEnabled('encryption')) {
+ $user = $params['uid'];
+ self::$passwordResetUsers[$user] = true;
+ }
+ }
+
+ public function postPasswordReset($params) {
+ $uid = $params['uid'];
+ $password = $params['password'];
+ $this->keyManager->backupUserKeys('passwordReset', $uid);
+ $this->keyManager->deleteUserKeys($uid);
+ $this->userSetup->setupUser($uid, $password);
+ unset(self::$passwordResetUsers[$uid]);
+ }
+
/**
* If the password can't be changed within ownCloud, than update the key password in advance.
*
@@ -209,13 +242,10 @@ class UserHooks implements IHook {
* @return boolean|null
*/
public function preSetPassphrase($params) {
- if (App::isEnabled('encryption')) {
-
- $user = $this->userManager->get($params['uid']);
+ $user = $this->userManager->get($params['uid']);
- if ($user && !$user->canChangePassword()) {
- $this->setPassphrase($params);
- }
+ if ($user && !$user->canChangePassword()) {
+ $this->setPassphrase($params);
}
}
@@ -227,6 +257,12 @@ class UserHooks implements IHook {
*/
public function setPassphrase($params) {
+ // if we are in the process to resetting a user password, we have nothing
+ // to do here
+ if (isset(self::$passwordResetUsers[$params['uid']])) {
+ return true;
+ }
+
// Get existing decrypted private key
$privateKey = $this->session->getPrivateKey();
$user = $this->user->getUser();
@@ -299,19 +335,6 @@ class UserHooks implements IHook {
Filesystem::initMountPoints($user);
}
-
- /**
- * after password reset we create a new key pair for the user
- *
- * @param array $params
- */
- public function postPasswordReset($params) {
- $password = $params['password'];
-
- $this->keyManager->deleteUserKeys($params['uid']);
- $this->userSetup->setupUser($params['uid'], $password);
- }
-
/**
* setup file system for user
*
diff --git a/apps/encryption/lib/KeyManager.php b/apps/encryption/lib/KeyManager.php
index 26f023ed8f9..caae154b2d3 100644
--- a/apps/encryption/lib/KeyManager.php
+++ b/apps/encryption/lib/KeyManager.php
@@ -560,11 +560,10 @@ class KeyManager {
/**
* @param string $purpose
- * @param bool $timestamp
- * @param bool $includeUserKeys
+ * @param string $uid
*/
- public function backupAllKeys($purpose, $timestamp = true, $includeUserKeys = true) {
-// $backupDir = $this->keyStorage->;
+ public function backupUserKeys($purpose, $uid) {
+ $this->keyStorage->backupUserKeys(Encryption::ID, $purpose, $uid);
}
/**
@@ -573,7 +572,6 @@ class KeyManager {
* @param string $uid
*/
public function deleteUserKeys($uid) {
- $this->backupAllKeys('password_reset');
$this->deletePublicKey($uid);
$this->deletePrivateKey($uid);
}
diff --git a/apps/encryption/tests/Hooks/UserHooksTest.php b/apps/encryption/tests/Hooks/UserHooksTest.php
index 43cc54f8901..f9477e3e038 100644
--- a/apps/encryption/tests/Hooks/UserHooksTest.php
+++ b/apps/encryption/tests/Hooks/UserHooksTest.php
@@ -120,6 +120,31 @@ class UserHooksTest extends TestCase {
$this->assertTrue(true);
}
+ public function testPrePasswordReset() {
+ $params = ['uid' => 'user1'];
+ $expected = ['user1' => true];
+ $this->instance->prePasswordReset($params);
+ $passwordResetUsers = $this->invokePrivate($this->instance, 'passwordResetUsers');
+
+ $this->assertSame($expected, $passwordResetUsers);
+ }
+
+ public function testPostPasswordReset() {
+ $params = ['uid' => 'user1', 'password' => 'password'];
+ $this->invokePrivate($this->instance, 'passwordResetUsers', [['user1' => true]]);
+ $this->keyManagerMock->expects($this->once())->method('backupUserKeys')
+ ->with('passwordReset', 'user1');
+ $this->keyManagerMock->expects($this->once())->method('deleteUserKeys')
+ ->with('user1');
+ $this->userSetupMock->expects($this->once())->method('setupUser')
+ ->with('user1', 'password');
+
+ $this->instance->postPasswordReset($params);
+ $passwordResetUsers = $this->invokePrivate($this->instance, 'passwordResetUsers');
+ $this->assertEmpty($passwordResetUsers);
+
+ }
+
/**
* @dataProvider dataTestPreSetPassphrase
*/
@@ -252,6 +277,15 @@ class UserHooksTest extends TestCase {
$this->assertNull($this->instance->setPassphrase($this->params));
}
+ public function testSetPassphraseResetUserMode() {
+ $params = ['uid' => 'user1', 'password' => 'password'];
+ $this->invokePrivate($this->instance, 'passwordResetUsers', [[$params['uid'] => true]]);
+ $this->sessionMock->expects($this->never())->method('getPrivateKey');
+ $this->keyManagerMock->expects($this->never())->method('setPrivateKey');
+ $this->assertTrue($this->instance->setPassphrase($params));
+ $this->invokePrivate($this->instance, 'passwordResetUsers', [[]]);
+ }
+
public function testSetPasswordNoUser() {
$this->sessionMock->expects($this->once())
->method('getPrivateKey')
@@ -287,19 +321,6 @@ class UserHooksTest extends TestCase {
$this->assertNull($userHooks->setPassphrase($this->params));
}
- public function testPostPasswordReset() {
- $this->keyManagerMock->expects($this->once())
- ->method('deleteUserKeys')
- ->with('testUser');
-
- $this->userSetupMock->expects($this->once())
- ->method('setupUser')
- ->with('testUser', 'password');
-
- $this->instance->postPasswordReset($this->params);
- $this->assertTrue(true);
- }
-
protected function setUp() {
parent::setUp();
$this->loggerMock = $this->createMock(ILogger::class);
diff --git a/apps/encryption/tests/KeyManagerTest.php b/apps/encryption/tests/KeyManagerTest.php
index fec311afa35..40def135816 100644
--- a/apps/encryption/tests/KeyManagerTest.php
+++ b/apps/encryption/tests/KeyManagerTest.php
@@ -657,4 +657,10 @@ class KeyManagerTest extends TestCase {
$this->instance->setVersion('/admin/files/myfile.txt', 5, $view);
}
+ public function testBackupUserKeys() {
+ $this->keyStorageMock->expects($this->once())->method('backupUserKeys')
+ ->with('OC_DEFAULT_MODULE', 'test', 'user1');
+ $this->instance->backupUserKeys('test', 'user1');
+ }
+
}
diff --git a/apps/federatedfilesharing/appinfo/info.xml b/apps/federatedfilesharing/appinfo/info.xml
index 6a414496f37..dc5cbffaa8d 100644
--- a/apps/federatedfilesharing/appinfo/info.xml
+++ b/apps/federatedfilesharing/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Provide federated file sharing across servers</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle, Roeland Jago Douma</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>FederatedFileSharing</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
<admin>OCA\FederatedFileSharing\Settings\Admin</admin>
diff --git a/apps/federatedfilesharing/l10n/cs_CZ.js b/apps/federatedfilesharing/l10n/cs_CZ.js
index c67601fa58d..bb7b85319af 100644
--- a/apps/federatedfilesharing/l10n/cs_CZ.js
+++ b/apps/federatedfilesharing/l10n/cs_CZ.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Otevřít dokumentaci",
"Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
"Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů",
- "Enable lookups on lookup server" : "Povolit vyhledávání na vyhledávacím serveru",
+ "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři",
"Federated Cloud" : "Sdružený cloud",
"Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
"Share it:" : "Sdílet:",
diff --git a/apps/federatedfilesharing/l10n/cs_CZ.json b/apps/federatedfilesharing/l10n/cs_CZ.json
index 574a5190465..f2784299888 100644
--- a/apps/federatedfilesharing/l10n/cs_CZ.json
+++ b/apps/federatedfilesharing/l10n/cs_CZ.json
@@ -39,7 +39,7 @@
"Open documentation" : "Otevřít dokumentaci",
"Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
"Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů",
- "Enable lookups on lookup server" : "Povolit vyhledávání na vyhledávacím serveru",
+ "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři",
"Federated Cloud" : "Sdružený cloud",
"Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
"Share it:" : "Sdílet:",
diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js
index fb124264f48..f42561cd343 100644
--- a/apps/federatedfilesharing/l10n/de.js
+++ b/apps/federatedfilesharing/l10n/de.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Enable lookups on lookup server" : "Lookups auf dem Lookup-Server aktivieren",
+ "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json
index e8e7e45dcc3..4535c57a301 100644
--- a/apps/federatedfilesharing/l10n/de.json
+++ b/apps/federatedfilesharing/l10n/de.json
@@ -39,7 +39,7 @@
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Enable lookups on lookup server" : "Lookups auf dem Lookup-Server aktivieren",
+ "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js
index c2675ef7c99..a58332c630f 100644
--- a/apps/federatedfilesharing/l10n/de_DE.js
+++ b/apps/federatedfilesharing/l10n/de_DE.js
@@ -41,11 +41,11 @@ OC.L10N.register(
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Enable lookups on lookup server" : "Lookups auf dem Lookup-Server aktivieren",
+ "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add to your website" : "Zu Ihrer Website hinzufügen",
+ "Add to your website" : "Zu Ihrer Web-Seite hinzufügen",
"Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud",
"HTML Code:" : "HTML-Code:",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Die Freigabe von %s ist fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json
index a42ea3024fc..63136d92020 100644
--- a/apps/federatedfilesharing/l10n/de_DE.json
+++ b/apps/federatedfilesharing/l10n/de_DE.json
@@ -39,11 +39,11 @@
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Enable lookups on lookup server" : "Lookups auf dem Lookup-Server aktivieren",
+ "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add to your website" : "Zu Ihrer Website hinzufügen",
+ "Add to your website" : "Zu Ihrer Web-Seite hinzufügen",
"Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud",
"HTML Code:" : "HTML-Code:",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Die Freigabe von %s ist fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
diff --git a/apps/federatedfilesharing/l10n/es.js b/apps/federatedfilesharing/l10n/es.js
index 94047e854e7..abcf4317ff8 100644
--- a/apps/federatedfilesharing/l10n/es.js
+++ b/apps/federatedfilesharing/l10n/es.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Documentación abierta",
"Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores",
- "Enable lookups on lookup server" : "Activa búsquedas en servidor de búsqueda",
+ "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios",
"Federated Cloud" : "Nube Federada",
"Your Federated Cloud ID:" : "Su ID Nube Federada:",
"Share it:" : "Compartir:",
diff --git a/apps/federatedfilesharing/l10n/es.json b/apps/federatedfilesharing/l10n/es.json
index e5db0ee804f..477b45e8333 100644
--- a/apps/federatedfilesharing/l10n/es.json
+++ b/apps/federatedfilesharing/l10n/es.json
@@ -39,7 +39,7 @@
"Open documentation" : "Documentación abierta",
"Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores",
- "Enable lookups on lookup server" : "Activa búsquedas en servidor de búsqueda",
+ "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios",
"Federated Cloud" : "Nube Federada",
"Your Federated Cloud ID:" : "Su ID Nube Federada:",
"Share it:" : "Compartir:",
diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js
index cb4ece0ce82..092b87fb9e8 100644
--- a/apps/federatedfilesharing/l10n/fr.js
+++ b/apps/federatedfilesharing/l10n/fr.js
@@ -29,7 +29,7 @@ OC.L10N.register(
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Le partage de %s a échoué, impossible de trouver %s, le serveur est peut-être momentanément injoignable ou utilise un certificat auto-signé.",
"Could not find share" : "Impossible de trouver le partage",
- "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous avez reçu \"%3$s\" en tant que partage distant de %1$s (de la part de %2$s)",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous avez reçu \"%3$s\" en tant que partage distant de %1$s (de la part de %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Vous avez reçu {share} comme partage distant de la part de {user} (de la part de {behalf})",
"You received \"%3$s\" as a remote share from %1$s" : "Vous avez reçu \"%3$s\" comme partage distant de %1$s",
"You received {share} as a remote share from {user}" : "Vous avez reçu {share} comme partage distant de la part de {user}",
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Voir la documentation",
"Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
"Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Enable lookups on lookup server" : "Activez les recherches sur le serveur de recherche",
+ "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
"Share it:" : "Partager :",
diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json
index 531f4a6770f..f90620b940d 100644
--- a/apps/federatedfilesharing/l10n/fr.json
+++ b/apps/federatedfilesharing/l10n/fr.json
@@ -27,7 +27,7 @@
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Le partage de %s a échoué, impossible de trouver %s, le serveur est peut-être momentanément injoignable ou utilise un certificat auto-signé.",
"Could not find share" : "Impossible de trouver le partage",
- "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous avez reçu \"%3$s\" en tant que partage distant de %1$s (de la part de %2$s)",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous avez reçu \"%3$s\" en tant que partage distant de %1$s (de la part de %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Vous avez reçu {share} comme partage distant de la part de {user} (de la part de {behalf})",
"You received \"%3$s\" as a remote share from %1$s" : "Vous avez reçu \"%3$s\" comme partage distant de %1$s",
"You received {share} as a remote share from {user}" : "Vous avez reçu {share} comme partage distant de la part de {user}",
@@ -39,7 +39,7 @@
"Open documentation" : "Voir la documentation",
"Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
"Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Enable lookups on lookup server" : "Activez les recherches sur le serveur de recherche",
+ "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
"Share it:" : "Partager :",
diff --git a/apps/federatedfilesharing/l10n/hu_HU.js b/apps/federatedfilesharing/l10n/hu_HU.js
index 029586ee44a..a10a5461645 100644
--- a/apps/federatedfilesharing/l10n/hu_HU.js
+++ b/apps/federatedfilesharing/l10n/hu_HU.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Dokumentáció megnyitása",
"Allow users on this server to send shares to other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy fájlokat osszanak meg más szerverekkel.",
"Allow users on this server to receive shares from other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől",
- "Enable lookups on lookup server" : "Keresések engedélyezése a kereső szerveren",
+ "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben",
"Federated Cloud" : "Egyesített felhő",
"Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
"Share it:" : "Oszd meg:",
diff --git a/apps/federatedfilesharing/l10n/hu_HU.json b/apps/federatedfilesharing/l10n/hu_HU.json
index eeede1185a8..b68802f382f 100644
--- a/apps/federatedfilesharing/l10n/hu_HU.json
+++ b/apps/federatedfilesharing/l10n/hu_HU.json
@@ -39,7 +39,7 @@
"Open documentation" : "Dokumentáció megnyitása",
"Allow users on this server to send shares to other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy fájlokat osszanak meg más szerverekkel.",
"Allow users on this server to receive shares from other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől",
- "Enable lookups on lookup server" : "Keresések engedélyezése a kereső szerveren",
+ "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben",
"Federated Cloud" : "Egyesített felhő",
"Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
"Share it:" : "Oszd meg:",
diff --git a/apps/federatedfilesharing/l10n/id.js b/apps/federatedfilesharing/l10n/id.js
index be23cffaa42..66687b60102 100644
--- a/apps/federatedfilesharing/l10n/id.js
+++ b/apps/federatedfilesharing/l10n/id.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Remote share password" : "Sandi berbagi remote",
"Cancel" : "Batalkan",
"Add remote share" : "Tambah berbagi remote",
+ "Copy" : "Salin",
"Copied!" : "Tersalin!",
"Not supported!" : "Tidak didukung!",
"Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.",
@@ -26,7 +27,12 @@ OC.L10N.register(
"Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
"File is already shared with %s" : "Berkas sudah dibagikan dengan %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Berbagi %s gagal, tidak menemukan %s, mungkin peladen saat ini tidak dapat dicapai atau menggunakan sertifikat self-signed.",
"Could not find share" : "Tidak dapat mencari pembagian",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Anda menerima \"%3$s\" sebagai berbagi jauh dari %1$s (atas nama %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Anda menerima {share} sebagai berbagi jauh dari {user} (atas nama {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Anda menerima \"%3$s\" sebagai berbagi jauh dari %1$s",
+ "You received {share} as a remote share from {user}" : "Anda menerima {share} sebagai berbagi jauh dari {user}",
"Accept" : "Terima",
"Decline" : "Tolak",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #Nextcloud Federated Cloud ID saya, lihat %s",
@@ -35,6 +41,7 @@ OC.L10N.register(
"Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
"Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.",
+ "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
"Share it:" : "Bagikan:",
diff --git a/apps/federatedfilesharing/l10n/id.json b/apps/federatedfilesharing/l10n/id.json
index 2cdf8f8f50a..de1c8d4cba1 100644
--- a/apps/federatedfilesharing/l10n/id.json
+++ b/apps/federatedfilesharing/l10n/id.json
@@ -5,6 +5,7 @@
"Remote share password" : "Sandi berbagi remote",
"Cancel" : "Batalkan",
"Add remote share" : "Tambah berbagi remote",
+ "Copy" : "Salin",
"Copied!" : "Tersalin!",
"Not supported!" : "Tidak didukung!",
"Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.",
@@ -24,7 +25,12 @@
"Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s",
"Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
"File is already shared with %s" : "Berkas sudah dibagikan dengan %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Berbagi %s gagal, tidak menemukan %s, mungkin peladen saat ini tidak dapat dicapai atau menggunakan sertifikat self-signed.",
"Could not find share" : "Tidak dapat mencari pembagian",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Anda menerima \"%3$s\" sebagai berbagi jauh dari %1$s (atas nama %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Anda menerima {share} sebagai berbagi jauh dari {user} (atas nama {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Anda menerima \"%3$s\" sebagai berbagi jauh dari %1$s",
+ "You received {share} as a remote share from {user}" : "Anda menerima {share} sebagai berbagi jauh dari {user}",
"Accept" : "Terima",
"Decline" : "Tolak",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #Nextcloud Federated Cloud ID saya, lihat %s",
@@ -33,6 +39,7 @@
"Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
"Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.",
+ "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna",
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
"Share it:" : "Bagikan:",
diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js
index 450ab68923b..514d4a84fb2 100644
--- a/apps/federatedfilesharing/l10n/it.js
+++ b/apps/federatedfilesharing/l10n/it.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Apri la documentazione",
"Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
"Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Enable lookups on lookup server" : "Abilita le ricerche sul server di ricerca",
+ "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica",
"Federated Cloud" : "Cloud federata",
"Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
"Share it:" : "Condividilo:",
diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json
index c7e06202fb2..e4780445361 100644
--- a/apps/federatedfilesharing/l10n/it.json
+++ b/apps/federatedfilesharing/l10n/it.json
@@ -39,7 +39,7 @@
"Open documentation" : "Apri la documentazione",
"Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
"Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Enable lookups on lookup server" : "Abilita le ricerche sul server di ricerca",
+ "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica",
"Federated Cloud" : "Cloud federata",
"Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
"Share it:" : "Condividilo:",
diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js
index 145b6e5b530..3e959bb9ce4 100644
--- a/apps/federatedfilesharing/l10n/nl.js
+++ b/apps/federatedfilesharing/l10n/nl.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Open documentatie",
"Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
"Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Enable lookups on lookup server" : "Inschakelen lookups op lookupserver",
+ "Search global and public address book for users" : "Doorzoeken globale en openbare adresboeken naar gebruikers",
"Federated Cloud" : "Gefedereerde Cloud",
"Your Federated Cloud ID:" : "Je Federated Cloud ID:",
"Share it:" : "Deel het:",
diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json
index 9aefcb75eb5..8db39a1dac0 100644
--- a/apps/federatedfilesharing/l10n/nl.json
+++ b/apps/federatedfilesharing/l10n/nl.json
@@ -39,7 +39,7 @@
"Open documentation" : "Open documentatie",
"Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
"Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Enable lookups on lookup server" : "Inschakelen lookups op lookupserver",
+ "Search global and public address book for users" : "Doorzoeken globale en openbare adresboeken naar gebruikers",
"Federated Cloud" : "Gefedereerde Cloud",
"Your Federated Cloud ID:" : "Je Federated Cloud ID:",
"Share it:" : "Deel het:",
diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js
index e3dc1d9e60d..8a51bfc13d2 100644
--- a/apps/federatedfilesharing/l10n/pl.js
+++ b/apps/federatedfilesharing/l10n/pl.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Remote share password" : "Hasło do zdalnego zasobu",
"Cancel" : "Anuluj",
"Add remote share" : "Dodaj zdalny zasób",
+ "Copy" : "Skopiuj",
"Copied!" : "Skopiowano!",
"Not supported!" : "Brak wsparcia!",
"Press ⌘-C to copy." : "Wciśnij ⌘-C by skopiować.",
diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json
index bb4eb006291..f84f2d02253 100644
--- a/apps/federatedfilesharing/l10n/pl.json
+++ b/apps/federatedfilesharing/l10n/pl.json
@@ -5,6 +5,7 @@
"Remote share password" : "Hasło do zdalnego zasobu",
"Cancel" : "Anuluj",
"Add remote share" : "Dodaj zdalny zasób",
+ "Copy" : "Skopiuj",
"Copied!" : "Skopiowano!",
"Not supported!" : "Brak wsparcia!",
"Press ⌘-C to copy." : "Wciśnij ⌘-C by skopiować.",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js
index f249242085e..2b88be0a4e6 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.js
+++ b/apps/federatedfilesharing/l10n/pt_BR.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores",
- "Enable lookups on lookup server" : "Habilitar lookups no servidor de lookup",
+ "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público",
"Federated Cloud" : "Nuvem Federada",
"Your Federated Cloud ID:" : "Sua ID na Nuvem Federada:",
"Share it:" : "Compartilhe:",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json
index 11a3bbc9f39..be4f3f06fee 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.json
+++ b/apps/federatedfilesharing/l10n/pt_BR.json
@@ -39,7 +39,7 @@
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores",
- "Enable lookups on lookup server" : "Habilitar lookups no servidor de lookup",
+ "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público",
"Federated Cloud" : "Nuvem Federada",
"Your Federated Cloud ID:" : "Sua ID na Nuvem Federada:",
"Share it:" : "Compartilhe:",
diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js
index 7202a179d4c..f2b23b41c31 100644
--- a/apps/federatedfilesharing/l10n/ru.js
+++ b/apps/federatedfilesharing/l10n/ru.js
@@ -2,41 +2,48 @@ OC.L10N.register(
"federatedfilesharing",
{
"Federated sharing" : "Общий доступ из объединённого общего хранилища",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?",
- "Remote share" : "Удаленный общий ресурс",
- "Remote share password" : "Пароль для удаленного общего ресурса",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённый общий каталог {name} из {owner}@{remote}?",
+ "Remote share" : "Удалённый общий ресурс",
+ "Remote share password" : "Пароль для удалённого общего ресурса",
"Cancel" : "Отмена",
"Add remote share" : "Добавить удалённый общий ресурс",
+ "Copy" : "Копировать",
"Copied!" : "Скопировано!",
"Not supported!" : "Не поддерживается!",
"Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.",
"Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.",
"Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.",
"Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
- "Couldn't establish a federated share." : "Не удаётся установить распределённый общий ресурс.",
- "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить распределённый общий ресурс, может быть пароль был не верен.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на распределённый удалённый ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
+ "Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, может быть пароль был не верен.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
"The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
- "Not allowed to create a federated share with the owner." : "Не допускается создание распределённого общего ресурса с собственником.",
+ "Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.",
"Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
- "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль",
+ "Could not authenticate to remote share, password might be wrong" : "Не удалось провести проверку подлинности для доступа к удалённому хранилищу, возможно неправильно указан пароль",
"Storage not valid" : "Хранилище недоступно",
- "Federated Share successfully added" : "Распределённый общий ресурс успешно добавлен",
+ "Federated Share successfully added" : "Федеративный общий ресурс успешно добавлен",
"Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"File is already shared with %s" : "Доступ к файлу уже предоставлен %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен или использует самозавернный сертификат.",
"Could not find share" : "Не удалось найти общий ресурс",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили \"%3$s\" в качестве удалённого ресурса из %1$s (от имени %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Вы получили {share} в качестве удалённого ресурса от {user} (от имени {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Вы получили \"%3$s\" в качестве удалённого ресурса из %1$s",
+ "You received {share} as a remote share from {user}" : "Вы получили {share} в качестве удалённого ресурса от {user}",
"Accept" : "Принять",
"Decline" : "Отклонить",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ, смотрите %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ",
- "Federated Cloud Sharing" : "Объединение облачных хранилищ",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ",
+ "Federated Cloud Sharing" : "Федерация облачных хранилищ",
"Open documentation" : "Открыть документацию",
"Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
"Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ",
- "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
+ "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге",
+ "Federated Cloud" : "Федерация облачных хранилищ",
+ "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:",
"Share it:" : "Поделиться:",
"Add to your website" : "Добавить к себе на сайт",
"Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud",
diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json
index 85a15a968b7..c0d9520abcd 100644
--- a/apps/federatedfilesharing/l10n/ru.json
+++ b/apps/federatedfilesharing/l10n/ru.json
@@ -1,40 +1,47 @@
{ "translations": {
"Federated sharing" : "Общий доступ из объединённого общего хранилища",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?",
- "Remote share" : "Удаленный общий ресурс",
- "Remote share password" : "Пароль для удаленного общего ресурса",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённый общий каталог {name} из {owner}@{remote}?",
+ "Remote share" : "Удалённый общий ресурс",
+ "Remote share password" : "Пароль для удалённого общего ресурса",
"Cancel" : "Отмена",
"Add remote share" : "Добавить удалённый общий ресурс",
+ "Copy" : "Копировать",
"Copied!" : "Скопировано!",
"Not supported!" : "Не поддерживается!",
"Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.",
"Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.",
"Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.",
"Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
- "Couldn't establish a federated share." : "Не удаётся установить распределённый общий ресурс.",
- "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить распределённый общий ресурс, может быть пароль был не верен.",
- "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на распределённый удалённый ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
+ "Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, может быть пароль был не верен.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.",
"The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
- "Not allowed to create a federated share with the owner." : "Не допускается создание распределённого общего ресурса с собственником.",
+ "Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.",
"Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
- "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль",
+ "Could not authenticate to remote share, password might be wrong" : "Не удалось провести проверку подлинности для доступа к удалённому хранилищу, возможно неправильно указан пароль",
"Storage not valid" : "Хранилище недоступно",
- "Federated Share successfully added" : "Распределённый общий ресурс успешно добавлен",
+ "Federated Share successfully added" : "Федеративный общий ресурс успешно добавлен",
"Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"File is already shared with %s" : "Доступ к файлу уже предоставлен %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен или использует самозавернный сертификат.",
"Could not find share" : "Не удалось найти общий ресурс",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили \"%3$s\" в качестве удалённого ресурса из %1$s (от имени %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Вы получили {share} в качестве удалённого ресурса от {user} (от имени {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Вы получили \"%3$s\" в качестве удалённого ресурса из %1$s",
+ "You received {share} as a remote share from {user}" : "Вы получили {share} в качестве удалённого ресурса от {user}",
"Accept" : "Принять",
"Decline" : "Отклонить",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ, смотрите %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ",
- "Federated Cloud Sharing" : "Объединение облачных хранилищ",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ",
+ "Federated Cloud Sharing" : "Федерация облачных хранилищ",
"Open documentation" : "Открыть документацию",
"Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
"Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ",
- "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
+ "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге",
+ "Federated Cloud" : "Федерация облачных хранилищ",
+ "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:",
"Share it:" : "Поделиться:",
"Add to your website" : "Добавить к себе на сайт",
"Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud",
diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js
index ae500204ce4..4e55e171b81 100644
--- a/apps/federatedfilesharing/l10n/sq.js
+++ b/apps/federatedfilesharing/l10n/sq.js
@@ -2,13 +2,26 @@ OC.L10N.register(
"federatedfilesharing",
{
"Federated sharing" : "Ndarje e federuar",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Doni që të shtoni ndarjen në remote {name} nga {owner}@{remote}?",
+ "Remote share" : "Ndarje në largësi",
+ "Remote share password" : "Fjalëkalim ndarjeje të largët",
+ "Cancel" : "Anulo",
+ "Copy" : "Kopjo",
+ "Copied!" : "U kopjua!",
+ "Not supported!" : "Nuk mbështetet!",
+ "Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.",
+ "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
+ "Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
+ "Storage not valid" : "memorja nuk është e vlefshme",
+ "Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi",
"Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s",
"Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
- "File is already shared with %s" : "Kartelë e ndarë tashmë me %s",
- "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.",
- "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s (në emër të %2$s)",
- "You received \"/%3$s\" as a remote share from %1$s" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s",
+ "File is already shared with %s" : "Skedari është ndarë tashmë me %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar",
+ "Could not find share" : "Nuk mund të gjenim ndarjen",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ",
+ "You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s",
"Accept" : "Pranoje",
"Decline" : "Hidhe poshtë",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s",
@@ -22,6 +35,9 @@ OC.L10N.register(
"Share it:" : "Ndajeni:",
"Add to your website" : "Shtojeni te sajti juaj",
"Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it",
- "HTML Code:" : "Kod HTML:"
+ "HTML Code:" : "Kod HTML:",
+ "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.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s (në emër të %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/sq.json b/apps/federatedfilesharing/l10n/sq.json
index 57961c2c2ae..07858aa6434 100644
--- a/apps/federatedfilesharing/l10n/sq.json
+++ b/apps/federatedfilesharing/l10n/sq.json
@@ -1,12 +1,25 @@
{ "translations": {
"Federated sharing" : "Ndarje e federuar",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Doni që të shtoni ndarjen në remote {name} nga {owner}@{remote}?",
+ "Remote share" : "Ndarje në largësi",
+ "Remote share password" : "Fjalëkalim ndarjeje të largët",
+ "Cancel" : "Anulo",
+ "Copy" : "Kopjo",
+ "Copied!" : "U kopjua!",
+ "Not supported!" : "Nuk mbështetet!",
+ "Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.",
+ "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
+ "Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
+ "Storage not valid" : "memorja nuk është e vlefshme",
+ "Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi",
"Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s",
"Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
- "File is already shared with %s" : "Kartelë e ndarë tashmë me %s",
- "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.",
- "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s (në emër të %2$s)",
- "You received \"/%3$s\" as a remote share from %1$s" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s",
+ "File is already shared with %s" : "Skedari është ndarë tashmë me %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar",
+ "Could not find share" : "Nuk mund të gjenim ndarjen",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ",
+ "You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s",
"Accept" : "Pranoje",
"Decline" : "Hidhe poshtë",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s",
@@ -20,6 +33,9 @@
"Share it:" : "Ndajeni:",
"Add to your website" : "Shtojeni te sajti juaj",
"Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it",
- "HTML Code:" : "Kod HTML:"
+ "HTML Code:" : "Kod HTML:",
+ "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.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s (në emër të %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "\"/%3$s\" e morët si një ndarje të largët prej %1$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js
index 6378c02eef6..0f5b0798825 100644
--- a/apps/federatedfilesharing/l10n/sv.js
+++ b/apps/federatedfilesharing/l10n/sv.js
@@ -2,26 +2,54 @@ OC.L10N.register(
"federatedfilesharing",
{
"Federated sharing" : "Federated Delning",
- "Invalid Federated Cloud ID" : "Ogiltig Federerad Cloud-ID",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till fjärrdelning {name} från {owner}@{remote}?",
+ "Remote share" : "Extern delning",
+ "Remote share password" : "Lösenord för extern delning",
+ "Cancel" : "Avbryt",
+ "Add remote share" : "Lägg till extern delning",
+ "Copy" : "Kopiera",
+ "Copied!" : "Kopierad!",
+ "Not supported!" : "Stöds ej!",
+ "Press ⌘-C to copy." : "Tryck ⌘-C för att kopiera.",
+ "Press Ctrl-C to copy." : "Tryck Ctrl-C för att kopiera.",
+ "Invalid Federated Cloud ID" : "Ogiltig Federerad Moln-ID",
+ "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
+ "Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.",
+ "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
+ "Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren",
+ "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
+ "Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel",
+ "Storage not valid" : "Lagring ogiltig",
+ "Federated Share successfully added" : "Federerad delning lyckades",
+ "Couldn't add remote share" : "Kunde inte lägga till extern delning",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"File is already shared with %s" : "Filen är redan delad med %s",
- "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.",
- "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"/%3$s\" som en fjärrdelning från %1$s (via %2$s)",
- "You received \"/%3$s\" as a remote share from %1$s" : "Du tog emot \"/%3$s\" som en fjärrdelning från %1$s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Misslyckades att dela ut %s kunde inte hitta %s, kanske är servern inte tillgänglig för närvarande eller så används ett självsignerat certifikat",
+ "Could not find share" : "Kunde inte hitta delning",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"%3$s\" som en extern delning från %1$s (på uppdrag av %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du tog emot {share} som en extern delning {user} (på uppdrag av {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Du tog emot \"%3$s\" som en extern delning från %1$s",
+ "You received {share} as a remote share from {user}" : "Du tog emot {share} som en extern delning från {user}",
"Accept" : "Acceptera",
"Decline" : "Neka",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dela med mig genom min #Nextcloud Federated Cloud ID, se %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Dela med mig genom min #Nextcloud Federated Cloud ID",
- "Federated Cloud Sharing" : "Federate Cloud delning",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dela med mig genom mitt #Nextcloud Federerade Moln-ID, se %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Dela med mig genom mitt #Nextcloud Federerade Moln-ID",
+ "Federated Cloud Sharing" : "Federerad Moln-delning",
"Open documentation" : "Öppna dokumentation",
"Allow users on this server to send shares to other servers" : "Tillåt användare på denna server att skicka utdelningar till andra servrar",
"Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar",
- "Federated Cloud" : "Federated Cloud",
- "Your Federated Cloud ID:" : "Ditt Federated Cloud ID",
+ "Search global and public address book for users" : "Sök global och offentlig adressbok för användare",
+ "Federated Cloud" : "Federerat Moln",
+ "Your Federated Cloud ID:" : "Ditt Federerade Moln-ID:",
"Share it:" : "Dela detta:",
"Add to your website" : "Lägg till på din hemsida",
"Share with me via Nextcloud" : "Dela med mig via Nextcloud",
- "HTML Code:" : "HTML Kod:"
+ "HTML Code:" : "HTML Kod:",
+ "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.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"/%3$s\" som en extern delning från %1$s (via %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "Du tog emot \"/%3$s\" som en extern delning från %1$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json
index 91c41f5b125..5eff9e9f0d2 100644
--- a/apps/federatedfilesharing/l10n/sv.json
+++ b/apps/federatedfilesharing/l10n/sv.json
@@ -1,25 +1,53 @@
{ "translations": {
"Federated sharing" : "Federated Delning",
- "Invalid Federated Cloud ID" : "Ogiltig Federerad Cloud-ID",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till fjärrdelning {name} från {owner}@{remote}?",
+ "Remote share" : "Extern delning",
+ "Remote share password" : "Lösenord för extern delning",
+ "Cancel" : "Avbryt",
+ "Add remote share" : "Lägg till extern delning",
+ "Copy" : "Kopiera",
+ "Copied!" : "Kopierad!",
+ "Not supported!" : "Stöds ej!",
+ "Press ⌘-C to copy." : "Tryck ⌘-C för att kopiera.",
+ "Press Ctrl-C to copy." : "Tryck Ctrl-C för att kopiera.",
+ "Invalid Federated Cloud ID" : "Ogiltig Federerad Moln-ID",
+ "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
+ "Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.",
+ "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
+ "Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren",
+ "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
+ "Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel",
+ "Storage not valid" : "Lagring ogiltig",
+ "Federated Share successfully added" : "Federerad delning lyckades",
+ "Couldn't add remote share" : "Kunde inte lägga till extern delning",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"File is already shared with %s" : "Filen är redan delad med %s",
- "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.",
- "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"/%3$s\" som en fjärrdelning från %1$s (via %2$s)",
- "You received \"/%3$s\" as a remote share from %1$s" : "Du tog emot \"/%3$s\" som en fjärrdelning från %1$s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Misslyckades att dela ut %s kunde inte hitta %s, kanske är servern inte tillgänglig för närvarande eller så används ett självsignerat certifikat",
+ "Could not find share" : "Kunde inte hitta delning",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"%3$s\" som en extern delning från %1$s (på uppdrag av %2$s)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du tog emot {share} som en extern delning {user} (på uppdrag av {behalf})",
+ "You received \"%3$s\" as a remote share from %1$s" : "Du tog emot \"%3$s\" som en extern delning från %1$s",
+ "You received {share} as a remote share from {user}" : "Du tog emot {share} som en extern delning från {user}",
"Accept" : "Acceptera",
"Decline" : "Neka",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dela med mig genom min #Nextcloud Federated Cloud ID, se %s",
- "Share with me through my #Nextcloud Federated Cloud ID" : "Dela med mig genom min #Nextcloud Federated Cloud ID",
- "Federated Cloud Sharing" : "Federate Cloud delning",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dela med mig genom mitt #Nextcloud Federerade Moln-ID, se %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Dela med mig genom mitt #Nextcloud Federerade Moln-ID",
+ "Federated Cloud Sharing" : "Federerad Moln-delning",
"Open documentation" : "Öppna dokumentation",
"Allow users on this server to send shares to other servers" : "Tillåt användare på denna server att skicka utdelningar till andra servrar",
"Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar",
- "Federated Cloud" : "Federated Cloud",
- "Your Federated Cloud ID:" : "Ditt Federated Cloud ID",
+ "Search global and public address book for users" : "Sök global och offentlig adressbok för användare",
+ "Federated Cloud" : "Federerat Moln",
+ "Your Federated Cloud ID:" : "Ditt Federerade Moln-ID:",
"Share it:" : "Dela detta:",
"Add to your website" : "Lägg till på din hemsida",
"Share with me via Nextcloud" : "Dela med mig via Nextcloud",
- "HTML Code:" : "HTML Kod:"
+ "HTML Code:" : "HTML Kod:",
+ "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.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du tog emot \"/%3$s\" som en extern delning från %1$s (via %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "Du tog emot \"/%3$s\" som en extern delning från %1$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js
index c98f000cdc3..03f94122a9b 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.js
+++ b/apps/federatedfilesharing/l10n/zh_CN.js
@@ -2,21 +2,45 @@ OC.L10N.register(
"federatedfilesharing",
{
"Federated sharing" : "联合云共享",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "你想要添加远程共享 {名称} 来自 {所属}@{远程}?",
+ "Remote share" : "远程分享",
+ "Remote share password" : "远程分享密码",
+ "Cancel" : "取消",
+ "Add remote share" : "添加远程分享",
+ "Copy" : "复制",
+ "Copied!" : "已复制!",
+ "Not supported!" : "不支持!",
+ "Press ⌘-C to copy." : "请按 ⌘-C 键复制",
+ "Press Ctrl-C to copy." : "请按 Ctrl-C 键复制",
"Invalid Federated Cloud ID" : "联合云ID不正确",
+ "Server to server sharing is not enabled on this server" : "此服务器未启用服务器到服务器分享功能",
+ "Couldn't establish a federated share." : "无法建立一个远程分享",
+ "Couldn't establish a federated share, maybe the password was wrong." : "无法建立分享,可能密码是错误的。",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。",
+ "The mountpoint name contains invalid characters." : "挂载点的名称包含无效字符。",
+ "Not allowed to create a federated share with the owner." : "不允许与所有者创建联合共享.",
+ "Invalid or untrusted SSL certificate" : "无效或是不被信任的 SSL 证书",
+ "Could not authenticate to remote share, password might be wrong" : "无法验证远程共享,可能是密码错误",
+ "Storage not valid" : "存储不可用",
+ "Federated Share successfully added" : "已成功添加联合共享",
+ "Couldn't add remote share" : "无法添加远程共享",
"Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为它已经共享给 %s",
"Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,联合云无法找到 %s,请检查设置或联系管理员。",
+ "File is already shared with %s" : "文件已经共享与 %s",
+ "Could not find share" : "没有发现共享",
"Accept" : "接受",
"Decline" : "拒绝",
"Federated Cloud Sharing" : "联合云共享",
"Open documentation" : "打开文档",
"Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户",
"Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
+ "Search global and public address book for users" : "在全局和公开地址簿中寻找用户",
"Federated Cloud" : "联合云",
"Your Federated Cloud ID:" : "你的联合云ID:",
"Share it:" : "分享它:",
"Add to your website" : "添加到您的网站",
"Share with me via Nextcloud" : "通过联合云与我共享",
- "HTML Code:" : "HTML 代码:"
+ "HTML Code:" : "HTML 代码:",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,联合云无法找到 %s,请检查设置或联系管理员。"
},
"nplurals=1; plural=0;");
diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json
index c996e02dc1e..2972c8ba96f 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.json
+++ b/apps/federatedfilesharing/l10n/zh_CN.json
@@ -1,20 +1,44 @@
{ "translations": {
"Federated sharing" : "联合云共享",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "你想要添加远程共享 {名称} 来自 {所属}@{远程}?",
+ "Remote share" : "远程分享",
+ "Remote share password" : "远程分享密码",
+ "Cancel" : "取消",
+ "Add remote share" : "添加远程分享",
+ "Copy" : "复制",
+ "Copied!" : "已复制!",
+ "Not supported!" : "不支持!",
+ "Press ⌘-C to copy." : "请按 ⌘-C 键复制",
+ "Press Ctrl-C to copy." : "请按 Ctrl-C 键复制",
"Invalid Federated Cloud ID" : "联合云ID不正确",
+ "Server to server sharing is not enabled on this server" : "此服务器未启用服务器到服务器分享功能",
+ "Couldn't establish a federated share." : "无法建立一个远程分享",
+ "Couldn't establish a federated share, maybe the password was wrong." : "无法建立分享,可能密码是错误的。",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。",
+ "The mountpoint name contains invalid characters." : "挂载点的名称包含无效字符。",
+ "Not allowed to create a federated share with the owner." : "不允许与所有者创建联合共享.",
+ "Invalid or untrusted SSL certificate" : "无效或是不被信任的 SSL 证书",
+ "Could not authenticate to remote share, password might be wrong" : "无法验证远程共享,可能是密码错误",
+ "Storage not valid" : "存储不可用",
+ "Federated Share successfully added" : "已成功添加联合共享",
+ "Couldn't add remote share" : "无法添加远程共享",
"Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败,因为它已经共享给 %s",
"Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,联合云无法找到 %s,请检查设置或联系管理员。",
+ "File is already shared with %s" : "文件已经共享与 %s",
+ "Could not find share" : "没有发现共享",
"Accept" : "接受",
"Decline" : "拒绝",
"Federated Cloud Sharing" : "联合云共享",
"Open documentation" : "打开文档",
"Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户",
"Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
+ "Search global and public address book for users" : "在全局和公开地址簿中寻找用户",
"Federated Cloud" : "联合云",
"Your Federated Cloud ID:" : "你的联合云ID:",
"Share it:" : "分享它:",
"Add to your website" : "添加到您的网站",
"Share with me via Nextcloud" : "通过联合云与我共享",
- "HTML Code:" : "HTML 代码:"
+ "HTML Code:" : "HTML 代码:",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,联合云无法找到 %s,请检查设置或联系管理员。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
index 55329338a92..3c399268124 100644
--- a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
+++ b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php
@@ -25,18 +25,24 @@
namespace OCA\FederatedFileSharing\Controller;
+use OC\Files\Filesystem;
use OC\HintException;
+use OC\Share\Helper;
use OCA\FederatedFileSharing\AddressHandler;
+use OCA\FederatedFileSharing\DiscoveryManager;
use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCA\Files_Sharing\External\Manager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
+use OCP\Files\StorageInvalidException;
use OCP\Http\Client\IClientService;
use OCP\IL10N;
use OCP\IRequest;
use OCP\ISession;
use OCP\IUserSession;
use OCP\Share\IManager;
+use OCP\Util;
/**
* Class MountPublicLinkController
@@ -107,6 +113,7 @@ class MountPublicLinkController extends Controller {
*
* @NoCSRFRequired
* @PublicPage
+ * @BruteForceProtection publicLink2FederatedShare
*
* @param string $shareWith
* @param string $token
@@ -226,22 +233,22 @@ class MountPublicLinkController extends Controller {
private function legacyMountPublicLink($token, $remote, $password, $name, $owner, $ownerDisplayName) {
// Check for invalid name
- if (!\OCP\Util::isValidFileName($name)) {
+ if (!Util::isValidFileName($name)) {
return new JSONResponse(['message' => $this->l->t('The mountpoint name contains invalid characters.')], Http::STATUS_BAD_REQUEST);
}
$currentUser = $this->userSession->getUser()->getUID();
$currentServer = $this->addressHandler->generateRemoteURL();
- if (\OC\Share\Helper::isSameUserOnSameServer($owner, $remote, $currentUser, $currentServer)) {
+ if (Helper::isSameUserOnSameServer($owner, $remote, $currentUser, $currentServer)) {
return new JSONResponse(['message' => $this->l->t('Not allowed to create a federated share with the owner.')], Http::STATUS_BAD_REQUEST);
}
- $discoveryManager = new \OCA\FederatedFileSharing\DiscoveryManager(
+ $discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
- $externalManager = new \OCA\Files_Sharing\External\Manager(
+ $externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
- \OC\Files\Filesystem::getMountManager(),
- \OC\Files\Filesystem::getLoader(),
+ Filesystem::getMountManager(),
+ Filesystem::getLoader(),
\OC::$server->getHTTPClientService(),
\OC::$server->getNotificationManager(),
$discoveryManager,
@@ -249,7 +256,8 @@ class MountPublicLinkController extends Controller {
);
// check for ssl cert
- if (substr($remote, 0, 5) === 'https') {
+
+ if (strpos($remote, 'https') === 0) {
try {
$client = $this->clientService->newClient();
$client->get($remote, [
@@ -268,19 +276,19 @@ class MountPublicLinkController extends Controller {
try {
// check if storage exists
$storage->checkStorageAvailability();
- } catch (\OCP\Files\StorageInvalidException $e) {
+ } catch (StorageInvalidException $e) {
// note: checkStorageAvailability will already remove the invalid share
- \OCP\Util::writeLog(
+ Util::writeLog(
'federatedfilesharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
+ Util::DEBUG
);
return new JSONResponse(['message' => $this->l->t('Could not authenticate to remote share, password might be wrong')], Http::STATUS_BAD_REQUEST);
} catch (\Exception $e) {
- \OCP\Util::writeLog(
+ Util::writeLog(
'federatedfilesharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
+ Util::DEBUG
);
$externalManager->removeShare($mount->getMountPoint());
return new JSONResponse(['message' => $this->l->t('Storage not valid')], Http::STATUS_BAD_REQUEST);
@@ -295,27 +303,27 @@ class MountPublicLinkController extends Controller {
'legacyMount' => '1'
]
);
- } catch (\OCP\Files\StorageInvalidException $e) {
- \OCP\Util::writeLog(
+ } catch (StorageInvalidException $e) {
+ Util::writeLog(
'federatedfilesharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
+ Util::DEBUG
);
return new JSONResponse(['message' => $this->l->t('Storage not valid')], Http::STATUS_BAD_REQUEST);
} catch (\Exception $e) {
- \OCP\Util::writeLog(
+ Util::writeLog(
'federatedfilesharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
+ Util::DEBUG
);
return new JSONResponse(['message' => $this->l->t('Couldn\'t add remote share')], Http::STATUS_BAD_REQUEST);
}
} else {
$externalManager->removeShare($mount->getMountPoint());
- \OCP\Util::writeLog(
+ Util::writeLog(
'federatedfilesharing',
'Couldn\'t add remote share',
- \OCP\Util::DEBUG
+ Util::DEBUG
);
return new JSONResponse(['message' => $this->l->t('Couldn\'t add remote share')], Http::STATUS_BAD_REQUEST);
}
diff --git a/apps/federatedfilesharing/templates/settings-admin.php b/apps/federatedfilesharing/templates/settings-admin.php
index 0670553e061..d71ce20d13c 100644
--- a/apps/federatedfilesharing/templates/settings-admin.php
+++ b/apps/federatedfilesharing/templates/settings-admin.php
@@ -29,7 +29,7 @@ script('federatedfilesharing', 'settings-admin');
<input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox"
value="1" <?php if ($_['lookupServerEnabled']) print_unescaped('checked="checked"'); ?> />
<label for="lookupServerEnabled">
- <?php p($l->t('Enable lookups on lookup server'));?>
+ <?php p($l->t('Search global and public address book for users'));?>
</label><br/>
</p>
</div>
diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml
index a5eeb133d9e..2d15f20485a 100644
--- a/apps/federation/appinfo/info.xml
+++ b/apps/federation/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>Federation</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<default_enable/>
<types>
diff --git a/apps/federation/l10n/ca.js b/apps/federation/l10n/ca.js
index 1d21cd14db2..81b16deb360 100644
--- a/apps/federation/l10n/ca.js
+++ b/apps/federation/l10n/ca.js
@@ -1,15 +1,19 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "Servidor afegit a la llista de confiança ownCloud",
+ "Added to the list of trusted servers" : "Afegeix a la llista de servidors de confiança",
"Server is already in the list of trusted servers." : "El servidor ja està a la llista de servidors de confiança",
- "No ownCloud server found" : "No s'ha trobat cap servidor ownCloud",
+ "No server to federate with found" : "No s\\'ha trobar cap servidor federat",
"Could not add server" : "No s'ha pogut afegir el servidor",
"Federation" : "Federació",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federació ownCloud et permet connectar amb altes servidors ownCloud de confiança per a intercanviar el directori d'usuari. Per exemple, això serà utilitzat per auto-completar usuaris externs de la compartició federada",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federació li permet connectar amb altres servidors de confiança per a intercanviar directoris d\\'usuari. Per exemple, això s\\'utilitzarà per als usuaris externs d'auto-completat per a l\\'ús compartit federat.",
"Add server automatically once a federated share was created successfully" : "Afegir servidor automàticament quan s'hagi creat una federació correctament",
- "Trusted ownCloud Servers" : "Servidors ownCloud de confiança",
- "+ Add ownCloud server" : "+ Afegir servidor ownCloud",
- "ownCloud Server" : "Servidor ownCloud"
+ "Trusted servers" : "Servidor de confiança",
+ "+ Add trusted server" : "+Afegir servidor de confiança",
+ "Trusted server" : "Servidor de confiança",
+ "Add" : "Afegir",
+ "Trusted Servers" : "Servidors de confiança",
+ "+ Add Nextcloud server" : "+ Afegir servidor Nextcloud",
+ "Nextcloud Server" : "Servidor Nextcloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/ca.json b/apps/federation/l10n/ca.json
index 3d5dc995c04..a3d13ce4f4d 100644
--- a/apps/federation/l10n/ca.json
+++ b/apps/federation/l10n/ca.json
@@ -1,13 +1,17 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "Servidor afegit a la llista de confiança ownCloud",
+ "Added to the list of trusted servers" : "Afegeix a la llista de servidors de confiança",
"Server is already in the list of trusted servers." : "El servidor ja està a la llista de servidors de confiança",
- "No ownCloud server found" : "No s'ha trobat cap servidor ownCloud",
+ "No server to federate with found" : "No s\\'ha trobar cap servidor federat",
"Could not add server" : "No s'ha pogut afegir el servidor",
"Federation" : "Federació",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federació ownCloud et permet connectar amb altes servidors ownCloud de confiança per a intercanviar el directori d'usuari. Per exemple, això serà utilitzat per auto-completar usuaris externs de la compartició federada",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federació li permet connectar amb altres servidors de confiança per a intercanviar directoris d\\'usuari. Per exemple, això s\\'utilitzarà per als usuaris externs d'auto-completat per a l\\'ús compartit federat.",
"Add server automatically once a federated share was created successfully" : "Afegir servidor automàticament quan s'hagi creat una federació correctament",
- "Trusted ownCloud Servers" : "Servidors ownCloud de confiança",
- "+ Add ownCloud server" : "+ Afegir servidor ownCloud",
- "ownCloud Server" : "Servidor ownCloud"
+ "Trusted servers" : "Servidor de confiança",
+ "+ Add trusted server" : "+Afegir servidor de confiança",
+ "Trusted server" : "Servidor de confiança",
+ "Add" : "Afegir",
+ "Trusted Servers" : "Servidors de confiança",
+ "+ Add Nextcloud server" : "+ Afegir servidor Nextcloud",
+ "Nextcloud Server" : "Servidor Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/cs_CZ.js b/apps/federation/l10n/cs_CZ.js
index 915cd646d53..df0f9bbfb41 100644
--- a/apps/federation/l10n/cs_CZ.js
+++ b/apps/federation/l10n/cs_CZ.js
@@ -8,13 +8,12 @@ OC.L10N.register(
"Federation" : "Sdružování",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.",
"Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení",
+ "Trusted servers" : "Důvěryhodné servery",
+ "+ Add trusted server" : "+ Přidat důvěryhodný server",
+ "Trusted server" : "Důvěryhodný server",
"Add" : "Přidat",
"Trusted Servers" : "Důvěryhodné servery",
"+ Add Nextcloud server" : "+ Přidat Nextcloud server",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server přidán do seznamu důvěryhodných serverů Nextcloud",
- "No Nextcloud server found" : "Nextcloud server nenalezen",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům Nextcloud za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.",
- "Trusted Nextcloud Servers" : "Důvěryhodné Nextcloud servery"
+ "Nextcloud Server" : "Server Nextcloud"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/federation/l10n/cs_CZ.json b/apps/federation/l10n/cs_CZ.json
index cf4b93be3f4..f28d002dc44 100644
--- a/apps/federation/l10n/cs_CZ.json
+++ b/apps/federation/l10n/cs_CZ.json
@@ -6,13 +6,12 @@
"Federation" : "Sdružování",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.",
"Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení",
+ "Trusted servers" : "Důvěryhodné servery",
+ "+ Add trusted server" : "+ Přidat důvěryhodný server",
+ "Trusted server" : "Důvěryhodný server",
"Add" : "Přidat",
"Trusted Servers" : "Důvěryhodné servery",
"+ Add Nextcloud server" : "+ Přidat Nextcloud server",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server přidán do seznamu důvěryhodných serverů Nextcloud",
- "No Nextcloud server found" : "Nextcloud server nenalezen",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům Nextcloud za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.",
- "Trusted Nextcloud Servers" : "Důvěryhodné Nextcloud servery"
+ "Nextcloud Server" : "Server Nextcloud"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js
index 6a008c33997..d9c6a3309b0 100644
--- a/apps/federation/l10n/de.js
+++ b/apps/federation/l10n/de.js
@@ -2,22 +2,18 @@ OC.L10N.register(
"federation",
{
"Added to the list of trusted servers" : "Der Liste der vertrauenswürdigen Server hinzugefügt",
- "Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.",
- "No server to federate with found" : "Kein Server zum Verbinden gefunden",
+ "Server is already in the list of trusted servers." : "Der Server ist bereits in der Liste der vertrauenswürdigen Server.",
+ "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden",
"Could not add server" : "Konnte Server nicht hinzufügen",
"Federation" : "Federation",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, dich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
"Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde",
"Trusted servers" : "Vertrauenswürdige Server",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
- "Trusted server" : "Vertauenswürdiger Server",
+ "Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen",
"Trusted Servers" : "Vertrauenswürdige Server",
"+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server zur Liste der vertrauenswürdigen Nextclouds hinzugefügt",
- "No Nextcloud server found" : "Kein Nextcloud Server gefunden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud Federation erlaubt es Dir, mit anderem vertrautem Nextcloud Server in Verbindung zu stehen, um Benutzerverzeichnise auszutauschen. Zum Beispiel wird das verwendet, um eine automatische Vervollständigung der externen Benutzer zu ermöglichen.",
- "Trusted Nextcloud Servers" : "Vertrauenswürdige Nextcloud Server"
+ "Nextcloud Server" : "Nextcloud Server"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json
index 084b05c2c54..f037f51ce0a 100644
--- a/apps/federation/l10n/de.json
+++ b/apps/federation/l10n/de.json
@@ -1,21 +1,17 @@
{ "translations": {
"Added to the list of trusted servers" : "Der Liste der vertrauenswürdigen Server hinzugefügt",
- "Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.",
- "No server to federate with found" : "Kein Server zum Verbinden gefunden",
+ "Server is already in the list of trusted servers." : "Der Server ist bereits in der Liste der vertrauenswürdigen Server.",
+ "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden",
"Could not add server" : "Konnte Server nicht hinzufügen",
"Federation" : "Federation",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, dich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
"Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde",
"Trusted servers" : "Vertrauenswürdige Server",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
- "Trusted server" : "Vertauenswürdiger Server",
+ "Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen",
"Trusted Servers" : "Vertrauenswürdige Server",
"+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server zur Liste der vertrauenswürdigen Nextclouds hinzugefügt",
- "No Nextcloud server found" : "Kein Nextcloud Server gefunden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud Federation erlaubt es Dir, mit anderem vertrautem Nextcloud Server in Verbindung zu stehen, um Benutzerverzeichnise auszutauschen. Zum Beispiel wird das verwendet, um eine automatische Vervollständigung der externen Benutzer zu ermöglichen.",
- "Trusted Nextcloud Servers" : "Vertrauenswürdige Nextcloud Server"
+ "Nextcloud Server" : "Nextcloud Server"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/de_DE.js b/apps/federation/l10n/de_DE.js
index d97e7847e9b..852971d7b9c 100644
--- a/apps/federation/l10n/de_DE.js
+++ b/apps/federation/l10n/de_DE.js
@@ -3,21 +3,17 @@ OC.L10N.register(
{
"Added to the list of trusted servers" : "Der Liste der vertrauenswürdigen Server hinzugefügt",
"Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.",
- "No server to federate with found" : "Kein Server gefunden, der sich verbinden ließe",
+ "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden",
"Could not add server" : "Konnte Server nicht hinzufügen",
"Federation" : "Federation",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen sich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit Ihnen (\"federated sharing\").",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
"Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde",
"Trusted servers" : "Vertrauenswürdige Server",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
- "Trusted server" : "Vertauenswürdiger Server",
+ "Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen",
"Trusted Servers" : "Vertrauenswürdige Server",
"+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server zur Liste der vertrauenswürdigen Nextclouds hinzugefügt",
- "No Nextcloud server found" : "Kein Nextcloud Server gefunden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud Federation erlaubt es Dir, mit anderem vertrautem Nextcloud Server in Verbindung zu stehen, um Benutzerverzeichnise auszutauschen. Zum Beispiel wird das verwendet, um eine automatische Vervollständigung der externen Benutzer zu ermöglichen.",
- "Trusted Nextcloud Servers" : "Vertrauenswürdige Nextcloud Server"
+ "Nextcloud Server" : "Nextcloud Server"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/de_DE.json b/apps/federation/l10n/de_DE.json
index 6a838a26131..83c1066a950 100644
--- a/apps/federation/l10n/de_DE.json
+++ b/apps/federation/l10n/de_DE.json
@@ -1,21 +1,17 @@
{ "translations": {
"Added to the list of trusted servers" : "Der Liste der vertrauenswürdigen Server hinzugefügt",
"Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.",
- "No server to federate with found" : "Kein Server gefunden, der sich verbinden ließe",
+ "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden",
"Could not add server" : "Konnte Server nicht hinzufügen",
"Federation" : "Federation",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen sich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit Ihnen (\"federated sharing\").",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.",
"Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde",
"Trusted servers" : "Vertrauenswürdige Server",
"+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen",
- "Trusted server" : "Vertauenswürdiger Server",
+ "Trusted server" : "Vertrauenswürdiger Server",
"Add" : "Hinzufügen",
"Trusted Servers" : "Vertrauenswürdige Server",
"+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server zur Liste der vertrauenswürdigen Nextclouds hinzugefügt",
- "No Nextcloud server found" : "Kein Nextcloud Server gefunden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud Federation erlaubt es Dir, mit anderem vertrautem Nextcloud Server in Verbindung zu stehen, um Benutzerverzeichnise auszutauschen. Zum Beispiel wird das verwendet, um eine automatische Vervollständigung der externen Benutzer zu ermöglichen.",
- "Trusted Nextcloud Servers" : "Vertrauenswürdige Nextcloud Server"
+ "Nextcloud Server" : "Nextcloud Server"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/el.js b/apps/federation/l10n/el.js
index b4404d94043..aa39c92851b 100644
--- a/apps/federation/l10n/el.js
+++ b/apps/federation/l10n/el.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "Ο διακομιστής προστέθηκε στην λίστα των έμπιστων ownCloud",
+ "Added to the list of trusted servers" : "Προσθήκη στην λίστα των έμπιστων διακομιστών",
"Server is already in the list of trusted servers." : "Ο διακομιστής περιλαμβάνεται ήδη στην λίστα των έμπιστων ownCloud",
- "No ownCloud server found" : "Δεν βρέθηκε διακομιστής ownCloud",
"Could not add server" : "Αδυναμία προσθήκης διακομιστή",
- "ownCloud Server" : "Διακομιστής ownCloud"
+ "Federation" : "Federation",
+ "Trusted servers" : "Έμπιστοι διακομιστές",
+ "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών",
+ "Trusted server" : "Έμπιστοι διακομιστές",
+ "Add" : "Προσθήκη",
+ "Trusted Servers" : "Έμπιστοι διακομιστές",
+ "+ Add Nextcloud server" : "+ Προσθήκη διακομιστή Nextcloud",
+ "Nextcloud Server" : "Διακομιστής Nextcloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/el.json b/apps/federation/l10n/el.json
index 887b731cad0..6ddb3346e4e 100644
--- a/apps/federation/l10n/el.json
+++ b/apps/federation/l10n/el.json
@@ -1,8 +1,14 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "Ο διακομιστής προστέθηκε στην λίστα των έμπιστων ownCloud",
+ "Added to the list of trusted servers" : "Προσθήκη στην λίστα των έμπιστων διακομιστών",
"Server is already in the list of trusted servers." : "Ο διακομιστής περιλαμβάνεται ήδη στην λίστα των έμπιστων ownCloud",
- "No ownCloud server found" : "Δεν βρέθηκε διακομιστής ownCloud",
"Could not add server" : "Αδυναμία προσθήκης διακομιστή",
- "ownCloud Server" : "Διακομιστής ownCloud"
+ "Federation" : "Federation",
+ "Trusted servers" : "Έμπιστοι διακομιστές",
+ "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών",
+ "Trusted server" : "Έμπιστοι διακομιστές",
+ "Add" : "Προσθήκη",
+ "Trusted Servers" : "Έμπιστοι διακομιστές",
+ "+ Add Nextcloud server" : "+ Προσθήκη διακομιστή Nextcloud",
+ "Nextcloud Server" : "Διακομιστής Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js
index 264e112c96d..a96acee49d1 100644
--- a/apps/federation/l10n/es.js
+++ b/apps/federation/l10n/es.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Añadir",
"Trusted Servers" : "Servidores de confianza",
"+ Add Nextcloud server" : "+ Añadir servidor Nextcloud",
- "Nextcloud Server" : "Servidor Nexcloud",
- "Server added to the list of trusted Nextclouds" : "Servidor Nextcloud añadido a la lista de servidores de confianza",
- "No Nextcloud server found" : "No se ha encontrado ningún servidor Nextcloud",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación de Nextcloud te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección de usuarios externos al compartir en federación. ",
- "Trusted Nextcloud Servers" : "Servidores Nextcloud de confianza"
+ "Nextcloud Server" : "Servidor Nexcloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json
index d4563db7657..146e3ca3ce7 100644
--- a/apps/federation/l10n/es.json
+++ b/apps/federation/l10n/es.json
@@ -12,10 +12,6 @@
"Add" : "Añadir",
"Trusted Servers" : "Servidores de confianza",
"+ Add Nextcloud server" : "+ Añadir servidor Nextcloud",
- "Nextcloud Server" : "Servidor Nexcloud",
- "Server added to the list of trusted Nextclouds" : "Servidor Nextcloud añadido a la lista de servidores de confianza",
- "No Nextcloud server found" : "No se ha encontrado ningún servidor Nextcloud",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación de Nextcloud te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección de usuarios externos al compartir en federación. ",
- "Trusted Nextcloud Servers" : "Servidores Nextcloud de confianza"
+ "Nextcloud Server" : "Servidor Nexcloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/fr.js b/apps/federation/l10n/fr.js
index 87b95f7ed96..3a5e81c3bc7 100644
--- a/apps/federation/l10n/fr.js
+++ b/apps/federation/l10n/fr.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Ajouter",
"Trusted Servers" : "Serveurs de confiance",
"+ Add Nextcloud server" : "+ Ajouter un serveur Nextcloud",
- "Nextcloud Server" : "Serveur Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Serveur ajouté à la liste des Nextclouds de confiance",
- "No Nextcloud server found" : "Aucun serveur Nextcloud trouvé",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La « fédération Nextcloud » vous permet de vous connecter avec d'autres serveurs Nextcloud pour échanger la liste des utilisateurs. Par exemple, ce sera utilisé pour auto-compléter les utilisateurs externes lors du partage fédéré.",
- "Trusted Nextcloud Servers" : "Serveurs Nextcloud de confiance"
+ "Nextcloud Server" : "Serveur Nextcloud"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/federation/l10n/fr.json b/apps/federation/l10n/fr.json
index a0801944759..33e60f2c2f9 100644
--- a/apps/federation/l10n/fr.json
+++ b/apps/federation/l10n/fr.json
@@ -12,10 +12,6 @@
"Add" : "Ajouter",
"Trusted Servers" : "Serveurs de confiance",
"+ Add Nextcloud server" : "+ Ajouter un serveur Nextcloud",
- "Nextcloud Server" : "Serveur Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Serveur ajouté à la liste des Nextclouds de confiance",
- "No Nextcloud server found" : "Aucun serveur Nextcloud trouvé",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La « fédération Nextcloud » vous permet de vous connecter avec d'autres serveurs Nextcloud pour échanger la liste des utilisateurs. Par exemple, ce sera utilisé pour auto-compléter les utilisateurs externes lors du partage fédéré.",
- "Trusted Nextcloud Servers" : "Serveurs Nextcloud de confiance"
+ "Nextcloud Server" : "Serveur Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/hu_HU.js b/apps/federation/l10n/hu_HU.js
index a0b0f8ed444..34d3ddfac32 100644
--- a/apps/federation/l10n/hu_HU.js
+++ b/apps/federation/l10n/hu_HU.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Hozzáadás",
"Trusted Servers" : "Megbízható szerverek",
"+ Add Nextcloud server" : "+ Nextcloud szerver hozzáadása",
- "Nextcloud Server" : "Nextcloud szerver",
- "Server added to the list of trusted Nextclouds" : "A szerver hozzáadva a megbízható Nextcloud szerverek listájához",
- "No Nextcloud server found" : "Nem található Nextloud szerver",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "A Nextcloud Egyesítés lehetővé teszi a kapcsolódást más megbízható szerverekhez a felhasználói könyvtárak kicseréléséhez. Például ennek segítségével lesznek automatikusan kiegészítve a külső felhasználók az egyesített megosztáshoz.",
- "Trusted Nextcloud Servers" : "Megbízható Nextcloud szerverek"
+ "Nextcloud Server" : "Nextcloud szerver"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/hu_HU.json b/apps/federation/l10n/hu_HU.json
index 1e38c2f4426..6659f303554 100644
--- a/apps/federation/l10n/hu_HU.json
+++ b/apps/federation/l10n/hu_HU.json
@@ -12,10 +12,6 @@
"Add" : "Hozzáadás",
"Trusted Servers" : "Megbízható szerverek",
"+ Add Nextcloud server" : "+ Nextcloud szerver hozzáadása",
- "Nextcloud Server" : "Nextcloud szerver",
- "Server added to the list of trusted Nextclouds" : "A szerver hozzáadva a megbízható Nextcloud szerverek listájához",
- "No Nextcloud server found" : "Nem található Nextloud szerver",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "A Nextcloud Egyesítés lehetővé teszi a kapcsolódást más megbízható szerverekhez a felhasználói könyvtárak kicseréléséhez. Például ennek segítségével lesznek automatikusan kiegészítve a külső felhasználók az egyesített megosztáshoz.",
- "Trusted Nextcloud Servers" : "Megbízható Nextcloud szerverek"
+ "Nextcloud Server" : "Nextcloud szerver"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/id.js b/apps/federation/l10n/id.js
index 801cd52ae12..6184b789aaf 100644
--- a/apps/federation/l10n/id.js
+++ b/apps/federation/l10n/id.js
@@ -8,12 +8,12 @@ OC.L10N.register(
"Federation" : "Federasi",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.",
"Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat",
+ "Trusted servers" : "Server terpercaya",
+ "+ Add trusted server" : "+ Tambah server terpercaya",
+ "Trusted server" : "Server terpercaya",
+ "Add" : "Tambah",
"Trusted Servers" : "Server Terpercaya",
"+ Add Nextcloud server" : "+ Tambahkan server Nextcloud",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server telah ditambahkan pada daftar server Nextcloud terpercaya",
- "No Nextcloud server found" : "Tidak ada server Nextcloud ditemukan",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi Nextcloud memungkinkan Anda untuk terhubung dengan server Nextcloud lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.",
- "Trusted Nextcloud Servers" : "Server Nextcloud Terpercaya"
+ "Nextcloud Server" : "Server Nextcloud"
},
"nplurals=1; plural=0;");
diff --git a/apps/federation/l10n/id.json b/apps/federation/l10n/id.json
index 2ca5efeaf2a..1ca80846c85 100644
--- a/apps/federation/l10n/id.json
+++ b/apps/federation/l10n/id.json
@@ -6,12 +6,12 @@
"Federation" : "Federasi",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.",
"Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat",
+ "Trusted servers" : "Server terpercaya",
+ "+ Add trusted server" : "+ Tambah server terpercaya",
+ "Trusted server" : "Server terpercaya",
+ "Add" : "Tambah",
"Trusted Servers" : "Server Terpercaya",
"+ Add Nextcloud server" : "+ Tambahkan server Nextcloud",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server telah ditambahkan pada daftar server Nextcloud terpercaya",
- "No Nextcloud server found" : "Tidak ada server Nextcloud ditemukan",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi Nextcloud memungkinkan Anda untuk terhubung dengan server Nextcloud lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.",
- "Trusted Nextcloud Servers" : "Server Nextcloud Terpercaya"
+ "Nextcloud Server" : "Server Nextcloud"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federation/l10n/it.js b/apps/federation/l10n/it.js
index 2f585131e8a..dd996beeffd 100644
--- a/apps/federation/l10n/it.js
+++ b/apps/federation/l10n/it.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Aggiungi",
"Trusted Servers" : "Server affidabili",
"+ Add Nextcloud server" : "+ Aggiungi server Nextcloud",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server aggiunto all'elenco dei Nextcloud affidabili",
- "No Nextcloud server found" : "Nessun server Nextcloud trovato",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federazione di Nextcloud consente di connettersi ad altri server affidabili per accedere alla cartella utente. Ad esempio, ciò sarà utilizzato per il completamento automatico di utenti esterni per la condivisione federata.",
- "Trusted Nextcloud Servers" : "Server Nextcloud affidabili"
+ "Nextcloud Server" : "Server Nextcloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/it.json b/apps/federation/l10n/it.json
index 9babef7d8be..1d77ade2cd4 100644
--- a/apps/federation/l10n/it.json
+++ b/apps/federation/l10n/it.json
@@ -12,10 +12,6 @@
"Add" : "Aggiungi",
"Trusted Servers" : "Server affidabili",
"+ Add Nextcloud server" : "+ Aggiungi server Nextcloud",
- "Nextcloud Server" : "Server Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Server aggiunto all'elenco dei Nextcloud affidabili",
- "No Nextcloud server found" : "Nessun server Nextcloud trovato",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federazione di Nextcloud consente di connettersi ad altri server affidabili per accedere alla cartella utente. Ad esempio, ciò sarà utilizzato per il completamento automatico di utenti esterni per la condivisione federata.",
- "Trusted Nextcloud Servers" : "Server Nextcloud affidabili"
+ "Nextcloud Server" : "Server Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/ja.js b/apps/federation/l10n/ja.js
index e94ce278fe6..88b82a32c43 100644
--- a/apps/federation/l10n/ja.js
+++ b/apps/federation/l10n/ja.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "追加",
"Trusted Servers" : "信頼済サーバー",
"+ Add Nextcloud server" : "Nextcloudサーバーを追加",
- "Nextcloud Server" : "Nextcloud サーバー",
- "Server added to the list of trusted Nextclouds" : "信頼済Nextcloudサーバーとして登録済",
- "No Nextcloud server found" : "Nextcloud サーバーがありません。",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloudサーバー連携では、他の信頼できるNextcloudサーバーと接続して、ユーザーリストを交換することができます。これを使えば、サーバー連携共有時に他のサーバーのユーザーのIDを自動補完します。",
- "Trusted Nextcloud Servers" : "信頼済のNextcloudサーバー"
+ "Nextcloud Server" : "Nextcloud サーバー"
},
"nplurals=1; plural=0;");
diff --git a/apps/federation/l10n/ja.json b/apps/federation/l10n/ja.json
index c9b527c66dd..ff7b0faedd3 100644
--- a/apps/federation/l10n/ja.json
+++ b/apps/federation/l10n/ja.json
@@ -12,10 +12,6 @@
"Add" : "追加",
"Trusted Servers" : "信頼済サーバー",
"+ Add Nextcloud server" : "Nextcloudサーバーを追加",
- "Nextcloud Server" : "Nextcloud サーバー",
- "Server added to the list of trusted Nextclouds" : "信頼済Nextcloudサーバーとして登録済",
- "No Nextcloud server found" : "Nextcloud サーバーがありません。",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloudサーバー連携では、他の信頼できるNextcloudサーバーと接続して、ユーザーリストを交換することができます。これを使えば、サーバー連携共有時に他のサーバーのユーザーのIDを自動補完します。",
- "Trusted Nextcloud Servers" : "信頼済のNextcloudサーバー"
+ "Nextcloud Server" : "Nextcloud サーバー"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federation/l10n/lv.js b/apps/federation/l10n/lv.js
new file mode 100644
index 00000000000..568ba8629d5
--- /dev/null
+++ b/apps/federation/l10n/lv.js
@@ -0,0 +1,19 @@
+OC.L10N.register(
+ "federation",
+ {
+ "Added to the list of trusted servers" : "Sarakstam pievieno uzticamo serveri",
+ "Server is already in the list of trusted servers." : "Serveris jau ir uzticamo serveru sarakstā .",
+ "No server to federate with found" : "Nav atrasts neviens serveris",
+ "Could not add server" : "Nevarēja pievienot serveri",
+ "Federation" : "Federācija",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federācija ļauj savienot ar citiem uzticamiem serveriem ar Exchange lietotāja direktoriju. Piemēram, tas tiks izmantots, lai automātiski pieslēgtu ārējiem lietotājiem integrēto koplietošanu.",
+ "Add server automatically once a federated share was created successfully" : "Automātiski pievienots serveris federācijas koplietojumam, veiksmīgi",
+ "Trusted servers" : "Uzticami serveri",
+ "+ Add trusted server" : "+ pievietot uzticamiem serveriem",
+ "Trusted server" : "Uzticams serveris",
+ "Add" : "Pievienot",
+ "Trusted Servers" : "Uzticami serveri",
+ "+ Add Nextcloud server" : "+ pievienot Nextcloud serveri",
+ "Nextcloud Server" : "Nextcloud Serveris"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/federation/l10n/lv.json b/apps/federation/l10n/lv.json
new file mode 100644
index 00000000000..6fd59a3c09f
--- /dev/null
+++ b/apps/federation/l10n/lv.json
@@ -0,0 +1,17 @@
+{ "translations": {
+ "Added to the list of trusted servers" : "Sarakstam pievieno uzticamo serveri",
+ "Server is already in the list of trusted servers." : "Serveris jau ir uzticamo serveru sarakstā .",
+ "No server to federate with found" : "Nav atrasts neviens serveris",
+ "Could not add server" : "Nevarēja pievienot serveri",
+ "Federation" : "Federācija",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federācija ļauj savienot ar citiem uzticamiem serveriem ar Exchange lietotāja direktoriju. Piemēram, tas tiks izmantots, lai automātiski pieslēgtu ārējiem lietotājiem integrēto koplietošanu.",
+ "Add server automatically once a federated share was created successfully" : "Automātiski pievienots serveris federācijas koplietojumam, veiksmīgi",
+ "Trusted servers" : "Uzticami serveri",
+ "+ Add trusted server" : "+ pievietot uzticamiem serveriem",
+ "Trusted server" : "Uzticams serveris",
+ "Add" : "Pievienot",
+ "Trusted Servers" : "Uzticami serveri",
+ "+ Add Nextcloud server" : "+ pievienot Nextcloud serveri",
+ "Nextcloud Server" : "Nextcloud Serveris"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/federation/l10n/nl.js b/apps/federation/l10n/nl.js
index 49d21785930..8d571f28ba5 100644
--- a/apps/federation/l10n/nl.js
+++ b/apps/federation/l10n/nl.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Toevoegen",
"Trusted Servers" : "Vertrouwde servers",
"+ Add Nextcloud server" : "+ Toevoegen Nextcloud server",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server toegevoegd aan de lijst met vertrouwde Nextclouds",
- "No Nextcloud server found" : "Geen Nextcloud server gevonden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud federatie maakt het mogelijk om te verbinden met andere vertrouwde Nextclouds om de gebuikersadministratie te delen. Zo kun je automatisch externe gebruikers toevoegen voor federatief delen.",
- "Trusted Nextcloud Servers" : "Vertrouwde Nextcloud Servers"
+ "Nextcloud Server" : "Nextcloud Server"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/nl.json b/apps/federation/l10n/nl.json
index 49ec6c58ba9..e29994fb4ea 100644
--- a/apps/federation/l10n/nl.json
+++ b/apps/federation/l10n/nl.json
@@ -12,10 +12,6 @@
"Add" : "Toevoegen",
"Trusted Servers" : "Vertrouwde servers",
"+ Add Nextcloud server" : "+ Toevoegen Nextcloud server",
- "Nextcloud Server" : "Nextcloud Server",
- "Server added to the list of trusted Nextclouds" : "Server toegevoegd aan de lijst met vertrouwde Nextclouds",
- "No Nextcloud server found" : "Geen Nextcloud server gevonden",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud federatie maakt het mogelijk om te verbinden met andere vertrouwde Nextclouds om de gebuikersadministratie te delen. Zo kun je automatisch externe gebruikers toevoegen voor federatief delen.",
- "Trusted Nextcloud Servers" : "Vertrouwde Nextcloud Servers"
+ "Nextcloud Server" : "Nextcloud Server"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/pl.js b/apps/federation/l10n/pl.js
index 6e14a2d9848..a370d2cce5c 100644
--- a/apps/federation/l10n/pl.js
+++ b/apps/federation/l10n/pl.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Dodaj",
"Trusted Servers" : "Zaufane serwery",
"+ Add Nextcloud server" : "Dodaj serwer Nextcloud",
- "Nextcloud Server" : "Serwer Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Serwer dodany do listy zaufanych Nextclouds",
- "No Nextcloud server found" : "Nie znaleziono serwera Nextcloud",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Stowarzyszenie Nextcloud pozwala łączyć się z innymi zaufanymi użytkownikami Nextclouds i wymieniać się z nimi katalogami. Na przykład, może to być wykorzystane do autouzupełniania w dzieleniu się ze stowarzyszonym użytkownikiem.",
- "Trusted Nextcloud Servers" : "Zaufane serwery Nextcloud"
+ "Nextcloud Server" : "Serwer Nextcloud"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/federation/l10n/pl.json b/apps/federation/l10n/pl.json
index 2d4c71d3ee2..ba18394b239 100644
--- a/apps/federation/l10n/pl.json
+++ b/apps/federation/l10n/pl.json
@@ -12,10 +12,6 @@
"Add" : "Dodaj",
"Trusted Servers" : "Zaufane serwery",
"+ Add Nextcloud server" : "Dodaj serwer Nextcloud",
- "Nextcloud Server" : "Serwer Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Serwer dodany do listy zaufanych Nextclouds",
- "No Nextcloud server found" : "Nie znaleziono serwera Nextcloud",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Stowarzyszenie Nextcloud pozwala łączyć się z innymi zaufanymi użytkownikami Nextclouds i wymieniać się z nimi katalogami. Na przykład, może to być wykorzystane do autouzupełniania w dzieleniu się ze stowarzyszonym użytkownikiem.",
- "Trusted Nextcloud Servers" : "Zaufane serwery Nextcloud"
+ "Nextcloud Server" : "Serwer Nextcloud"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/pt_BR.js b/apps/federation/l10n/pt_BR.js
index 66cddf65879..8c6104917b7 100644
--- a/apps/federation/l10n/pt_BR.js
+++ b/apps/federation/l10n/pt_BR.js
@@ -14,10 +14,6 @@ OC.L10N.register(
"Add" : "Adicionar",
"Trusted Servers" : "Servidores confiáveis",
"+ Add Nextcloud server" : "+ Adicionar servidor Nextcloud",
- "Nextcloud Server" : "Servidor Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Adicionado a lista de servidores confiáveis.",
- "No Nextcloud server found" : "Servidor Nextcloud não encontrado",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "A Federação Nextcloud permite que você se conecte com outros Nextcloud confiável para trocar diretórios do usuário. Por exemplo, este será utilizado para usuários externos de auto-completar para compartilhamento federado.",
- "Trusted Nextcloud Servers" : "Servidores Nextcloud confiáveis"
+ "Nextcloud Server" : "Servidor Nextcloud"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/federation/l10n/pt_BR.json b/apps/federation/l10n/pt_BR.json
index 59ef4e0434d..ac414f579bf 100644
--- a/apps/federation/l10n/pt_BR.json
+++ b/apps/federation/l10n/pt_BR.json
@@ -12,10 +12,6 @@
"Add" : "Adicionar",
"Trusted Servers" : "Servidores confiáveis",
"+ Add Nextcloud server" : "+ Adicionar servidor Nextcloud",
- "Nextcloud Server" : "Servidor Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Adicionado a lista de servidores confiáveis.",
- "No Nextcloud server found" : "Servidor Nextcloud não encontrado",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "A Federação Nextcloud permite que você se conecte com outros Nextcloud confiável para trocar diretórios do usuário. Por exemplo, este será utilizado para usuários externos de auto-completar para compartilhamento federado.",
- "Trusted Nextcloud Servers" : "Servidores Nextcloud confiáveis"
+ "Nextcloud Server" : "Servidor Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/ru.js b/apps/federation/l10n/ru.js
index 267bc6cd1a5..78dcb348480 100644
--- a/apps/federation/l10n/ru.js
+++ b/apps/federation/l10n/ru.js
@@ -5,15 +5,15 @@ OC.L10N.register(
"Server is already in the list of trusted servers." : "Сервер уже есть в списке доверенных серверов.",
"No server to federate with found" : "Сервер для объединения не найден",
"Could not add server" : "Не удалось добавить сервер",
- "Federation" : "Объединение",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.",
- "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически, как только федеративный общий доступ будет успешно создан",
- "Trusted Servers" : "Доверенные сервера",
+ "Federation" : "Федерация",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Федерация серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автодополнения имён пользователей при открытии федеративного общего доступа.",
+ "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически после успешного создания федеративного ресурса общего доступа",
+ "Trusted servers" : "Доверенные серверы",
+ "+ Add trusted server" : "+ Добавить доверенный сервер",
+ "Trusted server" : "Доверенный сервер",
+ "Add" : "Добавить",
+ "Trusted Servers" : "Доверенные серверы",
"+ Add Nextcloud server" : "+ Добавить сервер Nextcloud",
- "Nextcloud Server" : "Сервер Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Сервер добавлен в список доверенных",
- "No Nextcloud server found" : "Сервер Nextcloud не найден",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволяет вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.",
- "Trusted Nextcloud Servers" : "Доверенные серверы Nextcloud"
+ "Nextcloud Server" : "Сервер Nextcloud"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/federation/l10n/ru.json b/apps/federation/l10n/ru.json
index 4b2e1149303..5ca16d2b208 100644
--- a/apps/federation/l10n/ru.json
+++ b/apps/federation/l10n/ru.json
@@ -3,15 +3,15 @@
"Server is already in the list of trusted servers." : "Сервер уже есть в списке доверенных серверов.",
"No server to federate with found" : "Сервер для объединения не найден",
"Could not add server" : "Не удалось добавить сервер",
- "Federation" : "Объединение",
- "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.",
- "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически, как только федеративный общий доступ будет успешно создан",
- "Trusted Servers" : "Доверенные сервера",
+ "Federation" : "Федерация",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Федерация серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автодополнения имён пользователей при открытии федеративного общего доступа.",
+ "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически после успешного создания федеративного ресурса общего доступа",
+ "Trusted servers" : "Доверенные серверы",
+ "+ Add trusted server" : "+ Добавить доверенный сервер",
+ "Trusted server" : "Доверенный сервер",
+ "Add" : "Добавить",
+ "Trusted Servers" : "Доверенные серверы",
"+ Add Nextcloud server" : "+ Добавить сервер Nextcloud",
- "Nextcloud Server" : "Сервер Nextcloud",
- "Server added to the list of trusted Nextclouds" : "Сервер добавлен в список доверенных",
- "No Nextcloud server found" : "Сервер Nextcloud не найден",
- "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволяет вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.",
- "Trusted Nextcloud Servers" : "Доверенные серверы Nextcloud"
+ "Nextcloud Server" : "Сервер Nextcloud"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/sl.js b/apps/federation/l10n/sl.js
index 72358229a72..e7c8a7043bc 100644
--- a/apps/federation/l10n/sl.js
+++ b/apps/federation/l10n/sl.js
@@ -3,11 +3,16 @@ OC.L10N.register(
{
"Added to the list of trusted servers" : "Dodano na spisek varnih strežnikov",
"Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.",
- "No server to federate found" : "Ne najdem strežnika za federiranje",
"Could not add server" : "Ni mogoče dodati strežnika.",
"Federation" : "Zvezni oblaki",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federiranje omogoča povezovanje z drugimi varnimi strežniki in izmenjavo spiska uporabnikov. Primer je samodejno dopolnjevanje zunanjih uporabnikov pri federacijski souporabi.",
"Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena",
- "Trusted Servers" : "Varni strežniki"
+ "Trusted servers" : "Zanesljivi strežniki",
+ "+ Add trusted server" : "+ Dodaj zanesljiv strežnik",
+ "Trusted server" : "Zanesljiv strežnik",
+ "Add" : "Dodaj",
+ "Trusted Servers" : "Varni strežniki",
+ "+ Add Nextcloud server" : "+ Dodaj Nextcloud strežnik",
+ "Nextcloud Server" : "Nextcloud Strežnik"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/federation/l10n/sl.json b/apps/federation/l10n/sl.json
index d139b1f5101..865e4e8248e 100644
--- a/apps/federation/l10n/sl.json
+++ b/apps/federation/l10n/sl.json
@@ -1,11 +1,16 @@
{ "translations": {
"Added to the list of trusted servers" : "Dodano na spisek varnih strežnikov",
"Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.",
- "No server to federate found" : "Ne najdem strežnika za federiranje",
"Could not add server" : "Ni mogoče dodati strežnika.",
"Federation" : "Zvezni oblaki",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federiranje omogoča povezovanje z drugimi varnimi strežniki in izmenjavo spiska uporabnikov. Primer je samodejno dopolnjevanje zunanjih uporabnikov pri federacijski souporabi.",
"Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena",
- "Trusted Servers" : "Varni strežniki"
+ "Trusted servers" : "Zanesljivi strežniki",
+ "+ Add trusted server" : "+ Dodaj zanesljiv strežnik",
+ "Trusted server" : "Zanesljiv strežnik",
+ "Add" : "Dodaj",
+ "Trusted Servers" : "Varni strežniki",
+ "+ Add Nextcloud server" : "+ Dodaj Nextcloud strežnik",
+ "Nextcloud Server" : "Nextcloud Strežnik"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/sq.js b/apps/federation/l10n/sq.js
index 9d69a1fdf80..79ef49ef468 100644
--- a/apps/federation/l10n/sq.js
+++ b/apps/federation/l10n/sq.js
@@ -1,15 +1,19 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "Shërbyesi u shtua te lista e ownCloud-eve të besuar",
- "Server is already in the list of trusted servers." : "Shërbyesi është tashmë në listën e shërbyesve të besuar.",
- "No ownCloud server found" : "S’u gjet shërbyes ownCloud",
- "Could not add server" : "Shërbyesi s’u shtua dot",
+ "Added to the list of trusted servers" : "U shtua në listën e server-ave të besuar",
+ "Server is already in the list of trusted servers." : "Server-i është tashmë në listën e server-ave të besuar.",
+ "No server to federate with found" : "Nuk u gjet server me të cilin mund të federohej",
+ "Could not add server" : "Server-i s’u shtua dot",
"Federation" : "Federim",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federimi ownCloud ju lejon të lidheni me ownCloud-e të tjerë për të shkëmbyer drejtorinë e përdoruesve. Për shembull, kjo do të përdoret për për vetëplotësim përdoruesish të jashtëm për ndarje të federuar.",
- "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu shërbyesin pasi të jetë krijuar me sukses një ndarje e federuar",
- "Trusted ownCloud Servers" : "Shërbyes ownCloud të Besuar",
- "+ Add ownCloud server" : "+ Shtoni shërbyes ownCloud",
- "ownCloud Server" : "Shërbyes ownCloud"
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federimi ju lejon të lidheni me server-a të tjerë për të shkëmbyer direktorinë e përdoruesit. Për shembull, kjo mund të përdoret për të parapërgatitur vendet e punës për përdorues të jashtëm në shpërndarjen e federuar.",
+ "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu server-in pasi të jetë krijuar me sukses një ndarje e federuar",
+ "Trusted servers" : "Servera të besuar",
+ "+ Add trusted server" : "+ Shto server-a të besuar",
+ "Trusted server" : "Server i besuar",
+ "Add" : "Shto",
+ "Trusted Servers" : "Server të besuar",
+ "+ Add Nextcloud server" : "+ Shto server Nextcloud",
+ "Nextcloud Server" : "Server Nextcloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/sq.json b/apps/federation/l10n/sq.json
index 67dcdcebe07..933267e29e2 100644
--- a/apps/federation/l10n/sq.json
+++ b/apps/federation/l10n/sq.json
@@ -1,13 +1,17 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "Shërbyesi u shtua te lista e ownCloud-eve të besuar",
- "Server is already in the list of trusted servers." : "Shërbyesi është tashmë në listën e shërbyesve të besuar.",
- "No ownCloud server found" : "S’u gjet shërbyes ownCloud",
- "Could not add server" : "Shërbyesi s’u shtua dot",
+ "Added to the list of trusted servers" : "U shtua në listën e server-ave të besuar",
+ "Server is already in the list of trusted servers." : "Server-i është tashmë në listën e server-ave të besuar.",
+ "No server to federate with found" : "Nuk u gjet server me të cilin mund të federohej",
+ "Could not add server" : "Server-i s’u shtua dot",
"Federation" : "Federim",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federimi ownCloud ju lejon të lidheni me ownCloud-e të tjerë për të shkëmbyer drejtorinë e përdoruesve. Për shembull, kjo do të përdoret për për vetëplotësim përdoruesish të jashtëm për ndarje të federuar.",
- "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu shërbyesin pasi të jetë krijuar me sukses një ndarje e federuar",
- "Trusted ownCloud Servers" : "Shërbyes ownCloud të Besuar",
- "+ Add ownCloud server" : "+ Shtoni shërbyes ownCloud",
- "ownCloud Server" : "Shërbyes ownCloud"
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federimi ju lejon të lidheni me server-a të tjerë për të shkëmbyer direktorinë e përdoruesit. Për shembull, kjo mund të përdoret për të parapërgatitur vendet e punës për përdorues të jashtëm në shpërndarjen e federuar.",
+ "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu server-in pasi të jetë krijuar me sukses një ndarje e federuar",
+ "Trusted servers" : "Servera të besuar",
+ "+ Add trusted server" : "+ Shto server-a të besuar",
+ "Trusted server" : "Server i besuar",
+ "Add" : "Shto",
+ "Trusted Servers" : "Server të besuar",
+ "+ Add Nextcloud server" : "+ Shto server Nextcloud",
+ "Nextcloud Server" : "Server Nextcloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/sv.js b/apps/federation/l10n/sv.js
index 7855084e268..1c6684daec6 100644
--- a/apps/federation/l10n/sv.js
+++ b/apps/federation/l10n/sv.js
@@ -1,15 +1,19 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar",
+ "Added to the list of trusted servers" : "Tillagd i listan med betrodda servrar",
"Server is already in the list of trusted servers." : "Servern finns redan i listan",
- "No ownCloud server found" : "Ingen ownCloud-server kunde hittas",
+ "No server to federate with found" : "Ingen server att federera med hittades",
"Could not add server" : "Kunde inte lägga till server",
"Federation" : "Federerad delning",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation låter dig ansluta till andra betrodda servrar för att utbyta användarinformation. Till exempel kommer detta användas för att auto-komplettera externa användare för federerad delning.",
"Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats",
- "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar",
- "+ Add ownCloud server" : "+ Lägg till ownCloud-server",
- "ownCloud Server" : "ownCloud-server"
+ "Trusted servers" : "Betrodda servrar",
+ "+ Add trusted server" : "+ Lägg till betrodd server",
+ "Trusted server" : "Betrodd server",
+ "Add" : "Lägg till",
+ "Trusted Servers" : "Betrodda servrar",
+ "+ Add Nextcloud server" : "+ Lägg till Nextcloud-server",
+ "Nextcloud Server" : "Nextcloud-server"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/sv.json b/apps/federation/l10n/sv.json
index c27008a5312..68e4f055f3d 100644
--- a/apps/federation/l10n/sv.json
+++ b/apps/federation/l10n/sv.json
@@ -1,13 +1,17 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar",
+ "Added to the list of trusted servers" : "Tillagd i listan med betrodda servrar",
"Server is already in the list of trusted servers." : "Servern finns redan i listan",
- "No ownCloud server found" : "Ingen ownCloud-server kunde hittas",
+ "No server to federate with found" : "Ingen server att federera med hittades",
"Could not add server" : "Kunde inte lägga till server",
"Federation" : "Federerad delning",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation låter dig ansluta till andra betrodda servrar för att utbyta användarinformation. Till exempel kommer detta användas för att auto-komplettera externa användare för federerad delning.",
"Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats",
- "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar",
- "+ Add ownCloud server" : "+ Lägg till ownCloud-server",
- "ownCloud Server" : "ownCloud-server"
+ "Trusted servers" : "Betrodda servrar",
+ "+ Add trusted server" : "+ Lägg till betrodd server",
+ "Trusted server" : "Betrodd server",
+ "Add" : "Lägg till",
+ "Trusted Servers" : "Betrodda servrar",
+ "+ Add Nextcloud server" : "+ Lägg till Nextcloud-server",
+ "Nextcloud Server" : "Nextcloud-server"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/zh_CN.js b/apps/federation/l10n/zh_CN.js
index a84f6350671..893dab97b1d 100644
--- a/apps/federation/l10n/zh_CN.js
+++ b/apps/federation/l10n/zh_CN.js
@@ -1,15 +1,19 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "服务器已成功添加至信任服务器列表。",
+ "Added to the list of trusted servers" : "添加到可信任服务器列表中",
"Server is already in the list of trusted servers." : "服务器在线,并已成功添加至信任服务器列表。",
- "No ownCloud server found" : "没有找到对应服务器",
+ "No server to federate with found" : "没有找到联盟服务器",
"Could not add server" : "无法添加服务器",
"Federation" : "联合",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联盟允许您与其他受信任的服务器连接并交换用户目录。 例如,这将用于自动完成外部用户组成共享联盟。",
"Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器",
- "Trusted ownCloud Servers" : "可信 ownCloud 服务器",
- "+ Add ownCloud server" : "+ 添加 ownCloud 服务器",
- "ownCloud Server" : "ownCloud 服务器"
+ "Trusted servers" : "可信任服务器",
+ "+ Add trusted server" : "+ 添加可信任服务器",
+ "Trusted server" : "可信任服务器",
+ "Add" : "添加",
+ "Trusted Servers" : "可信任服务器",
+ "+ Add Nextcloud server" : "+ 添加 Nextcloud 服务器 ",
+ "Nextcloud Server" : "Nextcloud 服务器"
},
"nplurals=1; plural=0;");
diff --git a/apps/federation/l10n/zh_CN.json b/apps/federation/l10n/zh_CN.json
index de8663eb7ab..147269fa63e 100644
--- a/apps/federation/l10n/zh_CN.json
+++ b/apps/federation/l10n/zh_CN.json
@@ -1,13 +1,17 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "服务器已成功添加至信任服务器列表。",
+ "Added to the list of trusted servers" : "添加到可信任服务器列表中",
"Server is already in the list of trusted servers." : "服务器在线,并已成功添加至信任服务器列表。",
- "No ownCloud server found" : "没有找到对应服务器",
+ "No server to federate with found" : "没有找到联盟服务器",
"Could not add server" : "无法添加服务器",
"Federation" : "联合",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联盟允许您与其他受信任的服务器连接并交换用户目录。 例如,这将用于自动完成外部用户组成共享联盟。",
"Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器",
- "Trusted ownCloud Servers" : "可信 ownCloud 服务器",
- "+ Add ownCloud server" : "+ 添加 ownCloud 服务器",
- "ownCloud Server" : "ownCloud 服务器"
+ "Trusted servers" : "可信任服务器",
+ "+ Add trusted server" : "+ 添加可信任服务器",
+ "Trusted server" : "可信任服务器",
+ "Add" : "添加",
+ "Trusted Servers" : "可信任服务器",
+ "+ Add Nextcloud server" : "+ 添加 Nextcloud 服务器 ",
+ "Nextcloud Server" : "Nextcloud 服务器"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federation/lib/DAV/FedAuth.php b/apps/federation/lib/DAV/FedAuth.php
index 705ccbdd3bb..ae78ffeded9 100644
--- a/apps/federation/lib/DAV/FedAuth.php
+++ b/apps/federation/lib/DAV/FedAuth.php
@@ -24,6 +24,8 @@ namespace OCA\Federation\DAV;
use OCA\Federation\DbHandler;
use Sabre\DAV\Auth\Backend\AbstractBasic;
+use Sabre\HTTP\RequestInterface;
+use Sabre\HTTP\ResponseInterface;
class FedAuth extends AbstractBasic {
@@ -57,4 +59,10 @@ class FedAuth extends AbstractBasic {
protected function validateUserPass($username, $password) {
return $this->db->auth($username, $password);
}
+
+ /**
+ * @inheritdoc
+ */
+ function challenge(RequestInterface $request, ResponseInterface $response) {
+ }
}
diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php
index a194bb5e795..63acda3a706 100644
--- a/apps/files/appinfo/app.php
+++ b/apps/files/appinfo/app.php
@@ -26,20 +26,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+// required for translation purpose
+// t('Files')
$l = \OC::$server->getL10N('files');
-\OC::$server->getNavigationManager()->add(function () {
- $urlGenerator = \OC::$server->getURLGenerator();
- $l = \OC::$server->getL10N('files');
- return [
- 'id' => 'files_index',
- 'order' => 0,
- 'href' => $urlGenerator->linkToRoute('files.view.index'),
- 'icon' => $urlGenerator->imagePath('core', 'places/files.svg'),
- 'name' => $l->t('Files'),
- ];
-});
-
\OC::$server->getSearch()->registerProvider('OC\Search\Provider\File', array('apps' => array('files')));
$templateManager = \OC_Helper::getFileTemplateManager();
diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml
index 35e58b7202e..2bb4d98c158 100644
--- a/apps/files/appinfo/info.xml
+++ b/apps/files/appinfo/info.xml
@@ -6,12 +6,12 @@
<licence>AGPL</licence>
<author>Robin Appelman, Vincent Petry</author>
<default_enable/>
- <version>1.6.1</version>
+ <version>1.7.0</version>
<types>
<filesystem/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-files</user>
@@ -53,4 +53,11 @@
<command>OCA\Files\Command\DeleteOrphanedFiles</command>
<command>OCA\Files\Command\TransferOwnership</command>
</commands>
+
+ <navigation>
+ <name>Files</name>
+ <route>files.view.index</route>
+ <order>0</order>
+ </navigation>
+
</info>
diff --git a/apps/files/css/detailsView.css b/apps/files/css/detailsView.css
index f91fe3319e5..cab6a684042 100644
--- a/apps/files/css/detailsView.css
+++ b/apps/files/css/detailsView.css
@@ -16,6 +16,7 @@
#app-sidebar .mainFileInfoView .icon {
display: inline-block;
+ background-size: 16px 16px;
}
#app-sidebar .mainFileInfoView .permalink {
@@ -102,23 +103,16 @@
color: #999;
}
-#app-sidebar .file-details img {
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- opacity: .5;
-}
-
-#app-sidebar .file-details img:hover,
-#app-sidebar .file-details img:focus{
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- opacity: 1;
-}
-
#app-sidebar .action-favorite {
- vertical-align: text-bottom;
+ vertical-align: sub;
padding: 10px;
margin: -10px;
}
+#app-sidebar .action-favorite > span{
+ opacity: .7 !important;
+}
+
#app-sidebar .detailList {
float: left;
}
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 7956ef5c6ae..05b8e58cbe4 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -768,46 +768,20 @@ html.ie8 #controls .button.new {
}
.newFileMenu {
- width: 200px;
- margin-left: -56px;
- margin-top: 25px;
+ font-weight: 300;
+ top: 100%;
+ margin-top: 4px;
+ min-width: 100px;
+ margin-left: 7px;
z-index: 1001;
}
-.newFileMenu .menuitem {
- white-space: nowrap;
- overflow: hidden;
-}
-.newFileMenu.popovermenu a.menuitem,
-.newFileMenu.popovermenu label.menuitem,
-.newFileMenu.popovermenu .menuitem {
- padding: 0;
- margin: 0;
-}
-
-.newFileMenu.popovermenu a.menuitem.active {
- opacity: 1;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
-}
-
-.newFileMenu.bubble:after {
- left: 75px;
- right: auto;
-}
-.newFileMenu.bubble:before {
- left: 75px;
- right: auto;
-}
-
.newFileMenu .filenameform {
display: inline-block;
}
.newFileMenu .filenameform input {
- width: 100%;
- box-sizing: border-box;
- margin: -2px 0;
+ margin: 2px 0;
}
#fileList .popovermenu .action {
@@ -835,6 +809,9 @@ html.ie8 #controls .button.new {
height: 15px;
}
+.app-files .actions .button.new {
+ position: relative;
+}
.app-files .actions .button.new .icon {
margin-bottom: 2px;
}
diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css
index 2de99689839..4a5abd2b73c 100644
--- a/apps/files/css/mobile.css
+++ b/apps/files/css/mobile.css
@@ -1,4 +1,7 @@
-@media only screen and (max-width: 768px) {
+/* 938 = table min-width(688) + app-navigation width: 250
+ 769 = size where app-navigation (768) is hidden +1
+ 688 = table min-width */
+@media only screen and (max-width: 938px) and (min-width: 769px), only screen and (max-width: 688px) {
.app-files #app-content.dir-drop{
background-color: rgba(255, 255, 255, 1)!important;
@@ -58,7 +61,7 @@ table td.filename .nametext {
/* ellipsis on file names */
table td.filename .nametext .innernametext {
- max-width: 50%;
+ max-width: calc(100% - 175px);
}
/* proper notification area for multi line messages */
diff --git a/apps/files/img/app.svg b/apps/files/img/app.svg
new file mode 100644
index 00000000000..130f59eab23
--- /dev/null
+++ b/apps/files/img/app.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.1" viewBox="0 0 32 32">
+ <g fill-rule="evenodd" transform="matrix(1.7333 0 0 1.7333 -344.09 -1727.8)" fill="#fff">
+ <path d="m200.2 999.72c-0.28913 0-0.53125 0.2421-0.53125 0.5312v12.784c0 0.2985 0.23264 0.5312 0.53125 0.5312h15.091c0.2986 0 0.53124-0.2327 0.53124-0.5312l0.0004-10.474c0-0.2889-0.24211-0.5338-0.53124-0.5338l-7.5457 0.0005-2.3076-2.3078z" fill-rule="evenodd" fill="#fff"/>
+ </g>
+</svg>
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index b3a59b54241..0fbf3f559fe 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -130,6 +130,16 @@ OC.FileUpload.prototype = {
},
/**
+ * Get full path for the target file,
+ * including relative path and file name.
+ *
+ * @return {String} full path
+ */
+ getFullFilePath: function() {
+ return OC.joinPaths(this.getFullPath(), this.getFile().name);
+ },
+
+ /**
* Returns conflict resolution mode.
*
* @return {int} conflict mode
@@ -148,15 +158,6 @@ OC.FileUpload.prototype = {
this._conflictMode = mode;
},
- /**
- * Returns whether the upload is in progress
- *
- * @return {boolean}
- */
- isPending: function() {
- return this.data.state() === 'pending';
- },
-
deleteUpload: function() {
delete this.data.jqXHR;
},
@@ -508,9 +509,10 @@ OC.Uploader.prototype = _.extend({
return;
}
// retrieve more info about this file
- this.filesClient.getFileInfo(fileUpload.getFullPath()).then(function(status, fileInfo) {
+ this.filesClient.getFileInfo(fileUpload.getFullFilePath()).then(function(status, fileInfo) {
var original = fileInfo;
var replacement = file;
+ original.directory = original.path;
OC.dialogs.fileexists(fileUpload, original, replacement, self);
});
},
@@ -550,21 +552,6 @@ OC.Uploader.prototype = _.extend({
OC.Notification.showTemporary(t('files', 'Upload cancelled.'), {timeout: 10});
}, 500),
/**
- * Checks the currently known uploads.
- * returns true if any hxr has the state 'pending'
- * @returns {boolean}
- */
- isProcessing:function() {
- var count = 0;
-
- jQuery.each(this._uploads, function(i, upload) {
- if (upload.isPending()) {
- count++;
- }
- });
- return count > 0;
- },
- /**
* callback for the conflicts dialog
*/
onCancel:function() {
@@ -1029,43 +1016,9 @@ OC.Uploader.prototype = _.extend({
bufferIndex = (bufferIndex + 1) % bufferSize;
}
var smoothRemainingSeconds = (bufferTotal / bufferSize); //seconds
- var date = new Date(smoothRemainingSeconds * 1000);
- var timeStringDesktop = "";
- var timeStringMobile = "";
- if(date.getUTCHours() > 0){
- timeStringDesktop = t('files', '{hours}:{minutes}:{seconds} hour{plural_s} left' , {
- hours:date.getUTCHours(),
- minutes: ('0' + date.getUTCMinutes()).slice(-2),
- seconds: ('0' + date.getUTCSeconds()).slice(-2),
- plural_s: ( smoothRemainingSeconds === 3600 ? "": "s") // 1 hour = 1*60m*60s = 3600s
- });
- timeStringMobile = t('files', '{hours}:{minutes}h' , {
- hours:date.getUTCHours(),
- minutes: ('0' + date.getUTCMinutes()).slice(-2),
- seconds: ('0' + date.getUTCSeconds()).slice(-2)
- });
- } else if(date.getUTCMinutes() > 0){
- timeStringDesktop = t('files', '{minutes}:{seconds} minute{plural_s} left' , {
- minutes: date.getUTCMinutes(),
- seconds: ('0' + date.getUTCSeconds()).slice(-2),
- plural_s: (smoothRemainingSeconds === 60 ? "": "s") // 1 minute = 1*60s = 60s
- });
- timeStringMobile = t('files', '{minutes}:{seconds}m' , {
- minutes: date.getUTCMinutes(),
- seconds: ('0' + date.getUTCSeconds()).slice(-2)
- });
- } else if(date.getUTCSeconds() > 0){
- timeStringDesktop = t('files', '{seconds} second{plural_s} left' , {
- seconds: date.getUTCSeconds(),
- plural_s: (smoothRemainingSeconds === 1 ? "": "s") // 1 second = 1s = 1s
- });
- timeStringMobile = t('files', '{seconds}s' , {seconds: date.getUTCSeconds()});
- } else {
- timeStringDesktop = t('files', 'Any moment now...');
- timeStringMobile = t('files', 'Soon...');
- }
- $('#uploadprogressbar .label .mobile').text(timeStringMobile);
- $('#uploadprogressbar .label .desktop').text(timeStringDesktop);
+ var h = moment.duration(smoothRemainingSeconds, "seconds").humanize();
+ $('#uploadprogressbar .label .mobile').text(h);
+ $('#uploadprogressbar .label .desktop').text(h);
$('#uploadprogressbar').attr('original-title',
t('files', '{loadedSize} of {totalSize} ({bitrate})' , {
loadedSize: humanFileSize(data.loaded),
@@ -1157,13 +1110,6 @@ OC.Uploader.prototype = _.extend({
}
}
- // warn user not to leave the page while upload is in progress
- $(window).on('beforeunload', function(e) {
- if (self.isProcessing()) {
- return t('files', 'File upload is in progress. Leaving the page now will cancel the upload.');
- }
- });
-
//add multiply file upload attribute to all browsers except konqueror (which crashes when it's used)
if (navigator.userAgent.search(/konqueror/i) === -1) {
this.$uploadEl.attr('multiple', 'multiple');
diff --git a/apps/files/js/fileinfomodel.js b/apps/files/js/fileinfomodel.js
index de1b143a160..9d1eac31940 100644
--- a/apps/files/js/fileinfomodel.js
+++ b/apps/files/js/fileinfomodel.js
@@ -36,10 +36,18 @@
path: ''
},
- initialize: function(data) {
+ _filesClient: null,
+
+ initialize: function(data, options) {
if (!_.isUndefined(data.id)) {
data.id = parseInt(data.id, 10);
}
+
+ if( options ){
+ if (options.filesClient) {
+ this._filesClient = options.filesClient;
+ }
+ }
},
/**
@@ -73,6 +81,42 @@
*/
getFullPath: function() {
return OC.joinPaths(this.get('path'), this.get('name'));
+ },
+
+ /**
+ * Reloads missing properties from server and set them in the model.
+ * @param properties array of properties to be reloaded
+ * @return ajax call object
+ */
+ reloadProperties: function(properties) {
+ if( !this._filesClient ){
+ return;
+ }
+
+ var self = this;
+ var deferred = $.Deferred();
+
+ var targetPath = OC.joinPaths(this.get('path') + '/', this.get('name'));
+
+ this._filesClient.getFileInfo(targetPath, {
+ properties: properties
+ })
+ .then(function(status, data) {
+ // the following lines should be extracted to a mapper
+
+ if( properties.indexOf(OC.Files.Client.PROPERTY_GETCONTENTLENGTH) !== -1
+ || properties.indexOf(OC.Files.Client.PROPERTY_SIZE) !== -1 ) {
+ self.set('size', data.size);
+ }
+
+ deferred.resolve(status, data);
+ })
+ .fail(function(status) {
+ OC.Notification.showTemporary(t('files', 'Could not load info for file "{file}"', {file: self.get('name')}));
+ deferred.reject(status);
+ });
+
+ return deferred.promise();
}
});
@@ -82,4 +126,3 @@
OCA.Files.FileInfoModel = FileInfoModel;
})(OC, OCA);
-
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index a8daeadfd26..3a59da53517 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -442,7 +442,9 @@
// In the future the FileList should work with Backbone.Collection
// and contain existing models that can be used.
// This method would in the future simply retrieve the matching model from the collection.
- var model = new OCA.Files.FileInfoModel(this.elementToFile($tr));
+ var model = new OCA.Files.FileInfoModel(this.elementToFile($tr), {
+ filesClient: this.filesClient
+ });
if (!model.get('path')) {
model.set('path', this.getCurrentDirectory(), {silent: true});
}
@@ -891,11 +893,14 @@
mimetype: $el.attr('data-mime'),
mtime: parseInt($el.attr('data-mtime'), 10),
type: $el.attr('data-type'),
- size: parseInt($el.attr('data-size'), 10),
etag: $el.attr('data-etag'),
permissions: parseInt($el.attr('data-permissions'), 10),
hasPreview: $el.attr('data-has-preview') === 'true'
};
+ var size = $el.attr('data-size');
+ if (size) {
+ data.size = parseInt(size, 10);
+ }
var icon = $el.attr('data-icon');
if (icon) {
data.icon = icon;
@@ -1029,7 +1034,7 @@
* Returns whether the given file info must be hidden
*
* @param {OC.Files.FileInfo} fileInfo file info
- *
+ *
* @return {boolean} true if the file is a hidden file, false otherwise
*/
_isHiddenFile: function(file) {
@@ -1175,7 +1180,7 @@
var innernameSpan = $('<span></span>').addClass('innernametext').text(basename);
if (path && path !== '/') {
- var conflictingItems = this.$fileList.find('tr[data-file="' + name.replace( /(:|\.|\[|\]|,|=)/g, "\\$1") + '"]');
+ var conflictingItems = this.$fileList.find('tr[data-file="' + this._jqSelEscape(name) + '"]');
if (conflictingItems.length !== 0) {
if (conflictingItems.length === 1) {
// Update the path on the first conflicting item
@@ -1261,6 +1266,14 @@
return tr;
},
+ /* escape a selector expression for jQuery */
+ _jqSelEscape: function (expression) {
+ if (expression) {
+ return expression.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&');
+ }
+ return null;
+ },
+
/**
* Adds an entry to the files array and also into the DOM
* in a sorted manner.
@@ -2465,6 +2478,11 @@
if (!_.isArray(file)) {
file = [file];
}
+ if (file.length === 1) {
+ _.defer(function() {
+ this.showDetailsView(file[0]);
+ }.bind(this));
+ }
this.highlightFiles(file, function($tr) {
$tr.addClass('searchresult');
$tr.one('hover', function() {
@@ -2828,7 +2846,6 @@
});
uploader.on('fail', function(e, data) {
self._uploader.log('filelist handle fileuploadfail', e, data);
-
self._uploads = [];
//if user pressed cancel hide upload chrome
@@ -2939,7 +2956,7 @@
this._newFileMenu = new OCA.Files.NewFileMenu({
fileList: this
});
- $('body').append(this._newFileMenu.$el);
+ $('.actions').append(this._newFileMenu.$el);
}
this._newFileMenu.showAt($target);
diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js
index e9259f75ba1..e815fa70ecb 100644
--- a/apps/files/js/mainfileinfodetailview.js
+++ b/apps/files/js/mainfileinfodetailview.js
@@ -20,9 +20,8 @@
'</a>' +
'</div>' +
' <div class="file-details ellipsis">' +
- ' <a href="#" ' +
- ' class="action action-favorite favorite">' +
- ' <img class="svg" alt="{{starAltText}}" src="{{starIcon}}" />' +
+ ' <a href="#" class="action action-favorite favorite permanent">' +
+ ' <span class="icon {{starClass}}" title="{{starAltText}}"></span>' +
' </a>' +
' {{#if hasSize}}<span class="size" title="{{altSize}}">{{size}}</span>, {{/if}}<span class="date live-relative-timestamp" data-timestamp="{{timestamp}}" title="{{altDate}}">{{date}}</span>' +
' </div>' +
@@ -131,6 +130,19 @@
if (this.model) {
this.model.on('change', this._onModelChanged, this);
}
+
+ if (this.model) {
+ var properties = [];
+ if( !this.model.has('size') ) {
+ properties.push(OC.Files.Client.PROPERTY_SIZE);
+ properties.push(OC.Files.Client.PROPERTY_GETCONTENTLENGTH);
+ }
+
+ if( properties.length > 0){
+ this.model.reloadProperties(properties);
+ }
+ }
+
this.render();
},
@@ -155,7 +167,7 @@
timestamp: this.model.get('mtime'),
date: OC.Util.relativeModifiedDate(this.model.get('mtime')),
starAltText: isFavorite ? t('files', 'Favorited') : t('files', 'Favorite'),
- starIcon: OC.imagePath('core', isFavorite ? 'actions/starred' : 'actions/star'),
+ starClass: isFavorite ? 'icon-starred' : 'icon-star',
permalink: this._makePermalink(this.model.get('id')),
permalinkTitle: t('files', 'Copy local link')
}));
diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js
index 75c4cdcc0ba..e4023c62342 100644
--- a/apps/files/js/newfilemenu.js
+++ b/apps/files/js/newfilemenu.js
@@ -38,7 +38,8 @@
*/
var NewFileMenu = OC.Backbone.View.extend({
tagName: 'div',
- className: 'newFileMenu popovermenu bubble hidden open menu',
+ // Menu is opened by default because it's rendered on "add-button" click
+ className: 'newFileMenu popovermenu bubble menu open menu-left',
events: {
'click .menuitem': '_onClickAction'
@@ -235,13 +236,6 @@
*/
showAt: function($target) {
this.render();
- var targetOffset = $target.offset();
- this.$el.css({
- left: targetOffset.left,
- top: targetOffset.top + $target.height()
- });
- this.$el.removeClass('hidden');
-
OC.showMenu(null, this.$el);
}
});
diff --git a/apps/files/js/tagsplugin.js b/apps/files/js/tagsplugin.js
index 3c0a231d003..9bb4ba33598 100644
--- a/apps/files/js/tagsplugin.js
+++ b/apps/files/js/tagsplugin.js
@@ -12,6 +12,11 @@
(function(OCA) {
+ _.extend(OC.Files.Client, {
+ PROPERTY_TAGS: '{' + OC.Files.Client.NS_OWNCLOUD + '}tags',
+ PROPERTY_FAVORITE: '{' + OC.Files.Client.NS_OWNCLOUD + '}favorite'
+ });
+
var TEMPLATE_FAVORITE_ACTION =
'<a href="#" ' +
'class="action action-favorite {{#isFavorite}}permanent{{/isFavorite}}">' +
@@ -162,24 +167,22 @@
return fileInfo;
};
- var NS_OC = 'http://owncloud.org/ns';
-
var oldGetWebdavProperties = fileList._getWebdavProperties;
fileList._getWebdavProperties = function() {
var props = oldGetWebdavProperties.apply(this, arguments);
- props.push('{' + NS_OC + '}tags');
- props.push('{' + NS_OC + '}favorite');
+ props.push(OC.Files.Client.PROPERTY_TAGS);
+ props.push(OC.Files.Client.PROPERTY_FAVORITE);
return props;
};
fileList.filesClient.addFileInfoParser(function(response) {
var data = {};
var props = response.propStat[0].properties;
- var tags = props['{' + NS_OC + '}tags'];
- var favorite = props['{' + NS_OC + '}favorite'];
+ var tags = props[OC.Files.Client.PROPERTY_TAGS];
+ var favorite = props[OC.Files.Client.PROPERTY_FAVORITE];
if (tags && tags.length) {
tags = _.chain(tags).filter(function(xmlvalue) {
- return (xmlvalue.namespaceURI === NS_OC && xmlvalue.nodeName.split(':')[1] === 'tag');
+ return (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'tag');
}).map(function(xmlvalue) {
return xmlvalue.textContent || xmlvalue.text;
}).value();
diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js
index cb33d1b3286..917701fe440 100644
--- a/apps/files/l10n/ast.js
+++ b/apps/files/l10n/ast.js
@@ -15,16 +15,7 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nun hai abondu espaciu llibre, tas xubiendo {size1} pero namái falta {size2}",
"Uploading..." : "Xubiendo...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "En cualquier momentu...",
- "Soon..." : "Pronto...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
"Actions" : "Aiciones",
"Download" : "Descargar",
"Rename" : "Renomar",
@@ -113,6 +104,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "El tamañu de ficheru total {size1} perpasa la llende de xuba {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fallu xubiendo'l ficheru \"{fileName}\": {message}",
"Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "En cualquier momentu...",
+ "Soon..." : "Pronto...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
"No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'",
"Local link" : "Enllaz llocal",
"{newname} already exists" : "{newname} yá existe",
diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json
index fe1758eb99b..fd9636fc4e0 100644
--- a/apps/files/l10n/ast.json
+++ b/apps/files/l10n/ast.json
@@ -13,16 +13,7 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nun hai abondu espaciu llibre, tas xubiendo {size1} pero namái falta {size2}",
"Uploading..." : "Xubiendo...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "En cualquier momentu...",
- "Soon..." : "Pronto...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
"Actions" : "Aiciones",
"Download" : "Descargar",
"Rename" : "Renomar",
@@ -111,6 +102,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "El tamañu de ficheru total {size1} perpasa la llende de xuba {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fallu xubiendo'l ficheru \"{fileName}\": {message}",
"Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "En cualquier momentu...",
+ "Soon..." : "Pronto...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
"No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'",
"Local link" : "Enllaz llocal",
"{newname} already exists" : "{newname} yá existe",
diff --git a/apps/files/l10n/bg_BG.js b/apps/files/l10n/bg_BG.js
index 709477ce7e0..4dd4d2b067e 100644
--- a/apps/files/l10n/bg_BG.js
+++ b/apps/files/l10n/bg_BG.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Временно хранилището не е налично.",
"Storage invalid" : "Невалидно хранилище.",
"Unknown error" : "Неизвестна грешка",
- "Files" : "Файлове",
"All files" : "Всички файлове",
"Recent" : "Скорошен",
"File could not be found" : "Файлът не може да бъде открит",
@@ -15,12 +14,11 @@ OC.L10N.register(
"Upload cancelled." : "Качването е прекъснато.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Неуспешно качване на {filename}, защото е директория или с размер 0 байта.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Няма достатъчно свободно място. Опитвате да качите {size1} при свободни само {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "Целева папка \"{dir}\" не съществува вече",
"Not enough free space" : "Няма достатъчно свободно място",
"Uploading..." : "Качване...",
"..." : "...",
- "Any moment now..." : "Всеки момент...",
- "Soon..." : "Скоро...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} от {totalSize} ({bitrate})",
"Actions" : "Действия",
"Download" : "Изтегли",
"Rename" : "Преименуване",
@@ -29,6 +27,7 @@ OC.L10N.register(
"Delete" : "Изтриване",
"Disconnect storage" : "Извади хранилището",
"Unshare" : "Прекратяване на споделяне",
+ "Files" : "Файлове",
"Details" : "Детайли",
"Select" : "Избери",
"Pending" : "Чакащо",
@@ -45,6 +44,7 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "Файлът \"{file}\" не може да бъде създаден защото вече съществува",
"Could not create folder \"{dir}\" because it already exists" : "Папката \"{dir}\" не може да бъде създадена защото вече съществува",
"Error deleting file \"{fileName}\"." : "Грешка при изтриването на файла \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Няма резултати от търсенето в други папки за '{tag}{filter}{endtag}'",
"Name" : "Име",
"Size" : "Размер",
"Modified" : "Променен на",
@@ -62,14 +62,21 @@ OC.L10N.register(
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Хранилището на {owner} е почти запълнено ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашето хранилище е почти запълнено ({usedSpacePercent}%).",
"_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "],
+ "View in folder" : "Преглед в папка",
"Path" : "Път",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Favorited" : "Отбелязано в любими",
"Favorite" : "Любими",
+ "Copy local link" : "Копиране на локална връзка",
"Folder" : "Папка",
"New folder" : "Нова папка",
"Upload" : "Качване",
- "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на етикети",
+ "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на тагове",
+ "Added to favorites" : "Добавено към предпочитани",
+ "Removed from favorites" : "Премахнато от предпочитани",
+ "You added {file} to your favorites" : "Добавихте {file} към предпочитани",
+ "You removed {file} from your favorites" : "Махнахте {file} от вашите предпочитания",
+ "File changes" : "Файлови промени",
"Created by {user}" : "Създаден от {user}",
"Changed by {user}" : "Променен от {user}",
"Deleted by {user}" : "Изтрит от {user}",
@@ -77,18 +84,31 @@ OC.L10N.register(
"Renamed by {user}" : "Преименуван от {user}",
"Moved by {user}" : "Преместен от {user}",
"You created {file}" : "Вие създадохте {file}",
+ "{user} created {file}" : "{user} създаде {file}",
+ "{file} was created in a public folder" : "{file} беше създаден в публична папка",
+ "You changed {file}" : "Променихте {file}",
"{user} changed {file}" : "{user} промени {file}",
"You deleted {file}" : "Вие изтрихте {file}",
"{user} deleted {file}" : "{user} изтри {file}",
+ "You restored {file}" : "Възстановихте {file}",
+ "{user} restored {file}" : "{user} възстанови {file}",
+ "You renamed {oldfile} to {newfile}" : "Преименувахте {oldfile} на {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} преименува {oldfile} на {newfile}",
+ "You moved {oldfile} to {newfile}" : "Преместихте {oldfile} в {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} премести {oldfile} в {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Файл беше добавен или премахнат от <strong>предпочитанията</strong> ви",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "<strong>Промяна</strong> или <strong>преименуване</strong> на файл / папка",
"A new file or folder has been <strong>created</strong>" : "<strong>Създаване</strong> на нов файл / папка",
+ "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Изпращай известия само при създаване / промяна на <strong>любими файлове</strong> <em>(Само за потока)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"Upload (max. %s)" : "Качи (макс. %s)",
"File handling" : "Операция с файла",
"Maximum upload size" : "Максимален размер",
"max. possible: " : "максимално:",
"Save" : "Запис",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако ползвате PHP-FPM прилагането на една промяна може да отнеме 5 минути.",
+ "Missing permissions to edit from here." : "Липсва разрешение за редакция от тук.",
"Settings" : "Настройки",
"Show hidden files" : "Показвай и скрити файлове",
"WebDAV" : "WebDAV",
@@ -127,7 +147,17 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Общия размер {size1} надминава лимита за качване {size2}.",
"Error uploading file \"{fileName}\": {message}" : "Грешка при качването на файла \"{fileName}\": {message}",
"Could not get result from server." : "Не се получи резултат от сървърът.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} час{plural_s} остават",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ч",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} минут{plural_s} остават",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
+ "{seconds} second{plural_s} left" : "{seconds} секунд{plural_s} остават",
+ "{seconds}s" : "{seconds}и",
+ "Any moment now..." : "Всеки момент...",
+ "Soon..." : "Скоро...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
"No entries in this folder match '{filter}'" : "Нищо в тази папка не пасва на '{filter}'",
+ "Local link" : "Локална връзка",
"{newname} already exists" : "{newname} вече съществува",
"A file or folder has been <strong>changed</strong>" : "<strong>Промяна</strong> на файл / папка",
"A file or folder has been <strong>deleted</strong>" : "<strong>Изтриване</strong> на файл / папка",
@@ -143,8 +173,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s възстанови %1$s",
"Changed by %2$s" : "Променен от %2$s",
"Deleted by %2$s" : "Изтрит от %2$s",
- "Restored by %2$s" : "Възстанвен от %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Ползвайте следния адрес <a href=\"%s\" target=\"_blank\">за да достъпите файловете чрез WebDAV</a>",
- "Cancel upload" : "Прекрати качването"
+ "Restored by %2$s" : "Възстанвен от %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/bg_BG.json b/apps/files/l10n/bg_BG.json
index d6a7c3b71f4..6c439e2056f 100644
--- a/apps/files/l10n/bg_BG.json
+++ b/apps/files/l10n/bg_BG.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Временно хранилището не е налично.",
"Storage invalid" : "Невалидно хранилище.",
"Unknown error" : "Неизвестна грешка",
- "Files" : "Файлове",
"All files" : "Всички файлове",
"Recent" : "Скорошен",
"File could not be found" : "Файлът не може да бъде открит",
@@ -13,12 +12,11 @@
"Upload cancelled." : "Качването е прекъснато.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Неуспешно качване на {filename}, защото е директория или с размер 0 байта.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Няма достатъчно свободно място. Опитвате да качите {size1} при свободни само {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "Целева папка \"{dir}\" не съществува вече",
"Not enough free space" : "Няма достатъчно свободно място",
"Uploading..." : "Качване...",
"..." : "...",
- "Any moment now..." : "Всеки момент...",
- "Soon..." : "Скоро...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} от {totalSize} ({bitrate})",
"Actions" : "Действия",
"Download" : "Изтегли",
"Rename" : "Преименуване",
@@ -27,6 +25,7 @@
"Delete" : "Изтриване",
"Disconnect storage" : "Извади хранилището",
"Unshare" : "Прекратяване на споделяне",
+ "Files" : "Файлове",
"Details" : "Детайли",
"Select" : "Избери",
"Pending" : "Чакащо",
@@ -43,6 +42,7 @@
"Could not create file \"{file}\" because it already exists" : "Файлът \"{file}\" не може да бъде създаден защото вече съществува",
"Could not create folder \"{dir}\" because it already exists" : "Папката \"{dir}\" не може да бъде създадена защото вече съществува",
"Error deleting file \"{fileName}\"." : "Грешка при изтриването на файла \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Няма резултати от търсенето в други папки за '{tag}{filter}{endtag}'",
"Name" : "Име",
"Size" : "Размер",
"Modified" : "Променен на",
@@ -60,14 +60,21 @@
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Хранилището на {owner} е почти запълнено ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашето хранилище е почти запълнено ({usedSpacePercent}%).",
"_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "],
+ "View in folder" : "Преглед в папка",
"Path" : "Път",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Favorited" : "Отбелязано в любими",
"Favorite" : "Любими",
+ "Copy local link" : "Копиране на локална връзка",
"Folder" : "Папка",
"New folder" : "Нова папка",
"Upload" : "Качване",
- "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на етикети",
+ "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на тагове",
+ "Added to favorites" : "Добавено към предпочитани",
+ "Removed from favorites" : "Премахнато от предпочитани",
+ "You added {file} to your favorites" : "Добавихте {file} към предпочитани",
+ "You removed {file} from your favorites" : "Махнахте {file} от вашите предпочитания",
+ "File changes" : "Файлови промени",
"Created by {user}" : "Създаден от {user}",
"Changed by {user}" : "Променен от {user}",
"Deleted by {user}" : "Изтрит от {user}",
@@ -75,18 +82,31 @@
"Renamed by {user}" : "Преименуван от {user}",
"Moved by {user}" : "Преместен от {user}",
"You created {file}" : "Вие създадохте {file}",
+ "{user} created {file}" : "{user} създаде {file}",
+ "{file} was created in a public folder" : "{file} беше създаден в публична папка",
+ "You changed {file}" : "Променихте {file}",
"{user} changed {file}" : "{user} промени {file}",
"You deleted {file}" : "Вие изтрихте {file}",
"{user} deleted {file}" : "{user} изтри {file}",
+ "You restored {file}" : "Възстановихте {file}",
+ "{user} restored {file}" : "{user} възстанови {file}",
+ "You renamed {oldfile} to {newfile}" : "Преименувахте {oldfile} на {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} преименува {oldfile} на {newfile}",
+ "You moved {oldfile} to {newfile}" : "Преместихте {oldfile} в {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} премести {oldfile} в {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Файл беше добавен или премахнат от <strong>предпочитанията</strong> ви",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "<strong>Промяна</strong> или <strong>преименуване</strong> на файл / папка",
"A new file or folder has been <strong>created</strong>" : "<strong>Създаване</strong> на нов файл / папка",
+ "A new file or folder has been <strong>deleted</strong>" : "Нов файл или папка беше <strong>изтрит/а</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Изпращай известия само при създаване / промяна на <strong>любими файлове</strong> <em>(Само за потока)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Нов файл или папка беше <strong>възстановен/а</strong>",
"Upload (max. %s)" : "Качи (макс. %s)",
"File handling" : "Операция с файла",
"Maximum upload size" : "Максимален размер",
"max. possible: " : "максимално:",
"Save" : "Запис",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако ползвате PHP-FPM прилагането на една промяна може да отнеме 5 минути.",
+ "Missing permissions to edit from here." : "Липсва разрешение за редакция от тук.",
"Settings" : "Настройки",
"Show hidden files" : "Показвай и скрити файлове",
"WebDAV" : "WebDAV",
@@ -125,7 +145,17 @@
"Total file size {size1} exceeds upload limit {size2}" : "Общия размер {size1} надминава лимита за качване {size2}.",
"Error uploading file \"{fileName}\": {message}" : "Грешка при качването на файла \"{fileName}\": {message}",
"Could not get result from server." : "Не се получи резултат от сървърът.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} час{plural_s} остават",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ч",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} минут{plural_s} остават",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
+ "{seconds} second{plural_s} left" : "{seconds} секунд{plural_s} остават",
+ "{seconds}s" : "{seconds}и",
+ "Any moment now..." : "Всеки момент...",
+ "Soon..." : "Скоро...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
"No entries in this folder match '{filter}'" : "Нищо в тази папка не пасва на '{filter}'",
+ "Local link" : "Локална връзка",
"{newname} already exists" : "{newname} вече съществува",
"A file or folder has been <strong>changed</strong>" : "<strong>Промяна</strong> на файл / папка",
"A file or folder has been <strong>deleted</strong>" : "<strong>Изтриване</strong> на файл / папка",
@@ -141,8 +171,6 @@
"%2$s restored %1$s" : "%2$s възстанови %1$s",
"Changed by %2$s" : "Променен от %2$s",
"Deleted by %2$s" : "Изтрит от %2$s",
- "Restored by %2$s" : "Възстанвен от %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Ползвайте следния адрес <a href=\"%s\" target=\"_blank\">за да достъпите файловете чрез WebDAV</a>",
- "Cancel upload" : "Прекрати качването"
+ "Restored by %2$s" : "Възстанвен от %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js
index 1e7e8f18a14..e9970c49788 100644
--- a/apps/files/l10n/cs_CZ.js
+++ b/apps/files/l10n/cs_CZ.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage invalid" : "Neplatné úložiště",
"Unknown error" : "Neznámá chyba",
- "Files" : "Soubory",
"All files" : "Všechny soubory",
"Recent" : "Nedávné",
"File could not be found" : "Soubor nelze nalézt",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Nedostatek volného prostoru",
"Uploading..." : "Odesílám...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zbývá {hours}:{minutes}:{seconds} hour{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "zbývá {minutes}:{seconds} minute{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekund{plural_s} zbývá",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Každou chvíli...",
- "Soon..." : "Brzy...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
"Actions" : "Činnosti",
"Download" : "Stáhnout",
"Rename" : "Přejmenovat",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Smazat",
"Disconnect storage" : "Odpojit úložiště",
"Unshare" : "Zrušit sdílení",
+ "Could not load info for file \"{file}\"" : "Nepodařilo se načíst informace pro soubor {file}",
+ "Files" : "Soubory",
"Details" : "Podrobnosti",
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
@@ -81,7 +73,31 @@ OC.L10N.register(
"New folder" : "Nový adresář",
"Upload" : "Odeslat",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
+ "Added to favorites" : "Přidán k oblíbeným",
+ "Removed from favorites" : "Odebráno z oblíbených",
+ "You added {file} to your favorites" : "Do svých oblíbených jste přidal(a) {file}",
+ "You removed {file} from your favorites" : "Odstranil(a) jste {file} ze svých oblíbených",
"File changes" : "Změny souboru",
+ "Created by {user}" : "Vytvořil {user}",
+ "Changed by {user}" : "Změnil {user}",
+ "Deleted by {user}" : "Odstranil {user}",
+ "Restored by {user}" : "Obnovil {user}",
+ "Renamed by {user}" : "Přejmenoval {user}",
+ "Moved by {user}" : "Přesunul {user}",
+ "You created {file}" : "Vytvořil(a) jste {file}",
+ "{user} created {file}" : "{user} vytvořil(a) {file}",
+ "{file} was created in a public folder" : "Soubor {file} byl vytvořen ve veřejné složce",
+ "You changed {file}" : "Změnil(a) jste {file}",
+ "{user} changed {file}" : "{user} změnil(a) {file}",
+ "You deleted {file}" : "Odstranil(a) jste {file}",
+ "{user} deleted {file}" : "{user} smazal(a) {file}",
+ "You restored {file}" : "Obnovil(a) jste {file}",
+ "{user} restored {file}" : "{user} obnovil {file}",
+ "You renamed {oldfile} to {newfile}" : "Přejmenoval(a) jste {oldfile} na {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} přejmenoval {oldfile} na {newfile}",
+ "You moved {oldfile} to {newfile}" : "{oldfile} jste přesunul(a) do {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} přesunul(a) {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Soubor byl přidán, nebo odstraněn z vašich <strong>oblíbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Soubor nebo adresář byl <strong>změněn</strong> nebo <strong>přejmenován</strong>",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
"A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
@@ -132,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Celková velikost souboru {size1} překračuje povolenou velikost pro nahrávání {size2}",
"Error uploading file \"{fileName}\": {message}" : "Chyba nahrávání souboru \"{fileName}\": {message}",
"Could not get result from server." : "Nepodařilo se získat výsledek ze serveru.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zbývá {hours}:{minutes}:{seconds} hour{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "zbývá {minutes}:{seconds} minute{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekund{plural_s} zbývá",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Každou chvíli...",
+ "Soon..." : "Brzy...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
"No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'",
"Local link" : "Místní odkaz",
"{newname} already exists" : "{newname} již existuje",
@@ -149,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s obnovil(a) %1$s",
"Changed by %2$s" : "Změněno uživatelem %2$s",
"Deleted by %2$s" : "Smazáno uživatelem %2$s",
- "Restored by %2$s" : "Obnoveno uživatelem %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup ke svým Souborům přes WebDAV</a>",
- "Cancel upload" : "Ukončit nahrávání"
+ "Restored by %2$s" : "Obnoveno uživatelem %2$s"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json
index 8908c0175b8..27653c0d84c 100644
--- a/apps/files/l10n/cs_CZ.json
+++ b/apps/files/l10n/cs_CZ.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage invalid" : "Neplatné úložiště",
"Unknown error" : "Neznámá chyba",
- "Files" : "Soubory",
"All files" : "Všechny soubory",
"Recent" : "Nedávné",
"File could not be found" : "Soubor nelze nalézt",
@@ -17,16 +16,7 @@
"Not enough free space" : "Nedostatek volného prostoru",
"Uploading..." : "Odesílám...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zbývá {hours}:{minutes}:{seconds} hour{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "zbývá {minutes}:{seconds} minute{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekund{plural_s} zbývá",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Každou chvíli...",
- "Soon..." : "Brzy...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
"Actions" : "Činnosti",
"Download" : "Stáhnout",
"Rename" : "Přejmenovat",
@@ -35,6 +25,8 @@
"Delete" : "Smazat",
"Disconnect storage" : "Odpojit úložiště",
"Unshare" : "Zrušit sdílení",
+ "Could not load info for file \"{file}\"" : "Nepodařilo se načíst informace pro soubor {file}",
+ "Files" : "Soubory",
"Details" : "Podrobnosti",
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
@@ -79,7 +71,31 @@
"New folder" : "Nový adresář",
"Upload" : "Odeslat",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
+ "Added to favorites" : "Přidán k oblíbeným",
+ "Removed from favorites" : "Odebráno z oblíbených",
+ "You added {file} to your favorites" : "Do svých oblíbených jste přidal(a) {file}",
+ "You removed {file} from your favorites" : "Odstranil(a) jste {file} ze svých oblíbených",
"File changes" : "Změny souboru",
+ "Created by {user}" : "Vytvořil {user}",
+ "Changed by {user}" : "Změnil {user}",
+ "Deleted by {user}" : "Odstranil {user}",
+ "Restored by {user}" : "Obnovil {user}",
+ "Renamed by {user}" : "Přejmenoval {user}",
+ "Moved by {user}" : "Přesunul {user}",
+ "You created {file}" : "Vytvořil(a) jste {file}",
+ "{user} created {file}" : "{user} vytvořil(a) {file}",
+ "{file} was created in a public folder" : "Soubor {file} byl vytvořen ve veřejné složce",
+ "You changed {file}" : "Změnil(a) jste {file}",
+ "{user} changed {file}" : "{user} změnil(a) {file}",
+ "You deleted {file}" : "Odstranil(a) jste {file}",
+ "{user} deleted {file}" : "{user} smazal(a) {file}",
+ "You restored {file}" : "Obnovil(a) jste {file}",
+ "{user} restored {file}" : "{user} obnovil {file}",
+ "You renamed {oldfile} to {newfile}" : "Přejmenoval(a) jste {oldfile} na {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} přejmenoval {oldfile} na {newfile}",
+ "You moved {oldfile} to {newfile}" : "{oldfile} jste přesunul(a) do {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} přesunul(a) {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Soubor byl přidán, nebo odstraněn z vašich <strong>oblíbených</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Soubor nebo adresář byl <strong>změněn</strong> nebo <strong>přejmenován</strong>",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
"A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>",
@@ -130,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Celková velikost souboru {size1} překračuje povolenou velikost pro nahrávání {size2}",
"Error uploading file \"{fileName}\": {message}" : "Chyba nahrávání souboru \"{fileName}\": {message}",
"Could not get result from server." : "Nepodařilo se získat výsledek ze serveru.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zbývá {hours}:{minutes}:{seconds} hour{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "zbývá {minutes}:{seconds} minute{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekund{plural_s} zbývá",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Každou chvíli...",
+ "Soon..." : "Brzy...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
"No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'",
"Local link" : "Místní odkaz",
"{newname} already exists" : "{newname} již existuje",
@@ -147,8 +172,6 @@
"%2$s restored %1$s" : "%2$s obnovil(a) %1$s",
"Changed by %2$s" : "Změněno uživatelem %2$s",
"Deleted by %2$s" : "Smazáno uživatelem %2$s",
- "Restored by %2$s" : "Obnoveno uživatelem %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup ke svým Souborům přes WebDAV</a>",
- "Cancel upload" : "Ukončit nahrávání"
+ "Restored by %2$s" : "Obnoveno uživatelem %2$s"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index d2bffead321..257e9d7844d 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -4,9 +4,8 @@ OC.L10N.register(
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage invalid" : "Speicher ungültig",
"Unknown error" : "Unbekannter Fehler",
- "Files" : "Dateien",
"All files" : "Alle Dateien",
- "Recent" : "Akuelle",
+ "Recent" : "Aktuelle",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Home" : "Home",
"Close" : "Schließen",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Nicht genügend freier Speicherplatz",
"Uploading..." : "Hochladen…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
- "{hours}:{minutes}h" : "{hours}:{minutes} Std.",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute(n) übrig",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
- "{seconds}s" : "{seconds}n",
- "Any moment now..." : "Jeden Augenblick...",
- "Soon..." : "Bald...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} von {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn die Seite jetzt verlassen wird, bricht der Upload ab.",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Rename" : "Umbenennen",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
+ "Files" : "Dateien",
"Details" : "Details",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
@@ -84,7 +76,7 @@ OC.L10N.register(
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Du hast {file} zu deinen Favoriten hinzugefügt",
- "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten hentfernt",
+ "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten entfernt",
"File changes" : "Dateiänderungen",
"Created by {user}" : "Erstellt durch {user}",
"Changed by {user}" : "Geändert durch {user}",
@@ -106,7 +98,7 @@ OC.L10N.register(
"You moved {oldfile} to {newfile}" : "Du hast {oldfile} nach {newfile} verschoben",
"{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben",
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurden <strong>geändert</strong> oder <strong>umbenannt</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei / Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A new file or folder has been <strong>deleted</strong>" : "Neue Datei oder Verzeichnis wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf deine <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Die Gesamt-Größe {size1} überschreitet die Upload-Begrenzung {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fehler beim Hochladen der Datei \"{fileName}\": {message}",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
+ "{hours}:{minutes}h" : "{hours}:{minutes} Std.",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute(n) übrig",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
+ "{seconds}s" : "{seconds}n",
+ "Any moment now..." : "Jeden Augenblick...",
+ "Soon..." : "Bald...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn die Seite jetzt verlassen wird, bricht der Upload ab.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Local link" : "Lokaler Link",
"{newname} already exists" : "{newname} existiert bereits",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s wiederhergestellt %1$s",
"Changed by %2$s" : "Geändert von %2$s",
"Deleted by %2$s" : "Gelöscht von %2$s",
- "Restored by %2$s" : "Wiederhergestellt von %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\">über WebDAV auf deine Dateien zuzugreifen</a>",
- "Cancel upload" : "Hochladen abbrechen"
+ "Restored by %2$s" : "Wiederhergestellt von %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index d012d33f352..29809c70bd4 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -2,9 +2,8 @@
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage invalid" : "Speicher ungültig",
"Unknown error" : "Unbekannter Fehler",
- "Files" : "Dateien",
"All files" : "Alle Dateien",
- "Recent" : "Akuelle",
+ "Recent" : "Aktuelle",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Home" : "Home",
"Close" : "Schließen",
@@ -17,16 +16,7 @@
"Not enough free space" : "Nicht genügend freier Speicherplatz",
"Uploading..." : "Hochladen…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
- "{hours}:{minutes}h" : "{hours}:{minutes} Std.",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute(n) übrig",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
- "{seconds}s" : "{seconds}n",
- "Any moment now..." : "Jeden Augenblick...",
- "Soon..." : "Bald...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} von {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn die Seite jetzt verlassen wird, bricht der Upload ab.",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Rename" : "Umbenennen",
@@ -35,6 +25,8 @@
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
+ "Files" : "Dateien",
"Details" : "Details",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
@@ -82,7 +74,7 @@
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Du hast {file} zu deinen Favoriten hinzugefügt",
- "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten hentfernt",
+ "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten entfernt",
"File changes" : "Dateiänderungen",
"Created by {user}" : "Erstellt durch {user}",
"Changed by {user}" : "Geändert durch {user}",
@@ -104,7 +96,7 @@
"You moved {oldfile} to {newfile}" : "Du hast {oldfile} nach {newfile} verschoben",
"{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben",
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurden <strong>geändert</strong> oder <strong>umbenannt</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei / Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A new file or folder has been <strong>deleted</strong>" : "Neue Datei oder Verzeichnis wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf deine <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Die Gesamt-Größe {size1} überschreitet die Upload-Begrenzung {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fehler beim Hochladen der Datei \"{fileName}\": {message}",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
+ "{hours}:{minutes}h" : "{hours}:{minutes} Std.",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute(n) übrig",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
+ "{seconds}s" : "{seconds}n",
+ "Any moment now..." : "Jeden Augenblick...",
+ "Soon..." : "Bald...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn die Seite jetzt verlassen wird, bricht der Upload ab.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Local link" : "Lokaler Link",
"{newname} already exists" : "{newname} existiert bereits",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s wiederhergestellt %1$s",
"Changed by %2$s" : "Geändert von %2$s",
"Deleted by %2$s" : "Gelöscht von %2$s",
- "Restored by %2$s" : "Wiederhergestellt von %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\">über WebDAV auf deine Dateien zuzugreifen</a>",
- "Cancel upload" : "Hochladen abbrechen"
+ "Restored by %2$s" : "Wiederhergestellt von %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 42eaeb46600..8b0521a4f8c 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage invalid" : "Speicher ungültig",
"Unknown error" : "Unbekannter Fehler",
- "Files" : "Dateien",
"All files" : "Alle Dateien",
"Recent" : "Aktuelle",
"File could not be found" : "Datei konnte nicht gefunden werden",
@@ -19,24 +18,17 @@ OC.L10N.register(
"Not enough free space" : "Nicht genug freier Speicher",
"Uploading..." : "Hochladen…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minuten übrig",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Jeden Augenblick...",
- "Soon..." : "Bald...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} von {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Rename" : "Umbenennen",
"Move" : "Verschieben",
- "Target folder" : "Zielverzeichnis",
+ "Target folder" : "Zielordner",
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
+ "Files" : "Dateien",
"Details" : "Details",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
@@ -60,7 +52,7 @@ OC.L10N.register(
"_%n folder_::_%n folders_" : ["%n Ordner","%n Ordner"],
"_%n file_::_%n files_" : ["%n Datei","%n Dateien"],
"{dirs} and {files}" : "{dirs} und {files}",
- "_including %n hidden_::_including %n hidden_" : ["%n versteckten eingeschlossen","%n versteckten eingeschlossen"],
+ "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckten eingeschlossen"],
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
"New" : "Neu",
@@ -76,7 +68,7 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
- "Copy local link" : "Kopiere lokale Verknüpfung",
+ "Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
"Upload" : "Hochladen",
@@ -84,7 +76,7 @@ OC.L10N.register(
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Sie haben {file} zu Ihren Favoriten hinzugefügt",
- "You removed {file} from your favorites" : "Sie haben {file} aus Ihren Favoriten hentfernt",
+ "You removed {file} from your favorites" : "Sie haben {file} aus Ihren Favoriten entfernt",
"File changes" : "Datei geändert",
"Created by {user}" : "Erstellt durch {user}",
"Changed by {user}" : "Geändert durch {user}",
@@ -94,7 +86,7 @@ OC.L10N.register(
"Moved by {user}" : "Verschoben durch {user}",
"You created {file}" : "Sie haben {file} erstellt",
"{user} created {file}" : "{user} hat {file} erstellt",
- "{file} was created in a public folder" : "{file} wurde in einem öffentlichen Verzeichnis erstellt",
+ "{file} was created in a public folder" : "{file} wurde in einem öffentlichen Ordner erstellt",
"You changed {file}" : "Sie haben {file} geändert",
"{user} changed {file}" : "{user} hat {file} geändert",
"You deleted {file}" : "Sie haben {file} gelöscht",
@@ -104,13 +96,13 @@ OC.L10N.register(
"You renamed {oldfile} to {newfile}" : "Sie haben {oldfile} in {newfile} umbenannt",
"{user} renamed {oldfile} to {newfile}" : "{user} hat {oldfile} in {newfile} umbenannt",
"You moved {oldfile} to {newfile}" : "Sie haben {oldfile} nach {newfile} verschoben",
- "{user} moved {oldfile} to {newfile}" : "{user} hat{oldfile} nach {newfile} verschoben",
+ "{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben",
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Ihren <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurden <strong>geändert</strong> oder <strong>umbenannt</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>wiederhergestellt</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
"Maximum upload size" : "Maximale Upload-Größe",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Die Gesamt-Größe {size1} überschreitet die Upload-Begrenzung {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fehler beim Hochladen der Datei \"{fileName}\": {message}",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minuten übrig",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Jeden Augenblick...",
+ "Soon..." : "Bald...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Local link" : "Lokaler Link",
"{newname} already exists" : "{newname} existiert bereits",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s hat %1$s wiederhergestellt ",
"Changed by %2$s" : "Geändert von %2$s",
"Deleted by %2$s" : "Gelöscht von %2$s",
- "Restored by %2$s" : "Wiederhergestellt von %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">via WebDAV auf deine Dateien zuzugreifen</a>",
- "Cancel upload" : "Hochladen abbrechen"
+ "Restored by %2$s" : "Wiederhergestellt von %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 10ecffbb1aa..5a54978e41b 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage invalid" : "Speicher ungültig",
"Unknown error" : "Unbekannter Fehler",
- "Files" : "Dateien",
"All files" : "Alle Dateien",
"Recent" : "Aktuelle",
"File could not be found" : "Datei konnte nicht gefunden werden",
@@ -17,24 +16,17 @@
"Not enough free space" : "Nicht genug freier Speicher",
"Uploading..." : "Hochladen…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minuten übrig",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Jeden Augenblick...",
- "Soon..." : "Bald...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} von {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Rename" : "Umbenennen",
"Move" : "Verschieben",
- "Target folder" : "Zielverzeichnis",
+ "Target folder" : "Zielordner",
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
+ "Files" : "Dateien",
"Details" : "Details",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
@@ -58,7 +50,7 @@
"_%n folder_::_%n folders_" : ["%n Ordner","%n Ordner"],
"_%n file_::_%n files_" : ["%n Datei","%n Dateien"],
"{dirs} and {files}" : "{dirs} und {files}",
- "_including %n hidden_::_including %n hidden_" : ["%n versteckten eingeschlossen","%n versteckten eingeschlossen"],
+ "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckten eingeschlossen"],
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
"New" : "Neu",
@@ -74,7 +66,7 @@
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
- "Copy local link" : "Kopiere lokale Verknüpfung",
+ "Copy local link" : "Lokalen Link kopieren",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
"Upload" : "Hochladen",
@@ -82,7 +74,7 @@
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Sie haben {file} zu Ihren Favoriten hinzugefügt",
- "You removed {file} from your favorites" : "Sie haben {file} aus Ihren Favoriten hentfernt",
+ "You removed {file} from your favorites" : "Sie haben {file} aus Ihren Favoriten entfernt",
"File changes" : "Datei geändert",
"Created by {user}" : "Erstellt durch {user}",
"Changed by {user}" : "Geändert durch {user}",
@@ -92,7 +84,7 @@
"Moved by {user}" : "Verschoben durch {user}",
"You created {file}" : "Sie haben {file} erstellt",
"{user} created {file}" : "{user} hat {file} erstellt",
- "{file} was created in a public folder" : "{file} wurde in einem öffentlichen Verzeichnis erstellt",
+ "{file} was created in a public folder" : "{file} wurde in einem öffentlichen Ordner erstellt",
"You changed {file}" : "Sie haben {file} geändert",
"{user} changed {file}" : "{user} hat {file} geändert",
"You deleted {file}" : "Sie haben {file} gelöscht",
@@ -102,13 +94,13 @@
"You renamed {oldfile} to {newfile}" : "Sie haben {oldfile} in {newfile} umbenannt",
"{user} renamed {oldfile} to {newfile}" : "{user} hat {oldfile} in {newfile} umbenannt",
"You moved {oldfile} to {newfile}" : "Sie haben {oldfile} nach {newfile} verschoben",
- "{user} moved {oldfile} to {newfile}" : "{user} hat{oldfile} nach {newfile} verschoben",
+ "{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben",
"A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Ihren <strong>Favoriten</strong> hinzugefügt oder daraus entfernt",
- "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurden <strong>geändert</strong> oder <strong>umbenannt</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eine Datei oder Ordner wurde <strong>geändert</strong> oder <strong>umbenannt</strong>",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
- "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>gelöscht</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Eine neue Datei oder Ordner wurde <strong>gelöscht</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>",
- "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>wiederhergestellt</strong>",
+ "A new file or folder has been <strong>restored</strong>" : "Eine neue Datei oder Ordner wurde <strong>wiederhergestellt</strong>",
"Upload (max. %s)" : "Hochladen (max. %s)",
"File handling" : "Dateibehandlung",
"Maximum upload size" : "Maximale Upload-Größe",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Die Gesamt-Größe {size1} überschreitet die Upload-Begrenzung {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fehler beim Hochladen der Datei \"{fileName}\": {message}",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minuten übrig",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} Sekunden übrig",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Jeden Augenblick...",
+ "Soon..." : "Bald...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Local link" : "Lokaler Link",
"{newname} already exists" : "{newname} existiert bereits",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s hat %1$s wiederhergestellt ",
"Changed by %2$s" : "Geändert von %2$s",
"Deleted by %2$s" : "Gelöscht von %2$s",
- "Restored by %2$s" : "Wiederhergestellt von %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">via WebDAV auf deine Dateien zuzugreifen</a>",
- "Cancel upload" : "Hochladen abbrechen"
+ "Restored by %2$s" : "Wiederhergestellt von %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index e9f493c869a..da2fb2398e4 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
"Unknown error" : "Άγνωστο σφάλμα",
- "Files" : "Αρχεία",
"All files" : "Όλα τα αρχεία",
"Recent" : "Τελευταία",
"File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο",
@@ -17,13 +17,14 @@ OC.L10N.register(
"Not enough free space" : "Δεν υπάρχει αρκετός ελεύθερος χώρος.",
"Uploading..." : "Μεταφόρτωση...",
"..." : "...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"Actions" : "Ενέργειες",
"Download" : "Λήψη",
"Rename" : "Μετονομασία",
+ "Move" : "Μετακίνηση",
"Delete" : "Διαγραφή",
"Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Files" : "Αρχεία",
"Details" : "Λεπτομέρειες",
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
@@ -57,27 +58,20 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
- "Local link" : "Τοπικός σύνδεσμος",
+ "Copy local link" : "Αντιγραφή τοπικού συνδέσμου",
"Folder" : "Φάκελος",
"New folder" : "Νέος φάκελος",
"Upload" : "Μεταφόρτωση",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
+ "Added to favorites" : "Προσθήκη στα αγαπημένα",
+ "Removed from favorites" : "Αφαίρεση από τα αγαπημένα",
+ "File changes" : "Αλλαγές αρχείου",
+ "Created by {user}" : "Δημιουργήθηκε από τον/την {user}",
+ "You deleted {file}" : "Διαγράψτε το {file}",
+ "{user} deleted {file}" : "ο {user} διέγραψε το {file}",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα <strong>αγαπημένα σας αρχεία</strong> <em>(Μόνο Stream)</em>",
- "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
- "A file or folder has been <strong>restored</strong>" : "Ένα αρχείο ή φάκελος <strong>επαναφέρθηκε</ strong>",
- "You created %1$s" : "Δημιουργήσατε το %1$s",
- "%2$s created %1$s" : "Ο χρήστης %2$s δημιούργησε το %1$s",
- "%1$s was created in a public folder" : "Το %1$s δημιουργήθηκε σε έναν δημόσιο φάκελο",
- "You changed %1$s" : "Αλλάξατε το %1$s",
- "%2$s changed %1$s" : "Ο χρήστης %2$s άλλαξε το %1$s",
- "You deleted %1$s" : "Διαγράψατε το %1$s",
- "%2$s deleted %1$s" : "Ο χρήστης %2$s διέγραψε το %1$s",
- "You restored %1$s" : "Επαναφέρατε το %1$s",
- "%2$s restored %1$s" : "Ο χρήστης %2$s επανέφερε το %1$s",
- "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s",
- "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s",
- "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s",
"Upload (max. %s)" : "Διαμοιρασμός (max. %s)",
"File handling" : "Διαχείριση αρχείων",
"Maximum upload size" : "Μέγιστο μέγεθος αποστολής",
@@ -88,6 +82,7 @@ OC.L10N.register(
"Settings" : "Ρυθμίσεις",
"Show hidden files" : "Προβολή κρυφών αρχείων",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Χρησιμοποιήστε αυτή τη διεύθυνση για να έχετε <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">πρόσβαση στα Αρχεία σας μέσω WebDAV</a>",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Upload some content or sync with your devices!" : "Μεταφόρτωση περιεχομένου ή συγχρονισμός με τις συσκευές σας!",
"No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο",
@@ -96,6 +91,11 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος αποστολής αρχείων σε αυτόν τον διακομιστή.",
"No favorites" : "Δεν υπάρχουν αγαπημένα",
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ",
+ "Shared with you" : "Διαμοιρασμένα με εσάς",
+ "Shared with others" : "Διαμοιρασμένα με άλλους",
+ "Shared by link" : "Διαμοιρασμένα μέσω συνδέσμου",
+ "Tags" : "Ετικέτες",
+ "Deleted files" : "Διεγραμμένα αρχεία",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο κειμένου.txt",
"Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος",
@@ -116,9 +116,25 @@ OC.L10N.register(
"Invalid directory." : "Μη έγκυρος φάκελος.",
"Total file size {size1} exceeds upload limit {size2}" : "Το συνολικό μέγεθος αρχείου {size1} υπερβαίνει το όριο μεταφόρτωσης {size2}",
"Could not get result from server." : "Αδυναμία λήψης αποτελέσματος από το διακομιστή.",
+ "Soon..." : "Σύντομα...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'",
+ "Local link" : "Τοπικός σύνδεσμος",
"{newname} already exists" : "το {newname} υπάρχει ήδη",
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
- "Cancel upload" : "Ακύρωση αποστολής"
+ "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Ένα αρχείο ή φάκελος <strong>επαναφέρθηκε</ strong>",
+ "You created %1$s" : "Δημιουργήσατε το %1$s",
+ "%2$s created %1$s" : "Ο χρήστης %2$s δημιούργησε το %1$s",
+ "%1$s was created in a public folder" : "Το %1$s δημιουργήθηκε σε έναν δημόσιο φάκελο",
+ "You changed %1$s" : "Αλλάξατε το %1$s",
+ "%2$s changed %1$s" : "Ο χρήστης %2$s άλλαξε το %1$s",
+ "You deleted %1$s" : "Διαγράψατε το %1$s",
+ "%2$s deleted %1$s" : "Ο χρήστης %2$s διέγραψε το %1$s",
+ "You restored %1$s" : "Επαναφέρατε το %1$s",
+ "%2$s restored %1$s" : "Ο χρήστης %2$s επανέφερε το %1$s",
+ "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s",
+ "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s",
+ "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index 0cc22446e91..a4421b819fa 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -1,7 +1,7 @@
{ "translations": {
+ "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
"Unknown error" : "Άγνωστο σφάλμα",
- "Files" : "Αρχεία",
"All files" : "Όλα τα αρχεία",
"Recent" : "Τελευταία",
"File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο",
@@ -15,13 +15,14 @@
"Not enough free space" : "Δεν υπάρχει αρκετός ελεύθερος χώρος.",
"Uploading..." : "Μεταφόρτωση...",
"..." : "...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"Actions" : "Ενέργειες",
"Download" : "Λήψη",
"Rename" : "Μετονομασία",
+ "Move" : "Μετακίνηση",
"Delete" : "Διαγραφή",
"Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Files" : "Αρχεία",
"Details" : "Λεπτομέρειες",
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
@@ -55,27 +56,20 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
- "Local link" : "Τοπικός σύνδεσμος",
+ "Copy local link" : "Αντιγραφή τοπικού συνδέσμου",
"Folder" : "Φάκελος",
"New folder" : "Νέος φάκελος",
"Upload" : "Μεταφόρτωση",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
+ "Added to favorites" : "Προσθήκη στα αγαπημένα",
+ "Removed from favorites" : "Αφαίρεση από τα αγαπημένα",
+ "File changes" : "Αλλαγές αρχείου",
+ "Created by {user}" : "Δημιουργήθηκε από τον/την {user}",
+ "You deleted {file}" : "Διαγράψτε το {file}",
+ "{user} deleted {file}" : "ο {user} διέγραψε το {file}",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Ένα νέο αρχείο ή φάκελος έχει <strong>διαγραφεί</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα <strong>αγαπημένα σας αρχεία</strong> <em>(Μόνο Stream)</em>",
- "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
- "A file or folder has been <strong>restored</strong>" : "Ένα αρχείο ή φάκελος <strong>επαναφέρθηκε</ strong>",
- "You created %1$s" : "Δημιουργήσατε το %1$s",
- "%2$s created %1$s" : "Ο χρήστης %2$s δημιούργησε το %1$s",
- "%1$s was created in a public folder" : "Το %1$s δημιουργήθηκε σε έναν δημόσιο φάκελο",
- "You changed %1$s" : "Αλλάξατε το %1$s",
- "%2$s changed %1$s" : "Ο χρήστης %2$s άλλαξε το %1$s",
- "You deleted %1$s" : "Διαγράψατε το %1$s",
- "%2$s deleted %1$s" : "Ο χρήστης %2$s διέγραψε το %1$s",
- "You restored %1$s" : "Επαναφέρατε το %1$s",
- "%2$s restored %1$s" : "Ο χρήστης %2$s επανέφερε το %1$s",
- "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s",
- "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s",
- "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s",
"Upload (max. %s)" : "Διαμοιρασμός (max. %s)",
"File handling" : "Διαχείριση αρχείων",
"Maximum upload size" : "Μέγιστο μέγεθος αποστολής",
@@ -86,6 +80,7 @@
"Settings" : "Ρυθμίσεις",
"Show hidden files" : "Προβολή κρυφών αρχείων",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Χρησιμοποιήστε αυτή τη διεύθυνση για να έχετε <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">πρόσβαση στα Αρχεία σας μέσω WebDAV</a>",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Upload some content or sync with your devices!" : "Μεταφόρτωση περιεχομένου ή συγχρονισμός με τις συσκευές σας!",
"No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο",
@@ -94,6 +89,11 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος αποστολής αρχείων σε αυτόν τον διακομιστή.",
"No favorites" : "Δεν υπάρχουν αγαπημένα",
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ",
+ "Shared with you" : "Διαμοιρασμένα με εσάς",
+ "Shared with others" : "Διαμοιρασμένα με άλλους",
+ "Shared by link" : "Διαμοιρασμένα μέσω συνδέσμου",
+ "Tags" : "Ετικέτες",
+ "Deleted files" : "Διεγραμμένα αρχεία",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο κειμένου.txt",
"Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος",
@@ -114,9 +114,25 @@
"Invalid directory." : "Μη έγκυρος φάκελος.",
"Total file size {size1} exceeds upload limit {size2}" : "Το συνολικό μέγεθος αρχείου {size1} υπερβαίνει το όριο μεταφόρτωσης {size2}",
"Could not get result from server." : "Αδυναμία λήψης αποτελέσματος από το διακομιστή.",
+ "Soon..." : "Σύντομα...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'",
+ "Local link" : "Τοπικός σύνδεσμος",
"{newname} already exists" : "το {newname} υπάρχει ήδη",
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
- "Cancel upload" : "Ακύρωση αποστολής"
+ "A file or folder has been <strong>deleted</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>διαγραφεί</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Ένα αρχείο ή φάκελος <strong>επαναφέρθηκε</ strong>",
+ "You created %1$s" : "Δημιουργήσατε το %1$s",
+ "%2$s created %1$s" : "Ο χρήστης %2$s δημιούργησε το %1$s",
+ "%1$s was created in a public folder" : "Το %1$s δημιουργήθηκε σε έναν δημόσιο φάκελο",
+ "You changed %1$s" : "Αλλάξατε το %1$s",
+ "%2$s changed %1$s" : "Ο χρήστης %2$s άλλαξε το %1$s",
+ "You deleted %1$s" : "Διαγράψατε το %1$s",
+ "%2$s deleted %1$s" : "Ο χρήστης %2$s διέγραψε το %1$s",
+ "You restored %1$s" : "Επαναφέρατε το %1$s",
+ "%2$s restored %1$s" : "Ο χρήστης %2$s επανέφερε το %1$s",
+ "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s",
+ "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s",
+ "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index 139e56ad170..7feab942842 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Storage invalid" : "Storage invalid",
"Unknown error" : "Unknown error",
- "Files" : "Files",
"All files" : "All files",
"File could not be found" : "File could not be found",
"Home" : "Home",
@@ -15,22 +14,14 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Not enough free space, you are uploading {size1} but only {size2} is left",
"Uploading..." : "Uploading...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} left",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} second{plural_s} left",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Any moment now...",
- "Soon..." : "Soon...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} of {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
"Actions" : "Actions",
"Download" : "Download",
"Rename" : "Rename",
"Delete" : "Delete",
"Disconnect storage" : "Disconnect storage",
"Unshare" : "Unshare",
+ "Files" : "Files",
"Details" : "Details",
"Select" : "Select",
"Pending" : "Pending",
@@ -114,6 +105,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Total file size {size1} exceeds upload limit {size2}",
"Error uploading file \"{fileName}\": {message}" : "Error uploading file \"{fileName}\": {message}",
"Could not get result from server." : "Could not get result from server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} left",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} second{plural_s} left",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Any moment now...",
+ "Soon..." : "Soon...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
"No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'",
"Local link" : "Local link",
"{newname} already exists" : "{newname} already exists",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index e2b0b07d56a..1187441344f 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -1,7 +1,6 @@
{ "translations": {
"Storage invalid" : "Storage invalid",
"Unknown error" : "Unknown error",
- "Files" : "Files",
"All files" : "All files",
"File could not be found" : "File could not be found",
"Home" : "Home",
@@ -13,22 +12,14 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Not enough free space, you are uploading {size1} but only {size2} is left",
"Uploading..." : "Uploading...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} left",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} second{plural_s} left",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Any moment now...",
- "Soon..." : "Soon...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} of {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
"Actions" : "Actions",
"Download" : "Download",
"Rename" : "Rename",
"Delete" : "Delete",
"Disconnect storage" : "Disconnect storage",
"Unshare" : "Unshare",
+ "Files" : "Files",
"Details" : "Details",
"Select" : "Select",
"Pending" : "Pending",
@@ -112,6 +103,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Total file size {size1} exceeds upload limit {size2}",
"Error uploading file \"{fileName}\": {message}" : "Error uploading file \"{fileName}\": {message}",
"Could not get result from server." : "Could not get result from server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} left",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} second{plural_s} left",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Any moment now...",
+ "Soon..." : "Soon...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
"No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'",
"Local link" : "Local link",
"{newname} already exists" : "{newname} already exists",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index bf3885b7d96..db230990a5e 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage invalid" : "Almacenamiento inválido",
"Unknown error" : "Error desconocido",
- "Files" : "Archivos",
"All files" : "Todos los archivos",
"Recent" : "Reciente",
"File could not be found" : "El archivo no se ha encontrado",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "No hay espacio libre suficiente",
"Uploading..." : "Subiendo...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} pendiente",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} pendiente",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} pendiente",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "En cualquier momento...",
- "Soon..." : "Dentro de poco...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
"Actions" : "Acciones",
"Download" : "Descargar",
"Rename" : "Renombrar",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
+ "Could not load info for file \"{file}\"" : "No se pudo cargar información para el archivo \"{file}\"",
+ "Files" : "Archivos",
"Details" : "Detalles",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
@@ -81,6 +73,10 @@ OC.L10N.register(
"New folder" : "Nueva carpeta",
"Upload" : "Subir",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
+ "Added to favorites" : "Agregado a favoritos",
+ "Removed from favorites" : "Borrado de favoritos",
+ "You added {file} to your favorites" : "Agregado {file} a tus favoritos",
+ "You removed {file} from your favorites" : "Borrado {file} de tus favoritos",
"File changes" : "Cambios del archivo",
"Created by {user}" : "Creado por {user}",
"Changed by {user}" : "Cambiado por {user}",
@@ -101,6 +97,7 @@ OC.L10N.register(
"{user} renamed {oldfile} to {newfile}" : "{user} ha renombrado {oldfile } como {newfile}",
"You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>.",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
"A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>.",
@@ -151,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "El tamaño total del archivo {size1} excede el límite {size2}",
"Error uploading file \"{fileName}\": {message}" : "Error subiendo el archivo \"{fileName}\": {message}",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} pendiente",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} pendiente",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} pendiente",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "En cualquier momento...",
+ "Soon..." : "Dentro de poco...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
"No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'",
"Local link" : "Enlace local",
"{newname} already exists" : "{newname} ya existe",
@@ -168,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s recuperó %1$s",
"Changed by %2$s" : "Cambiado por %2$s",
"Deleted by %2$s" : "Eliminado por %2$s",
- "Restored by %2$s" : "Restaurado por %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta direccioń para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV<a>",
- "Cancel upload" : "Cancelar la subida"
+ "Restored by %2$s" : "Restaurado por %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index c3a48182939..a2099073e0b 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage invalid" : "Almacenamiento inválido",
"Unknown error" : "Error desconocido",
- "Files" : "Archivos",
"All files" : "Todos los archivos",
"Recent" : "Reciente",
"File could not be found" : "El archivo no se ha encontrado",
@@ -17,16 +16,7 @@
"Not enough free space" : "No hay espacio libre suficiente",
"Uploading..." : "Subiendo...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} pendiente",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} pendiente",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} pendiente",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "En cualquier momento...",
- "Soon..." : "Dentro de poco...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
"Actions" : "Acciones",
"Download" : "Descargar",
"Rename" : "Renombrar",
@@ -35,6 +25,8 @@
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
+ "Could not load info for file \"{file}\"" : "No se pudo cargar información para el archivo \"{file}\"",
+ "Files" : "Archivos",
"Details" : "Detalles",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
@@ -79,6 +71,10 @@
"New folder" : "Nueva carpeta",
"Upload" : "Subir",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
+ "Added to favorites" : "Agregado a favoritos",
+ "Removed from favorites" : "Borrado de favoritos",
+ "You added {file} to your favorites" : "Agregado {file} a tus favoritos",
+ "You removed {file} from your favorites" : "Borrado {file} de tus favoritos",
"File changes" : "Cambios del archivo",
"Created by {user}" : "Creado por {user}",
"Changed by {user}" : "Cambiado por {user}",
@@ -99,6 +95,7 @@
"{user} renamed {oldfile} to {newfile}" : "{user} ha renombrado {oldfile } como {newfile}",
"You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong> o <strong>renombrado</strong>.",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
"A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo o carpeta ha sido <strong>eliminado</strong>.",
@@ -149,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "El tamaño total del archivo {size1} excede el límite {size2}",
"Error uploading file \"{fileName}\": {message}" : "Error subiendo el archivo \"{fileName}\": {message}",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} pendiente",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} pendiente",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} pendiente",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "En cualquier momento...",
+ "Soon..." : "Dentro de poco...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
"No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'",
"Local link" : "Enlace local",
"{newname} already exists" : "{newname} ya existe",
@@ -166,8 +172,6 @@
"%2$s restored %1$s" : "%2$s recuperó %1$s",
"Changed by %2$s" : "Cambiado por %2$s",
"Deleted by %2$s" : "Eliminado por %2$s",
- "Restored by %2$s" : "Restaurado por %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta direccioń para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV<a>",
- "Cancel upload" : "Cancelar la subida"
+ "Restored by %2$s" : "Restaurado por %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js
index 3f476cf7ffd..e5deef567a8 100644
--- a/apps/files/l10n/fi_FI.js
+++ b/apps/files/l10n/fi_FI.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Storage invalid" : "Virheellinen tallennustila",
"Unknown error" : "Tuntematon virhe",
- "Files" : "Tiedostot",
"All files" : "Kaikki tiedostot",
"Recent" : "Viimeaikaiset",
"File could not be found" : "TIedostoa ei löytynyt",
@@ -16,22 +15,14 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ei riittävästi vapaata tilaa. Lähetyksesi koko on {size1}, mutta vain {size2} on jäljellä",
"Uploading..." : "Lähetetään...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} jäljellä",
- "{hours}:{minutes}h" : "{hours}h {minutes}m",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}m {seconds}s jäljellä",
- "{minutes}:{seconds}m" : "{minutes}m {seconds}s",
- "{seconds} second{plural_s} left" : "{seconds}s jäljellä",
- "{seconds}s" : "{seconds} s",
- "Any moment now..." : "Minä tahansa hetkenä...",
- "Soon..." : "Pian...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
"Actions" : "Toiminnot",
"Download" : "Lataa",
"Rename" : "Nimeä uudelleen",
"Delete" : "Poista",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
+ "Files" : "Tiedostot",
"Details" : "Tiedot",
"Select" : "Valitse",
"Pending" : "Odottaa",
@@ -116,6 +107,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Yhteiskoko {size1} ylittää lähetysrajan {size2}",
"Error uploading file \"{fileName}\": {message}" : "Virhe lähettäessä tiedostoa \"{fileName}\": {message}",
"Could not get result from server." : "Tuloksien saaminen palvelimelta ei onnistunut.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} jäljellä",
+ "{hours}:{minutes}h" : "{hours}h {minutes}m",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}m {seconds}s jäljellä",
+ "{minutes}:{seconds}m" : "{minutes}m {seconds}s",
+ "{seconds} second{plural_s} left" : "{seconds}s jäljellä",
+ "{seconds}s" : "{seconds} s",
+ "Any moment now..." : "Minä tahansa hetkenä...",
+ "Soon..." : "Pian...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
"No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'",
"Local link" : "Paikallinen linkki",
"{newname} already exists" : "{newname} on jo olemassa",
@@ -133,8 +133,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s palautti kohteen %1$s",
"Changed by %2$s" : "Muuttanut %2$s",
"Deleted by %2$s" : "Poistanut %2$s",
- "Restored by %2$s" : "Palauttanut %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAV:n yli</a>",
- "Cancel upload" : "Peru lähetys"
+ "Restored by %2$s" : "Palauttanut %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json
index 79a1fc0ec58..6b60b94f6b4 100644
--- a/apps/files/l10n/fi_FI.json
+++ b/apps/files/l10n/fi_FI.json
@@ -1,7 +1,6 @@
{ "translations": {
"Storage invalid" : "Virheellinen tallennustila",
"Unknown error" : "Tuntematon virhe",
- "Files" : "Tiedostot",
"All files" : "Kaikki tiedostot",
"Recent" : "Viimeaikaiset",
"File could not be found" : "TIedostoa ei löytynyt",
@@ -14,22 +13,14 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ei riittävästi vapaata tilaa. Lähetyksesi koko on {size1}, mutta vain {size2} on jäljellä",
"Uploading..." : "Lähetetään...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} jäljellä",
- "{hours}:{minutes}h" : "{hours}h {minutes}m",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}m {seconds}s jäljellä",
- "{minutes}:{seconds}m" : "{minutes}m {seconds}s",
- "{seconds} second{plural_s} left" : "{seconds}s jäljellä",
- "{seconds}s" : "{seconds} s",
- "Any moment now..." : "Minä tahansa hetkenä...",
- "Soon..." : "Pian...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
"Actions" : "Toiminnot",
"Download" : "Lataa",
"Rename" : "Nimeä uudelleen",
"Delete" : "Poista",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
+ "Files" : "Tiedostot",
"Details" : "Tiedot",
"Select" : "Valitse",
"Pending" : "Odottaa",
@@ -114,6 +105,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Yhteiskoko {size1} ylittää lähetysrajan {size2}",
"Error uploading file \"{fileName}\": {message}" : "Virhe lähettäessä tiedostoa \"{fileName}\": {message}",
"Could not get result from server." : "Tuloksien saaminen palvelimelta ei onnistunut.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} jäljellä",
+ "{hours}:{minutes}h" : "{hours}h {minutes}m",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}m {seconds}s jäljellä",
+ "{minutes}:{seconds}m" : "{minutes}m {seconds}s",
+ "{seconds} second{plural_s} left" : "{seconds}s jäljellä",
+ "{seconds}s" : "{seconds} s",
+ "Any moment now..." : "Minä tahansa hetkenä...",
+ "Soon..." : "Pian...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
"No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'",
"Local link" : "Paikallinen linkki",
"{newname} already exists" : "{newname} on jo olemassa",
@@ -131,8 +131,6 @@
"%2$s restored %1$s" : "%2$s palautti kohteen %1$s",
"Changed by %2$s" : "Muuttanut %2$s",
"Deleted by %2$s" : "Poistanut %2$s",
- "Restored by %2$s" : "Palauttanut %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAV:n yli</a>",
- "Cancel upload" : "Peru lähetys"
+ "Restored by %2$s" : "Palauttanut %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index b3ba81c1896..bb040d3ae45 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -1,34 +1,24 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Le support de stockage est temporairement non disponible",
- "Storage invalid" : "Support de stockage non valable",
+ "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
+ "Storage invalid" : "Support de stockage invalide",
"Unknown error" : "Erreur inconnue ",
- "Files" : "Fichiers",
"All files" : "Tous les fichiers",
"Recent" : "Récent",
- "File could not be found" : "Ce fichier n'a pu être trouvé.",
+ "File could not be found" : "Fichier introuvable",
"Home" : "Mes fichiers",
"Close" : "Fermer",
"Favorites" : "Favoris",
"Could not create folder \"{dir}\"" : "Impossible de créer le dossier \"{dir}\"",
- "Upload cancelled." : "Envoi annulé.",
+ "Upload cancelled." : "Téléversement annulé.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible d'envoyer {filename} car il s'agit d'un répertoire ou d'un fichier de taille nulle",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Espace libre insuffisant : vous tentez d'envoyer {size1} mais seulement {size2} sont disponibles",
"Target folder \"{dir}\" does not exist any more" : "Le dossier cible « {dir} » n'existe plus",
- "Not enough free space" : "Pas assez d'espace disponible",
+ "Not enough free space" : "Espace disponible insuffisant",
"Uploading..." : "Téléversement en cours…",
- "..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "D'ici quelques instants…",
- "Soon..." : "Bientôt...",
+ "..." : "…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"Actions" : "Actions",
"Download" : "Télécharger",
"Rename" : "Renommer",
@@ -37,12 +27,14 @@ OC.L10N.register(
"Delete" : "Supprimer",
"Disconnect storage" : "Déconnecter ce support de stockage",
"Unshare" : "Ne plus partager",
+ "Could not load info for file \"{file}\"" : "Impossible de charger les informations du fichier \"{file}\"",
+ "Files" : "Fichiers",
"Details" : "Détails",
"Select" : "Sélectionner",
"Pending" : "En attente",
"Unable to determine date" : "Impossible de déterminer la date",
"This operation is forbidden" : "Cette opération est interdite",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ce dossier n'est pas disponible. Consultez les logs ou contactez votre administrateur",
"Could not move \"{file}\", target exists" : "Impossible de déplacer \"{file}\", la cible existe",
"Could not move \"{file}\"" : "Impossible de déplacer \"{file}\"",
"{newName} already exists" : "{newName} existe déjà",
@@ -60,18 +52,18 @@ OC.L10N.register(
"_%n folder_::_%n folders_" : ["%n dossier","%n dossiers"],
"_%n file_::_%n files_" : ["%n fichier","%n fichiers"],
"{dirs} and {files}" : "{dirs} et {files}",
- "_including %n hidden_::_including %n hidden_" : ["inclus %n caché","inclus %n cachés"],
- "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'ajouter des fichiers ici",
+ "_including %n hidden_::_including %n hidden_" : ["inclus %n masqué","inclus %n masqués"],
+ "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
"New" : "Nouveau",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ou synchronisés!",
- "Your storage is full, files can not be updated or synced anymore!" : "Votre espage de stockage est plein, les fichiers ne peuvent plus être ajoutés ou synchronisés !",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ni synchronisés !",
+ "Your storage is full, files can not be updated or synced anymore!" : "Votre espace de stockage est plein. Les fichiers ne peuvent plus être mis à jour ni synchronisés !",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "L'espace de stockage de {owner} est presque plein ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Votre espace de stockage est presque plein ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["correspond à '{filter}'","correspondent à '{filter}'"],
- "View in folder" : "Voir dans le dossier",
+ "View in folder" : "Afficher dans le dossier",
"Path" : "Chemin",
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Favorited" : "Marqué comme favori",
@@ -79,13 +71,13 @@ OC.L10N.register(
"Copy local link" : "Copier le dossier local",
"Folder" : "Dossier",
"New folder" : "Nouveau dossier",
- "Upload" : "Chargement",
+ "Upload" : "Téléverser",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"Added to favorites" : "Ajouté aux favoris",
"Removed from favorites" : "Retiré des favoris",
"You added {file} to your favorites" : "Vous avez ajouté {file} à vos favoris",
"You removed {file} from your favorites" : "Vous avez retiré {file} de vos favoris",
- "File changes" : "Modifications du fichier",
+ "File changes" : "Modifications de fichiers",
"Created by {user}" : "Créé par {user}",
"Changed by {user}" : "Modifié par {user}",
"Deleted by {user}" : "Supprimé par {user}",
@@ -115,9 +107,9 @@ OC.L10N.register(
"File handling" : "Gestion de fichiers",
"Maximum upload size" : "Taille max. d'envoi",
"max. possible: " : "Max. possible :",
- "Save" : "Sauvegarder",
+ "Save" : "Enregistrer",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Avec PHP-FPM il peut se passer jusqu'à 5 minutes pour que les changements soient appliqués.",
- "Missing permissions to edit from here." : "Manque de permissions pour éditer à partir d'ici.",
+ "Missing permissions to edit from here." : "Permissions insuffisantes pour modifier à partir d'ici.",
"Settings" : "Paramètres",
"Show hidden files" : "Afficher les fichiers cachés",
"WebDAV" : "WebDAV",
@@ -137,27 +129,36 @@ OC.L10N.register(
"Deleted files" : "Fichiers supprimés",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
- "Storage not available" : "Support de stockage non disponible",
+ "Storage not available" : "Espace de stockage non disponible",
"Unable to set upload directory." : "Impossible de définir le dossier de destination.",
"Invalid Token" : "Jeton non valide",
"No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue",
- "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.",
+ "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML.",
"The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.",
"No file was uploaded" : "Pas de fichier envoyé.",
"Missing a temporary folder" : "Absence de dossier temporaire",
"Failed to write to disk" : "Erreur d'écriture sur le disque",
- "Not enough storage available" : "Trop peu d'espace de stockage disponible",
+ "Not enough storage available" : "Espace disponible insuffisant",
"The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.",
- "Upload failed. Could not find uploaded file" : "L'envoi a échoué. Impossible de trouver le fichier envoyé.",
- "Upload failed. Could not get file info." : "L'envoi a échoué. Impossible d'obtenir les informations du fichier.",
+ "Upload failed. Could not find uploaded file" : "Le téléversement a échoué. Impossible de trouver le fichier envoyé.",
+ "Upload failed. Could not get file info." : "Le téléversement a échoué. Impossible d'obtenir les informations du fichier.",
"Invalid directory." : "Dossier non valide.",
"Total file size {size1} exceeds upload limit {size2}" : "La taille totale du fichier {size1} excède la taille maximale d'envoi {size2}",
"Error uploading file \"{fileName}\": {message}" : "Erreur lors de l'envoi du fichier \"{fileName}\" : {message}",
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "D'ici quelques instants…",
+ "Soon..." : "Bientôt…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'",
- "Local link" : "Dossier local",
+ "Local link" : "Lien local",
"{newname} already exists" : "{newname} existe déjà",
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s a restauré %1$s",
"Changed by %2$s" : "Modifié par %2$s",
"Deleted by %2$s" : "Supprimé par %2$s",
- "Restored by %2$s" : "Restauré par %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>",
- "Cancel upload" : "Annuler le téléversement"
+ "Restored by %2$s" : "Restauré par %2$s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 84bd72be643..c38524fbe31 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -1,32 +1,22 @@
{ "translations": {
- "Storage is temporarily not available" : "Le support de stockage est temporairement non disponible",
- "Storage invalid" : "Support de stockage non valable",
+ "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
+ "Storage invalid" : "Support de stockage invalide",
"Unknown error" : "Erreur inconnue ",
- "Files" : "Fichiers",
"All files" : "Tous les fichiers",
"Recent" : "Récent",
- "File could not be found" : "Ce fichier n'a pu être trouvé.",
+ "File could not be found" : "Fichier introuvable",
"Home" : "Mes fichiers",
"Close" : "Fermer",
"Favorites" : "Favoris",
"Could not create folder \"{dir}\"" : "Impossible de créer le dossier \"{dir}\"",
- "Upload cancelled." : "Envoi annulé.",
+ "Upload cancelled." : "Téléversement annulé.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible d'envoyer {filename} car il s'agit d'un répertoire ou d'un fichier de taille nulle",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Espace libre insuffisant : vous tentez d'envoyer {size1} mais seulement {size2} sont disponibles",
"Target folder \"{dir}\" does not exist any more" : "Le dossier cible « {dir} » n'existe plus",
- "Not enough free space" : "Pas assez d'espace disponible",
+ "Not enough free space" : "Espace disponible insuffisant",
"Uploading..." : "Téléversement en cours…",
- "..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "D'ici quelques instants…",
- "Soon..." : "Bientôt...",
+ "..." : "…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"Actions" : "Actions",
"Download" : "Télécharger",
"Rename" : "Renommer",
@@ -35,12 +25,14 @@
"Delete" : "Supprimer",
"Disconnect storage" : "Déconnecter ce support de stockage",
"Unshare" : "Ne plus partager",
+ "Could not load info for file \"{file}\"" : "Impossible de charger les informations du fichier \"{file}\"",
+ "Files" : "Fichiers",
"Details" : "Détails",
"Select" : "Sélectionner",
"Pending" : "En attente",
"Unable to determine date" : "Impossible de déterminer la date",
"This operation is forbidden" : "Cette opération est interdite",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ce dossier n'est pas disponible. Consultez les logs ou contactez votre administrateur",
"Could not move \"{file}\", target exists" : "Impossible de déplacer \"{file}\", la cible existe",
"Could not move \"{file}\"" : "Impossible de déplacer \"{file}\"",
"{newName} already exists" : "{newName} existe déjà",
@@ -58,18 +50,18 @@
"_%n folder_::_%n folders_" : ["%n dossier","%n dossiers"],
"_%n file_::_%n files_" : ["%n fichier","%n fichiers"],
"{dirs} and {files}" : "{dirs} et {files}",
- "_including %n hidden_::_including %n hidden_" : ["inclus %n caché","inclus %n cachés"],
- "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'ajouter des fichiers ici",
+ "_including %n hidden_::_including %n hidden_" : ["inclus %n masqué","inclus %n masqués"],
+ "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
"New" : "Nouveau",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ou synchronisés!",
- "Your storage is full, files can not be updated or synced anymore!" : "Votre espage de stockage est plein, les fichiers ne peuvent plus être ajoutés ou synchronisés !",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ni synchronisés !",
+ "Your storage is full, files can not be updated or synced anymore!" : "Votre espace de stockage est plein. Les fichiers ne peuvent plus être mis à jour ni synchronisés !",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "L'espace de stockage de {owner} est presque plein ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Votre espace de stockage est presque plein ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["correspond à '{filter}'","correspondent à '{filter}'"],
- "View in folder" : "Voir dans le dossier",
+ "View in folder" : "Afficher dans le dossier",
"Path" : "Chemin",
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Favorited" : "Marqué comme favori",
@@ -77,13 +69,13 @@
"Copy local link" : "Copier le dossier local",
"Folder" : "Dossier",
"New folder" : "Nouveau dossier",
- "Upload" : "Chargement",
+ "Upload" : "Téléverser",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"Added to favorites" : "Ajouté aux favoris",
"Removed from favorites" : "Retiré des favoris",
"You added {file} to your favorites" : "Vous avez ajouté {file} à vos favoris",
"You removed {file} from your favorites" : "Vous avez retiré {file} de vos favoris",
- "File changes" : "Modifications du fichier",
+ "File changes" : "Modifications de fichiers",
"Created by {user}" : "Créé par {user}",
"Changed by {user}" : "Modifié par {user}",
"Deleted by {user}" : "Supprimé par {user}",
@@ -113,9 +105,9 @@
"File handling" : "Gestion de fichiers",
"Maximum upload size" : "Taille max. d'envoi",
"max. possible: " : "Max. possible :",
- "Save" : "Sauvegarder",
+ "Save" : "Enregistrer",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Avec PHP-FPM il peut se passer jusqu'à 5 minutes pour que les changements soient appliqués.",
- "Missing permissions to edit from here." : "Manque de permissions pour éditer à partir d'ici.",
+ "Missing permissions to edit from here." : "Permissions insuffisantes pour modifier à partir d'ici.",
"Settings" : "Paramètres",
"Show hidden files" : "Afficher les fichiers cachés",
"WebDAV" : "WebDAV",
@@ -135,27 +127,36 @@
"Deleted files" : "Fichiers supprimés",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
- "Storage not available" : "Support de stockage non disponible",
+ "Storage not available" : "Espace de stockage non disponible",
"Unable to set upload directory." : "Impossible de définir le dossier de destination.",
"Invalid Token" : "Jeton non valide",
"No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue",
- "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.",
+ "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML.",
"The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.",
"No file was uploaded" : "Pas de fichier envoyé.",
"Missing a temporary folder" : "Absence de dossier temporaire",
"Failed to write to disk" : "Erreur d'écriture sur le disque",
- "Not enough storage available" : "Trop peu d'espace de stockage disponible",
+ "Not enough storage available" : "Espace disponible insuffisant",
"The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.",
- "Upload failed. Could not find uploaded file" : "L'envoi a échoué. Impossible de trouver le fichier envoyé.",
- "Upload failed. Could not get file info." : "L'envoi a échoué. Impossible d'obtenir les informations du fichier.",
+ "Upload failed. Could not find uploaded file" : "Le téléversement a échoué. Impossible de trouver le fichier envoyé.",
+ "Upload failed. Could not get file info." : "Le téléversement a échoué. Impossible d'obtenir les informations du fichier.",
"Invalid directory." : "Dossier non valide.",
"Total file size {size1} exceeds upload limit {size2}" : "La taille totale du fichier {size1} excède la taille maximale d'envoi {size2}",
"Error uploading file \"{fileName}\": {message}" : "Erreur lors de l'envoi du fichier \"{fileName}\" : {message}",
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "D'ici quelques instants…",
+ "Soon..." : "Bientôt…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'",
- "Local link" : "Dossier local",
+ "Local link" : "Lien local",
"{newname} already exists" : "{newname} existe déjà",
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s a restauré %1$s",
"Changed by %2$s" : "Modifié par %2$s",
"Deleted by %2$s" : "Supprimé par %2$s",
- "Restored by %2$s" : "Restauré par %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>",
- "Cancel upload" : "Annuler le téléversement"
+ "Restored by %2$s" : "Restauré par %2$s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index b35738132fc..5d510f5bb2f 100644
--- a/apps/files/l10n/he.js
+++ b/apps/files/l10n/he.js
@@ -15,16 +15,7 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "לא קיים מספיק מקום פנוי, הקובץ המיועד להעלאה {size1} אבל נשאר {size2} בלבד",
"Uploading..." : "העלאה...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
- "{hours}:{minutes}h" : "{hours}:{minutes}שעות",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות",
- "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו",
- "{seconds}s" : "{seconds}שניות",
- "Any moment now..." : "עכשיו בכל רגע...",
- "Soon..." : "בקרוב...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} מתוך {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"Actions" : "פעולות",
"Download" : "הורדה",
"Rename" : "שינוי שם",
@@ -113,6 +104,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "גודל הקובת {size1} עובר את מגבלת הגודל להעלאה {size2}",
"Error uploading file \"{fileName}\": {message}" : "שגיאה בזמן העלאת קובץ \"{fileName}\": {message}",
"Could not get result from server." : "לא ניתן לגשת לתוצאות מהשרת.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
+ "{hours}:{minutes}h" : "{hours}:{minutes}שעות",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות",
+ "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו",
+ "{seconds}s" : "{seconds}שניות",
+ "Any moment now..." : "עכשיו בכל רגע...",
+ "Soon..." : "בקרוב...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"No entries in this folder match '{filter}'" : "לא נמצאו התאמות בתיקייה זו ל- '{filter}'",
"Local link" : "קישור מקומי",
"{newname} already exists" : "{newname} כבר קיים",
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index e9a5a32f5a5..e926f718f46 100644
--- a/apps/files/l10n/he.json
+++ b/apps/files/l10n/he.json
@@ -13,16 +13,7 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "לא קיים מספיק מקום פנוי, הקובץ המיועד להעלאה {size1} אבל נשאר {size2} בלבד",
"Uploading..." : "העלאה...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
- "{hours}:{minutes}h" : "{hours}:{minutes}שעות",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות",
- "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו",
- "{seconds}s" : "{seconds}שניות",
- "Any moment now..." : "עכשיו בכל רגע...",
- "Soon..." : "בקרוב...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} מתוך {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"Actions" : "פעולות",
"Download" : "הורדה",
"Rename" : "שינוי שם",
@@ -111,6 +102,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "גודל הקובת {size1} עובר את מגבלת הגודל להעלאה {size2}",
"Error uploading file \"{fileName}\": {message}" : "שגיאה בזמן העלאת קובץ \"{fileName}\": {message}",
"Could not get result from server." : "לא ניתן לגשת לתוצאות מהשרת.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left",
+ "{hours}:{minutes}h" : "{hours}:{minutes}שעות",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות",
+ "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו",
+ "{seconds}s" : "{seconds}שניות",
+ "Any moment now..." : "עכשיו בכל רגע...",
+ "Soon..." : "בקרוב...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"No entries in this folder match '{filter}'" : "לא נמצאו התאמות בתיקייה זו ל- '{filter}'",
"Local link" : "קישור מקומי",
"{newname} already exists" : "{newname} כבר קיים",
diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js
index a4df0cf66c2..a238f7ec83e 100644
--- a/apps/files/l10n/hu_HU.js
+++ b/apps/files/l10n/hu_HU.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
"Storage invalid" : "A tároló érvénytelen",
"Unknown error" : "Ismeretlen hiba",
- "Files" : "Fájlok",
"All files" : "Az összes fájl",
"Recent" : "Legutóbbi",
"File could not be found" : "Fájl nem található",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Nincs elég szabad hely",
"Uploading..." : "Feltöltés...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} óra{plural_s} maradt hátra",
- "{hours}:{minutes}h" : "{hours}:{minutes}ó",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} perc{plural_s} maradt hátra",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}p",
- "{seconds} second{plural_s} left" : "{seconds} másodperc maradt hátra",
- "{seconds}s" : "{seconds}mp",
- "Any moment now..." : "Mostmár bármelyik pillanatban...",
- "Soon..." : "Hamarosan...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"Actions" : "Műveletek",
"Download" : "Letöltés",
"Rename" : "Átnevezés",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Törlés",
"Disconnect storage" : "Tároló leválasztása",
"Unshare" : "A megosztás visszavonása",
+ "Could not load info for file \"{file}\"" : "Nem sikerült betölteni az információs fájl ehhez: \"{file}\"",
+ "Files" : "Fájlok",
"Details" : "Részletek",
"Select" : "Kiválaszt",
"Pending" : "Folyamatban",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "A teljes fájlméret: {size1} meghaladja a feltöltési limitet: {size2}",
"Error uploading file \"{fileName}\": {message}" : "Hiba történt a fájlfeltöltés közben: \"{fileName}\": {message}",
"Could not get result from server." : "A szervertől nem kapható meg a művelet eredménye.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} óra{plural_s} maradt hátra",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ó",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} perc{plural_s} maradt hátra",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}p",
+ "{seconds} second{plural_s} left" : "{seconds} másodperc maradt hátra",
+ "{seconds}s" : "{seconds}mp",
+ "Any moment now..." : "Mostmár bármelyik pillanatban...",
+ "Soon..." : "Hamarosan...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a mappában '{filter}'",
"Local link" : "Helyi hivatkozás",
"{newname} already exists" : "{newname} már létezik",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%1$s visszatöltötte %2$s",
"Changed by %2$s" : "Megváltoztatta: %2$s",
"Deleted by %2$s" : "Törölte: %2$s",
- "Restored by %2$s" : "Visszaállította: %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Használd ezt a címet <a href=\"%s\" target=\"_blank\">a Fájlok eléréséhez WebDAV-on keresztül</a>.",
- "Cancel upload" : "Feltöltés megszakítása"
+ "Restored by %2$s" : "Visszaállította: %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json
index 2a615dfeb9f..111a1a51a9c 100644
--- a/apps/files/l10n/hu_HU.json
+++ b/apps/files/l10n/hu_HU.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
"Storage invalid" : "A tároló érvénytelen",
"Unknown error" : "Ismeretlen hiba",
- "Files" : "Fájlok",
"All files" : "Az összes fájl",
"Recent" : "Legutóbbi",
"File could not be found" : "Fájl nem található",
@@ -17,16 +16,7 @@
"Not enough free space" : "Nincs elég szabad hely",
"Uploading..." : "Feltöltés...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} óra{plural_s} maradt hátra",
- "{hours}:{minutes}h" : "{hours}:{minutes}ó",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} perc{plural_s} maradt hátra",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}p",
- "{seconds} second{plural_s} left" : "{seconds} másodperc maradt hátra",
- "{seconds}s" : "{seconds}mp",
- "Any moment now..." : "Mostmár bármelyik pillanatban...",
- "Soon..." : "Hamarosan...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"Actions" : "Műveletek",
"Download" : "Letöltés",
"Rename" : "Átnevezés",
@@ -35,6 +25,8 @@
"Delete" : "Törlés",
"Disconnect storage" : "Tároló leválasztása",
"Unshare" : "A megosztás visszavonása",
+ "Could not load info for file \"{file}\"" : "Nem sikerült betölteni az információs fájl ehhez: \"{file}\"",
+ "Files" : "Fájlok",
"Details" : "Részletek",
"Select" : "Kiválaszt",
"Pending" : "Folyamatban",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "A teljes fájlméret: {size1} meghaladja a feltöltési limitet: {size2}",
"Error uploading file \"{fileName}\": {message}" : "Hiba történt a fájlfeltöltés közben: \"{fileName}\": {message}",
"Could not get result from server." : "A szervertől nem kapható meg a művelet eredménye.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} óra{plural_s} maradt hátra",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ó",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} perc{plural_s} maradt hátra",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}p",
+ "{seconds} second{plural_s} left" : "{seconds} másodperc maradt hátra",
+ "{seconds}s" : "{seconds}mp",
+ "Any moment now..." : "Mostmár bármelyik pillanatban...",
+ "Soon..." : "Hamarosan...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a mappában '{filter}'",
"Local link" : "Helyi hivatkozás",
"{newname} already exists" : "{newname} már létezik",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%1$s visszatöltötte %2$s",
"Changed by %2$s" : "Megváltoztatta: %2$s",
"Deleted by %2$s" : "Törölte: %2$s",
- "Restored by %2$s" : "Visszaállította: %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Használd ezt a címet <a href=\"%s\" target=\"_blank\">a Fájlok eléréséhez WebDAV-on keresztül</a>.",
- "Cancel upload" : "Feltöltés megszakítása"
+ "Restored by %2$s" : "Visszaállította: %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index 84acbbe921f..14022655d62 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Storage invalid" : "Penyimpanan tidak sah",
"Unknown error" : "Kesalahan tidak diketahui",
- "Files" : "Berkas",
"All files" : "Semua berkas",
"Recent" : "Terbaru",
"File could not be found" : "Berkas tidak ditemukan",
@@ -16,22 +15,14 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ruang bebas tidak mencukupi, Anda mengunggah {size1} tetapi hanya {size2} yang tersisa",
"Uploading..." : "Mengunggah...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi",
- "{hours}:{minutes}h" : "{hours}:{minutes}j",
- "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi",
- "{seconds}s" : "{seconds}d",
- "Any moment now..." : "Sedikit lagi...",
- "Soon..." : "Segera...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} dari {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
"Actions" : "Tindakan",
"Download" : "Unduh",
"Rename" : "Ubah nama",
"Delete" : "Hapus",
"Disconnect storage" : "Memutuskan penyimpaan",
"Unshare" : "Batalkan berbagi",
+ "Files" : "Berkas",
"Details" : "Rincian",
"Select" : "Pilih",
"Pending" : "Tertunda",
@@ -115,6 +106,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Jumlah ukuran berkas {size1} melampaui batas unggah {size2}",
"Error uploading file \"{fileName}\": {message}" : "Kesalahan saat mengunggah \"{filename}\": {message}",
"Could not get result from server." : "Tidak mendapatkan hasil dari server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi",
+ "{hours}:{minutes}h" : "{hours}:{minutes}j",
+ "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi",
+ "{seconds}s" : "{seconds}d",
+ "Any moment now..." : "Sedikit lagi...",
+ "Soon..." : "Segera...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
"No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'",
"Local link" : "Pranala lokal",
"{newname} already exists" : "{newname} sudah ada",
@@ -132,8 +132,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s memulihkan %1$s",
"Changed by %2$s" : "Diubah oleh %2$s",
"Deleted by %2$s" : "Dihapus oleh %2$s",
- "Restored by %2$s" : "Dipulihkan oleh %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses berkas Anda melalui WebDAV</a>",
- "Cancel upload" : "Batalkan pengunggahan"
+ "Restored by %2$s" : "Dipulihkan oleh %2$s"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index 62892ca60c5..e245cc7847c 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -1,7 +1,6 @@
{ "translations": {
"Storage invalid" : "Penyimpanan tidak sah",
"Unknown error" : "Kesalahan tidak diketahui",
- "Files" : "Berkas",
"All files" : "Semua berkas",
"Recent" : "Terbaru",
"File could not be found" : "Berkas tidak ditemukan",
@@ -14,22 +13,14 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ruang bebas tidak mencukupi, Anda mengunggah {size1} tetapi hanya {size2} yang tersisa",
"Uploading..." : "Mengunggah...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi",
- "{hours}:{minutes}h" : "{hours}:{minutes}j",
- "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi",
- "{seconds}s" : "{seconds}d",
- "Any moment now..." : "Sedikit lagi...",
- "Soon..." : "Segera...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} dari {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
"Actions" : "Tindakan",
"Download" : "Unduh",
"Rename" : "Ubah nama",
"Delete" : "Hapus",
"Disconnect storage" : "Memutuskan penyimpaan",
"Unshare" : "Batalkan berbagi",
+ "Files" : "Berkas",
"Details" : "Rincian",
"Select" : "Pilih",
"Pending" : "Tertunda",
@@ -113,6 +104,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Jumlah ukuran berkas {size1} melampaui batas unggah {size2}",
"Error uploading file \"{fileName}\": {message}" : "Kesalahan saat mengunggah \"{filename}\": {message}",
"Could not get result from server." : "Tidak mendapatkan hasil dari server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi",
+ "{hours}:{minutes}h" : "{hours}:{minutes}j",
+ "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi",
+ "{seconds}s" : "{seconds}d",
+ "Any moment now..." : "Sedikit lagi...",
+ "Soon..." : "Segera...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
"No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'",
"Local link" : "Pranala lokal",
"{newname} already exists" : "{newname} sudah ada",
@@ -130,8 +130,6 @@
"%2$s restored %1$s" : "%2$s memulihkan %1$s",
"Changed by %2$s" : "Diubah oleh %2$s",
"Deleted by %2$s" : "Dihapus oleh %2$s",
- "Restored by %2$s" : "Dipulihkan oleh %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses berkas Anda melalui WebDAV</a>",
- "Cancel upload" : "Batalkan pengunggahan"
+ "Restored by %2$s" : "Dipulihkan oleh %2$s"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 745976258f7..e908ae6d018 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Storage invalid" : "Ógild geymsla",
"Unknown error" : "Óþekkt villa",
- "Files" : "Skrár",
"All files" : "Allar skrár",
"Recent" : "Nýlegt",
"File could not be found" : "Skrá finnst ekki",
@@ -16,22 +15,14 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ekki nægilegt laust pláss, þú ert að senda inn {size1} en einungis {size2} eru eftir",
"Uploading..." : "Sendi inn ...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} klukkustundir eftir",
- "{hours}:{minutes}h" : "{hours}:{minutes}klst",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} mínútur eftir",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}mín",
- "{seconds} second{plural_s} left" : "{seconds} sekúndur eftir",
- "{seconds}s" : "{seconds}sek",
- "Any moment now..." : "Á hverri stundu...",
- "Soon..." : "Bráðum...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} af {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"Actions" : "Aðgerðir",
"Download" : "Niðurhal",
"Rename" : "Endurnefna",
"Delete" : "Eyða",
"Disconnect storage" : "Aftengja geymslu",
"Unshare" : "Hætta deilingu",
+ "Files" : "Skrár",
"Details" : "Nánar",
"Select" : "Velja",
"Pending" : "Í bið",
@@ -116,6 +107,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Heildarskráastærð {size1} er meiri en leyfilegt innsendingahámark {size2}",
"Error uploading file \"{fileName}\": {message}" : "Villa við að senda inn skrána \"{fileName}\": {message}",
"Could not get result from server." : "Fékk ekki niðurstöður frá þjóni.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} klukkustundir eftir",
+ "{hours}:{minutes}h" : "{hours}:{minutes}klst",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} mínútur eftir",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}mín",
+ "{seconds} second{plural_s} left" : "{seconds} sekúndur eftir",
+ "{seconds}s" : "{seconds}sek",
+ "Any moment now..." : "Á hverri stundu...",
+ "Soon..." : "Bráðum...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"No entries in this folder match '{filter}'" : "Engar færslur í þessari möppu samsvara '{filter}'",
"Local link" : "Staðvær tengill",
"{newname} already exists" : "{newname} er þegar til",
@@ -133,8 +133,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s endurheimti %1$s",
"Changed by %2$s" : "Breytt af %2$s",
"Deleted by %2$s" : "Eytt af %2$s",
- "Restored by %2$s" : "Endurheimt af %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Notaðu þetta vistfang til að <a href=\"%s\" target=\"_blank\">nálgast skrárnar þínar með WebDAV</a>",
- "Cancel upload" : "Hætta við innsendingu"
+ "Restored by %2$s" : "Endurheimt af %2$s"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index ecb3a035de3..e56755d96f6 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -1,7 +1,6 @@
{ "translations": {
"Storage invalid" : "Ógild geymsla",
"Unknown error" : "Óþekkt villa",
- "Files" : "Skrár",
"All files" : "Allar skrár",
"Recent" : "Nýlegt",
"File could not be found" : "Skrá finnst ekki",
@@ -14,22 +13,14 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Ekki nægilegt laust pláss, þú ert að senda inn {size1} en einungis {size2} eru eftir",
"Uploading..." : "Sendi inn ...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} klukkustundir eftir",
- "{hours}:{minutes}h" : "{hours}:{minutes}klst",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} mínútur eftir",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}mín",
- "{seconds} second{plural_s} left" : "{seconds} sekúndur eftir",
- "{seconds}s" : "{seconds}sek",
- "Any moment now..." : "Á hverri stundu...",
- "Soon..." : "Bráðum...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} af {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"Actions" : "Aðgerðir",
"Download" : "Niðurhal",
"Rename" : "Endurnefna",
"Delete" : "Eyða",
"Disconnect storage" : "Aftengja geymslu",
"Unshare" : "Hætta deilingu",
+ "Files" : "Skrár",
"Details" : "Nánar",
"Select" : "Velja",
"Pending" : "Í bið",
@@ -114,6 +105,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Heildarskráastærð {size1} er meiri en leyfilegt innsendingahámark {size2}",
"Error uploading file \"{fileName}\": {message}" : "Villa við að senda inn skrána \"{fileName}\": {message}",
"Could not get result from server." : "Fékk ekki niðurstöður frá þjóni.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} klukkustundir eftir",
+ "{hours}:{minutes}h" : "{hours}:{minutes}klst",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} mínútur eftir",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}mín",
+ "{seconds} second{plural_s} left" : "{seconds} sekúndur eftir",
+ "{seconds}s" : "{seconds}sek",
+ "Any moment now..." : "Á hverri stundu...",
+ "Soon..." : "Bráðum...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"No entries in this folder match '{filter}'" : "Engar færslur í þessari möppu samsvara '{filter}'",
"Local link" : "Staðvær tengill",
"{newname} already exists" : "{newname} er þegar til",
@@ -131,8 +131,6 @@
"%2$s restored %1$s" : "%2$s endurheimti %1$s",
"Changed by %2$s" : "Breytt af %2$s",
"Deleted by %2$s" : "Eytt af %2$s",
- "Restored by %2$s" : "Endurheimt af %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Notaðu þetta vistfang til að <a href=\"%s\" target=\"_blank\">nálgast skrárnar þínar með WebDAV</a>",
- "Cancel upload" : "Hætta við innsendingu"
+ "Restored by %2$s" : "Endurheimt af %2$s"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index a7d84102ea0..ee3bf41bf7f 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage invalid" : "Archiviazione non valida",
"Unknown error" : "Errore sconosciuto",
- "Files" : "File",
"All files" : "Tutti i file",
"Recent" : "Recenti",
"File could not be found" : "Il file non può essere trovato",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Spazio libero insufficiente",
"Uploading..." : "Caricamento in corso...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} ore rimanenti",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuti rimanenti",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} secondi rimanenti",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Da un momento all'altro...",
- "Soon..." : "Presto...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} di {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"Actions" : "Azioni",
"Download" : "Scarica",
"Rename" : "Rinomina",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Elimina",
"Disconnect storage" : "Disconnetti archiviazione",
"Unshare" : "Rimuovi condivisione",
+ "Could not load info for file \"{file}\"" : "Impossibile caricare le informazioni per il file \"{file}\"",
+ "Files" : "File",
"Details" : "Dettagli",
"Select" : "Seleziona",
"Pending" : "In corso",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "La dimensione totale del file {size1} supera il limite di caricamento {size2}",
"Error uploading file \"{fileName}\": {message}" : "Errore durante il caricamento del file \"{fileName}\": {message}",
"Could not get result from server." : "Impossibile ottenere il risultato dal server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} ore rimanenti",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuti rimanenti",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} secondi rimanenti",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Da un momento all'altro...",
+ "Soon..." : "Presto...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'",
"Local link" : "Collegamento locale",
"{newname} already exists" : "{newname} esiste già",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s ha ripristinato %1$s",
"Changed by %2$s" : "Modificata da %2$s",
"Deleted by %2$s" : "Eliminata da %2$s",
- "Restored by %2$s" : "Ripristinata da %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
- "Cancel upload" : "Annulla caricamento"
+ "Restored by %2$s" : "Ripristinata da %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index d3df120e90a..e9ab9c622e1 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage invalid" : "Archiviazione non valida",
"Unknown error" : "Errore sconosciuto",
- "Files" : "File",
"All files" : "Tutti i file",
"Recent" : "Recenti",
"File could not be found" : "Il file non può essere trovato",
@@ -17,16 +16,7 @@
"Not enough free space" : "Spazio libero insufficiente",
"Uploading..." : "Caricamento in corso...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} ore rimanenti",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuti rimanenti",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} secondi rimanenti",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Da un momento all'altro...",
- "Soon..." : "Presto...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} di {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"Actions" : "Azioni",
"Download" : "Scarica",
"Rename" : "Rinomina",
@@ -35,6 +25,8 @@
"Delete" : "Elimina",
"Disconnect storage" : "Disconnetti archiviazione",
"Unshare" : "Rimuovi condivisione",
+ "Could not load info for file \"{file}\"" : "Impossibile caricare le informazioni per il file \"{file}\"",
+ "Files" : "File",
"Details" : "Dettagli",
"Select" : "Seleziona",
"Pending" : "In corso",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "La dimensione totale del file {size1} supera il limite di caricamento {size2}",
"Error uploading file \"{fileName}\": {message}" : "Errore durante il caricamento del file \"{fileName}\": {message}",
"Could not get result from server." : "Impossibile ottenere il risultato dal server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} ore rimanenti",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuti rimanenti",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} secondi rimanenti",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Da un momento all'altro...",
+ "Soon..." : "Presto...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'",
"Local link" : "Collegamento locale",
"{newname} already exists" : "{newname} esiste già",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s ha ripristinato %1$s",
"Changed by %2$s" : "Modificata da %2$s",
"Deleted by %2$s" : "Eliminata da %2$s",
- "Restored by %2$s" : "Ripristinata da %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
- "Cancel upload" : "Annulla caricamento"
+ "Restored by %2$s" : "Ripristinata da %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index cdd87e4536a..58585944f9c 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage invalid" : "ストレージが無効です",
"Unknown error" : "不明なエラー",
- "Files" : "ファイル",
"All files" : "すべてのファイル",
"Recent" : "最新",
"File could not be found" : "ファイルを見つけられませんでした",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "十分な空き容量がありません",
"Uploading..." : "アップロード中...",
"..." : "…",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "残り{hours}:{minutes}:{seconds} 時間",
- "{hours}:{minutes}h" : "{hours}:{minutes} 時間",
- "{minutes}:{seconds} minute{plural_s} left" : "残り{minutes}:{seconds} 分",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "残り{minutes}:{seconds} 秒",
- "{seconds}s" : "{seconds} 秒",
- "Any moment now..." : "もうすぐ…",
- "Soon..." : "もうすぐ…",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"Actions" : "アクション",
"Download" : "ダウンロード",
"Rename" : "名前の変更",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "削除",
"Disconnect storage" : "ストレージを切断する",
"Unshare" : "共有解除",
+ "Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
+ "Files" : "ファイル",
"Details" : "詳細",
"Select" : "選択",
"Pending" : "中断",
@@ -81,6 +73,10 @@ OC.L10N.register(
"New folder" : "新しいフォルダー",
"Upload" : "アップロード",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
+ "Added to favorites" : "お気に入りに追加",
+ "Removed from favorites" : "お気に入りから削除",
+ "You added {file} to your favorites" : "{file} をお気に入りに追加しました",
+ "You removed {file} from your favorites" : "{file} をお気に入りから削除しました",
"File changes" : "ファイル更新",
"Created by {user}" : "{user} が作成しました",
"Changed by {user}" : "{user} が更新しました",
@@ -101,6 +97,7 @@ OC.L10N.register(
"{user} renamed {oldfile} to {newfile}" : "{user} が {oldfile} を{newfile} に変更しました",
"You moved {oldfile} to {newfile}" : "{oldfile} を {newfile} に移動しました",
"{user} moved {oldfile} to {newfile}" : "{user} が {oldfile} を {newfile} に移動しました",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されました。",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更されました</strong>",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
"A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除されました</strong>",
@@ -151,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "合計ファイルサイズ {size1} はアップロード制限 {size2} を超過しています。",
"Error uploading file \"{fileName}\": {message}" : "ファイル\"{fileName}\"のアップロードエラー: {message}",
"Could not get result from server." : "サーバーから結果を取得できませんでした。",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "残り{hours}:{minutes}:{seconds} 時間",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 時間",
+ "{minutes}:{seconds} minute{plural_s} left" : "残り{minutes}:{seconds} 分",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
+ "{seconds} second{plural_s} left" : "残り{minutes}:{seconds} 秒",
+ "{seconds}s" : "{seconds} 秒",
+ "Any moment now..." : "まもなく…",
+ "Soon..." : "まもなく…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Local link" : "ローカルリンク",
"{newname} already exists" : "{newname} はすでに存在します",
@@ -168,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s は、 %1$s を復元しました",
"Changed by %2$s" : "%2$s により更新",
"Deleted by %2$s" : "%2$s により削除",
- "Restored by %2$s" : "%2$s により復元",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV 経由でファイルにアクセス</a> するにはこのアドレスを利用してください",
- "Cancel upload" : "アップロードをキャンセル"
+ "Restored by %2$s" : "%2$s により復元"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 9818de44a42..12cf9d4907c 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage invalid" : "ストレージが無効です",
"Unknown error" : "不明なエラー",
- "Files" : "ファイル",
"All files" : "すべてのファイル",
"Recent" : "最新",
"File could not be found" : "ファイルを見つけられませんでした",
@@ -17,16 +16,7 @@
"Not enough free space" : "十分な空き容量がありません",
"Uploading..." : "アップロード中...",
"..." : "…",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "残り{hours}:{minutes}:{seconds} 時間",
- "{hours}:{minutes}h" : "{hours}:{minutes} 時間",
- "{minutes}:{seconds} minute{plural_s} left" : "残り{minutes}:{seconds} 分",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "残り{minutes}:{seconds} 秒",
- "{seconds}s" : "{seconds} 秒",
- "Any moment now..." : "もうすぐ…",
- "Soon..." : "もうすぐ…",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"Actions" : "アクション",
"Download" : "ダウンロード",
"Rename" : "名前の変更",
@@ -35,6 +25,8 @@
"Delete" : "削除",
"Disconnect storage" : "ストレージを切断する",
"Unshare" : "共有解除",
+ "Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
+ "Files" : "ファイル",
"Details" : "詳細",
"Select" : "選択",
"Pending" : "中断",
@@ -79,6 +71,10 @@
"New folder" : "新しいフォルダー",
"Upload" : "アップロード",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
+ "Added to favorites" : "お気に入りに追加",
+ "Removed from favorites" : "お気に入りから削除",
+ "You added {file} to your favorites" : "{file} をお気に入りに追加しました",
+ "You removed {file} from your favorites" : "{file} をお気に入りから削除しました",
"File changes" : "ファイル更新",
"Created by {user}" : "{user} が作成しました",
"Changed by {user}" : "{user} が更新しました",
@@ -99,6 +95,7 @@
"{user} renamed {oldfile} to {newfile}" : "{user} が {oldfile} を{newfile} に変更しました",
"You moved {oldfile} to {newfile}" : "{oldfile} を {newfile} に移動しました",
"{user} moved {oldfile} to {newfile}" : "{user} が {oldfile} を {newfile} に移動しました",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されました。",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更されました</strong>",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
"A new file or folder has been <strong>deleted</strong>" : "新しいファイルまたはフォルダが<strong>削除されました</strong>",
@@ -149,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "合計ファイルサイズ {size1} はアップロード制限 {size2} を超過しています。",
"Error uploading file \"{fileName}\": {message}" : "ファイル\"{fileName}\"のアップロードエラー: {message}",
"Could not get result from server." : "サーバーから結果を取得できませんでした。",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "残り{hours}:{minutes}:{seconds} 時間",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 時間",
+ "{minutes}:{seconds} minute{plural_s} left" : "残り{minutes}:{seconds} 分",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
+ "{seconds} second{plural_s} left" : "残り{minutes}:{seconds} 秒",
+ "{seconds}s" : "{seconds} 秒",
+ "Any moment now..." : "まもなく…",
+ "Soon..." : "まもなく…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Local link" : "ローカルリンク",
"{newname} already exists" : "{newname} はすでに存在します",
@@ -166,8 +172,6 @@
"%2$s restored %1$s" : "%2$s は、 %1$s を復元しました",
"Changed by %2$s" : "%2$s により更新",
"Deleted by %2$s" : "%2$s により削除",
- "Restored by %2$s" : "%2$s により復元",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV 経由でファイルにアクセス</a> するにはこのアドレスを利用してください",
- "Cancel upload" : "アップロードをキャンセル"
+ "Restored by %2$s" : "%2$s により復元"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 6cc1b090b91..ac9513e8c27 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없습니다",
"Storage invalid" : "저장소가 잘못됨",
"Unknown error" : "알 수 없는 오류",
- "Files" : "파일",
"All files" : "모든 파일",
"Recent" : "최근",
"File could not be found" : "파일을 찾을 수 없음",
@@ -14,18 +14,19 @@ OC.L10N.register(
"Upload cancelled." : "업로드가 취소되었습니다.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename}을(를) 업로드할 수 없습니다. 폴더이거나 0 바이트 파일입니다.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다",
+ "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"가 존재하지 않습니다",
+ "Not enough free space" : "빈 공간이 부족합니다",
"Uploading..." : "업로드 중...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} 시간 {plural_s} 남음",
- "{seconds}s" : "{seconds}초",
- "Soon..." : "곧...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"Actions" : "작업",
"Download" : "다운로드",
"Rename" : "이름 바꾸기",
+ "Move" : "이동",
+ "Target folder" : "대상 폴더",
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
"Unshare" : "공유 해제",
+ "Files" : "파일",
"Details" : "자세한 정보",
"Select" : "선택",
"Pending" : "대기 중",
@@ -42,12 +43,14 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "파일이 이미 존재하므로 \"{file}\"을(를) 만들 수 없음",
"Could not create folder \"{dir}\" because it already exists" : "폴더가 이미 존재하므로 폴더 \"{dir}\"을(를) 만들 수 없음",
"Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "폴더의 검색 결과 없음 '{tag}{filter}{endtag}'",
"Name" : "이름",
"Size" : "크기",
"Modified" : "수정됨",
"_%n folder_::_%n folders_" : ["폴더 %n개"],
"_%n file_::_%n files_" : ["파일 %n개"],
"{dirs} and {files}" : "{dirs} 그리고 {files}",
+ "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"],
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New" : "새로 만들기",
@@ -63,27 +66,40 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n바이트"],
"Favorited" : "책갈피에 추가됨",
"Favorite" : "즐겨찾기",
- "Local link" : "로컬 링크",
+ "Copy local link" : "로컬 링크 복사",
"Folder" : "폴더",
"New folder" : "새 폴더",
"Upload" : "업로드",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
+ "Added to favorites" : "즐겨찾기에 추가됨",
+ "Removed from favorites" : "즐겨찾기에서 삭제됨",
+ "You added {file} to your favorites" : "내가 {file}을(를) 즐겨찾기에 추가함",
+ "You removed {file} from your favorites" : "내가 {file}을(를) 즐겨찾기에서 삭제함",
+ "Created by {user}" : "{user} 님이 만듬",
+ "Changed by {user}" : "{user} 님이 변경함",
+ "Deleted by {user}" : "{user} 님이 삭제함",
+ "Restored by {user}" : "{user} 님이 복원함",
+ "Renamed by {user}" : "{user} 님이 이름을 변경함",
+ "Moved by {user}" : "{user} 님이 이동함",
+ "You created {file}" : "내가 {file}을(를) 만듬",
+ "{user} created {file}" : "{user} 님이 {file}을(를) 만듬",
+ "{file} was created in a public folder" : "공유 폴더에 {file} 이(가) 생성됨",
+ "You changed {file}" : "내가 {file} 을(를) 변경함",
+ "{user} changed {file}" : "{user} 님이 {file} 을(를) 변경함",
+ "You deleted {file}" : "내가 {file} 을(를) 삭제함",
+ "{user} deleted {file}" : "{user} 님이 {file} 을(를) 삭제함",
+ "You restored {file}" : "내가 {file} 을(를) 복원함",
+ "{user} restored {file}" : "{user} 님이 {file} 을(를) 복원함",
+ "You renamed {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이름을 바꿈",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이름을 바꿈",
+ "You moved {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이동함",
+ "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이동함",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
- "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
- "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
- "You created %1$s" : "내가 %1$s을(를) 생성함",
- "%2$s created %1$s" : "%2$s 님이 %1$s을(를) 생성함",
- "%1$s was created in a public folder" : "공유 폴더에 %1$s 생성됨",
- "You changed %1$s" : "내가 %1$s을(를) 변경함",
- "%2$s changed %1$s" : "%2$s 님이 %1$s을(를) 변경함",
- "You deleted %1$s" : "내가 %1$s을(를) 삭제함",
- "%2$s deleted %1$s" : "%2$s 님이 %1$s을(를) 삭제함",
- "You restored %1$s" : "내가 %1$s을(를) 복원함",
- "%2$s restored %1$s" : "%2$s 님이 %1$s을(를) 복원함",
- "Changed by %2$s" : "%2$s 님이 변경함",
- "Deleted by %2$s" : "%2$s 님이 삭제함",
- "Restored by %2$s" : "%2$s 님이 복원함",
+ "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -94,6 +110,7 @@ OC.L10N.register(
"Settings" : "설정",
"Show hidden files" : "숨겨진 파일보기",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "이 주소를 사용하여 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">WebDAV를 통해 파일에 접근할 수 있습니다</a>",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
@@ -102,6 +119,11 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.",
"No favorites" : "책갈피 없음",
"Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다",
+ "Shared with you" : "나와 공유됨",
+ "Shared with others" : "다른 사람과 공유됨",
+ "Shared by link" : "링크로 공유됨",
+ "Tags" : "태그",
+ "Deleted files" : "삭제된 파일",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
"Storage not available" : "저장소를 사용할 수 없음",
@@ -123,9 +145,32 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "총 파일 크기 {size1}이(가) 업로드 제한 {size2}을(를) 초과함",
"Error uploading file \"{fileName}\": {message}" : "\"{fileName}\"을(를) 업로드할 수 없음: {message}",
"Could not get result from server." : "서버에서 결과를 가져올 수 없습니다.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} 시간 {plural_s} 남음",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 시간",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} 분 남음",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 분",
+ "{seconds} second{plural_s} left" : "{seconds} 초 남음",
+ "{seconds}s" : "{seconds}초",
+ "Any moment now..." : "조금 남음",
+ "Soon..." : "곧...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음",
+ "Local link" : "로컬 링크",
"{newname} already exists" : "{newname} 항목이 이미 존재함",
"A file or folder has been <strong>changed</strong>" : "파일이나 폴더가 <strong>변경됨</strong>",
- "Cancel upload" : "업로드 취소"
+ "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
+ "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
+ "You created %1$s" : "내가 %1$s을(를) 생성함",
+ "%2$s created %1$s" : "%2$s 님이 %1$s을(를) 생성함",
+ "%1$s was created in a public folder" : "공유 폴더에 %1$s 생성됨",
+ "You changed %1$s" : "내가 %1$s을(를) 변경함",
+ "%2$s changed %1$s" : "%2$s 님이 %1$s을(를) 변경함",
+ "You deleted %1$s" : "내가 %1$s을(를) 삭제함",
+ "%2$s deleted %1$s" : "%2$s 님이 %1$s을(를) 삭제함",
+ "You restored %1$s" : "내가 %1$s을(를) 복원함",
+ "%2$s restored %1$s" : "%2$s 님이 %1$s을(를) 복원함",
+ "Changed by %2$s" : "%2$s 님이 변경함",
+ "Deleted by %2$s" : "%2$s 님이 삭제함",
+ "Restored by %2$s" : "%2$s 님이 복원함"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index b9bb99351fb..a52f9d75dc3 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -1,7 +1,7 @@
{ "translations": {
+ "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없습니다",
"Storage invalid" : "저장소가 잘못됨",
"Unknown error" : "알 수 없는 오류",
- "Files" : "파일",
"All files" : "모든 파일",
"Recent" : "최근",
"File could not be found" : "파일을 찾을 수 없음",
@@ -12,18 +12,19 @@
"Upload cancelled." : "업로드가 취소되었습니다.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename}을(를) 업로드할 수 없습니다. 폴더이거나 0 바이트 파일입니다.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다",
+ "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"가 존재하지 않습니다",
+ "Not enough free space" : "빈 공간이 부족합니다",
"Uploading..." : "업로드 중...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} 시간 {plural_s} 남음",
- "{seconds}s" : "{seconds}초",
- "Soon..." : "곧...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"Actions" : "작업",
"Download" : "다운로드",
"Rename" : "이름 바꾸기",
+ "Move" : "이동",
+ "Target folder" : "대상 폴더",
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
"Unshare" : "공유 해제",
+ "Files" : "파일",
"Details" : "자세한 정보",
"Select" : "선택",
"Pending" : "대기 중",
@@ -40,12 +41,14 @@
"Could not create file \"{file}\" because it already exists" : "파일이 이미 존재하므로 \"{file}\"을(를) 만들 수 없음",
"Could not create folder \"{dir}\" because it already exists" : "폴더가 이미 존재하므로 폴더 \"{dir}\"을(를) 만들 수 없음",
"Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "폴더의 검색 결과 없음 '{tag}{filter}{endtag}'",
"Name" : "이름",
"Size" : "크기",
"Modified" : "수정됨",
"_%n folder_::_%n folders_" : ["폴더 %n개"],
"_%n file_::_%n files_" : ["파일 %n개"],
"{dirs} and {files}" : "{dirs} 그리고 {files}",
+ "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"],
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New" : "새로 만들기",
@@ -61,27 +64,40 @@
"_%n byte_::_%n bytes_" : ["%n바이트"],
"Favorited" : "책갈피에 추가됨",
"Favorite" : "즐겨찾기",
- "Local link" : "로컬 링크",
+ "Copy local link" : "로컬 링크 복사",
"Folder" : "폴더",
"New folder" : "새 폴더",
"Upload" : "업로드",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
+ "Added to favorites" : "즐겨찾기에 추가됨",
+ "Removed from favorites" : "즐겨찾기에서 삭제됨",
+ "You added {file} to your favorites" : "내가 {file}을(를) 즐겨찾기에 추가함",
+ "You removed {file} from your favorites" : "내가 {file}을(를) 즐겨찾기에서 삭제함",
+ "Created by {user}" : "{user} 님이 만듬",
+ "Changed by {user}" : "{user} 님이 변경함",
+ "Deleted by {user}" : "{user} 님이 삭제함",
+ "Restored by {user}" : "{user} 님이 복원함",
+ "Renamed by {user}" : "{user} 님이 이름을 변경함",
+ "Moved by {user}" : "{user} 님이 이동함",
+ "You created {file}" : "내가 {file}을(를) 만듬",
+ "{user} created {file}" : "{user} 님이 {file}을(를) 만듬",
+ "{file} was created in a public folder" : "공유 폴더에 {file} 이(가) 생성됨",
+ "You changed {file}" : "내가 {file} 을(를) 변경함",
+ "{user} changed {file}" : "{user} 님이 {file} 을(를) 변경함",
+ "You deleted {file}" : "내가 {file} 을(를) 삭제함",
+ "{user} deleted {file}" : "{user} 님이 {file} 을(를) 삭제함",
+ "You restored {file}" : "내가 {file} 을(를) 복원함",
+ "{user} restored {file}" : "{user} 님이 {file} 을(를) 복원함",
+ "You renamed {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이름을 바꿈",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이름을 바꿈",
+ "You moved {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이동함",
+ "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이동함",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "새 파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
- "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
- "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
- "You created %1$s" : "내가 %1$s을(를) 생성함",
- "%2$s created %1$s" : "%2$s 님이 %1$s을(를) 생성함",
- "%1$s was created in a public folder" : "공유 폴더에 %1$s 생성됨",
- "You changed %1$s" : "내가 %1$s을(를) 변경함",
- "%2$s changed %1$s" : "%2$s 님이 %1$s을(를) 변경함",
- "You deleted %1$s" : "내가 %1$s을(를) 삭제함",
- "%2$s deleted %1$s" : "%2$s 님이 %1$s을(를) 삭제함",
- "You restored %1$s" : "내가 %1$s을(를) 복원함",
- "%2$s restored %1$s" : "%2$s 님이 %1$s을(를) 복원함",
- "Changed by %2$s" : "%2$s 님이 변경함",
- "Deleted by %2$s" : "%2$s 님이 삭제함",
- "Restored by %2$s" : "%2$s 님이 복원함",
+ "A new file or folder has been <strong>restored</strong>" : "새 파일이나 폴더가 <strong>복원됨</strong>",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -92,6 +108,7 @@
"Settings" : "설정",
"Show hidden files" : "숨겨진 파일보기",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "이 주소를 사용하여 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">WebDAV를 통해 파일에 접근할 수 있습니다</a>",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
@@ -100,6 +117,11 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.",
"No favorites" : "책갈피 없음",
"Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다",
+ "Shared with you" : "나와 공유됨",
+ "Shared with others" : "다른 사람과 공유됨",
+ "Shared by link" : "링크로 공유됨",
+ "Tags" : "태그",
+ "Deleted files" : "삭제된 파일",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
"Storage not available" : "저장소를 사용할 수 없음",
@@ -121,9 +143,32 @@
"Total file size {size1} exceeds upload limit {size2}" : "총 파일 크기 {size1}이(가) 업로드 제한 {size2}을(를) 초과함",
"Error uploading file \"{fileName}\": {message}" : "\"{fileName}\"을(를) 업로드할 수 없음: {message}",
"Could not get result from server." : "서버에서 결과를 가져올 수 없습니다.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} 시간 {plural_s} 남음",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 시간",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} 분 남음",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 분",
+ "{seconds} second{plural_s} left" : "{seconds} 초 남음",
+ "{seconds}s" : "{seconds}초",
+ "Any moment now..." : "조금 남음",
+ "Soon..." : "곧...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음",
+ "Local link" : "로컬 링크",
"{newname} already exists" : "{newname} 항목이 이미 존재함",
"A file or folder has been <strong>changed</strong>" : "파일이나 폴더가 <strong>변경됨</strong>",
- "Cancel upload" : "업로드 취소"
+ "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
+ "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
+ "You created %1$s" : "내가 %1$s을(를) 생성함",
+ "%2$s created %1$s" : "%2$s 님이 %1$s을(를) 생성함",
+ "%1$s was created in a public folder" : "공유 폴더에 %1$s 생성됨",
+ "You changed %1$s" : "내가 %1$s을(를) 변경함",
+ "%2$s changed %1$s" : "%2$s 님이 %1$s을(를) 변경함",
+ "You deleted %1$s" : "내가 %1$s을(를) 삭제함",
+ "%2$s deleted %1$s" : "%2$s 님이 %1$s을(를) 삭제함",
+ "You restored %1$s" : "내가 %1$s을(를) 복원함",
+ "%2$s restored %1$s" : "%2$s 님이 %1$s을(를) 복원함",
+ "Changed by %2$s" : "%2$s 님이 변경함",
+ "Deleted by %2$s" : "%2$s 님이 삭제함",
+ "Restored by %2$s" : "%2$s 님이 복원함"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index 35f1e357ee1..c19df9fb5f3 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Storage invalid" : "Nepareiza glabātuve",
"Unknown error" : "Nezināma kļūda",
- "Files" : "Datnes",
"All files" : "Visas datnes",
"Recent" : "Nesenās",
"File could not be found" : "Datni nevar atrast",
@@ -14,24 +14,21 @@ OC.L10N.register(
"Upload cancelled." : "Augšupielāde ir atcelta.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Neizdodas augšupielādēt {filename}, jo tā ir vai nu mape vai 0 baitu saturoša datne.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nav pietiekami daudz brīvas vietas. Tiek augšupielādēti {size1}, bet pieejami tikai {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "Mape \"{dir}\" vairs neeksistē",
+ "Not enough free space" : "Nav pietiekami daudz brīvas vietas",
"Uploading..." : "Augšupielādē...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} stunda{plural_s} atlicis",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minūte{plural_s} atlicis",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekunde{plural_s} atlicis",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Jebkurā brīdī tagad...",
- "Soon..." : "Drīz...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} no {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
"Actions" : "Darbības",
"Download" : "Lejupielādēt",
"Rename" : "Pārsaukt",
+ "Move" : "Pārvietot",
+ "Target folder" : "Mērķa mape",
"Delete" : "Dzēst",
"Disconnect storage" : "Atvienot glabātuvi",
"Unshare" : "Pārtraukt koplietošanu",
+ "Could not load info for file \"{file}\"" : "Nevar ielādēt informāciju par failu \"{file}\"",
+ "Files" : "Datnes",
"Details" : "Detaļas",
"Select" : "Norādīt",
"Pending" : "Gaida savu kārtu",
@@ -48,12 +45,14 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "Nevarēja izveidot datni \"{file}\", jo tā jau eksistē",
"Could not create folder \"{dir}\" because it already exists" : "Nevarēja izveidot mapi \"{dir}\", jo tā jau eksistē",
"Error deleting file \"{fileName}\"." : "Kļūda dzēšot datni \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Nav nekas atrasts citā mapēs '{tag}{filter}{endtag}'",
"Name" : "Nosaukums",
"Size" : "Izmērs",
"Modified" : "Mainīts",
"_%n folder_::_%n folders_" : ["%n mapes","%n mape","%n mapes"],
"_%n file_::_%n files_" : ["%n datnes","%n datne","%n datnes"],
"{dirs} and {files}" : "{dirs} un {files}",
+ "_including %n hidden_::_including %n hidden_" : ["ieskaitot %n paslēptos","ieskaitot %n paslēptos","ieskaitot %n paslēptos"],
"You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes",
"_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielādē %n datnes"],
"New" : "Jauna",
@@ -69,12 +68,41 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n baiti","%n baits","%n baiti"],
"Favorited" : "Favorīti",
"Favorite" : "Iecienītais",
+ "Copy local link" : "Kopēt lokālo saiti",
"Folder" : "Mape",
"New folder" : "Jauna mape",
"Upload" : "Augšupielādēt",
"An error occurred while trying to update the tags" : "Notika kļūda atjaunojot atzīmi",
+ "Added to favorites" : "Pievienot izlasei",
+ "Removed from favorites" : "Noņemt no izlases",
+ "You added {file} to your favorites" : "Pievienoji {file} savai izlasei",
+ "You removed {file} from your favorites" : "Noņēmi {file} no savas izlases",
+ "File changes" : "Faila izmaiņas",
+ "Created by {user}" : "Izveidoja {user}",
+ "Changed by {user}" : "Izmainīja {user}",
+ "Deleted by {user}" : "Dzēsa {user}",
+ "Restored by {user}" : "Atjaunoja {user}",
+ "Renamed by {user}" : "Pārdēvēja {user}",
+ "Moved by {user}" : "Pārvietoja {user}",
+ "You created {file}" : "Izveidoji {file}",
+ "{user} created {file}" : "{user} izveidoja {file}",
+ "{file} was created in a public folder" : "{file} tika izveidots publiskajā mapē",
+ "You changed {file}" : "Izmainīji {file}",
+ "{user} changed {file}" : "{user} mainīts {file}",
+ "You deleted {file}" : "Tu izdzēsi {file}",
+ "{user} deleted {file}" : "{user} izdzēsa {file}",
+ "You restored {file}" : "Tu atjaunoji {file}",
+ "{user} restored {file}" : "{user} atjaunoja {file}",
+ "You renamed {oldfile} to {newfile}" : "Pārdēvēji {oldfile} uz {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} pārdēvēja {oldfile} uz {newfile}",
+ "You moved {oldfile} to {newfile}" : "Pārvietoji {oldfile} uz {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} pārvietoja {oldfile} uz {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Fails ir pievienots vai noņemts no jūsu <strong>izlases</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Fails vai mape tika <strong>mainīts</strong> vai <strong>pārsaukts</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
+ "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitēt ziņojumus par jūsu <strong>iecienīto datņu</strong> izveidošanu un izmaiņām <em>(tikai datu straumei)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"Upload (max. %s)" : "Augšupielādēt (maks. %s)",
"File handling" : "Datņu pārvaldība",
"Maximum upload size" : "Maksimālais datņu augšupielādes apjoms",
@@ -94,6 +122,11 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Augšupielādējamās datnes pārsniedz servera pieļaujamo datņu augšupielādes apjomu",
"No favorites" : "Nav favorītu",
"Files and folders you mark as favorite will show up here" : "Datnes un mapes, ko atzīmēsiet kā favorītus, tiks rādīti šeit",
+ "Shared with you" : "Koplietots ar tevi",
+ "Shared with others" : "Koplietots ar citiem",
+ "Shared by link" : "Koplietots ar saiti",
+ "Tags" : "Atzīmes",
+ "Deleted files" : "Dzēstās datnes",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
"Storage not available" : "Glabātuve nav pieejama",
@@ -115,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Kopējais datnes izmērs {size1} pārsniedz augšupielādes ierobežojumu {size2}",
"Error uploading file \"{fileName}\": {message}" : "Kļūda augšupielādējot datni \"{fileName}\": {message}",
"Could not get result from server." : "Nevar saņemt rezultātus no servera",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} stunda{plural_s} atlicis",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minūte{plural_s} atlicis",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekunde{plural_s} atlicis",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Jebkurā brīdī tagad...",
+ "Soon..." : "Drīz...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
"No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'",
"Local link" : "Lokāla saite",
"{newname} already exists" : "{newname} jau eksistē",
@@ -132,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s atjaunoja %1$s",
"Changed by %2$s" : "Izmainīja %2$s",
"Deleted by %2$s" : "Dzēsa %2$s",
- "Restored by %2$s" : "Atjaunoja %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmanto šo adresi, lai <a href=\"%s\" target=\"_blank\">sasniegtu savas datnes caur WebDAV</a>",
- "Cancel upload" : "Atcelt augšupielādi"
+ "Restored by %2$s" : "Atjaunoja %2$s"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 4d161a26cda..7e27a04d4c7 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -1,7 +1,7 @@
{ "translations": {
+ "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Storage invalid" : "Nepareiza glabātuve",
"Unknown error" : "Nezināma kļūda",
- "Files" : "Datnes",
"All files" : "Visas datnes",
"Recent" : "Nesenās",
"File could not be found" : "Datni nevar atrast",
@@ -12,24 +12,21 @@
"Upload cancelled." : "Augšupielāde ir atcelta.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Neizdodas augšupielādēt {filename}, jo tā ir vai nu mape vai 0 baitu saturoša datne.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nav pietiekami daudz brīvas vietas. Tiek augšupielādēti {size1}, bet pieejami tikai {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "Mape \"{dir}\" vairs neeksistē",
+ "Not enough free space" : "Nav pietiekami daudz brīvas vietas",
"Uploading..." : "Augšupielādē...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} stunda{plural_s} atlicis",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minūte{plural_s} atlicis",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekunde{plural_s} atlicis",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Jebkurā brīdī tagad...",
- "Soon..." : "Drīz...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} no {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
"Actions" : "Darbības",
"Download" : "Lejupielādēt",
"Rename" : "Pārsaukt",
+ "Move" : "Pārvietot",
+ "Target folder" : "Mērķa mape",
"Delete" : "Dzēst",
"Disconnect storage" : "Atvienot glabātuvi",
"Unshare" : "Pārtraukt koplietošanu",
+ "Could not load info for file \"{file}\"" : "Nevar ielādēt informāciju par failu \"{file}\"",
+ "Files" : "Datnes",
"Details" : "Detaļas",
"Select" : "Norādīt",
"Pending" : "Gaida savu kārtu",
@@ -46,12 +43,14 @@
"Could not create file \"{file}\" because it already exists" : "Nevarēja izveidot datni \"{file}\", jo tā jau eksistē",
"Could not create folder \"{dir}\" because it already exists" : "Nevarēja izveidot mapi \"{dir}\", jo tā jau eksistē",
"Error deleting file \"{fileName}\"." : "Kļūda dzēšot datni \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Nav nekas atrasts citā mapēs '{tag}{filter}{endtag}'",
"Name" : "Nosaukums",
"Size" : "Izmērs",
"Modified" : "Mainīts",
"_%n folder_::_%n folders_" : ["%n mapes","%n mape","%n mapes"],
"_%n file_::_%n files_" : ["%n datnes","%n datne","%n datnes"],
"{dirs} and {files}" : "{dirs} un {files}",
+ "_including %n hidden_::_including %n hidden_" : ["ieskaitot %n paslēptos","ieskaitot %n paslēptos","ieskaitot %n paslēptos"],
"You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes",
"_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielādē %n datnes"],
"New" : "Jauna",
@@ -67,12 +66,41 @@
"_%n byte_::_%n bytes_" : ["%n baiti","%n baits","%n baiti"],
"Favorited" : "Favorīti",
"Favorite" : "Iecienītais",
+ "Copy local link" : "Kopēt lokālo saiti",
"Folder" : "Mape",
"New folder" : "Jauna mape",
"Upload" : "Augšupielādēt",
"An error occurred while trying to update the tags" : "Notika kļūda atjaunojot atzīmi",
+ "Added to favorites" : "Pievienot izlasei",
+ "Removed from favorites" : "Noņemt no izlases",
+ "You added {file} to your favorites" : "Pievienoji {file} savai izlasei",
+ "You removed {file} from your favorites" : "Noņēmi {file} no savas izlases",
+ "File changes" : "Faila izmaiņas",
+ "Created by {user}" : "Izveidoja {user}",
+ "Changed by {user}" : "Izmainīja {user}",
+ "Deleted by {user}" : "Dzēsa {user}",
+ "Restored by {user}" : "Atjaunoja {user}",
+ "Renamed by {user}" : "Pārdēvēja {user}",
+ "Moved by {user}" : "Pārvietoja {user}",
+ "You created {file}" : "Izveidoji {file}",
+ "{user} created {file}" : "{user} izveidoja {file}",
+ "{file} was created in a public folder" : "{file} tika izveidots publiskajā mapē",
+ "You changed {file}" : "Izmainīji {file}",
+ "{user} changed {file}" : "{user} mainīts {file}",
+ "You deleted {file}" : "Tu izdzēsi {file}",
+ "{user} deleted {file}" : "{user} izdzēsa {file}",
+ "You restored {file}" : "Tu atjaunoji {file}",
+ "{user} restored {file}" : "{user} atjaunoja {file}",
+ "You renamed {oldfile} to {newfile}" : "Pārdēvēji {oldfile} uz {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} pārdēvēja {oldfile} uz {newfile}",
+ "You moved {oldfile} to {newfile}" : "Pārvietoji {oldfile} uz {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} pārvietoja {oldfile} uz {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Fails ir pievienots vai noņemts no jūsu <strong>izlases</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Fails vai mape tika <strong>mainīts</strong> vai <strong>pārsaukts</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
+ "A new file or folder has been <strong>deleted</strong>" : "Fails vai mape tika <strong>dzēsts</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitēt ziņojumus par jūsu <strong>iecienīto datņu</strong> izveidošanu un izmaiņām <em>(tikai datu straumei)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Fails vai mape tika <strong>atjaunots</strong>",
"Upload (max. %s)" : "Augšupielādēt (maks. %s)",
"File handling" : "Datņu pārvaldība",
"Maximum upload size" : "Maksimālais datņu augšupielādes apjoms",
@@ -92,6 +120,11 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Augšupielādējamās datnes pārsniedz servera pieļaujamo datņu augšupielādes apjomu",
"No favorites" : "Nav favorītu",
"Files and folders you mark as favorite will show up here" : "Datnes un mapes, ko atzīmēsiet kā favorītus, tiks rādīti šeit",
+ "Shared with you" : "Koplietots ar tevi",
+ "Shared with others" : "Koplietots ar citiem",
+ "Shared by link" : "Koplietots ar saiti",
+ "Tags" : "Atzīmes",
+ "Deleted files" : "Dzēstās datnes",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
"Storage not available" : "Glabātuve nav pieejama",
@@ -113,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Kopējais datnes izmērs {size1} pārsniedz augšupielādes ierobežojumu {size2}",
"Error uploading file \"{fileName}\": {message}" : "Kļūda augšupielādējot datni \"{fileName}\": {message}",
"Could not get result from server." : "Nevar saņemt rezultātus no servera",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} stunda{plural_s} atlicis",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minūte{plural_s} atlicis",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekunde{plural_s} atlicis",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Jebkurā brīdī tagad...",
+ "Soon..." : "Drīz...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
"No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'",
"Local link" : "Lokāla saite",
"{newname} already exists" : "{newname} jau eksistē",
@@ -130,8 +172,6 @@
"%2$s restored %1$s" : "%2$s atjaunoja %1$s",
"Changed by %2$s" : "Izmainīja %2$s",
"Deleted by %2$s" : "Dzēsa %2$s",
- "Restored by %2$s" : "Atjaunoja %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmanto šo adresi, lai <a href=\"%s\" target=\"_blank\">sasniegtu savas datnes caur WebDAV</a>",
- "Cancel upload" : "Atcelt augšupielādi"
+ "Restored by %2$s" : "Atjaunoja %2$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/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 02cd27bda04..807a9c141e6 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage invalid" : "Lagringsplass ugyldig",
"Unknown error" : "Ukjent feil",
- "Files" : "Filer",
"All files" : "Alle filer",
"Recent" : "Nylig",
"File could not be found" : "Filen ble ikke funnet",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Ikke nok ledig diskplass",
"Uploading..." : "Laster opp...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timer{plural_s} igjen",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minutter{plural_s} igjen",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekunder{plural_s} igjen",
- "{seconds}s" : "{seconds}er",
- "Any moment now..." : "Hvert øyeblikk nå...",
- "Soon..." : "Snart...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"Actions" : "Handlinger",
"Download" : "Last ned",
"Rename" : "Gi nytt navn",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Slett",
"Disconnect storage" : "Koble fra lagring",
"Unshare" : "Avslutt deling",
+ "Could not load info for file \"{file}\"" : "Klarte ikke å hente informasjon som filen \"{file}\"",
+ "Files" : "Filer",
"Details" : "Detaljer",
"Select" : "Velg",
"Pending" : "Venter",
@@ -69,21 +61,48 @@ OC.L10N.register(
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagringsplass for {owner} er full, filer kan ikke oppdateres eller synkroniseres lenger!",
"Your storage is full, files can not be updated or synced anymore!" : "Lagringsplass er oppbrukt, filer kan ikke lenger oppdateres eller synkroniseres!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagringsplass for {owner} er nesten full ({usedSpacePercent}%)",
- "Your storage is almost full ({usedSpacePercent}%)" : "Lagringsplass er nesten brukt opp ([usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)" : "Lagringsplass er nesten brukt opp ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : [" stemmer med '{filter}'"," stemmer med '{filter}'"],
"View in folder" : "Vis i mappe",
"Path" : "Sti",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Er favoritt",
"Favorite" : "Gjør til favoritt",
+ "Copy local link" : "Kopier lokal lenke",
"Folder" : "Mappe",
"New folder" : "Ny mappe",
"Upload" : "Last opp",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
+ "Added to favorites" : "Lagt til i favoritter",
+ "Removed from favorites" : "Fjernet fra favoritter",
+ "You added {file} to your favorites" : "Du la til {file} i dine favoritter",
+ "You removed {file} from your favorites" : "Du fjernet {file} fra dine favoritter",
"File changes" : "Filendringer",
+ "Created by {user}" : "Opprettet av {user}",
+ "Changed by {user}" : "Endret av {user}",
+ "Deleted by {user}" : "Slettet av {user}",
+ "Restored by {user}" : "Gjenopprettet av {user}",
+ "Renamed by {user}" : "Navn endret av {user}",
+ "Moved by {user}" : "Flyttet av {user}",
+ "You created {file}" : "Du opprettet {file}",
+ "{user} created {file}" : "{user} opprettet {file}",
+ "{file} was created in a public folder" : "{file} ble opprettet i en offentlig mappe",
+ "You changed {file}" : "Du endret {file}",
+ "{user} changed {file}" : "{user} endret {file}",
+ "You deleted {file}" : "Du slettet {file}",
+ "{user} deleted {file}" : "{user} slettet {file}",
+ "You restored {file}" : "Du gjenopprettet {file}",
+ "{user} restored {file}" : "{user} gjenopprettet {file}",
+ "You renamed {oldfile} to {newfile}" : "Du endret navn på {oldfile} til {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} endret navn på {oldfile} til {newfile}",
+ "You moved {oldfile} to {newfile}" : "Du flyttet {oldfile} til {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} flyttet {oldfile} til {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe ble <strong>endret</strong> eller <strong>omdøpt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
"Upload (max. %s)" : "Opplasting (maks. %s)",
"File handling" : "Filhåndtering",
"Maximum upload size" : "Største opplastingsstørrelse",
@@ -129,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Total filstørrelse {size1} overstiger grense for opplasting {size2}",
"Error uploading file \"{fileName}\": {message}" : "Feil ved opplasting av fil \"{fileName}\": {message}",
"Could not get result from server." : "Fikk ikke resultat fra tjeneren.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timer{plural_s} igjen",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minutter{plural_s} igjen",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekunder{plural_s} igjen",
+ "{seconds}s" : "{seconds}er",
+ "Any moment now..." : "Hvert øyeblikk nå...",
+ "Soon..." : "Snart...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'",
"Local link" : "Lokal lenke",
"{newname} already exists" : "{newname} finnes allerede",
@@ -146,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s gjenopprettet %1$s",
"Changed by %2$s" : "Endret av %2$s",
"Deleted by %2$s" : "Slettet av %2$s",
- "Restored by %2$s" : "Gjenopprettet av %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk følgende adresse for <a href=\"%s\" target=\"_blank\">tilgang til filene via WebDAV</a>",
- "Cancel upload" : "Avbryt opplasting"
+ "Restored by %2$s" : "Gjenopprettet av %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index d6a055e3b92..c32c5d80e3d 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage invalid" : "Lagringsplass ugyldig",
"Unknown error" : "Ukjent feil",
- "Files" : "Filer",
"All files" : "Alle filer",
"Recent" : "Nylig",
"File could not be found" : "Filen ble ikke funnet",
@@ -17,16 +16,7 @@
"Not enough free space" : "Ikke nok ledig diskplass",
"Uploading..." : "Laster opp...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timer{plural_s} igjen",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minutter{plural_s} igjen",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} sekunder{plural_s} igjen",
- "{seconds}s" : "{seconds}er",
- "Any moment now..." : "Hvert øyeblikk nå...",
- "Soon..." : "Snart...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"Actions" : "Handlinger",
"Download" : "Last ned",
"Rename" : "Gi nytt navn",
@@ -35,6 +25,8 @@
"Delete" : "Slett",
"Disconnect storage" : "Koble fra lagring",
"Unshare" : "Avslutt deling",
+ "Could not load info for file \"{file}\"" : "Klarte ikke å hente informasjon som filen \"{file}\"",
+ "Files" : "Filer",
"Details" : "Detaljer",
"Select" : "Velg",
"Pending" : "Venter",
@@ -67,21 +59,48 @@
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagringsplass for {owner} er full, filer kan ikke oppdateres eller synkroniseres lenger!",
"Your storage is full, files can not be updated or synced anymore!" : "Lagringsplass er oppbrukt, filer kan ikke lenger oppdateres eller synkroniseres!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagringsplass for {owner} er nesten full ({usedSpacePercent}%)",
- "Your storage is almost full ({usedSpacePercent}%)" : "Lagringsplass er nesten brukt opp ([usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)" : "Lagringsplass er nesten brukt opp ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : [" stemmer med '{filter}'"," stemmer med '{filter}'"],
"View in folder" : "Vis i mappe",
"Path" : "Sti",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Er favoritt",
"Favorite" : "Gjør til favoritt",
+ "Copy local link" : "Kopier lokal lenke",
"Folder" : "Mappe",
"New folder" : "Ny mappe",
"Upload" : "Last opp",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
+ "Added to favorites" : "Lagt til i favoritter",
+ "Removed from favorites" : "Fjernet fra favoritter",
+ "You added {file} to your favorites" : "Du la til {file} i dine favoritter",
+ "You removed {file} from your favorites" : "Du fjernet {file} fra dine favoritter",
"File changes" : "Filendringer",
+ "Created by {user}" : "Opprettet av {user}",
+ "Changed by {user}" : "Endret av {user}",
+ "Deleted by {user}" : "Slettet av {user}",
+ "Restored by {user}" : "Gjenopprettet av {user}",
+ "Renamed by {user}" : "Navn endret av {user}",
+ "Moved by {user}" : "Flyttet av {user}",
+ "You created {file}" : "Du opprettet {file}",
+ "{user} created {file}" : "{user} opprettet {file}",
+ "{file} was created in a public folder" : "{file} ble opprettet i en offentlig mappe",
+ "You changed {file}" : "Du endret {file}",
+ "{user} changed {file}" : "{user} endret {file}",
+ "You deleted {file}" : "Du slettet {file}",
+ "{user} deleted {file}" : "{user} slettet {file}",
+ "You restored {file}" : "Du gjenopprettet {file}",
+ "{user} restored {file}" : "{user} gjenopprettet {file}",
+ "You renamed {oldfile} to {newfile}" : "Du endret navn på {oldfile} til {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} endret navn på {oldfile} til {newfile}",
+ "You moved {oldfile} to {newfile}" : "Du flyttet {oldfile} til {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} flyttet {oldfile} til {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil eller mappe ble <strong>endret</strong> eller <strong>omdøpt</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil eller mappe har blitt <strong>slettet</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mappe har blitt <strong>gjenopprettet</strong>",
"Upload (max. %s)" : "Opplasting (maks. %s)",
"File handling" : "Filhåndtering",
"Maximum upload size" : "Største opplastingsstørrelse",
@@ -127,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Total filstørrelse {size1} overstiger grense for opplasting {size2}",
"Error uploading file \"{fileName}\": {message}" : "Feil ved opplasting av fil \"{fileName}\": {message}",
"Could not get result from server." : "Fikk ikke resultat fra tjeneren.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timer{plural_s} igjen",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minutter{plural_s} igjen",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} sekunder{plural_s} igjen",
+ "{seconds}s" : "{seconds}er",
+ "Any moment now..." : "Hvert øyeblikk nå...",
+ "Soon..." : "Snart...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'",
"Local link" : "Lokal lenke",
"{newname} already exists" : "{newname} finnes allerede",
@@ -144,8 +172,6 @@
"%2$s restored %1$s" : "%2$s gjenopprettet %1$s",
"Changed by %2$s" : "Endret av %2$s",
"Deleted by %2$s" : "Slettet av %2$s",
- "Restored by %2$s" : "Gjenopprettet av %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk følgende adresse for <a href=\"%s\" target=\"_blank\">tilgang til filene via WebDAV</a>",
- "Cancel upload" : "Avbryt opplasting"
+ "Restored by %2$s" : "Gjenopprettet av %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index db2af9cf43b..77cf7b1b938 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage invalid" : "Opslag ongeldig",
"Unknown error" : "Onbekende fout",
- "Files" : "Bestanden",
"All files" : "Alle bestanden",
"Recent" : "Recent",
"File could not be found" : "Bestand kon niet worden gevonden",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Onvoldoende vrije ruimte",
"Uploading..." : "Uploaden...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over",
- "{seconds}s" : "{seconds}en",
- "Any moment now..." : "Heel snel nu...",
- "Soon..." : "Binnenkort...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} van {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"Actions" : "Acties",
"Download" : "Downloaden",
"Rename" : "Naam wijzigen",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Verwijderen",
"Disconnect storage" : "Verbinding met opslag verbreken",
"Unshare" : "Stop met delen",
+ "Could not load info for file \"{file}\"" : "Kon geen informatie laden voor bestand \"{file}\"",
+ "Files" : "Bestanden",
"Details" : "Details",
"Select" : "Selecteer",
"Pending" : "In behandeling",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Totale bestandsgrootte {size1} groter dan uploadlimiet {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fout tijdens het uploaden van bestand \"{fileName}\": {message}",
"Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over",
+ "{seconds}s" : "{seconds}en",
+ "Any moment now..." : "Heel snel nu...",
+ "Soon..." : "Binnenkort...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'",
"Local link" : "Lokale link",
"{newname} already exists" : "{newname} bestaat al",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s herstelde %1$s",
"Changed by %2$s" : "Gewijzigd door %2$s",
"Deleted by %2$s" : "Verwijderd door %2$s",
- "Restored by %2$s" : "Hersteld door %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om je bestanden via WebDAV te benaderen</a>",
- "Cancel upload" : "Upload annuleren"
+ "Restored by %2$s" : "Hersteld door %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 12349fb41ca..e0f0d44e6e6 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage invalid" : "Opslag ongeldig",
"Unknown error" : "Onbekende fout",
- "Files" : "Bestanden",
"All files" : "Alle bestanden",
"Recent" : "Recent",
"File could not be found" : "Bestand kon niet worden gevonden",
@@ -17,16 +16,7 @@
"Not enough free space" : "Onvoldoende vrije ruimte",
"Uploading..." : "Uploaden...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over",
- "{seconds}s" : "{seconds}en",
- "Any moment now..." : "Heel snel nu...",
- "Soon..." : "Binnenkort...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} van {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"Actions" : "Acties",
"Download" : "Downloaden",
"Rename" : "Naam wijzigen",
@@ -35,6 +25,8 @@
"Delete" : "Verwijderen",
"Disconnect storage" : "Verbinding met opslag verbreken",
"Unshare" : "Stop met delen",
+ "Could not load info for file \"{file}\"" : "Kon geen informatie laden voor bestand \"{file}\"",
+ "Files" : "Bestanden",
"Details" : "Details",
"Select" : "Selecteer",
"Pending" : "In behandeling",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Totale bestandsgrootte {size1} groter dan uploadlimiet {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fout tijdens het uploaden van bestand \"{fileName}\": {message}",
"Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over",
+ "{seconds}s" : "{seconds}en",
+ "Any moment now..." : "Heel snel nu...",
+ "Soon..." : "Binnenkort...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'",
"Local link" : "Lokale link",
"{newname} already exists" : "{newname} bestaat al",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s herstelde %1$s",
"Changed by %2$s" : "Gewijzigd door %2$s",
"Deleted by %2$s" : "Verwijderd door %2$s",
- "Restored by %2$s" : "Hersteld door %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om je bestanden via WebDAV te benaderen</a>",
- "Cancel upload" : "Upload annuleren"
+ "Restored by %2$s" : "Hersteld door %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index df171605ce2..ab84ccc90ac 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -4,9 +4,8 @@ OC.L10N.register(
"Storage is temporarily not available" : "Przechowywanie jest czasowo niedostępne",
"Storage invalid" : "Pamięć nieprawidłowa",
"Unknown error" : "Nieznany błąd",
- "Files" : "Pliki",
"All files" : "Wszystkie pliki",
- "Recent" : "Ostatni",
+ "Recent" : "Ostatnie",
"File could not be found" : "Nie można odnaleźć pliku",
"Home" : "Dom",
"Close" : "Zamknij",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Za mało wolnego miejsca",
"Uploading..." : "Wgrywanie....",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ",
- "{hours}:{minutes}h" : "{hours}:{minutes}godz.",
- "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}min.",
- "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}",
- "{seconds}s" : "{seconds} s",
- "Any moment now..." : "Jeszcze chwilę...",
- "Soon..." : "Wkrótce...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
"Actions" : "Akcje",
"Download" : "Pobierz",
"Rename" : "Zmień nazwę",
@@ -36,7 +26,9 @@ OC.L10N.register(
"Target folder" : "Folder docelowy",
"Delete" : "Usuń",
"Disconnect storage" : "Odłącz magazyn",
- "Unshare" : "Zatrzymaj współdzielenie",
+ "Unshare" : "Zatrzymaj udostępnianie",
+ "Could not load info for file \"{file}\"" : "Nie można było załadować informacji o pliku \"{file}\"",
+ "Files" : "Pliki",
"Details" : "Szczegóły",
"Select" : "Wybierz",
"Pending" : "Oczekujące",
@@ -57,12 +49,12 @@ OC.L10N.register(
"Name" : "Nazwa",
"Size" : "Rozmiar",
"Modified" : "Modyfikacja",
- "_%n folder_::_%n folders_" : ["%n katalog","%n katalogi","%n katalogów"],
- "_%n file_::_%n files_" : ["%n plik","%n pliki","%n plików"],
+ "_%n folder_::_%n folders_" : ["%n katalog","%n katalogi","%n katalogów","%n katalogów"],
+ "_%n file_::_%n files_" : ["%n plik","%n pliki","%n plików","%n plików"],
"{dirs} and {files}" : "{dirs} i {files}",
- "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych"],
+ "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych","w tym %n ukrytych"],
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wczytywania lub tworzenia plików w tym miejscu",
- "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików","Wysyłanie %n plików"],
"New" : "Nowy",
"\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.",
"File name cannot be empty." : "Nazwa pliku nie może być pusta.",
@@ -70,18 +62,22 @@ OC.L10N.register(
"Your storage is full, files can not be updated or synced anymore!" : "Magazyn jest pełny. Pliki nie mogą zostać zaktualizowane lub zsynchronizowane!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Miejsce dla {owner} jest na wyczerpaniu ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["pasujący '{filter}'","pasujące '{filter}'","pasujących '{filter}'"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["pasujący '{filter}'","pasujące '{filter}'","pasujących '{filter}'","pasujących '{filter}'"],
"View in folder" : "Zobacz w katalogu",
"Path" : "Ścieżka",
- "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów"],
- "Favorited" : "Ulubione",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów","%n bajtów"],
+ "Favorited" : "Ulubiony",
"Favorite" : "Ulubione",
"Copy local link" : "Kopiowanie lokalnego linku",
"Folder" : "Folder",
"New folder" : "Nowy folder",
"Upload" : "Wyślij",
"An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów",
- "File changes" : "Zmień w plikach",
+ "Added to favorites" : "Dodano do ulubionych",
+ "Removed from favorites" : "Usunięto z ulubionych",
+ "You added {file} to your favorites" : "Dodałeś {file} do ulubionych",
+ "You removed {file} from your favorites" : "Usunąłeś {file} z ulubionych",
+ "File changes" : "Zmiany w plikach",
"Created by {user}" : "Utworzone przez {user}",
"Changed by {user}" : "Zmienione przez {user}",
"Deleted by {user}" : "Usunięte przez {user}",
@@ -101,6 +97,7 @@ OC.L10N.register(
"{user} renamed {oldfile} to {newfile}" : "{user} zmienił {oldfile} na {newfile}",
"You moved {oldfile} to {newfile}" : "Przeniosłeś {oldfile} do {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} przeniósł {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Plik został dodany lub usunięty z Twoich <strong>ulubionych</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Plik lub folder został <strong>zmieniony</ strong> lub <strong>zastąpiony</ strong>",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
"A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder jest <strong>usunięty </strong>",
@@ -132,7 +129,7 @@ OC.L10N.register(
"Deleted files" : "Usunięte pliki",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
- "Storage not available" : "Pamięć nie dostępna",
+ "Storage not available" : "Zasoby dysku są niedostępne",
"Unable to set upload directory." : "Nie można ustawić katalog wczytywania.",
"Invalid Token" : "Nieprawidłowy Token",
"No file was uploaded. Unknown error" : "Żaden plik nie został załadowany. Nieznany błąd",
@@ -151,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Całkowity rozmiar {size1} przekracza limit uploadu {size2}",
"Error uploading file \"{fileName}\": {message}" : "Błąd podczas przekazywania \"{fileName}\": {message}",
"Could not get result from server." : "Nie można uzyskać wyniku z serwera.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ",
+ "{hours}:{minutes}h" : "{hours}:{minutes}godz.",
+ "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}min.",
+ "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}",
+ "{seconds}s" : "{seconds} s",
+ "Any moment now..." : "Jeszcze chwilę...",
+ "Soon..." : "Wkrótce...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Local link" : "Lokalny odnośnik",
"{newname} already exists" : "{newname} już istnieje",
@@ -168,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s przywrócił %1$s",
"Changed by %2$s" : "Zmienione przez %2$s",
"Deleted by %2$s" : "Usunięte przez %2$s",
- "Restored by %2$s" : "Przywrócone przez %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\">dostęp do swoich plików poprzez WebDAV</a>",
- "Cancel upload" : "Anuluj wysyłanie"
+ "Restored by %2$s" : "Przywrócone przez %2$s"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 702f2975b2d..7a7fdb17f6b 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -2,9 +2,8 @@
"Storage is temporarily not available" : "Przechowywanie jest czasowo niedostępne",
"Storage invalid" : "Pamięć nieprawidłowa",
"Unknown error" : "Nieznany błąd",
- "Files" : "Pliki",
"All files" : "Wszystkie pliki",
- "Recent" : "Ostatni",
+ "Recent" : "Ostatnie",
"File could not be found" : "Nie można odnaleźć pliku",
"Home" : "Dom",
"Close" : "Zamknij",
@@ -17,16 +16,7 @@
"Not enough free space" : "Za mało wolnego miejsca",
"Uploading..." : "Wgrywanie....",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ",
- "{hours}:{minutes}h" : "{hours}:{minutes}godz.",
- "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}min.",
- "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}",
- "{seconds}s" : "{seconds} s",
- "Any moment now..." : "Jeszcze chwilę...",
- "Soon..." : "Wkrótce...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
"Actions" : "Akcje",
"Download" : "Pobierz",
"Rename" : "Zmień nazwę",
@@ -34,7 +24,9 @@
"Target folder" : "Folder docelowy",
"Delete" : "Usuń",
"Disconnect storage" : "Odłącz magazyn",
- "Unshare" : "Zatrzymaj współdzielenie",
+ "Unshare" : "Zatrzymaj udostępnianie",
+ "Could not load info for file \"{file}\"" : "Nie można było załadować informacji o pliku \"{file}\"",
+ "Files" : "Pliki",
"Details" : "Szczegóły",
"Select" : "Wybierz",
"Pending" : "Oczekujące",
@@ -55,12 +47,12 @@
"Name" : "Nazwa",
"Size" : "Rozmiar",
"Modified" : "Modyfikacja",
- "_%n folder_::_%n folders_" : ["%n katalog","%n katalogi","%n katalogów"],
- "_%n file_::_%n files_" : ["%n plik","%n pliki","%n plików"],
+ "_%n folder_::_%n folders_" : ["%n katalog","%n katalogi","%n katalogów","%n katalogów"],
+ "_%n file_::_%n files_" : ["%n plik","%n pliki","%n plików","%n plików"],
"{dirs} and {files}" : "{dirs} i {files}",
- "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych"],
+ "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych","w tym %n ukrytych"],
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wczytywania lub tworzenia plików w tym miejscu",
- "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików","Wysyłanie %n plików"],
"New" : "Nowy",
"\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.",
"File name cannot be empty." : "Nazwa pliku nie może być pusta.",
@@ -68,18 +60,22 @@
"Your storage is full, files can not be updated or synced anymore!" : "Magazyn jest pełny. Pliki nie mogą zostać zaktualizowane lub zsynchronizowane!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Miejsce dla {owner} jest na wyczerpaniu ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["pasujący '{filter}'","pasujące '{filter}'","pasujących '{filter}'"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["pasujący '{filter}'","pasujące '{filter}'","pasujących '{filter}'","pasujących '{filter}'"],
"View in folder" : "Zobacz w katalogu",
"Path" : "Ścieżka",
- "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów"],
- "Favorited" : "Ulubione",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów","%n bajtów"],
+ "Favorited" : "Ulubiony",
"Favorite" : "Ulubione",
"Copy local link" : "Kopiowanie lokalnego linku",
"Folder" : "Folder",
"New folder" : "Nowy folder",
"Upload" : "Wyślij",
"An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów",
- "File changes" : "Zmień w plikach",
+ "Added to favorites" : "Dodano do ulubionych",
+ "Removed from favorites" : "Usunięto z ulubionych",
+ "You added {file} to your favorites" : "Dodałeś {file} do ulubionych",
+ "You removed {file} from your favorites" : "Usunąłeś {file} z ulubionych",
+ "File changes" : "Zmiany w plikach",
"Created by {user}" : "Utworzone przez {user}",
"Changed by {user}" : "Zmienione przez {user}",
"Deleted by {user}" : "Usunięte przez {user}",
@@ -99,6 +95,7 @@
"{user} renamed {oldfile} to {newfile}" : "{user} zmienił {oldfile} na {newfile}",
"You moved {oldfile} to {newfile}" : "Przeniosłeś {oldfile} do {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} przeniósł {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Plik został dodany lub usunięty z Twoich <strong>ulubionych</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Plik lub folder został <strong>zmieniony</ strong> lub <strong>zastąpiony</ strong>",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
"A new file or folder has been <strong>deleted</strong>" : "Nowy plik lub folder jest <strong>usunięty </strong>",
@@ -130,7 +127,7 @@
"Deleted files" : "Usunięte pliki",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
- "Storage not available" : "Pamięć nie dostępna",
+ "Storage not available" : "Zasoby dysku są niedostępne",
"Unable to set upload directory." : "Nie można ustawić katalog wczytywania.",
"Invalid Token" : "Nieprawidłowy Token",
"No file was uploaded. Unknown error" : "Żaden plik nie został załadowany. Nieznany błąd",
@@ -149,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Całkowity rozmiar {size1} przekracza limit uploadu {size2}",
"Error uploading file \"{fileName}\": {message}" : "Błąd podczas przekazywania \"{fileName}\": {message}",
"Could not get result from server." : "Nie można uzyskać wyniku z serwera.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ",
+ "{hours}:{minutes}h" : "{hours}:{minutes}godz.",
+ "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}min.",
+ "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}",
+ "{seconds}s" : "{seconds} s",
+ "Any moment now..." : "Jeszcze chwilę...",
+ "Soon..." : "Wkrótce...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Local link" : "Lokalny odnośnik",
"{newname} already exists" : "{newname} już istnieje",
@@ -166,8 +172,6 @@
"%2$s restored %1$s" : "%2$s przywrócił %1$s",
"Changed by %2$s" : "Zmienione przez %2$s",
"Deleted by %2$s" : "Usunięte przez %2$s",
- "Restored by %2$s" : "Przywrócone przez %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\">dostęp do swoich plików poprzez WebDAV</a>",
- "Cancel upload" : "Anuluj wysyłanie"
+ "Restored by %2$s" : "Przywrócone przez %2$s"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index a6c93bd5b8a..b31977f2774 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Storage is temporarily not available" : "Storage esta, temporariamente, indisponível",
"Storage invalid" : "Armazenamento inválido",
"Unknown error" : "Erro desconhecido",
- "Files" : "Arquivos",
"All files" : "Todos os arquivos",
"Recent" : "Recente",
"File could not be found" : "O arquivo não foi encontrado",
@@ -19,16 +18,7 @@ OC.L10N.register(
"Not enough free space" : "Espaço livre insuficiente",
"Uploading..." : "Enviando...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} esquerda",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} esquerda",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} esquerda",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "A qualquer momento...",
- "Soon..." : "Logo...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
"Actions" : "Ações",
"Download" : "Baixar",
"Rename" : "Renomear",
@@ -37,6 +27,8 @@ OC.L10N.register(
"Delete" : "Excluir",
"Disconnect storage" : "Desconectar armazenamento",
"Unshare" : "Descompartilhar",
+ "Could not load info for file \"{file}\"" : "Não foi possível carregar informações para o arquivo \"{file}\" ",
+ "Files" : "Arquivos",
"Details" : "Detalhes",
"Select" : "Selecionar",
"Pending" : "Pendente",
@@ -156,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "O tamanho total do arquivo {size1} excede o limite de envio {size2}",
"Error uploading file \"{fileName}\": {message}" : "Erro enviando o arquivo \"{fileName}\": {message}",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} restantes",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} restantes",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} restantes",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "A qualquer momento...",
+ "Soon..." : "Logo...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
"No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'",
"Local link" : "Link local",
"{newname} already exists" : "{newname} já existe",
@@ -173,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s restaurou %1$s",
"Changed by %2$s" : "Modificado por %2$s",
"Deleted by %2$s" : "Excluído por %2$s",
- "Restored by %2$s" : "Restaurado por %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço para <a href=\"%s\" target=\"_blank\">acessar seus arquivos via WebDAV</a>",
- "Cancel upload" : "Cancelar envio"
+ "Restored by %2$s" : "Restaurado por %2$s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 0e6b7050fc2..f5481c8ab0d 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -2,7 +2,6 @@
"Storage is temporarily not available" : "Storage esta, temporariamente, indisponível",
"Storage invalid" : "Armazenamento inválido",
"Unknown error" : "Erro desconhecido",
- "Files" : "Arquivos",
"All files" : "Todos os arquivos",
"Recent" : "Recente",
"File could not be found" : "O arquivo não foi encontrado",
@@ -17,16 +16,7 @@
"Not enough free space" : "Espaço livre insuficiente",
"Uploading..." : "Enviando...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} esquerda",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} esquerda",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} esquerda",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "A qualquer momento...",
- "Soon..." : "Logo...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
"Actions" : "Ações",
"Download" : "Baixar",
"Rename" : "Renomear",
@@ -35,6 +25,8 @@
"Delete" : "Excluir",
"Disconnect storage" : "Desconectar armazenamento",
"Unshare" : "Descompartilhar",
+ "Could not load info for file \"{file}\"" : "Não foi possível carregar informações para o arquivo \"{file}\" ",
+ "Files" : "Arquivos",
"Details" : "Detalhes",
"Select" : "Selecionar",
"Pending" : "Pendente",
@@ -154,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "O tamanho total do arquivo {size1} excede o limite de envio {size2}",
"Error uploading file \"{fileName}\": {message}" : "Erro enviando o arquivo \"{fileName}\": {message}",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hora{plural_s} restantes",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuto{plural_s} restantes",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} segundo{plural_s} restantes",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "A qualquer momento...",
+ "Soon..." : "Logo...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
"No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'",
"Local link" : "Link local",
"{newname} already exists" : "{newname} já existe",
@@ -171,8 +172,6 @@
"%2$s restored %1$s" : "%2$s restaurou %1$s",
"Changed by %2$s" : "Modificado por %2$s",
"Deleted by %2$s" : "Excluído por %2$s",
- "Restored by %2$s" : "Restaurado por %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço para <a href=\"%s\" target=\"_blank\">acessar seus arquivos via WebDAV</a>",
- "Cancel upload" : "Cancelar envio"
+ "Restored by %2$s" : "Restaurado por %2$s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 9c04ebf2740..1222778d596 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -4,39 +4,31 @@ OC.L10N.register(
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage invalid" : "Хранилище неисправно",
"Unknown error" : "Неизвестная ошибка",
- "Files" : "Файлы",
"All files" : "Все файлы",
"Recent" : "Недавние",
"File could not be found" : "Невозможно найти файл",
"Home" : "Главная",
"Close" : "Закрыть",
"Favorites" : "Избранное",
- "Could not create folder \"{dir}\"" : "Невозможно создать папку \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "Невозможно создать каталог \"{dir}\"",
"Upload cancelled." : "Загрузка отменена.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить {filename}, так как это либо каталог, либо файл нулевого размера",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, Вы загружаете {size1}, но осталось только {size2}",
- "Target folder \"{dir}\" does not exist any more" : "Целевая папка \"{dir}\" более не существует",
+ "Target folder \"{dir}\" does not exist any more" : "Целевой каталог \"{dir}\" более не существует",
"Not enough free space" : "Недостаточно свободного места",
"Uploading..." : "Загрузка...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Осталось часов {hours}:{minutes}:{seconds} {plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}ч",
- "{minutes}:{seconds} minute{plural_s} left" : "Осталось минут {minutes}:{seconds} {plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
- "{seconds} second{plural_s} left" : "Осталось секунд {seconds} {plural_s}",
- "{seconds}s" : "{seconds}с",
- "Any moment now..." : "В любой момент...",
- "Soon..." : "Скоро...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"Actions" : "Действия",
"Download" : "Скачать",
"Rename" : "Переименовать",
"Move" : "Перенести",
- "Target folder" : "Целевая папка",
+ "Target folder" : "Целевой каталог",
"Delete" : "Удалить",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
+ "Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
+ "Files" : "Файлы",
"Details" : "Подробно",
"Select" : "Выбрать",
"Pending" : "Ожидается",
@@ -51,9 +43,9 @@ OC.L10N.register(
"Could not rename \"{fileName}\"" : "Невозможно переименовать \"{fileName}\"",
"Could not create file \"{file}\"" : "Невозможно создать файл \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Невозможно создать файл \"{file}\" потому что уже имеется",
- "Could not create folder \"{dir}\" because it already exists" : "Невозможно создать папку \"{dir}\" потому что уже имеется",
+ "Could not create folder \"{dir}\" because it already exists" : "Невозможно создать каталог \"{dir}\" потому что он уже имеется",
"Error deleting file \"{fileName}\"." : "Ошибка удаления файла \"{fileName}\".",
- "No search results in other folders for '{tag}{filter}{endtag}'" : "Нет результатов поиска в других папках для '{tag}{filter}{endtag}'",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Нет результатов поиска в других каталогах для '{tag}{filter}{endtag}'",
"Name" : "Имя",
"Size" : "Размер",
"Modified" : "Изменён",
@@ -73,7 +65,7 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
"View in folder" : "Посмотреть в каталоге",
"Path" : "Путь",
- "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"],
+ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Favorited" : "Избранное",
"Favorite" : "Избранное",
"Copy local link" : "Копировать локальную ссылку",
@@ -86,6 +78,25 @@ OC.L10N.register(
"You added {file} to your favorites" : "Вы добавили {file} в избранное",
"You removed {file} from your favorites" : "Вы удалили {file} из избранного",
"File changes" : "Файлы изменены",
+ "Created by {user}" : "Создано {user}",
+ "Changed by {user}" : "Изменено {user}",
+ "Deleted by {user}" : "Удалено {user}",
+ "Restored by {user}" : "Восстановлено {user}",
+ "Renamed by {user}" : "Переименовано {user}",
+ "Moved by {user}" : "Перемещено {user}",
+ "You created {file}" : "Вы создали {file}",
+ "{user} created {file}" : "{user} создал {file}",
+ "{file} was created in a public folder" : "{file} создан в общем каталоге",
+ "You changed {file}" : "Вы изменили {file}",
+ "{user} changed {file}" : "{user} изменил {file}",
+ "You deleted {file}" : "Вы удалили {file}",
+ "{user} deleted {file}" : "{user} удалил {file}",
+ "You restored {file}" : "Вы восстановили {file}",
+ "{user} restored {file}" : "{user} восстановил {file}",
+ "You renamed {oldfile} to {newfile}" : "Вы переименовали {oldfile} в {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} переименовал {oldfile} в {newfile}",
+ "You moved {oldfile} to {newfile}" : "Вы переместили {oldfile} в {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} переместил {oldfile} в {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл был добавлен или удален из вашего <strong>избранного</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фаил или каталог <strong>изменён</strong> или <strong>переименован</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
@@ -137,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Полный размер файла {size1} превышает лимит по загрузке {size2}",
"Error uploading file \"{fileName}\": {message}" : "Ошибка загрузки файла \"{fileName}\": {message}",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Осталось часов {hours}:{minutes}:{seconds} {plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ч",
+ "{minutes}:{seconds} minute{plural_s} left" : "Осталось минут {minutes}:{seconds} {plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
+ "{seconds} second{plural_s} left" : "Осталось секунд {seconds} {plural_s}",
+ "{seconds}s" : "{seconds}с",
+ "Any moment now..." : "В любой момент...",
+ "Soon..." : "Скоро...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'",
"Local link" : "Локальная ссылка",
"{newname} already exists" : "{newname} уже существует",
@@ -154,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s восстановил %1$s",
"Changed by %2$s" : "Изменено %2$s",
"Deleted by %2$s" : "Удалено %2$s",
- "Restored by %2$s" : "Восстановлено %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">получения доступа к вашим файлам через WebDAV</a>",
- "Cancel upload" : "Отменить загрузку"
+ "Restored by %2$s" : "Восстановлено %2$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/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 8101188d7aa..c835f8c16cd 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -2,39 +2,31 @@
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage invalid" : "Хранилище неисправно",
"Unknown error" : "Неизвестная ошибка",
- "Files" : "Файлы",
"All files" : "Все файлы",
"Recent" : "Недавние",
"File could not be found" : "Невозможно найти файл",
"Home" : "Главная",
"Close" : "Закрыть",
"Favorites" : "Избранное",
- "Could not create folder \"{dir}\"" : "Невозможно создать папку \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "Невозможно создать каталог \"{dir}\"",
"Upload cancelled." : "Загрузка отменена.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить {filename}, так как это либо каталог, либо файл нулевого размера",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, Вы загружаете {size1}, но осталось только {size2}",
- "Target folder \"{dir}\" does not exist any more" : "Целевая папка \"{dir}\" более не существует",
+ "Target folder \"{dir}\" does not exist any more" : "Целевой каталог \"{dir}\" более не существует",
"Not enough free space" : "Недостаточно свободного места",
"Uploading..." : "Загрузка...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Осталось часов {hours}:{minutes}:{seconds} {plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}ч",
- "{minutes}:{seconds} minute{plural_s} left" : "Осталось минут {minutes}:{seconds} {plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
- "{seconds} second{plural_s} left" : "Осталось секунд {seconds} {plural_s}",
- "{seconds}s" : "{seconds}с",
- "Any moment now..." : "В любой момент...",
- "Soon..." : "Скоро...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"Actions" : "Действия",
"Download" : "Скачать",
"Rename" : "Переименовать",
"Move" : "Перенести",
- "Target folder" : "Целевая папка",
+ "Target folder" : "Целевой каталог",
"Delete" : "Удалить",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
+ "Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
+ "Files" : "Файлы",
"Details" : "Подробно",
"Select" : "Выбрать",
"Pending" : "Ожидается",
@@ -49,9 +41,9 @@
"Could not rename \"{fileName}\"" : "Невозможно переименовать \"{fileName}\"",
"Could not create file \"{file}\"" : "Невозможно создать файл \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Невозможно создать файл \"{file}\" потому что уже имеется",
- "Could not create folder \"{dir}\" because it already exists" : "Невозможно создать папку \"{dir}\" потому что уже имеется",
+ "Could not create folder \"{dir}\" because it already exists" : "Невозможно создать каталог \"{dir}\" потому что он уже имеется",
"Error deleting file \"{fileName}\"." : "Ошибка удаления файла \"{fileName}\".",
- "No search results in other folders for '{tag}{filter}{endtag}'" : "Нет результатов поиска в других папках для '{tag}{filter}{endtag}'",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Нет результатов поиска в других каталогах для '{tag}{filter}{endtag}'",
"Name" : "Имя",
"Size" : "Размер",
"Modified" : "Изменён",
@@ -71,7 +63,7 @@
"_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
"View in folder" : "Посмотреть в каталоге",
"Path" : "Путь",
- "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"],
+ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Favorited" : "Избранное",
"Favorite" : "Избранное",
"Copy local link" : "Копировать локальную ссылку",
@@ -84,6 +76,25 @@
"You added {file} to your favorites" : "Вы добавили {file} в избранное",
"You removed {file} from your favorites" : "Вы удалили {file} из избранного",
"File changes" : "Файлы изменены",
+ "Created by {user}" : "Создано {user}",
+ "Changed by {user}" : "Изменено {user}",
+ "Deleted by {user}" : "Удалено {user}",
+ "Restored by {user}" : "Восстановлено {user}",
+ "Renamed by {user}" : "Переименовано {user}",
+ "Moved by {user}" : "Перемещено {user}",
+ "You created {file}" : "Вы создали {file}",
+ "{user} created {file}" : "{user} создал {file}",
+ "{file} was created in a public folder" : "{file} создан в общем каталоге",
+ "You changed {file}" : "Вы изменили {file}",
+ "{user} changed {file}" : "{user} изменил {file}",
+ "You deleted {file}" : "Вы удалили {file}",
+ "{user} deleted {file}" : "{user} удалил {file}",
+ "You restored {file}" : "Вы восстановили {file}",
+ "{user} restored {file}" : "{user} восстановил {file}",
+ "You renamed {oldfile} to {newfile}" : "Вы переименовали {oldfile} в {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} переименовал {oldfile} в {newfile}",
+ "You moved {oldfile} to {newfile}" : "Вы переместили {oldfile} в {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} переместил {oldfile} в {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл был добавлен или удален из вашего <strong>избранного</strong>",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фаил или каталог <strong>изменён</strong> или <strong>переименован</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
@@ -135,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Полный размер файла {size1} превышает лимит по загрузке {size2}",
"Error uploading file \"{fileName}\": {message}" : "Ошибка загрузки файла \"{fileName}\": {message}",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Осталось часов {hours}:{minutes}:{seconds} {plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}ч",
+ "{minutes}:{seconds} minute{plural_s} left" : "Осталось минут {minutes}:{seconds} {plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}м",
+ "{seconds} second{plural_s} left" : "Осталось секунд {seconds} {plural_s}",
+ "{seconds}s" : "{seconds}с",
+ "Any moment now..." : "В любой момент...",
+ "Soon..." : "Скоро...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'",
"Local link" : "Локальная ссылка",
"{newname} already exists" : "{newname} уже существует",
@@ -152,8 +172,6 @@
"%2$s restored %1$s" : "%2$s восстановил %1$s",
"Changed by %2$s" : "Изменено %2$s",
"Deleted by %2$s" : "Удалено %2$s",
- "Restored by %2$s" : "Восстановлено %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">получения доступа к вашим файлам через WebDAV</a>",
- "Cancel upload" : "Отменить загрузку"
+ "Restored by %2$s" : "Восстановлено %2$s"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sk_SK.js b/apps/files/l10n/sk_SK.js
index db8c505b02b..370bb0626f5 100644
--- a/apps/files/l10n/sk_SK.js
+++ b/apps/files/l10n/sk_SK.js
@@ -1,56 +1,58 @@
OC.L10N.register(
"files",
{
- "Storage not available" : "Úložisko nie je dostupné",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage invalid" : "Úložisko nie je platné",
"Unknown error" : "Neznáma chyba",
- "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.",
- "Invalid Token" : "Neplatný token",
- "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba",
- "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini:",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.",
- "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne",
- "No file was uploaded" : "Žiadny súbor nebol uložený",
- "Missing a temporary folder" : "Chýba dočasný priečinok",
- "Failed to write to disk" : "Zápis na disk sa nepodaril",
- "Not enough storage available" : "Nedostatok dostupného úložného priestoru",
- "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.",
- "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor",
- "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.",
- "Invalid directory." : "Neplatný priečinok.",
- "Files" : "Súbory",
"All files" : "Všetky súbory",
+ "Recent" : "Nedávne",
+ "File could not be found" : "Súbor nie je možné nájsť",
"Home" : "Domov",
"Close" : "Zavrieť",
"Favorites" : "Obľúbené",
+ "Could not create folder \"{dir}\"" : "Nemožno vytvoriť priečinok \"{dir}\"",
"Upload cancelled." : "Odosielanie je zrušené.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nemožno nahrať súbor {filename}, pretože je to priečinok, alebo má 0 bitov",
- "Total file size {size1} exceeds upload limit {size2}" : "Celková veľkosť súboru {size1} prekračuje upload limit {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nie je dostatok voľného miesta, chcete nahrať {size1} ale k dispozíciji je len {size2}",
- "Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
+ "Target folder \"{dir}\" does not exist any more" : "Cieľový priečinok \"{dir}\" už neexistuje",
+ "Not enough free space" : "Nedostatok voľného miesta",
"Uploading..." : "Nahrávam...",
"..." : "...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
"Actions" : "Akcie",
"Download" : "Sťahovanie",
"Rename" : "Premenovať",
+ "Move" : "Presunúť",
+ "Target folder" : "Cieľový priečinok",
"Delete" : "Zmazať",
"Disconnect storage" : "Odpojiť úložisko",
- "Unshare" : "Zrušiť zdieľanie",
+ "Unshare" : "Zneprístupniť",
+ "Could not load info for file \"{file}\"" : "Nebolo možné načítať informácie súboru \"{file}\"",
+ "Files" : "Súbory",
"Details" : "Podrobnosti",
"Select" : "Vybrať",
"Pending" : "Čaká",
"Unable to determine date" : "Nemožno určiť dátum",
"This operation is forbidden" : "Táto operácia je zakázaná",
"This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu",
- "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
+ "Could not move \"{file}\", target exists" : "Nie je možné presunúť \"{file}\", cieľ už existuje",
+ "Could not move \"{file}\"" : "Nie je možné presunúť \"{file}\"",
+ "{newName} already exists" : "{newName} už existuje",
+ "Could not rename \"{fileName}\", it does not exist any more" : "Nie je možné premenovať \"{fileName}\", cieľ už neexistuje",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Názov \"{targetName}\" je už použitý v priečinku \"{dir}\". Zvoľte prosím iný názov.",
+ "Could not rename \"{fileName}\"" : "Nie je možné premenovať \"{file}\"",
+ "Could not create file \"{file}\"" : "Nie je možné vytvoriť súbor \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "Nie je možné vytvoriť súbor \"{file}\" lebo už existuje",
+ "Could not create folder \"{dir}\" because it already exists" : "Nie je možné vytvoriť priečinok \"{dir}\" lebo už existuje",
+ "Error deleting file \"{fileName}\"." : "Chyba pri mazaní súboru \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch pre '{tag}{filter}{endtag}'",
"Name" : "Názov",
"Size" : "Veľkosť",
"Modified" : "Upravené",
"_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov"],
"_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov"],
"{dirs} and {files}" : "{dirs} a {files}",
+ "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých"],
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"],
"New" : "Nový",
@@ -61,36 +63,57 @@ OC.L10N.register(
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úloisko používateľa {owner} je takmer plné ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložisko je takmer plné ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"],
+ "View in folder" : "Zobraziť v priečinku",
"Path" : "Cesta",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"],
"Favorited" : "Pridané k obľúbeným",
"Favorite" : "Obľúbené",
+ "Copy local link" : "Kopíruj lokálny odkaz",
"Folder" : "Priečinok",
"New folder" : "Nový priečinok",
- "{newname} already exists" : "{newname} už existuje",
"Upload" : "Nahrať",
"An error occurred while trying to update the tags" : "Pri pokuse o aktualizáciu štítkov došlo k chybe",
+ "Added to favorites" : "Pridané do obľúbených",
+ "Removed from favorites" : "Odstránené z obľúbených",
+ "You added {file} to your favorites" : "Pridali ste {file} do vašich obľúbených",
+ "You removed {file} from your favorites" : "Odstránili ste {file} z vašich obľúbených",
+ "File changes" : "Zmeny v súboroch",
+ "Created by {user}" : "Vytvorené užívateľom {user}",
+ "Changed by {user}" : "Zmenené užívateľom {user}",
+ "Deleted by {user}" : "Zmazané užívateľom {user}",
+ "Restored by {user}" : "Obnovené užívateľom {user}",
+ "Renamed by {user}" : "Premenované užívateľom {user}",
+ "Moved by {user}" : "Presunuté užívateľom {user}",
+ "You created {file}" : "Vytvorili ste súbor {file}",
+ "{user} created {file}" : "{user} vytvoril súbor {file}",
+ "{file} was created in a public folder" : "{file} bol vytvorený vo verejnom priečinku",
+ "You changed {file}" : "Zmenili ste {file}",
+ "{user} changed {file}" : "{user} zmenil {file}",
+ "You deleted {file}" : "Zmazali ste {file}",
+ "{user} deleted {file}" : "{user} zmazal {file}",
+ "You restored {file}" : "Obnovili ste {file}",
+ "{user} restored {file}" : "{user} obnovil {file}",
+ "You renamed {oldfile} to {newfile}" : "Premenovali ste {oldfile} na {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} premenoval {oldfile} na {newfile}",
+ "You moved {oldfile} to {newfile}" : "Presunuli ste {oldfile} do {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} presunul {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Súbor bol pridaný alebo odstránený z vašich <strong>obľúbených</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong> alebo <strong>premenovaný</strong>",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
- "A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše <strong>obľúbené súbory</strong> <em>(Len streamy)</em>",
- "A file or folder has been <strong>deleted</strong>" : "Súbor alebo priečinok bol <strong>odstránený</strong>",
- "A file or folder has been <strong>restored</strong>" : "Súbor alebo priečinok bol <strong>obnovený</strong>",
- "You created %1$s" : "Vytvorili ste %1$s",
- "%2$s created %1$s" : "%2$s vytvoril %1$s",
- "%1$s was created in a public folder" : "%1$s vytvorený vo verejnom priečinku",
- "You changed %1$s" : "Zmenili ste %1$s",
- "%2$s changed %1$s" : "%2$s zmenil %1$s",
- "You deleted %1$s" : "Bol zmazaný %1$s",
- "%2$s deleted %1$s" : "%2$s zmazal %1$s",
- "You restored %1$s" : "Bol obnovený %1$s",
- "%2$s restored %1$s" : "%2$s obnovil %1$s",
+ "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"Upload (max. %s)" : "Nahrať (max. %s)",
"File handling" : "Nastavenie správania sa k súborom",
"Maximum upload size" : "Maximálna veľkosť odosielaného súboru",
"max. possible: " : "najväčšie možné:",
"Save" : "Uložiť",
+ "With PHP-FPM it might take 5 minutes for changes to be applied." : "Použitím PHP-FPM môžu byť zmeny vykonané do 5 minút.",
+ "Missing permissions to edit from here." : "Chýbajú orávnenia pre možnosť tu upravovať.",
"Settings" : "Nastavenia",
+ "Show hidden files" : "Zobraziť skryté súbory",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>",
"No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
"No entries found in this folder" : "V tomto priečinku nebolo nič nájdené",
@@ -99,7 +122,58 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Súbory, ktoré sa snažíte nahrať, presahujú maximálnu veľkosť pre nahratie súborov na tento server.",
"No favorites" : "Žiadne obľúbené",
"Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu",
+ "Shared with you" : "Vám sprístupnené",
+ "Shared with others" : "Sprístupnené ostatným",
+ "Shared by link" : "Sprístupnené prostredníctvom odkazu",
+ "Tags" : "Štítky",
+ "Deleted files" : "Zmazané súbory",
"Text file" : "Textový súbor",
- "New text file.txt" : "Nový text file.txt"
+ "New text file.txt" : "Nový text file.txt",
+ "Storage not available" : "Úložisko nie je dostupné",
+ "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.",
+ "Invalid Token" : "Neplatný token",
+ "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba",
+ "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný",
+ "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini:",
+ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.",
+ "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne",
+ "No file was uploaded" : "Žiadny súbor nebol uložený",
+ "Missing a temporary folder" : "Chýba dočasný priečinok",
+ "Failed to write to disk" : "Zápis na disk sa nepodaril",
+ "Not enough storage available" : "Nedostatok dostupného úložného priestoru",
+ "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.",
+ "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor",
+ "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.",
+ "Invalid directory." : "Neplatný priečinok.",
+ "Total file size {size1} exceeds upload limit {size2}" : "Celková veľkosť súboru {size1} prekračuje upload limit {size2}",
+ "Error uploading file \"{fileName}\": {message}" : "Chyba pri nahrávaní súboru \"{fileName}\": {message}",
+ "Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zostáva {hours}:{minutes}:{seconds} hodín",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "zostáva {minutes}:{seconds} minút",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "zostáva {seconds} sekúnd",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Už každú chvíľu…",
+ "Soon..." : "Čoskoro…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
+ "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
+ "Local link" : "Lokálny odkaz",
+ "{newname} already exists" : "{newname} už existuje",
+ "A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Súbor alebo priečinok bol <strong>odstránený</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Súbor alebo priečinok bol <strong>obnovený</strong>",
+ "You created %1$s" : "Vytvorili ste %1$s",
+ "%2$s created %1$s" : "%2$s vytvoril %1$s",
+ "%1$s was created in a public folder" : "%1$s vytvorený vo verejnom priečinku",
+ "You changed %1$s" : "Zmenili ste %1$s",
+ "%2$s changed %1$s" : "%2$s zmenil %1$s",
+ "You deleted %1$s" : "Bol zmazaný %1$s",
+ "%2$s deleted %1$s" : "%2$s zmazal %1$s",
+ "You restored %1$s" : "Bol obnovený %1$s",
+ "%2$s restored %1$s" : "%2$s obnovil %1$s",
+ "Changed by %2$s" : "Zmenené %2$s",
+ "Deleted by %2$s" : "Zmazané %2$s",
+ "Restored by %2$s" : "Obnovené %2$s"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files/l10n/sk_SK.json b/apps/files/l10n/sk_SK.json
index 1e1075ba958..9a548bdc382 100644
--- a/apps/files/l10n/sk_SK.json
+++ b/apps/files/l10n/sk_SK.json
@@ -1,54 +1,56 @@
{ "translations": {
- "Storage not available" : "Úložisko nie je dostupné",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage invalid" : "Úložisko nie je platné",
"Unknown error" : "Neznáma chyba",
- "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.",
- "Invalid Token" : "Neplatný token",
- "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba",
- "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini:",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.",
- "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne",
- "No file was uploaded" : "Žiadny súbor nebol uložený",
- "Missing a temporary folder" : "Chýba dočasný priečinok",
- "Failed to write to disk" : "Zápis na disk sa nepodaril",
- "Not enough storage available" : "Nedostatok dostupného úložného priestoru",
- "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.",
- "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor",
- "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.",
- "Invalid directory." : "Neplatný priečinok.",
- "Files" : "Súbory",
"All files" : "Všetky súbory",
+ "Recent" : "Nedávne",
+ "File could not be found" : "Súbor nie je možné nájsť",
"Home" : "Domov",
"Close" : "Zavrieť",
"Favorites" : "Obľúbené",
+ "Could not create folder \"{dir}\"" : "Nemožno vytvoriť priečinok \"{dir}\"",
"Upload cancelled." : "Odosielanie je zrušené.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nemožno nahrať súbor {filename}, pretože je to priečinok, alebo má 0 bitov",
- "Total file size {size1} exceeds upload limit {size2}" : "Celková veľkosť súboru {size1} prekračuje upload limit {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nie je dostatok voľného miesta, chcete nahrať {size1} ale k dispozíciji je len {size2}",
- "Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
+ "Target folder \"{dir}\" does not exist any more" : "Cieľový priečinok \"{dir}\" už neexistuje",
+ "Not enough free space" : "Nedostatok voľného miesta",
"Uploading..." : "Nahrávam...",
"..." : "...",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})",
"Actions" : "Akcie",
"Download" : "Sťahovanie",
"Rename" : "Premenovať",
+ "Move" : "Presunúť",
+ "Target folder" : "Cieľový priečinok",
"Delete" : "Zmazať",
"Disconnect storage" : "Odpojiť úložisko",
- "Unshare" : "Zrušiť zdieľanie",
+ "Unshare" : "Zneprístupniť",
+ "Could not load info for file \"{file}\"" : "Nebolo možné načítať informácie súboru \"{file}\"",
+ "Files" : "Súbory",
"Details" : "Podrobnosti",
"Select" : "Vybrať",
"Pending" : "Čaká",
"Unable to determine date" : "Nemožno určiť dátum",
"This operation is forbidden" : "Táto operácia je zakázaná",
"This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu",
- "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
+ "Could not move \"{file}\", target exists" : "Nie je možné presunúť \"{file}\", cieľ už existuje",
+ "Could not move \"{file}\"" : "Nie je možné presunúť \"{file}\"",
+ "{newName} already exists" : "{newName} už existuje",
+ "Could not rename \"{fileName}\", it does not exist any more" : "Nie je možné premenovať \"{fileName}\", cieľ už neexistuje",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Názov \"{targetName}\" je už použitý v priečinku \"{dir}\". Zvoľte prosím iný názov.",
+ "Could not rename \"{fileName}\"" : "Nie je možné premenovať \"{file}\"",
+ "Could not create file \"{file}\"" : "Nie je možné vytvoriť súbor \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "Nie je možné vytvoriť súbor \"{file}\" lebo už existuje",
+ "Could not create folder \"{dir}\" because it already exists" : "Nie je možné vytvoriť priečinok \"{dir}\" lebo už existuje",
+ "Error deleting file \"{fileName}\"." : "Chyba pri mazaní súboru \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch pre '{tag}{filter}{endtag}'",
"Name" : "Názov",
"Size" : "Veľkosť",
"Modified" : "Upravené",
"_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov"],
"_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov"],
"{dirs} and {files}" : "{dirs} a {files}",
+ "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých"],
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"],
"New" : "Nový",
@@ -59,36 +61,57 @@
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úloisko používateľa {owner} je takmer plné ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložisko je takmer plné ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"],
+ "View in folder" : "Zobraziť v priečinku",
"Path" : "Cesta",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"],
"Favorited" : "Pridané k obľúbeným",
"Favorite" : "Obľúbené",
+ "Copy local link" : "Kopíruj lokálny odkaz",
"Folder" : "Priečinok",
"New folder" : "Nový priečinok",
- "{newname} already exists" : "{newname} už existuje",
"Upload" : "Nahrať",
"An error occurred while trying to update the tags" : "Pri pokuse o aktualizáciu štítkov došlo k chybe",
+ "Added to favorites" : "Pridané do obľúbených",
+ "Removed from favorites" : "Odstránené z obľúbených",
+ "You added {file} to your favorites" : "Pridali ste {file} do vašich obľúbených",
+ "You removed {file} from your favorites" : "Odstránili ste {file} z vašich obľúbených",
+ "File changes" : "Zmeny v súboroch",
+ "Created by {user}" : "Vytvorené užívateľom {user}",
+ "Changed by {user}" : "Zmenené užívateľom {user}",
+ "Deleted by {user}" : "Zmazané užívateľom {user}",
+ "Restored by {user}" : "Obnovené užívateľom {user}",
+ "Renamed by {user}" : "Premenované užívateľom {user}",
+ "Moved by {user}" : "Presunuté užívateľom {user}",
+ "You created {file}" : "Vytvorili ste súbor {file}",
+ "{user} created {file}" : "{user} vytvoril súbor {file}",
+ "{file} was created in a public folder" : "{file} bol vytvorený vo verejnom priečinku",
+ "You changed {file}" : "Zmenili ste {file}",
+ "{user} changed {file}" : "{user} zmenil {file}",
+ "You deleted {file}" : "Zmazali ste {file}",
+ "{user} deleted {file}" : "{user} zmazal {file}",
+ "You restored {file}" : "Obnovili ste {file}",
+ "{user} restored {file}" : "{user} obnovil {file}",
+ "You renamed {oldfile} to {newfile}" : "Premenovali ste {oldfile} na {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} premenoval {oldfile} na {newfile}",
+ "You moved {oldfile} to {newfile}" : "Presunuli ste {oldfile} do {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} presunul {oldfile} do {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Súbor bol pridaný alebo odstránený z vašich <strong>obľúbených</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong> alebo <strong>premenovaný</strong>",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
- "A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše <strong>obľúbené súbory</strong> <em>(Len streamy)</em>",
- "A file or folder has been <strong>deleted</strong>" : "Súbor alebo priečinok bol <strong>odstránený</strong>",
- "A file or folder has been <strong>restored</strong>" : "Súbor alebo priečinok bol <strong>obnovený</strong>",
- "You created %1$s" : "Vytvorili ste %1$s",
- "%2$s created %1$s" : "%2$s vytvoril %1$s",
- "%1$s was created in a public folder" : "%1$s vytvorený vo verejnom priečinku",
- "You changed %1$s" : "Zmenili ste %1$s",
- "%2$s changed %1$s" : "%2$s zmenil %1$s",
- "You deleted %1$s" : "Bol zmazaný %1$s",
- "%2$s deleted %1$s" : "%2$s zmazal %1$s",
- "You restored %1$s" : "Bol obnovený %1$s",
- "%2$s restored %1$s" : "%2$s obnovil %1$s",
+ "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>",
"Upload (max. %s)" : "Nahrať (max. %s)",
"File handling" : "Nastavenie správania sa k súborom",
"Maximum upload size" : "Maximálna veľkosť odosielaného súboru",
"max. possible: " : "najväčšie možné:",
"Save" : "Uložiť",
+ "With PHP-FPM it might take 5 minutes for changes to be applied." : "Použitím PHP-FPM môžu byť zmeny vykonané do 5 minút.",
+ "Missing permissions to edit from here." : "Chýbajú orávnenia pre možnosť tu upravovať.",
"Settings" : "Nastavenia",
+ "Show hidden files" : "Zobraziť skryté súbory",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>",
"No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
"No entries found in this folder" : "V tomto priečinku nebolo nič nájdené",
@@ -97,7 +120,58 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Súbory, ktoré sa snažíte nahrať, presahujú maximálnu veľkosť pre nahratie súborov na tento server.",
"No favorites" : "Žiadne obľúbené",
"Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu",
+ "Shared with you" : "Vám sprístupnené",
+ "Shared with others" : "Sprístupnené ostatným",
+ "Shared by link" : "Sprístupnené prostredníctvom odkazu",
+ "Tags" : "Štítky",
+ "Deleted files" : "Zmazané súbory",
"Text file" : "Textový súbor",
- "New text file.txt" : "Nový text file.txt"
+ "New text file.txt" : "Nový text file.txt",
+ "Storage not available" : "Úložisko nie je dostupné",
+ "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.",
+ "Invalid Token" : "Neplatný token",
+ "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba",
+ "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný",
+ "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini:",
+ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.",
+ "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne",
+ "No file was uploaded" : "Žiadny súbor nebol uložený",
+ "Missing a temporary folder" : "Chýba dočasný priečinok",
+ "Failed to write to disk" : "Zápis na disk sa nepodaril",
+ "Not enough storage available" : "Nedostatok dostupného úložného priestoru",
+ "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.",
+ "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor",
+ "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.",
+ "Invalid directory." : "Neplatný priečinok.",
+ "Total file size {size1} exceeds upload limit {size2}" : "Celková veľkosť súboru {size1} prekračuje upload limit {size2}",
+ "Error uploading file \"{fileName}\": {message}" : "Chyba pri nahrávaní súboru \"{fileName}\": {message}",
+ "Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "zostáva {hours}:{minutes}:{seconds} hodín",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "zostáva {minutes}:{seconds} minút",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "zostáva {seconds} sekúnd",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Už každú chvíľu…",
+ "Soon..." : "Čoskoro…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
+ "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
+ "Local link" : "Lokálny odkaz",
+ "{newname} already exists" : "{newname} už existuje",
+ "A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "Súbor alebo priečinok bol <strong>odstránený</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Súbor alebo priečinok bol <strong>obnovený</strong>",
+ "You created %1$s" : "Vytvorili ste %1$s",
+ "%2$s created %1$s" : "%2$s vytvoril %1$s",
+ "%1$s was created in a public folder" : "%1$s vytvorený vo verejnom priečinku",
+ "You changed %1$s" : "Zmenili ste %1$s",
+ "%2$s changed %1$s" : "%2$s zmenil %1$s",
+ "You deleted %1$s" : "Bol zmazaný %1$s",
+ "%2$s deleted %1$s" : "%2$s zmazal %1$s",
+ "You restored %1$s" : "Bol obnovený %1$s",
+ "%2$s restored %1$s" : "%2$s obnovil %1$s",
+ "Changed by %2$s" : "Zmenené %2$s",
+ "Deleted by %2$s" : "Zmazané %2$s",
+ "Restored by %2$s" : "Obnovené %2$s"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 5c5f6fdcce8..eb4df5a6ef2 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage invalid" : "Določen prostor ni veljaven",
"Unknown error" : "Neznana napaka",
- "Files" : "Datoteke",
"All files" : "Vse datoteke",
"Recent" : "Nedavno",
"File could not be found" : "Datoteke ne najdem",
@@ -14,24 +14,17 @@ OC.L10N.register(
"Upload cancelled." : "Pošiljanje je preklicano.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Ni mogoče poslati datoteke {filename}, saj je to ali mapa ali pa je velikost datoteke 0 bajtov.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.",
+ "Not enough free space" : "Ni dovolj prostora",
"Uploading..." : "Poteka pošiljanje ...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}min",
- "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Vsak trenutek ...",
- "Soon..." : "Kmalu",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} od {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"Actions" : "Dejanja",
"Download" : "Prejmi",
"Rename" : "Preimenuj",
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
+ "Files" : "Datoteke",
"Details" : "Podrobnosti",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
@@ -116,6 +109,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Skupna velikost {size1} presega omejitev velikosti {size2}",
"Error uploading file \"{fileName}\": {message}" : "Napaka pošiljanja datoteke \"{fileName}\": {message}",
"Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}min",
+ "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Vsak trenutek ...",
+ "Soon..." : "Kmalu",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'",
"Local link" : "Krajevna povezava",
"{newname} already exists" : "{newname} že obstaja",
@@ -133,8 +135,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.",
"Changed by %2$s" : "Zadnja sprememba: %2$s",
"Deleted by %2$s" : "Izbrisano: %2$s",
- "Restored by %2$s" : "Obnovljeno: %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabi ta naslov za <a href=\"%s\" target=\"_blank\">dostop do tvojih datotek preko WebDAV</a>",
- "Cancel upload" : "Prekini nalaganje"
+ "Restored by %2$s" : "Obnovljeno: %2$s"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index efcd0118270..0297cd72860 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -1,7 +1,7 @@
{ "translations": {
+ "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage invalid" : "Določen prostor ni veljaven",
"Unknown error" : "Neznana napaka",
- "Files" : "Datoteke",
"All files" : "Vse datoteke",
"Recent" : "Nedavno",
"File could not be found" : "Datoteke ne najdem",
@@ -12,24 +12,17 @@
"Upload cancelled." : "Pošiljanje je preklicano.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Ni mogoče poslati datoteke {filename}, saj je to ali mapa ali pa je velikost datoteke 0 bajtov.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.",
+ "Not enough free space" : "Ni dovolj prostora",
"Uploading..." : "Poteka pošiljanje ...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}min",
- "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Vsak trenutek ...",
- "Soon..." : "Kmalu",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} od {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"Actions" : "Dejanja",
"Download" : "Prejmi",
"Rename" : "Preimenuj",
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
+ "Files" : "Datoteke",
"Details" : "Podrobnosti",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
@@ -114,6 +107,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Skupna velikost {size1} presega omejitev velikosti {size2}",
"Error uploading file \"{fileName}\": {message}" : "Napaka pošiljanja datoteke \"{fileName}\": {message}",
"Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}min",
+ "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Vsak trenutek ...",
+ "Soon..." : "Kmalu",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'",
"Local link" : "Krajevna povezava",
"{newname} already exists" : "{newname} že obstaja",
@@ -131,8 +133,6 @@
"%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.",
"Changed by %2$s" : "Zadnja sprememba: %2$s",
"Deleted by %2$s" : "Izbrisano: %2$s",
- "Restored by %2$s" : "Obnovljeno: %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabi ta naslov za <a href=\"%s\" target=\"_blank\">dostop do tvojih datotek preko WebDAV</a>",
- "Cancel upload" : "Prekini nalaganje"
+ "Restored by %2$s" : "Obnovljeno: %2$s"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index fc5f4b3f9e9..01945763ed4 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -1,11 +1,12 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
"Storage invalid" : "Depozitë e pavlefshme",
"Unknown error" : "Gabim i panjohur",
- "Files" : "Kartela",
- "All files" : "Krejt kartelat",
- "File could not be found" : "Kartela s’u gjet dot",
+ "All files" : "Të gjithë skedarët",
+ "Recent" : "Të fundit",
+ "File could not be found" : "Skedari s’u gjet dot",
"Home" : "Kreu",
"Close" : "Mbylle",
"Favorites" : "Të parapëlqyera",
@@ -13,24 +14,21 @@ OC.L10N.register(
"Upload cancelled." : "Ngarkimi u anulua.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "S’arrihet të ngarkohet {filename}, ngaqë është drejtori ose ka 0 bajte",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nuk ka hapësirë të mjaftueshme, po ngarkoni {size1}, por ka vetëm {size2} të lira",
+ "Target folder \"{dir}\" does not exist any more" : "Dosja e synuar \"{dir}\" nuk ekziston më",
+ "Not enough free space" : "Nuk ka hapsirë të mjaftueshme të lirë",
"Uploading..." : "Po ngarkohet...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{orë}:{minuta}:{sekonda} orë{shumë_s} majtas",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minuta}:{sekonda} minuta{shumë_s} majtas",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{sekonda} sekonda{shumë_s} majtas",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Në çdo çast tani…",
- "Soon..." : "Së shpejti…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} nga {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i kartelës është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
"Actions" : "Veprime",
"Download" : "Shkarkoje",
"Rename" : "Riemërtojeni",
+ "Move" : "Lëvize",
+ "Target folder" : "Dosja e synuar",
"Delete" : "Fshije",
"Disconnect storage" : "Shkëpute depozitën",
"Unshare" : "Hiqe ndarjen",
+ "Could not load info for file \"{file}\"" : "Nuk mund të ngarkohet informacioni për skedarin \"{file}\"",
+ "Files" : "Skedar",
"Details" : "Hollësi",
"Select" : "Përzgjidhe",
"Pending" : "Në pritje",
@@ -47,32 +45,64 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë",
"Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë",
"Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Asnjë rezultat kërkimi në dosjet e tjera për '{tag}{filter}{endtag}'",
"Name" : "Emër",
"Size" : "Madhësi",
"Modified" : "Ndryshuar më",
"_%n folder_::_%n folders_" : ["%n dosje","%n dosje"],
- "_%n file_::_%n files_" : ["%n kartelë","%n kartela"],
+ "_%n file_::_%n files_" : ["%n kartelë","%n skedar"],
"{dirs} and {files}" : "{dirs} dhe {files}",
+ "_including %n hidden_::_including %n hidden_" : ["Përfshirë %n të fshehura","Përfshirë %n të fshehura"],
"You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu",
- "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n kartela"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n skedar"],
"New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.",
"File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose njëkohësohen më!",
- "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose njëkohësohen më!",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
+ "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"],
- "Path" : "Shteg",
+ "View in folder" : "Shikoje në dosje",
+ "Path" : "Rrugë",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"],
"Favorited" : "U kalua e parapëlqyer",
"Favorite" : "E parapëlqyer",
+ "Copy local link" : "Kopjo lidhjen lokale",
"Folder" : "Dosje",
"New folder" : "Dosje e re",
"Upload" : "Ngarkoje",
"An error occurred while trying to update the tags" : "Ndodhi një gabim teksa provohej të përditësoheshin etiketat",
+ "Added to favorites" : "U shtua te të parapëlqyerat",
+ "Removed from favorites" : "U hoq nga të parapëlqyerat",
+ "You added {file} to your favorites" : "Ju shtuat {file} te të parapëlqyerat",
+ "You removed {file} from your favorites" : "Ju hoqët {file} nga të parapëlqyerat",
+ "File changes" : "Ndryshimet në skedar",
+ "Created by {user}" : "U krijua nga {user}",
+ "Changed by {user}" : "U ndryshua nga {user}",
+ "Deleted by {user}" : "U fshi nga {user}",
+ "Restored by {user}" : "U rikthye nga {user}",
+ "Renamed by {user}" : "U riemërua nga {user}",
+ "Moved by {user}" : "U ndryshua nga {user}",
+ "You created {file}" : "Ju krijuat {file}",
+ "{user} created {file}" : "{user} krijoj {file}",
+ "{file} was created in a public folder" : "{file} u krijua në një folder publik",
+ "You changed {file}" : "Ju ndryshuat {file}",
+ "{user} changed {file}" : "{user} ndryshoj {file}",
+ "You deleted {file}" : "Ju fshit {file}",
+ "{user} deleted {file}" : "{user} fshiu {file}",
+ "You restored {file}" : "Ju rikthyet {file}",
+ "{user} restored {file}" : "{user} riktheu {file}",
+ "You renamed {oldfile} to {newfile}" : "Ju riemëruat {oldfile} në {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} riemëruat {oldfile} në {newfile}",
+ "You moved {oldfile} to {newfile}" : "Ju lëvizët {oldfile} në {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} lëvizi {oldfile} në {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
+ "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
"Upload (max. %s)" : "Ngarkim (max. %s)",
"File handling" : "Trajtim kartele",
"Maximum upload size" : "Madhësi maksimale ngarkimi",
@@ -92,6 +122,11 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
"No favorites" : "Pa të parapëlqyera",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera",
+ "Shared with you" : "E ndarë me ju",
+ "Shared with others" : "E ndarë me të tjerët",
+ "Shared by link" : "E ndarë me lidhje",
+ "Tags" : "Etiketë",
+ "Deleted files" : "Skedar të fshirë",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
"Storage not available" : "Pa depozitë gati",
@@ -113,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Madhësia gjithsej e kartelës {size1} e tejkalon kufirin {size2} për ngarkimet",
"Error uploading file \"{fileName}\": {message}" : "Gabim në ngarkimin e kartelës \"{fileName}\": {message}",
"Could not get result from server." : "S’mori dot përfundime nga shërbyesi.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{orë}:{minuta}:{sekonda} orë{shumë_s} majtas",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minuta}:{sekonda} minuta{shumë_s} majtas",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{sekonda} sekonda{shumë_s} majtas",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Në çdo çast tani…",
+ "Soon..." : "Së shpejti…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
"No entries in this folder match '{filter}'" : "Në këtë dosje s’ka zëra me përputhje me '{filter}'",
"Local link" : "Lidhje vendore",
"{newname} already exists" : "Ka tashmë një {newname}",
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index b7c2dab7bf3..03b0d305d4e 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -1,9 +1,10 @@
{ "translations": {
+ "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
"Storage invalid" : "Depozitë e pavlefshme",
"Unknown error" : "Gabim i panjohur",
- "Files" : "Kartela",
- "All files" : "Krejt kartelat",
- "File could not be found" : "Kartela s’u gjet dot",
+ "All files" : "Të gjithë skedarët",
+ "Recent" : "Të fundit",
+ "File could not be found" : "Skedari s’u gjet dot",
"Home" : "Kreu",
"Close" : "Mbylle",
"Favorites" : "Të parapëlqyera",
@@ -11,24 +12,21 @@
"Upload cancelled." : "Ngarkimi u anulua.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "S’arrihet të ngarkohet {filename}, ngaqë është drejtori ose ka 0 bajte",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nuk ka hapësirë të mjaftueshme, po ngarkoni {size1}, por ka vetëm {size2} të lira",
+ "Target folder \"{dir}\" does not exist any more" : "Dosja e synuar \"{dir}\" nuk ekziston më",
+ "Not enough free space" : "Nuk ka hapsirë të mjaftueshme të lirë",
"Uploading..." : "Po ngarkohet...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{orë}:{minuta}:{sekonda} orë{shumë_s} majtas",
- "{hours}:{minutes}h" : "{hours}:{minutes}h",
- "{minutes}:{seconds} minute{plural_s} left" : "{minuta}:{sekonda} minuta{shumë_s} majtas",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
- "{seconds} second{plural_s} left" : "{sekonda} sekonda{shumë_s} majtas",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Në çdo çast tani…",
- "Soon..." : "Së shpejti…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} nga {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i kartelës është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
"Actions" : "Veprime",
"Download" : "Shkarkoje",
"Rename" : "Riemërtojeni",
+ "Move" : "Lëvize",
+ "Target folder" : "Dosja e synuar",
"Delete" : "Fshije",
"Disconnect storage" : "Shkëpute depozitën",
"Unshare" : "Hiqe ndarjen",
+ "Could not load info for file \"{file}\"" : "Nuk mund të ngarkohet informacioni për skedarin \"{file}\"",
+ "Files" : "Skedar",
"Details" : "Hollësi",
"Select" : "Përzgjidhe",
"Pending" : "Në pritje",
@@ -45,32 +43,64 @@
"Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë",
"Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë",
"Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Asnjë rezultat kërkimi në dosjet e tjera për '{tag}{filter}{endtag}'",
"Name" : "Emër",
"Size" : "Madhësi",
"Modified" : "Ndryshuar më",
"_%n folder_::_%n folders_" : ["%n dosje","%n dosje"],
- "_%n file_::_%n files_" : ["%n kartelë","%n kartela"],
+ "_%n file_::_%n files_" : ["%n kartelë","%n skedar"],
"{dirs} and {files}" : "{dirs} dhe {files}",
+ "_including %n hidden_::_including %n hidden_" : ["Përfshirë %n të fshehura","Përfshirë %n të fshehura"],
"You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu",
- "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n kartela"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n skedar"],
"New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.",
"File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose njëkohësohen më!",
- "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose njëkohësohen më!",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
+ "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"],
- "Path" : "Shteg",
+ "View in folder" : "Shikoje në dosje",
+ "Path" : "Rrugë",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"],
"Favorited" : "U kalua e parapëlqyer",
"Favorite" : "E parapëlqyer",
+ "Copy local link" : "Kopjo lidhjen lokale",
"Folder" : "Dosje",
"New folder" : "Dosje e re",
"Upload" : "Ngarkoje",
"An error occurred while trying to update the tags" : "Ndodhi një gabim teksa provohej të përditësoheshin etiketat",
+ "Added to favorites" : "U shtua te të parapëlqyerat",
+ "Removed from favorites" : "U hoq nga të parapëlqyerat",
+ "You added {file} to your favorites" : "Ju shtuat {file} te të parapëlqyerat",
+ "You removed {file} from your favorites" : "Ju hoqët {file} nga të parapëlqyerat",
+ "File changes" : "Ndryshimet në skedar",
+ "Created by {user}" : "U krijua nga {user}",
+ "Changed by {user}" : "U ndryshua nga {user}",
+ "Deleted by {user}" : "U fshi nga {user}",
+ "Restored by {user}" : "U rikthye nga {user}",
+ "Renamed by {user}" : "U riemërua nga {user}",
+ "Moved by {user}" : "U ndryshua nga {user}",
+ "You created {file}" : "Ju krijuat {file}",
+ "{user} created {file}" : "{user} krijoj {file}",
+ "{file} was created in a public folder" : "{file} u krijua në një folder publik",
+ "You changed {file}" : "Ju ndryshuat {file}",
+ "{user} changed {file}" : "{user} ndryshoj {file}",
+ "You deleted {file}" : "Ju fshit {file}",
+ "{user} deleted {file}" : "{user} fshiu {file}",
+ "You restored {file}" : "Ju rikthyet {file}",
+ "{user} restored {file}" : "{user} riktheu {file}",
+ "You renamed {oldfile} to {newfile}" : "Ju riemëruat {oldfile} në {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} riemëruat {oldfile} në {newfile}",
+ "You moved {oldfile} to {newfile}" : "Ju lëvizët {oldfile} në {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} lëvizi {oldfile} në {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
+ "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "Një skedar ose dosje e re është <strong>rikthyer</strong>",
"Upload (max. %s)" : "Ngarkim (max. %s)",
"File handling" : "Trajtim kartele",
"Maximum upload size" : "Madhësi maksimale ngarkimi",
@@ -90,6 +120,11 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
"No favorites" : "Pa të parapëlqyera",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera",
+ "Shared with you" : "E ndarë me ju",
+ "Shared with others" : "E ndarë me të tjerët",
+ "Shared by link" : "E ndarë me lidhje",
+ "Tags" : "Etiketë",
+ "Deleted files" : "Skedar të fshirë",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
"Storage not available" : "Pa depozitë gati",
@@ -111,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Madhësia gjithsej e kartelës {size1} e tejkalon kufirin {size2} për ngarkimet",
"Error uploading file \"{fileName}\": {message}" : "Gabim në ngarkimin e kartelës \"{fileName}\": {message}",
"Could not get result from server." : "S’mori dot përfundime nga shërbyesi.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{orë}:{minuta}:{sekonda} orë{shumë_s} majtas",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minuta}:{sekonda} minuta{shumë_s} majtas",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{sekonda} sekonda{shumë_s} majtas",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Në çdo çast tani…",
+ "Soon..." : "Së shpejti…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.",
"No entries in this folder match '{filter}'" : "Në këtë dosje s’ka zëra me përputhje me '{filter}'",
"Local link" : "Lidhje vendore",
"{newname} already exists" : "Ka tashmë një {newname}",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 1e585242f46..001fc6b07b8 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -4,9 +4,8 @@ OC.L10N.register(
"Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
"Storage invalid" : "Lagring ogiltig",
"Unknown error" : "Okänt fel",
- "Files" : "Filer",
"All files" : "Alla filer",
- "Recent" : "Nyligen",
+ "Recent" : "Senaste",
"File could not be found" : "Fil kunde inte hittas",
"Home" : "Hem",
"Close" : "Stäng",
@@ -19,24 +18,17 @@ OC.L10N.register(
"Not enough free space" : "Inte tillräckligt med ledigt utrymme",
"Uploading..." : "Laddar upp...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timme/ar kvar",
- "{hours}:{minutes}h" : "{hours}:{minutes}",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minut(er) kvar",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}",
- "{seconds} second{plural_s} left" : "{seconds} sekund(er) kvar",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Alldeles strax...",
- "Soon..." : "Snart...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"Actions" : "Åtgärder",
- "Download" : "Ladda ner",
+ "Download" : "Ladda ned",
"Rename" : "Byt namn",
"Move" : "Flytta",
"Target folder" : "Målmapp",
"Delete" : "Radera",
"Disconnect storage" : "Koppla bort lagring",
"Unshare" : "Sluta dela",
+ "Could not load info for file \"{file}\"" : "Kunde inte ladda information för fil \"{file}\"",
+ "Files" : "Filer",
"Details" : "Detaljer",
"Select" : "Välj",
"Pending" : "Väntar",
@@ -76,11 +68,15 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Favorited" : "Favoriserad",
"Favorite" : "Favorit",
- "Copy local link" : "Kopiera lokal länk",
+ "Copy local link" : "Kopiera den lokala länken",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
"Upload" : "Ladda upp",
"An error occurred while trying to update the tags" : "Ett fel uppstod när uppdatera taggarna",
+ "Added to favorites" : "Lades till i favoriter",
+ "Removed from favorites" : "Togs bort från favoriter",
+ "You added {file} to your favorites" : "Du la till {file} till dina favoriter",
+ "You removed {file} from your favorites" : "Du tog bort {file} från dina favoriter",
"File changes" : "Filändringar",
"Created by {user}" : "Skapad av {user}",
"Changed by {user}" : "Ändrad av {user}",
@@ -90,7 +86,7 @@ OC.L10N.register(
"Moved by {user}" : "Flyttad av {user}",
"You created {file}" : "Du skapade {file}",
"{user} created {file}" : "{user} skapade {file}",
- "{file} was created in a public folder" : "{file} skapades i en publik mapp",
+ "{file} was created in a public folder" : "{file} skapades i en offentlig mapp",
"You changed {file}" : "Du ändrade {file}",
"{user} changed {file}" : "{user} ändrade {file}",
"You deleted {file}" : "Du raderade {file}",
@@ -101,8 +97,12 @@ OC.L10N.register(
"{user} renamed {oldfile} to {newfile}" : "{user} ändrade filnamn {oldfile} till {newfile}",
"You moved {oldfile} to {newfile}" : "Du flyttade {oldfile} till {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} flyttade {oldfile} till {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har lagts till eller tagits bort från dina <strong>favoriter</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast ström)</em>",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast i flödet)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"Upload (max. %s)" : "Ladda upp (max. %s)",
"File handling" : "Filhantering",
"Maximum upload size" : "Maximal storlek att ladda upp",
@@ -121,7 +121,7 @@ OC.L10N.register(
"Upload too large" : "För stor uppladdning",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.",
"No favorites" : "Inga favoriter",
- "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer att visas här",
+ "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här",
"Shared with you" : "Delad med dig",
"Shared with others" : "Delad med andra",
"Shared by link" : "Delad via länk",
@@ -148,6 +148,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Totala filstorleken {size1} överskrider uppladdningsgränsen {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fel vid uppladdning av fil \"{fileName}\": {message}",
"Could not get result from server." : "Gick inte att hämta resultat från server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timme/ar kvar",
+ "{hours}:{minutes}h" : "{hours}:{minutes}",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minut(er) kvar",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}",
+ "{seconds} second{plural_s} left" : "{seconds} sekund(er) kvar",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Alldeles strax...",
+ "Soon..." : "Snart...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"No entries in this folder match '{filter}'" : "Inga poster i denna mapp match \"{filter}\"",
"Local link" : "Lokal länk",
"{newname} already exists" : "{newname} existerar redan",
@@ -156,7 +165,7 @@ OC.L10N.register(
"A file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återskapad</strong>",
"You created %1$s" : "Du skapade %1$s",
"%2$s created %1$s" : "%2$s skapade %1$s",
- "%1$s was created in a public folder" : "%1$s skapades i en publik mapp",
+ "%1$s was created in a public folder" : "%1$s skapades i en offentlig mapp",
"You changed %1$s" : "Du ändrade %1$s",
"%2$s changed %1$s" : "%2$s ändrade %1$s",
"You deleted %1$s" : "Du raderade %1$s",
@@ -165,8 +174,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s återskapade %1$s",
"Changed by %2$s" : "Ändrad av %2$s",
"Deleted by %2$s" : "Bortagen av %2$s",
- "Restored by %2$s" : "Återställd av %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress för att <a href=\"%s\" target=\"_blank\">få tillgång till filer via WebDAV</a>",
- "Cancel upload" : "Avbryt uppladdning"
+ "Restored by %2$s" : "Återställd av %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index a0740f906a4..62e44c6c28e 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -2,9 +2,8 @@
"Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
"Storage invalid" : "Lagring ogiltig",
"Unknown error" : "Okänt fel",
- "Files" : "Filer",
"All files" : "Alla filer",
- "Recent" : "Nyligen",
+ "Recent" : "Senaste",
"File could not be found" : "Fil kunde inte hittas",
"Home" : "Hem",
"Close" : "Stäng",
@@ -17,24 +16,17 @@
"Not enough free space" : "Inte tillräckligt med ledigt utrymme",
"Uploading..." : "Laddar upp...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timme/ar kvar",
- "{hours}:{minutes}h" : "{hours}:{minutes}",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minut(er) kvar",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}",
- "{seconds} second{plural_s} left" : "{seconds} sekund(er) kvar",
- "{seconds}s" : "{seconds}s",
- "Any moment now..." : "Alldeles strax...",
- "Soon..." : "Snart...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"Actions" : "Åtgärder",
- "Download" : "Ladda ner",
+ "Download" : "Ladda ned",
"Rename" : "Byt namn",
"Move" : "Flytta",
"Target folder" : "Målmapp",
"Delete" : "Radera",
"Disconnect storage" : "Koppla bort lagring",
"Unshare" : "Sluta dela",
+ "Could not load info for file \"{file}\"" : "Kunde inte ladda information för fil \"{file}\"",
+ "Files" : "Filer",
"Details" : "Detaljer",
"Select" : "Välj",
"Pending" : "Väntar",
@@ -74,11 +66,15 @@
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Favorited" : "Favoriserad",
"Favorite" : "Favorit",
- "Copy local link" : "Kopiera lokal länk",
+ "Copy local link" : "Kopiera den lokala länken",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
"Upload" : "Ladda upp",
"An error occurred while trying to update the tags" : "Ett fel uppstod när uppdatera taggarna",
+ "Added to favorites" : "Lades till i favoriter",
+ "Removed from favorites" : "Togs bort från favoriter",
+ "You added {file} to your favorites" : "Du la till {file} till dina favoriter",
+ "You removed {file} from your favorites" : "Du tog bort {file} från dina favoriter",
"File changes" : "Filändringar",
"Created by {user}" : "Skapad av {user}",
"Changed by {user}" : "Ändrad av {user}",
@@ -88,7 +84,7 @@
"Moved by {user}" : "Flyttad av {user}",
"You created {file}" : "Du skapade {file}",
"{user} created {file}" : "{user} skapade {file}",
- "{file} was created in a public folder" : "{file} skapades i en publik mapp",
+ "{file} was created in a public folder" : "{file} skapades i en offentlig mapp",
"You changed {file}" : "Du ändrade {file}",
"{user} changed {file}" : "{user} ändrade {file}",
"You deleted {file}" : "Du raderade {file}",
@@ -99,8 +95,12 @@
"{user} renamed {oldfile} to {newfile}" : "{user} ändrade filnamn {oldfile} till {newfile}",
"You moved {oldfile} to {newfile}" : "Du flyttade {oldfile} till {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} flyttade {oldfile} till {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har lagts till eller tagits bort från dina <strong>favoriter</strong>",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast ström)</em>",
+ "A new file or folder has been <strong>deleted</strong>" : "En ny fil har blivit <strong>raderad</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begränsa notiser om skapande och ändringar till dina <strong>favoritfiler</strong> <em>(Endast i flödet)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återställd</strong>",
"Upload (max. %s)" : "Ladda upp (max. %s)",
"File handling" : "Filhantering",
"Maximum upload size" : "Maximal storlek att ladda upp",
@@ -119,7 +119,7 @@
"Upload too large" : "För stor uppladdning",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.",
"No favorites" : "Inga favoriter",
- "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer att visas här",
+ "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här",
"Shared with you" : "Delad med dig",
"Shared with others" : "Delad med andra",
"Shared by link" : "Delad via länk",
@@ -146,6 +146,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Totala filstorleken {size1} överskrider uppladdningsgränsen {size2}",
"Error uploading file \"{fileName}\": {message}" : "Fel vid uppladdning av fil \"{fileName}\": {message}",
"Could not get result from server." : "Gick inte att hämta resultat från server.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} timme/ar kvar",
+ "{hours}:{minutes}h" : "{hours}:{minutes}",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minut(er) kvar",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}",
+ "{seconds} second{plural_s} left" : "{seconds} sekund(er) kvar",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "Alldeles strax...",
+ "Soon..." : "Snart...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"No entries in this folder match '{filter}'" : "Inga poster i denna mapp match \"{filter}\"",
"Local link" : "Lokal länk",
"{newname} already exists" : "{newname} existerar redan",
@@ -154,7 +163,7 @@
"A file or folder has been <strong>restored</strong>" : "En ny fil eller mapp har blivit <strong>återskapad</strong>",
"You created %1$s" : "Du skapade %1$s",
"%2$s created %1$s" : "%2$s skapade %1$s",
- "%1$s was created in a public folder" : "%1$s skapades i en publik mapp",
+ "%1$s was created in a public folder" : "%1$s skapades i en offentlig mapp",
"You changed %1$s" : "Du ändrade %1$s",
"%2$s changed %1$s" : "%2$s ändrade %1$s",
"You deleted %1$s" : "Du raderade %1$s",
@@ -163,8 +172,6 @@
"%2$s restored %1$s" : "%2$s återskapade %1$s",
"Changed by %2$s" : "Ändrad av %2$s",
"Deleted by %2$s" : "Bortagen av %2$s",
- "Restored by %2$s" : "Återställd av %2$s",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress för att <a href=\"%s\" target=\"_blank\">få tillgång till filer via WebDAV</a>",
- "Cancel upload" : "Avbryt uppladdning"
+ "Restored by %2$s" : "Återställd av %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 679f218b96f..c41250c07f5 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "Gecici depolama alani mevcut değil",
"Storage invalid" : "Depolama geçersiz",
"Unknown error" : "Bilinmeyen hata",
- "Files" : "Dosyalar",
"All files" : "Tüm dosyalar",
"Recent" : "Son",
"File could not be found" : "Dosya bulunamadı",
@@ -14,24 +14,19 @@ OC.L10N.register(
"Upload cancelled." : "Yükleme iptal edildi.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut",
+ "Not enough free space" : "Yeterli disk alanı yok",
"Uploading..." : "Yükleniyor...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} saat kaldı",
- "{hours}:{minutes}h" : "{hours}:{minutes} saat",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} dakika kaldı",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} dk",
- "{seconds} second{plural_s} left" : "{seconds} saniye kaldı",
- "{seconds}s" : "{seconds} saniye",
- "Any moment now..." : "Hemen şimdi...",
- "Soon..." : "Yakında...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
"Actions" : "Eylemler",
"Download" : "İndir",
"Rename" : "Yeniden adlandır",
+ "Move" : "Taşı",
+ "Target folder" : "Hedeflenen klasör",
"Delete" : "Sil",
"Disconnect storage" : "Depolama bağlantısını kes",
"Unshare" : "Paylaşmayı Kaldır",
+ "Files" : "Dosyalar",
"Details" : "Ayrıntılar",
"Select" : "Seç",
"Pending" : "Bekliyor",
@@ -48,6 +43,7 @@ OC.L10N.register(
"Could not create file \"{file}\" because it already exists" : "\"{file}\" dosyası zaten mevcut olduğundan oluşturulamadı",
"Could not create folder \"{dir}\" because it already exists" : "\"{dir}\" klasörü zaten mevcut olduğundan oluşturulamadı",
"Error deleting file \"{fileName}\"." : "\"{fileName}\" dosyası silinirken hata.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "'{tag}{filter}{endtag}' için diğer klasörlerde herhangi bir arama sonucu yok",
"Name" : "İsim",
"Size" : "Boyut",
"Modified" : "Değiştirilme",
@@ -69,10 +65,23 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Favorited" : "Sık kullanılanlara eklendi",
"Favorite" : "Sık kullanılan",
+ "Copy local link" : "Bağlantıyı kopyala",
"Folder" : "Klasör",
"New folder" : "Yeni klasör",
"Upload" : "Yükle",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
+ "Added to favorites" : "Favorilere eklendi",
+ "Removed from favorites" : "Favorilerden çıkarildi",
+ "You added {file} to your favorites" : "Sizin {file} dosyanız favorilerinize eklendi",
+ "You removed {file} from your favorites" : "Sizin {file} dosyanız favorilerinizden çıkarildi",
+ "File changes" : "Dosya değişikleri",
+ "Created by {user}" : "{user} tarafından oluşturuldu",
+ "Changed by {user}" : "{user} tarafından değiştirildi",
+ "Deleted by {user}" : "{user} tarafından silindi",
+ "Restored by {user}" : "{user} tarafından geri alindi",
+ "Renamed by {user}" : "{user} tarafından ismi değiştirildi",
+ "Moved by {user}" : "{user} tarafından taşındı",
+ "{user} created {file}" : "{user} tarafından {file} oluşturuldu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>",
"Upload (max. %s)" : "Yükle (azami: %s)",
@@ -94,6 +103,11 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Yüklemeye çalıştığınız dosyalar bu sunucudaki azami yükleme boyutunu aşıyor.",
"No favorites" : "Sık kullanılan öge yok.",
"Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek",
+ "Shared with you" : "Sizinle paylaşılan",
+ "Shared with others" : "Diğerleri ile paylaşılan",
+ "Shared by link" : "Paylaşım bağlantısı",
+ "Tags" : "Etiketler",
+ "Deleted files" : "Silinmiş dosyalar",
"Text file" : "Metin dosyası",
"New text file.txt" : "Yeni metin dosyası.txt",
"Storage not available" : "Depolama yok",
@@ -115,6 +129,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "Toplam dosya boyutu {size1}, {size2} gönderme sınırını aşıyor",
"Error uploading file \"{fileName}\": {message}" : "\"{fileName}\" dosyası yüklenirken hata: {message}",
"Could not get result from server." : "Sunucudan sonuç alınamadı.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} saat kaldı",
+ "{hours}:{minutes}h" : "{hours}:{minutes} saat",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} dakika kaldı",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} dk",
+ "{seconds} second{plural_s} left" : "{seconds} saniye kaldı",
+ "{seconds}s" : "{seconds} saniye",
+ "Any moment now..." : "Hemen şimdi...",
+ "Soon..." : "Yakında...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
"No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor",
"Local link" : "Yerel bağlantı",
"{newname} already exists" : "{newname} zaten mevcut",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 2a8aee6bd0e..b612817deab 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -1,7 +1,7 @@
{ "translations": {
+ "Storage is temporarily not available" : "Gecici depolama alani mevcut değil",
"Storage invalid" : "Depolama geçersiz",
"Unknown error" : "Bilinmeyen hata",
- "Files" : "Dosyalar",
"All files" : "Tüm dosyalar",
"Recent" : "Son",
"File could not be found" : "Dosya bulunamadı",
@@ -12,24 +12,19 @@
"Upload cancelled." : "Yükleme iptal edildi.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut",
+ "Not enough free space" : "Yeterli disk alanı yok",
"Uploading..." : "Yükleniyor...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} saat kaldı",
- "{hours}:{minutes}h" : "{hours}:{minutes} saat",
- "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} dakika kaldı",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} dk",
- "{seconds} second{plural_s} left" : "{seconds} saniye kaldı",
- "{seconds}s" : "{seconds} saniye",
- "Any moment now..." : "Hemen şimdi...",
- "Soon..." : "Yakında...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
"Actions" : "Eylemler",
"Download" : "İndir",
"Rename" : "Yeniden adlandır",
+ "Move" : "Taşı",
+ "Target folder" : "Hedeflenen klasör",
"Delete" : "Sil",
"Disconnect storage" : "Depolama bağlantısını kes",
"Unshare" : "Paylaşmayı Kaldır",
+ "Files" : "Dosyalar",
"Details" : "Ayrıntılar",
"Select" : "Seç",
"Pending" : "Bekliyor",
@@ -46,6 +41,7 @@
"Could not create file \"{file}\" because it already exists" : "\"{file}\" dosyası zaten mevcut olduğundan oluşturulamadı",
"Could not create folder \"{dir}\" because it already exists" : "\"{dir}\" klasörü zaten mevcut olduğundan oluşturulamadı",
"Error deleting file \"{fileName}\"." : "\"{fileName}\" dosyası silinirken hata.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "'{tag}{filter}{endtag}' için diğer klasörlerde herhangi bir arama sonucu yok",
"Name" : "İsim",
"Size" : "Boyut",
"Modified" : "Değiştirilme",
@@ -67,10 +63,23 @@
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Favorited" : "Sık kullanılanlara eklendi",
"Favorite" : "Sık kullanılan",
+ "Copy local link" : "Bağlantıyı kopyala",
"Folder" : "Klasör",
"New folder" : "Yeni klasör",
"Upload" : "Yükle",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
+ "Added to favorites" : "Favorilere eklendi",
+ "Removed from favorites" : "Favorilerden çıkarildi",
+ "You added {file} to your favorites" : "Sizin {file} dosyanız favorilerinize eklendi",
+ "You removed {file} from your favorites" : "Sizin {file} dosyanız favorilerinizden çıkarildi",
+ "File changes" : "Dosya değişikleri",
+ "Created by {user}" : "{user} tarafından oluşturuldu",
+ "Changed by {user}" : "{user} tarafından değiştirildi",
+ "Deleted by {user}" : "{user} tarafından silindi",
+ "Restored by {user}" : "{user} tarafından geri alindi",
+ "Renamed by {user}" : "{user} tarafından ismi değiştirildi",
+ "Moved by {user}" : "{user} tarafından taşındı",
+ "{user} created {file}" : "{user} tarafından {file} oluşturuldu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>",
"Upload (max. %s)" : "Yükle (azami: %s)",
@@ -92,6 +101,11 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Yüklemeye çalıştığınız dosyalar bu sunucudaki azami yükleme boyutunu aşıyor.",
"No favorites" : "Sık kullanılan öge yok.",
"Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek",
+ "Shared with you" : "Sizinle paylaşılan",
+ "Shared with others" : "Diğerleri ile paylaşılan",
+ "Shared by link" : "Paylaşım bağlantısı",
+ "Tags" : "Etiketler",
+ "Deleted files" : "Silinmiş dosyalar",
"Text file" : "Metin dosyası",
"New text file.txt" : "Yeni metin dosyası.txt",
"Storage not available" : "Depolama yok",
@@ -113,6 +127,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "Toplam dosya boyutu {size1}, {size2} gönderme sınırını aşıyor",
"Error uploading file \"{fileName}\": {message}" : "\"{fileName}\" dosyası yüklenirken hata: {message}",
"Could not get result from server." : "Sunucudan sonuç alınamadı.",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} saat kaldı",
+ "{hours}:{minutes}h" : "{hours}:{minutes} saat",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} dakika kaldı",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} dk",
+ "{seconds} second{plural_s} left" : "{seconds} saniye kaldı",
+ "{seconds}s" : "{seconds} saniye",
+ "Any moment now..." : "Hemen şimdi...",
+ "Soon..." : "Yakında...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
"No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor",
"Local link" : "Yerel bağlantı",
"{newname} already exists" : "{newname} zaten mevcut",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 0d54ebf4095..b36f8fbdf6b 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -1,128 +1,172 @@
OC.L10N.register(
"files",
{
+ "Storage is temporarily not available" : "存储空间暂时不可用",
"Storage invalid" : "存储空间无效",
"Unknown error" : "未知错误",
- "Files" : "文件",
"All files" : "全部文件",
+ "Recent" : "最近",
"File could not be found" : "文件未找到",
- "Home" : "家庭",
+ "Home" : "首页",
"Close" : "关闭",
"Favorites" : "收藏",
- "Could not create folder \"{dir}\"" : "不能创建文件夹 \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
"Upload cancelled." : "上传已取消",
- "Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节",
- "Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。",
- "Uploading..." : "上传中...",
+ "Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传文件 {filename},因为它是一个目录或者是大小为 0 的空文件",
+ "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在",
+ "Not enough free space" : "可用空间不足",
+ "Uploading..." : "正在上传...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间:{hours}:{minutes}:{seconds} ",
- "{hours}:{minutes}h" : "{hours}:{minutes}",
- "{minutes}:{seconds} minute{plural_s} left" : "剩余分钟:{minutes}:{seconds} ",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}",
- "{seconds} second{plural_s} left" : "剩下{seconds} 秒",
- "{seconds}s" : "{seconds}秒",
- "Any moment now..." : "现在任何时候...",
- "Soon..." : "很快...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
- "Actions" : "动作",
+ "Actions" : "操作",
"Download" : "下载",
"Rename" : "重命名",
+ "Move" : "移动",
+ "Target folder" : "目标目录",
"Delete" : "删除",
- "Disconnect storage" : "断开储存连接",
+ "Disconnect storage" : "断开存储链接",
"Unshare" : "取消共享",
+ "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
+ "Files" : "文件",
"Details" : "详细信息",
"Select" : "选择",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "操作被禁止",
- "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
- "Could not move \"{file}\", target exists" : "不能移动 \"{file}\",目标已存在。",
- "Could not move \"{file}\"" : "不能移动 \"{file}\"",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用, 请检查日志或联系管理员",
+ "Could not move \"{file}\", target exists" : "无法移动 \"{file}\", 目标已存在",
+ "Could not move \"{file}\"" : "无法移动 \"{file}\"",
"{newName} already exists" : "{newname} 已经存在",
- "Could not rename \"{fileName}\", it does not exist any more" : "不能重命名 \"{fileName}\",此文件已经不存在",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "在文件夹 \"{dir}\" 中已经存在 \"{targetName}\" 。请换一个名字试下。",
- "Could not rename \"{fileName}\"" : "不能重命名 \"{fileName}\"",
- "Could not create file \"{file}\"" : "不能创建文件 \"{file}\"",
- "Could not create file \"{file}\" because it already exists" : "不能创建文件 \"{file}\" ,因为它已经存在",
- "Could not create folder \"{dir}\" because it already exists" : "不能创建文件夹 \"{dir}\" ,因为它已经存在",
- "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。",
+ "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\", 此文件已经不存在",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\". 请尝试其他的名称.",
+ "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"",
+ "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\", 因为其已经存在",
+ "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\", 因为其已经存在",
+ "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : " 在其他文件夹未找到包含 '{tag}{filter}{endtag}' 标签的结果",
"Name" : "名称",
"Size" : "大小",
"Modified" : "修改日期",
- "_%n folder_::_%n folders_" : ["%n 文件夹"],
- "_%n file_::_%n files_" : ["%n个文件"],
+ "_%n folder_::_%n folders_" : ["%n 个文件夹"],
+ "_%n file_::_%n files_" : ["%n 个文件"],
"{dirs} and {files}" : "{dirs} 和 {files}",
- "You don’t have permission to upload or create files here" : "您没有权限来上传湖州哦和创建文件",
+ "_including %n hidden_::_including %n hidden_" : ["包括 %n 个隐藏文件"],
+ "You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件",
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
"New" : "新建",
- "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
- "File name cannot be empty." : "文件名不能为空。",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
- "Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满,文件将无法更新或同步!",
+ "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名",
+ "File name cannot be empty." : "文件名不能为空.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满, 文件将无法更新或同步!",
+ "Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满, 文件将无法更新或同步!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完 ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["匹配“{filter}”"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["匹配 '{filter}'"],
+ "View in folder" : "在文件夹中查看",
"Path" : "路径",
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "Copy local link" : "复制本地链接",
"Folder" : "文件夹",
- "New folder" : "增加文件夹",
+ "New folder" : "新建文件夹",
"Upload" : "上传",
"An error occurred while trying to update the tags" : "更新标签时出错",
- "A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "针对<strong>已收藏文件</strong>的新建和修改发送有限的通知 <em>(仅流)</em>",
+ "Added to favorites" : "添加到收藏",
+ "Removed from favorites" : "取消收藏",
+ "You added {file} to your favorites" : "您已经添加 {file} 到您的收藏夹",
+ "You removed {file} from your favorites" : "您已从收藏夹中删除 {file}",
+ "File changes" : "文件发生变化",
+ "Created by {user}" : "由 {user} 创建",
+ "Changed by {user}" : "由 {user} 更改",
+ "Deleted by {user}" : "由 {user} 删除",
+ "Restored by {user}" : "由 {user} 恢复",
+ "Renamed by {user}" : "由 {user} 重命名",
+ "Moved by {user}" : "由 {user} 移动",
+ "You created {file}" : "您创建了 {file}",
+ "{user} created {file}" : "{user} 创建了 {file}",
+ "{file} was created in a public folder" : "{file} 被创建在公共文件夹",
+ "You changed {file}" : "您更改了 {file}",
+ "{user} changed {file}" : "{user} 更改了 {file}",
+ "You deleted {file}" : "您删除了{file}",
+ "{user} deleted {file}" : "{user} 删除了 {file}",
+ "You restored {file}" : "您恢复了{file}",
+ "{user} restored {file}" : "{user} 恢复了 {file}",
+ "You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您移动 {oldfile} 到 {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} 移动 {oldfile} 到 {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
+ "A new file or folder has been <strong>created</strong>" : "新的文件/文件夹已经 <strong>创建</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "仅限 <strong>收藏文件</strong>的创建和更改通知 <em>(仅限流)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
"Upload (max. %s)" : "上传 (最大 %s)",
"File handling" : "文件处理",
"Maximum upload size" : "最大上传大小",
"max. possible: " : "最大允许: ",
"Save" : "保存",
- "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效。",
- "Missing permissions to edit from here." : "没有从这里进行编辑的权限",
+ "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效.",
+ "Missing permissions to edit from here." : "没有权限编辑",
"Settings" : "设置",
"Show hidden files" : "显示隐藏文件",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>",
"No files in here" : "无文件",
- "Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
- "No entries found in this folder" : "此文件夹中无项目",
+ "Upload some content or sync with your devices!" : "上传或从您的设备中同步!",
+ "No entries found in this folder" : "文件夹中无项目",
"Select all" : "全部选择",
"Upload too large" : "上传文件过大",
- "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您正尝试上传的文件超过了此服务器可以上传的最大容量限制",
+ "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制",
"No favorites" : "无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
+ "Shared with you" : "与您分享",
+ "Shared with others" : "与他人分享",
+ "Shared by link" : "通过链接分享",
+ "Tags" : "标签",
+ "Deleted files" : "已删除的文件",
"Text file" : "文本文件",
"New text file.txt" : "创建文本文件 .txt",
"Storage not available" : "存储空间不可用",
- "Unable to set upload directory." : "无法设置上传文件夹。",
- "Invalid Token" : "无效密匙",
- "No file was uploaded. Unknown error" : "没有文件被上传。未知错误",
- "There is no error, the file uploaded with success" : "文件上传成功,没有错误发生",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上传文件大小已超过php.ini中upload_max_filesize所规定的值",
+ "Unable to set upload directory." : "无法设置上传文件夹.",
+ "Invalid Token" : "无效密钥",
+ "No file was uploaded. Unknown error" : "没有文件被上传. 未知错误",
+ "There is no error, the file uploaded with success" : "文件上传成功, 没有任何错误",
+ "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上传文件的大小已超过 php.ini 中 upload_max_filesize 设置的值",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上传的文件长度超出了 HTML 表单中 MAX_FILE_SIZE 的限制",
- "The uploaded file was only partially uploaded" : "已上传文件只上传了部分(不完整)",
+ "The uploaded file was only partially uploaded" : "文件仅部分上传",
"No file was uploaded" : "没有文件被上传",
- "Missing a temporary folder" : "缺少临时目录",
+ "Missing a temporary folder" : "临时目录缺失",
"Failed to write to disk" : "写入磁盘失败",
"Not enough storage available" : "没有足够的存储空间",
- "The target folder has been moved or deleted." : "目标文件夹已经被移动或删除。",
- "Upload failed. Could not find uploaded file" : "上传失败。未发现上传的文件",
- "Upload failed. Could not get file info." : "上传失败。无法获取文件信息。",
- "Invalid directory." : "无效文件夹。",
+ "The target folder has been moved or deleted." : "目标文件夹已被移动或删除.",
+ "Upload failed. Could not find uploaded file" : "上传失败. 未发现上传的文件",
+ "Upload failed. Could not get file info." : "上传失败. 无法获取文件信息.",
+ "Invalid directory." : "无效文件夹.",
"Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}",
"Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}",
- "Could not get result from server." : "不能从服务器得到结果",
- "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
+ "Could not get result from server." : "无法从服务器获取结果",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间: {hours}:{minutes}:{seconds} ",
+ "{hours}:{minutes}h" : "{hours}:{minutes}",
+ "{minutes}:{seconds} minute{plural_s} left" : "剩余 {minutes}:{seconds} 分钟",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}",
+ "{seconds} second{plural_s} left" : "剩余 {seconds} 秒",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "现在任何时候...",
+ "Soon..." : "很快...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中. 离开此页将会取消上传.",
+ "No entries in this folder match '{filter}'" : "文件夹中不存在 \"{filter}\"",
"Local link" : "本地链接",
"{newname} already exists" : "{newname} 已经存在",
- "A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
- "A file or folder has been <strong>deleted</strong>" : "一个文件或文件夹已被<strong>删除</strong>",
- "A file or folder has been <strong>restored</strong>" : "一个文件或文件夹已经被 <strong>恢复</strong>",
- "You created %1$s" : "您创建了%1$s",
+ "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "文件/文件夹已经 <strong>删除</strong>",
+ "A file or folder has been <strong>restored</strong>" : "文件/文件夹已经 <strong>恢复</strong>",
+ "You created %1$s" : "您创建了 %1$s",
"%2$s created %1$s" : "%2$s 创建了 %1$s",
"%1$s was created in a public folder" : "%1$s 被创建在公开文件夹中",
- "You changed %1$s" : "您修改了%1$s",
+ "You changed %1$s" : "您修改了 %1$s",
"%2$s changed %1$s" : "%2$s 修改了 %1$s",
"You deleted %1$s" : "您删除了 %1$s",
"%2$s deleted %1$s" : "%2$s 删除了 %1$s",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 86fe488aeb6..f8974ac9a5a 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -1,126 +1,170 @@
{ "translations": {
+ "Storage is temporarily not available" : "存储空间暂时不可用",
"Storage invalid" : "存储空间无效",
"Unknown error" : "未知错误",
- "Files" : "文件",
"All files" : "全部文件",
+ "Recent" : "最近",
"File could not be found" : "文件未找到",
- "Home" : "家庭",
+ "Home" : "首页",
"Close" : "关闭",
"Favorites" : "收藏",
- "Could not create folder \"{dir}\"" : "不能创建文件夹 \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
"Upload cancelled." : "上传已取消",
- "Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节",
- "Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。",
- "Uploading..." : "上传中...",
+ "Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传文件 {filename},因为它是一个目录或者是大小为 0 的空文件",
+ "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}",
+ "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在",
+ "Not enough free space" : "可用空间不足",
+ "Uploading..." : "正在上传...",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间:{hours}:{minutes}:{seconds} ",
- "{hours}:{minutes}h" : "{hours}:{minutes}",
- "{minutes}:{seconds} minute{plural_s} left" : "剩余分钟:{minutes}:{seconds} ",
- "{minutes}:{seconds}m" : "{minutes}:{seconds}",
- "{seconds} second{plural_s} left" : "剩下{seconds} 秒",
- "{seconds}s" : "{seconds}秒",
- "Any moment now..." : "现在任何时候...",
- "Soon..." : "很快...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
- "Actions" : "动作",
+ "Actions" : "操作",
"Download" : "下载",
"Rename" : "重命名",
+ "Move" : "移动",
+ "Target folder" : "目标目录",
"Delete" : "删除",
- "Disconnect storage" : "断开储存连接",
+ "Disconnect storage" : "断开存储链接",
"Unshare" : "取消共享",
+ "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
+ "Files" : "文件",
"Details" : "详细信息",
"Select" : "选择",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "操作被禁止",
- "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
- "Could not move \"{file}\", target exists" : "不能移动 \"{file}\",目标已存在。",
- "Could not move \"{file}\"" : "不能移动 \"{file}\"",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用, 请检查日志或联系管理员",
+ "Could not move \"{file}\", target exists" : "无法移动 \"{file}\", 目标已存在",
+ "Could not move \"{file}\"" : "无法移动 \"{file}\"",
"{newName} already exists" : "{newname} 已经存在",
- "Could not rename \"{fileName}\", it does not exist any more" : "不能重命名 \"{fileName}\",此文件已经不存在",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "在文件夹 \"{dir}\" 中已经存在 \"{targetName}\" 。请换一个名字试下。",
- "Could not rename \"{fileName}\"" : "不能重命名 \"{fileName}\"",
- "Could not create file \"{file}\"" : "不能创建文件 \"{file}\"",
- "Could not create file \"{file}\" because it already exists" : "不能创建文件 \"{file}\" ,因为它已经存在",
- "Could not create folder \"{dir}\" because it already exists" : "不能创建文件夹 \"{dir}\" ,因为它已经存在",
- "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。",
+ "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\", 此文件已经不存在",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\". 请尝试其他的名称.",
+ "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"",
+ "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\", 因为其已经存在",
+ "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\", 因为其已经存在",
+ "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错.",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : " 在其他文件夹未找到包含 '{tag}{filter}{endtag}' 标签的结果",
"Name" : "名称",
"Size" : "大小",
"Modified" : "修改日期",
- "_%n folder_::_%n folders_" : ["%n 文件夹"],
- "_%n file_::_%n files_" : ["%n个文件"],
+ "_%n folder_::_%n folders_" : ["%n 个文件夹"],
+ "_%n file_::_%n files_" : ["%n 个文件"],
"{dirs} and {files}" : "{dirs} 和 {files}",
- "You don’t have permission to upload or create files here" : "您没有权限来上传湖州哦和创建文件",
+ "_including %n hidden_::_including %n hidden_" : ["包括 %n 个隐藏文件"],
+ "You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件",
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
"New" : "新建",
- "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
- "File name cannot be empty." : "文件名不能为空。",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
- "Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满,文件将无法更新或同步!",
+ "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名",
+ "File name cannot be empty." : "文件名不能为空.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满, 文件将无法更新或同步!",
+ "Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满, 文件将无法更新或同步!",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完 ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["匹配“{filter}”"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["匹配 '{filter}'"],
+ "View in folder" : "在文件夹中查看",
"Path" : "路径",
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "Copy local link" : "复制本地链接",
"Folder" : "文件夹",
- "New folder" : "增加文件夹",
+ "New folder" : "新建文件夹",
"Upload" : "上传",
"An error occurred while trying to update the tags" : "更新标签时出错",
- "A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
- "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "针对<strong>已收藏文件</strong>的新建和修改发送有限的通知 <em>(仅流)</em>",
+ "Added to favorites" : "添加到收藏",
+ "Removed from favorites" : "取消收藏",
+ "You added {file} to your favorites" : "您已经添加 {file} 到您的收藏夹",
+ "You removed {file} from your favorites" : "您已从收藏夹中删除 {file}",
+ "File changes" : "文件发生变化",
+ "Created by {user}" : "由 {user} 创建",
+ "Changed by {user}" : "由 {user} 更改",
+ "Deleted by {user}" : "由 {user} 删除",
+ "Restored by {user}" : "由 {user} 恢复",
+ "Renamed by {user}" : "由 {user} 重命名",
+ "Moved by {user}" : "由 {user} 移动",
+ "You created {file}" : "您创建了 {file}",
+ "{user} created {file}" : "{user} 创建了 {file}",
+ "{file} was created in a public folder" : "{file} 被创建在公共文件夹",
+ "You changed {file}" : "您更改了 {file}",
+ "{user} changed {file}" : "{user} 更改了 {file}",
+ "You deleted {file}" : "您删除了{file}",
+ "{user} deleted {file}" : "{user} 删除了 {file}",
+ "You restored {file}" : "您恢复了{file}",
+ "{user} restored {file}" : "{user} 恢复了 {file}",
+ "You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您移动 {oldfile} 到 {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} 移动 {oldfile} 到 {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
+ "A new file or folder has been <strong>created</strong>" : "新的文件/文件夹已经 <strong>创建</strong>",
+ "A new file or folder has been <strong>deleted</strong>" : "新的文件/文件夹已经 <strong>删除</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "仅限 <strong>收藏文件</strong>的创建和更改通知 <em>(仅限流)</em>",
+ "A new file or folder has been <strong>restored</strong>" : "新的文件/文件夹已经<strong>恢复</strong>",
"Upload (max. %s)" : "上传 (最大 %s)",
"File handling" : "文件处理",
"Maximum upload size" : "最大上传大小",
"max. possible: " : "最大允许: ",
"Save" : "保存",
- "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效。",
- "Missing permissions to edit from here." : "没有从这里进行编辑的权限",
+ "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效.",
+ "Missing permissions to edit from here." : "没有权限编辑",
"Settings" : "设置",
"Show hidden files" : "显示隐藏文件",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>",
"No files in here" : "无文件",
- "Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
- "No entries found in this folder" : "此文件夹中无项目",
+ "Upload some content or sync with your devices!" : "上传或从您的设备中同步!",
+ "No entries found in this folder" : "文件夹中无项目",
"Select all" : "全部选择",
"Upload too large" : "上传文件过大",
- "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您正尝试上传的文件超过了此服务器可以上传的最大容量限制",
+ "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制",
"No favorites" : "无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
+ "Shared with you" : "与您分享",
+ "Shared with others" : "与他人分享",
+ "Shared by link" : "通过链接分享",
+ "Tags" : "标签",
+ "Deleted files" : "已删除的文件",
"Text file" : "文本文件",
"New text file.txt" : "创建文本文件 .txt",
"Storage not available" : "存储空间不可用",
- "Unable to set upload directory." : "无法设置上传文件夹。",
- "Invalid Token" : "无效密匙",
- "No file was uploaded. Unknown error" : "没有文件被上传。未知错误",
- "There is no error, the file uploaded with success" : "文件上传成功,没有错误发生",
- "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上传文件大小已超过php.ini中upload_max_filesize所规定的值",
+ "Unable to set upload directory." : "无法设置上传文件夹.",
+ "Invalid Token" : "无效密钥",
+ "No file was uploaded. Unknown error" : "没有文件被上传. 未知错误",
+ "There is no error, the file uploaded with success" : "文件上传成功, 没有任何错误",
+ "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上传文件的大小已超过 php.ini 中 upload_max_filesize 设置的值",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上传的文件长度超出了 HTML 表单中 MAX_FILE_SIZE 的限制",
- "The uploaded file was only partially uploaded" : "已上传文件只上传了部分(不完整)",
+ "The uploaded file was only partially uploaded" : "文件仅部分上传",
"No file was uploaded" : "没有文件被上传",
- "Missing a temporary folder" : "缺少临时目录",
+ "Missing a temporary folder" : "临时目录缺失",
"Failed to write to disk" : "写入磁盘失败",
"Not enough storage available" : "没有足够的存储空间",
- "The target folder has been moved or deleted." : "目标文件夹已经被移动或删除。",
- "Upload failed. Could not find uploaded file" : "上传失败。未发现上传的文件",
- "Upload failed. Could not get file info." : "上传失败。无法获取文件信息。",
- "Invalid directory." : "无效文件夹。",
+ "The target folder has been moved or deleted." : "目标文件夹已被移动或删除.",
+ "Upload failed. Could not find uploaded file" : "上传失败. 未发现上传的文件",
+ "Upload failed. Could not get file info." : "上传失败. 无法获取文件信息.",
+ "Invalid directory." : "无效文件夹.",
"Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}",
"Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}",
- "Could not get result from server." : "不能从服务器得到结果",
- "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
+ "Could not get result from server." : "无法从服务器获取结果",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间: {hours}:{minutes}:{seconds} ",
+ "{hours}:{minutes}h" : "{hours}:{minutes}",
+ "{minutes}:{seconds} minute{plural_s} left" : "剩余 {minutes}:{seconds} 分钟",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}",
+ "{seconds} second{plural_s} left" : "剩余 {seconds} 秒",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "现在任何时候...",
+ "Soon..." : "很快...",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中. 离开此页将会取消上传.",
+ "No entries in this folder match '{filter}'" : "文件夹中不存在 \"{filter}\"",
"Local link" : "本地链接",
"{newname} already exists" : "{newname} 已经存在",
- "A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
- "A file or folder has been <strong>deleted</strong>" : "一个文件或文件夹已被<strong>删除</strong>",
- "A file or folder has been <strong>restored</strong>" : "一个文件或文件夹已经被 <strong>恢复</strong>",
- "You created %1$s" : "您创建了%1$s",
+ "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "文件/文件夹已经 <strong>删除</strong>",
+ "A file or folder has been <strong>restored</strong>" : "文件/文件夹已经 <strong>恢复</strong>",
+ "You created %1$s" : "您创建了 %1$s",
"%2$s created %1$s" : "%2$s 创建了 %1$s",
"%1$s was created in a public folder" : "%1$s 被创建在公开文件夹中",
- "You changed %1$s" : "您修改了%1$s",
+ "You changed %1$s" : "您修改了 %1$s",
"%2$s changed %1$s" : "%2$s 修改了 %1$s",
"You deleted %1$s" : "您删除了 %1$s",
"%2$s deleted %1$s" : "%2$s 删除了 %1$s",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index e5aaeef63b4..ce73c32e00c 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Storage invalid" : "無效的儲存空間",
"Unknown error" : "未知的錯誤",
- "Files" : "檔案",
"All files" : "所有檔案",
"Recent" : "近期",
"File could not be found" : "找不到檔案",
@@ -16,22 +15,14 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}",
"Uploading..." : "上傳中…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
- "{hours}:{minutes}h" : "{hours}:{minutes} 小時",
- "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
- "{seconds}s" : "{seconds} 秒",
- "Any moment now..." : "即將完成…",
- "Soon..." : "即將完成…",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
"Delete" : "刪除",
"Disconnect storage" : "斷開儲存空間連接",
"Unshare" : "取消分享",
+ "Files" : "檔案",
"Details" : "詳細資料",
"Select" : "選擇",
"Pending" : "等候中",
@@ -116,6 +107,15 @@ OC.L10N.register(
"Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}",
"Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}",
"Could not get result from server." : "無法從伺服器取回結果",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 小時",
+ "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
+ "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
+ "{seconds}s" : "{seconds} 秒",
+ "Any moment now..." : "即將完成…",
+ "Soon..." : "即將完成…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
"No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
"Local link" : "本地連結",
"{newname} already exists" : "{newname} 已經存在",
@@ -133,8 +133,6 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s 還原了 %1$s",
"Changed by %2$s" : "由 %2$s 改動",
"Deleted by %2$s" : "由 %2$s 刪除",
- "Restored by %2$s" : "由 %2$s 還原",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\">使用 WebDAV 存取檔案</a>",
- "Cancel upload" : "取消上傳"
+ "Restored by %2$s" : "由 %2$s 還原"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 251927f9c1b..697b35eb111 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -1,7 +1,6 @@
{ "translations": {
"Storage invalid" : "無效的儲存空間",
"Unknown error" : "未知的錯誤",
- "Files" : "檔案",
"All files" : "所有檔案",
"Recent" : "近期",
"File could not be found" : "找不到檔案",
@@ -14,22 +13,14 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}",
"Uploading..." : "上傳中…",
"..." : "...",
- "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
- "{hours}:{minutes}h" : "{hours}:{minutes} 小時",
- "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
- "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
- "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
- "{seconds}s" : "{seconds} 秒",
- "Any moment now..." : "即將完成…",
- "Soon..." : "即將完成…",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
- "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
"Delete" : "刪除",
"Disconnect storage" : "斷開儲存空間連接",
"Unshare" : "取消分享",
+ "Files" : "檔案",
"Details" : "詳細資料",
"Select" : "選擇",
"Pending" : "等候中",
@@ -114,6 +105,15 @@
"Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}",
"Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}",
"Could not get result from server." : "無法從伺服器取回結果",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時",
+ "{hours}:{minutes}h" : "{hours}:{minutes} 小時",
+ "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds} 分",
+ "{seconds} second{plural_s} left" : "剩下 {seconds} 秒",
+ "{seconds}s" : "{seconds} 秒",
+ "Any moment now..." : "即將完成…",
+ "Soon..." : "即將完成…",
+ "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳",
"No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
"Local link" : "本地連結",
"{newname} already exists" : "{newname} 已經存在",
@@ -131,8 +131,6 @@
"%2$s restored %1$s" : "%2$s 還原了 %1$s",
"Changed by %2$s" : "由 %2$s 改動",
"Deleted by %2$s" : "由 %2$s 刪除",
- "Restored by %2$s" : "由 %2$s 還原",
- "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\">使用 WebDAV 存取檔案</a>",
- "Cancel upload" : "取消上傳"
+ "Restored by %2$s" : "由 %2$s 還原"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/lib/Activity/FavoriteProvider.php b/apps/files/lib/Activity/FavoriteProvider.php
index 8047eb1319e..ed00d50f221 100644
--- a/apps/files/lib/Activity/FavoriteProvider.php
+++ b/apps/files/lib/Activity/FavoriteProvider.php
@@ -142,10 +142,11 @@ class FavoriteProvider implements IProvider {
'type' => 'file',
'id' => $event->getObjectId(),
'name' => basename($event->getObjectName()),
- 'path' => $event->getObjectName(),
+ 'path' => trim($event->getObjectName(), '/'),
+ 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $event->getObjectId()]),
];
- $event->setParsedSubject(str_replace('{file}', trim($parameter['path'], '/'), $subject))
+ $event->setParsedSubject(str_replace('{file}', $parameter['path'], $subject))
->setRichSubject($subject, ['file' => $parameter]);
}
}
diff --git a/apps/files/lib/Activity/Provider.php b/apps/files/lib/Activity/Provider.php
index 92686ec0c36..ae303034610 100644
--- a/apps/files/lib/Activity/Provider.php
+++ b/apps/files/lib/Activity/Provider.php
@@ -201,7 +201,7 @@ class Provider implements IProvider {
foreach ($parameters as $placeholder => $parameter) {
$placeholders[] = '{' . $placeholder . '}';
if ($parameter['type'] === 'file') {
- $replacements[] = trim($parameter['path'], '/');
+ $replacements[] = $parameter['path'];
} else {
$replacements[] = $parameter['name'];
}
@@ -253,7 +253,8 @@ class Provider implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
+ 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/files/tests/js/mainfileinfodetailviewSpec.js b/apps/files/tests/js/mainfileinfodetailviewSpec.js
index e81adbcf7ac..faf0faa8d8f 100644
--- a/apps/files/tests/js/mainfileinfodetailviewSpec.js
+++ b/apps/files/tests/js/mainfileinfodetailviewSpec.js
@@ -70,13 +70,13 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() {
it('displays favorite icon', function() {
testFileInfo.set('tags', [OC.TAG_FAVORITE]);
view.setFileInfo(testFileInfo);
- expect(view.$el.find('.favorite img').attr('src'))
- .toEqual(OC.imagePath('core', 'actions/starred'));
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(true);
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(false);
testFileInfo.set('tags', []);
view.setFileInfo(testFileInfo);
- expect(view.$el.find('.favorite img').attr('src'))
- .toEqual(OC.imagePath('core', 'actions/star'));
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false);
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true);
});
it('displays mime icon', function() {
// File
@@ -187,13 +187,13 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() {
testFileInfo.set('tags', [OC.TAG_FAVORITE]);
- expect(view.$el.find('.favorite img').attr('src'))
- .toEqual(OC.imagePath('core', 'actions/starred'));
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(true);
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(false);
testFileInfo.set('tags', []);
- expect(view.$el.find('.favorite img').attr('src'))
- .toEqual(OC.imagePath('core', 'actions/star'));
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false);
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true);
});
it('unbinds change listener from model', function() {
view.setFileInfo(testFileInfo);
@@ -207,8 +207,8 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() {
testFileInfo.set('tags', [OC.TAG_FAVORITE]);
// no change
- expect(view.$el.find('.favorite img').attr('src'))
- .toEqual(OC.imagePath('core', 'actions/star'));
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false);
+ expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true);
});
});
describe('events', function() {
diff --git a/apps/files_external/3rdparty/autoload.php b/apps/files_external/3rdparty/autoload.php
index 78e3de4ca0c..5875a3b996a 100644
--- a/apps/files_external/3rdparty/autoload.php
+++ b/apps/files_external/3rdparty/autoload.php
@@ -2,6 +2,6 @@
// autoload.php @generated by Composer
-require_once __DIR__ . '/composer' . '/autoload_real.php';
+require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3::getLoader();
diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json
index 158478741ec..2eab8a8f7b4 100644
--- a/apps/files_external/3rdparty/composer.json
+++ b/apps/files_external/3rdparty/composer.json
@@ -8,8 +8,8 @@
"classmap-authoritative": true
},
"require": {
- "icewind/smb": "1.1.0",
- "icewind/streams": "0.4.1"
+ "icewind/smb": "2.0.0",
+ "icewind/streams": "0.5.2"
}
}
diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock
index 8f324299ff3..99ef5f94871 100644
--- a/apps/files_external/3rdparty/composer.lock
+++ b/apps/files_external/3rdparty/composer.lock
@@ -4,30 +4,28 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "8ed3150b0b3e916ad66558242b4cf2a0",
- "content-hash": "70722dcee13b3ac1c1951479b7431c97",
+ "content-hash": "0bbca3fe2d180fbc5681985bdf6b22e7",
"packages": [
{
"name": "icewind/smb",
- "version": "v1.1.0",
+ "version": "v2.0.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "822f924967c68228555cea84ea44765f8e85c601"
+ "reference": "95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/822f924967c68228555cea84ea44765f8e85c601",
- "reference": "822f924967c68228555cea84ea44765f8e85c601",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a",
+ "reference": "95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a",
"shasum": ""
},
"require": {
"icewind/streams": ">=0.2.0",
- "php": ">=5.3"
+ "php": ">=5.4"
},
"require-dev": {
- "phpunit/phpunit": "^4.8",
- "satooshi/php-coveralls": "v1.0.0"
+ "phpunit/phpunit": "^4.8"
},
"type": "library",
"autoload": {
@@ -47,20 +45,20 @@
}
],
"description": "php wrapper for smbclient and libsmbclient-php",
- "time": "2016-04-26 13:26:39"
+ "time": "2016-12-13T13:56:55+00:00"
},
{
"name": "icewind/streams",
- "version": "0.4.1",
+ "version": "0.5.2",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac"
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/d3620e8dc410c86c2ba55579803679c4e0b289ac",
- "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/6bfd2fdbd99319f5e010d0a684409189a562cb1e",
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e",
"shasum": ""
},
"require": {
@@ -88,7 +86,7 @@
}
],
"description": "A set of generic stream wrappers",
- "time": "2016-06-02 14:37:52"
+ "time": "2016-12-02T14:21:23+00:00"
}
],
"packages-dev": [],
diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php
index ff6ecfb822f..4626994fd4d 100644
--- a/apps/files_external/3rdparty/composer/ClassLoader.php
+++ b/apps/files_external/3rdparty/composer/ClassLoader.php
@@ -53,8 +53,9 @@ class ClassLoader
private $useIncludePath = false;
private $classMap = array();
-
private $classMapAuthoritative = false;
+ private $missingClasses = array();
+ private $apcuPrefix;
public function getPrefixes()
{
@@ -272,6 +273,26 @@ class ClassLoader
}
/**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
@@ -313,29 +334,34 @@ class ClassLoader
*/
public function findFile($class)
{
- // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
- if ('\\' == $class[0]) {
- $class = substr($class, 1);
- }
-
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
- if ($this->classMapAuthoritative) {
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
- if ($file === null && defined('HHVM_VERSION')) {
+ if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
- if ($file === null) {
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
// Remember that this class does not exist.
- return $this->classMap[$class] = false;
+ $this->missingClasses[$class] = true;
}
return $file;
@@ -399,6 +425,8 @@ class ClassLoader
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
+
+ return false;
}
}
diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php
index 0f9a43c6cd7..97f4ce99cda 100644
--- a/apps/files_external/3rdparty/composer/autoload_classmap.php
+++ b/apps/files_external/3rdparty/composer/autoload_classmap.php
@@ -7,6 +7,7 @@ $baseDir = $vendorDir;
return array(
'Icewind\\SMB\\AbstractShare' => $vendorDir . '/icewind/smb/src/AbstractShare.php',
+ 'Icewind\\SMB\\Change' => $vendorDir . '/icewind/smb/src/Change.php',
'Icewind\\SMB\\Connection' => $vendorDir . '/icewind/smb/src/Connection.php',
'Icewind\\SMB\\ErrorCodes' => $vendorDir . '/icewind/smb/src/ErrorCodes.php',
'Icewind\\SMB\\Exception\\AccessDeniedException' => $vendorDir . '/icewind/smb/src/Exception/AccessDeniedException.php',
@@ -15,6 +16,7 @@ return array(
'Icewind\\SMB\\Exception\\ConnectException' => $vendorDir . '/icewind/smb/src/Exception/ConnectException.php',
'Icewind\\SMB\\Exception\\ConnectionException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionException.php',
'Icewind\\SMB\\Exception\\ConnectionRefusedException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionRefusedException.php',
+ 'Icewind\\SMB\\Exception\\DependencyException' => $vendorDir . '/icewind/smb/src/Exception/DependencyException.php',
'Icewind\\SMB\\Exception\\Exception' => $vendorDir . '/icewind/smb/src/Exception/Exception.php',
'Icewind\\SMB\\Exception\\FileInUseException' => $vendorDir . '/icewind/smb/src/Exception/FileInUseException.php',
'Icewind\\SMB\\Exception\\ForbiddenException' => $vendorDir . '/icewind/smb/src/Exception/ForbiddenException.php',
@@ -31,17 +33,27 @@ return array(
'Icewind\\SMB\\Exception\\TimedOutException' => $vendorDir . '/icewind/smb/src/Exception/TimedOutException.php',
'Icewind\\SMB\\FileInfo' => $vendorDir . '/icewind/smb/src/FileInfo.php',
'Icewind\\SMB\\IFileInfo' => $vendorDir . '/icewind/smb/src/IFileInfo.php',
+ 'Icewind\\SMB\\INotifyHandler' => $vendorDir . '/icewind/smb/src/INotifyHandler.php',
'Icewind\\SMB\\IShare' => $vendorDir . '/icewind/smb/src/IShare.php',
'Icewind\\SMB\\NativeFileInfo' => $vendorDir . '/icewind/smb/src/NativeFileInfo.php',
'Icewind\\SMB\\NativeServer' => $vendorDir . '/icewind/smb/src/NativeServer.php',
'Icewind\\SMB\\NativeShare' => $vendorDir . '/icewind/smb/src/NativeShare.php',
'Icewind\\SMB\\NativeState' => $vendorDir . '/icewind/smb/src/NativeState.php',
'Icewind\\SMB\\NativeStream' => $vendorDir . '/icewind/smb/src/NativeStream.php',
+ 'Icewind\\SMB\\NotifyHandler' => $vendorDir . '/icewind/smb/src/NotifyHandler.php',
'Icewind\\SMB\\Parser' => $vendorDir . '/icewind/smb/src/Parser.php',
'Icewind\\SMB\\RawConnection' => $vendorDir . '/icewind/smb/src/RawConnection.php',
'Icewind\\SMB\\Server' => $vendorDir . '/icewind/smb/src/Server.php',
'Icewind\\SMB\\Share' => $vendorDir . '/icewind/smb/src/Share.php',
'Icewind\\SMB\\System' => $vendorDir . '/icewind/smb/src/System.php',
+ 'Icewind\\SMB\\Test\\AbstractShare' => $vendorDir . '/icewind/smb/tests/AbstractShare.php',
+ 'Icewind\\SMB\\Test\\NativeShare' => $vendorDir . '/icewind/smb/tests/NativeShare.php',
+ 'Icewind\\SMB\\Test\\NativeStream' => $vendorDir . '/icewind/smb/tests/NativeStream.php',
+ 'Icewind\\SMB\\Test\\NotifyHandlerTest' => $vendorDir . '/icewind/smb/tests/NotifyHandlerTest.php',
+ 'Icewind\\SMB\\Test\\Parser' => $vendorDir . '/icewind/smb/tests/Parser.php',
+ 'Icewind\\SMB\\Test\\Server' => $vendorDir . '/icewind/smb/tests/Server.php',
+ 'Icewind\\SMB\\Test\\Share' => $vendorDir . '/icewind/smb/tests/Share.php',
+ 'Icewind\\SMB\\Test\\TestCase' => $vendorDir . '/icewind/smb/tests/TestCase.php',
'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php',
'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php',
'Icewind\\Streams\\Directory' => $vendorDir . '/icewind/streams/src/Directory.php',
@@ -51,8 +63,23 @@ return array(
'Icewind\\Streams\\IteratorDirectory' => $vendorDir . '/icewind/streams/src/IteratorDirectory.php',
'Icewind\\Streams\\NullWrapper' => $vendorDir . '/icewind/streams/src/NullWrapper.php',
'Icewind\\Streams\\Path' => $vendorDir . '/icewind/streams/src/Path.php',
+ 'Icewind\\Streams\\PathWrapper' => $vendorDir . '/icewind/streams/src/PathWrapper.php',
'Icewind\\Streams\\RetryWrapper' => $vendorDir . '/icewind/streams/src/RetryWrapper.php',
'Icewind\\Streams\\SeekableWrapper' => $vendorDir . '/icewind/streams/src/SeekableWrapper.php',
+ 'Icewind\\Streams\\Tests\\CallbackWrapper' => $vendorDir . '/icewind/streams/tests/CallbackWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryFilter' => $vendorDir . '/icewind/streams/tests/DirectoryFilter.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapper' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperDummy' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperNull' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\FailWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\IteratorDirectory' => $vendorDir . '/icewind/streams/tests/IteratorDirectory.php',
+ 'Icewind\\Streams\\Tests\\NullWrapper' => $vendorDir . '/icewind/streams/tests/NullWrapper.php',
+ 'Icewind\\Streams\\Tests\\PartialWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\PathWrapper' => $vendorDir . '/icewind/streams/tests/PathWrapper.php',
+ 'Icewind\\Streams\\Tests\\RetryWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\SeekableWrapper' => $vendorDir . '/icewind/streams/tests/SeekableWrapper.php',
+ 'Icewind\\Streams\\Tests\\UrlCallBack' => $vendorDir . '/icewind/streams/tests/UrlCallBack.php',
+ 'Icewind\\Streams\\Tests\\Wrapper' => $vendorDir . '/icewind/streams/tests/Wrapper.php',
'Icewind\\Streams\\Url' => $vendorDir . '/icewind/streams/src/Url.php',
'Icewind\\Streams\\UrlCallback' => $vendorDir . '/icewind/streams/src/UrlCallBack.php',
'Icewind\\Streams\\Wrapper' => $vendorDir . '/icewind/streams/src/Wrapper.php',
diff --git a/apps/files_external/3rdparty/composer/autoload_real.php b/apps/files_external/3rdparty/composer/autoload_real.php
index 6f27fffb9da..4ac68127fea 100644
--- a/apps/files_external/3rdparty/composer/autoload_real.php
+++ b/apps/files_external/3rdparty/composer/autoload_real.php
@@ -23,9 +23,16 @@ class ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader'));
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+ if ($useStaticLoader) {
+ require_once __DIR__ . '/autoload_static.php';
+
+ call_user_func(\Composer\Autoload\ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::getInitializer($loader));
+ } else {
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
}
$loader->setClassMapAuthoritative(true);
diff --git a/apps/files_external/3rdparty/composer/autoload_static.php b/apps/files_external/3rdparty/composer/autoload_static.php
new file mode 100644
index 00000000000..c1a3a0492d0
--- /dev/null
+++ b/apps/files_external/3rdparty/composer/autoload_static.php
@@ -0,0 +1,127 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3
+{
+ public static $prefixLengthsPsr4 = array (
+ 'I' =>
+ array (
+ 'Icewind\\Streams\\Tests\\' => 22,
+ 'Icewind\\Streams\\' => 16,
+ 'Icewind\\SMB\\Test\\' => 17,
+ 'Icewind\\SMB\\' => 12,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'Icewind\\Streams\\Tests\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/icewind/streams/tests',
+ ),
+ 'Icewind\\Streams\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/icewind/streams/src',
+ ),
+ 'Icewind\\SMB\\Test\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/icewind/smb/tests',
+ ),
+ 'Icewind\\SMB\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/icewind/smb/src',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Icewind\\SMB\\AbstractShare' => __DIR__ . '/..' . '/icewind/smb/src/AbstractShare.php',
+ 'Icewind\\SMB\\Change' => __DIR__ . '/..' . '/icewind/smb/src/Change.php',
+ 'Icewind\\SMB\\Connection' => __DIR__ . '/..' . '/icewind/smb/src/Connection.php',
+ 'Icewind\\SMB\\ErrorCodes' => __DIR__ . '/..' . '/icewind/smb/src/ErrorCodes.php',
+ 'Icewind\\SMB\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AccessDeniedException.php',
+ 'Icewind\\SMB\\Exception\\AlreadyExistsException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AlreadyExistsException.php',
+ 'Icewind\\SMB\\Exception\\AuthenticationException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AuthenticationException.php',
+ 'Icewind\\SMB\\Exception\\ConnectException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectException.php',
+ 'Icewind\\SMB\\Exception\\ConnectionException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionException.php',
+ 'Icewind\\SMB\\Exception\\ConnectionRefusedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionRefusedException.php',
+ 'Icewind\\SMB\\Exception\\DependencyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/DependencyException.php',
+ 'Icewind\\SMB\\Exception\\Exception' => __DIR__ . '/..' . '/icewind/smb/src/Exception/Exception.php',
+ 'Icewind\\SMB\\Exception\\FileInUseException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/FileInUseException.php',
+ 'Icewind\\SMB\\Exception\\ForbiddenException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ForbiddenException.php',
+ 'Icewind\\SMB\\Exception\\HostDownException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/HostDownException.php',
+ 'Icewind\\SMB\\Exception\\InvalidHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidHostException.php',
+ 'Icewind\\SMB\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidPathException.php',
+ 'Icewind\\SMB\\Exception\\InvalidRequestException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidRequestException.php',
+ 'Icewind\\SMB\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidResourceException.php',
+ 'Icewind\\SMB\\Exception\\InvalidTypeException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidTypeException.php',
+ 'Icewind\\SMB\\Exception\\NoLoginServerException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoLoginServerException.php',
+ 'Icewind\\SMB\\Exception\\NoRouteToHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoRouteToHostException.php',
+ 'Icewind\\SMB\\Exception\\NotEmptyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotEmptyException.php',
+ 'Icewind\\SMB\\Exception\\NotFoundException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotFoundException.php',
+ 'Icewind\\SMB\\Exception\\TimedOutException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/TimedOutException.php',
+ 'Icewind\\SMB\\FileInfo' => __DIR__ . '/..' . '/icewind/smb/src/FileInfo.php',
+ 'Icewind\\SMB\\IFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/IFileInfo.php',
+ 'Icewind\\SMB\\INotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/INotifyHandler.php',
+ 'Icewind\\SMB\\IShare' => __DIR__ . '/..' . '/icewind/smb/src/IShare.php',
+ 'Icewind\\SMB\\NativeFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/NativeFileInfo.php',
+ 'Icewind\\SMB\\NativeServer' => __DIR__ . '/..' . '/icewind/smb/src/NativeServer.php',
+ 'Icewind\\SMB\\NativeShare' => __DIR__ . '/..' . '/icewind/smb/src/NativeShare.php',
+ 'Icewind\\SMB\\NativeState' => __DIR__ . '/..' . '/icewind/smb/src/NativeState.php',
+ 'Icewind\\SMB\\NativeStream' => __DIR__ . '/..' . '/icewind/smb/src/NativeStream.php',
+ 'Icewind\\SMB\\NotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/NotifyHandler.php',
+ 'Icewind\\SMB\\Parser' => __DIR__ . '/..' . '/icewind/smb/src/Parser.php',
+ 'Icewind\\SMB\\RawConnection' => __DIR__ . '/..' . '/icewind/smb/src/RawConnection.php',
+ 'Icewind\\SMB\\Server' => __DIR__ . '/..' . '/icewind/smb/src/Server.php',
+ 'Icewind\\SMB\\Share' => __DIR__ . '/..' . '/icewind/smb/src/Share.php',
+ 'Icewind\\SMB\\System' => __DIR__ . '/..' . '/icewind/smb/src/System.php',
+ 'Icewind\\SMB\\Test\\AbstractShare' => __DIR__ . '/..' . '/icewind/smb/tests/AbstractShare.php',
+ 'Icewind\\SMB\\Test\\NativeShare' => __DIR__ . '/..' . '/icewind/smb/tests/NativeShare.php',
+ 'Icewind\\SMB\\Test\\NativeStream' => __DIR__ . '/..' . '/icewind/smb/tests/NativeStream.php',
+ 'Icewind\\SMB\\Test\\NotifyHandlerTest' => __DIR__ . '/..' . '/icewind/smb/tests/NotifyHandlerTest.php',
+ 'Icewind\\SMB\\Test\\Parser' => __DIR__ . '/..' . '/icewind/smb/tests/Parser.php',
+ 'Icewind\\SMB\\Test\\Server' => __DIR__ . '/..' . '/icewind/smb/tests/Server.php',
+ 'Icewind\\SMB\\Test\\Share' => __DIR__ . '/..' . '/icewind/smb/tests/Share.php',
+ 'Icewind\\SMB\\Test\\TestCase' => __DIR__ . '/..' . '/icewind/smb/tests/TestCase.php',
+ 'Icewind\\SMB\\TimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/TimeZoneProvider.php',
+ 'Icewind\\Streams\\CallbackWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CallbackWrapper.php',
+ 'Icewind\\Streams\\Directory' => __DIR__ . '/..' . '/icewind/streams/src/Directory.php',
+ 'Icewind\\Streams\\DirectoryFilter' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryFilter.php',
+ 'Icewind\\Streams\\DirectoryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryWrapper.php',
+ 'Icewind\\Streams\\File' => __DIR__ . '/..' . '/icewind/streams/src/File.php',
+ 'Icewind\\Streams\\IteratorDirectory' => __DIR__ . '/..' . '/icewind/streams/src/IteratorDirectory.php',
+ 'Icewind\\Streams\\NullWrapper' => __DIR__ . '/..' . '/icewind/streams/src/NullWrapper.php',
+ 'Icewind\\Streams\\Path' => __DIR__ . '/..' . '/icewind/streams/src/Path.php',
+ 'Icewind\\Streams\\PathWrapper' => __DIR__ . '/..' . '/icewind/streams/src/PathWrapper.php',
+ 'Icewind\\Streams\\RetryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/RetryWrapper.php',
+ 'Icewind\\Streams\\SeekableWrapper' => __DIR__ . '/..' . '/icewind/streams/src/SeekableWrapper.php',
+ 'Icewind\\Streams\\Tests\\CallbackWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/CallbackWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryFilter' => __DIR__ . '/..' . '/icewind/streams/tests/DirectoryFilter.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperDummy' => __DIR__ . '/..' . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperNull' => __DIR__ . '/..' . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\FailWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\IteratorDirectory' => __DIR__ . '/..' . '/icewind/streams/tests/IteratorDirectory.php',
+ 'Icewind\\Streams\\Tests\\NullWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/NullWrapper.php',
+ 'Icewind\\Streams\\Tests\\PartialWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\PathWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/PathWrapper.php',
+ 'Icewind\\Streams\\Tests\\RetryWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\SeekableWrapper' => __DIR__ . '/..' . '/icewind/streams/tests/SeekableWrapper.php',
+ 'Icewind\\Streams\\Tests\\UrlCallBack' => __DIR__ . '/..' . '/icewind/streams/tests/UrlCallBack.php',
+ 'Icewind\\Streams\\Tests\\Wrapper' => __DIR__ . '/..' . '/icewind/streams/tests/Wrapper.php',
+ 'Icewind\\Streams\\Url' => __DIR__ . '/..' . '/icewind/streams/src/Url.php',
+ 'Icewind\\Streams\\UrlCallback' => __DIR__ . '/..' . '/icewind/streams/src/UrlCallBack.php',
+ 'Icewind\\Streams\\Wrapper' => __DIR__ . '/..' . '/icewind/streams/src/Wrapper.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json
index 127d2bd3a19..8e065858d02 100644
--- a/apps/files_external/3rdparty/composer/installed.json
+++ b/apps/files_external/3rdparty/composer/installed.json
@@ -1,28 +1,27 @@
[
{
"name": "icewind/smb",
- "version": "v1.1.0",
- "version_normalized": "1.1.0.0",
+ "version": "v2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "822f924967c68228555cea84ea44765f8e85c601"
+ "reference": "95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/822f924967c68228555cea84ea44765f8e85c601",
- "reference": "822f924967c68228555cea84ea44765f8e85c601",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a",
+ "reference": "95a5ecbaf92617f9800ad7d6070ef31d8ff28c3a",
"shasum": ""
},
"require": {
"icewind/streams": ">=0.2.0",
- "php": ">=5.3"
+ "php": ">=5.4"
},
"require-dev": {
- "phpunit/phpunit": "^4.8",
- "satooshi/php-coveralls": "v1.0.0"
+ "phpunit/phpunit": "^4.8"
},
- "time": "2016-04-26 13:26:39",
+ "time": "2016-12-13T13:56:55+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
@@ -45,17 +44,17 @@
},
{
"name": "icewind/streams",
- "version": "0.4.1",
- "version_normalized": "0.4.1.0",
+ "version": "0.5.2",
+ "version_normalized": "0.5.2.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac"
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/d3620e8dc410c86c2ba55579803679c4e0b289ac",
- "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/6bfd2fdbd99319f5e010d0a684409189a562cb1e",
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e",
"shasum": ""
},
"require": {
@@ -65,7 +64,7 @@
"phpunit/phpunit": "^4.8",
"satooshi/php-coveralls": "v1.0.0"
},
- "time": "2016-06-02 14:37:52",
+ "time": "2016-12-02T14:21:23+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
diff --git a/apps/files_external/3rdparty/icewind/smb/README.md b/apps/files_external/3rdparty/icewind/smb/README.md
index 32f3c650f87..c8f31193c83 100644
--- a/apps/files_external/3rdparty/icewind/smb/README.md
+++ b/apps/files_external/3rdparty/icewind/smb/README.md
@@ -1,7 +1,7 @@
SMB
===
-[![Coverage Status](https://img.shields.io/coveralls/icewind1991/SMB.svg)](https://coveralls.io/r/icewind1991/SMB?branch=master)
+[![Code Coverage](https://scrutinizer-ci.com/g/icewind1991/SMB/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/icewind1991/SMB/?branch=master)
[![Build Status](https://travis-ci.org/icewind1991/SMB.svg?branch=master)](https://travis-ci.org/icewind1991/SMB)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/icewind1991/SMB/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/icewind1991/SMB/?branch=master)
@@ -134,3 +134,19 @@ if (Server::NativeAvailable()) {
$share = $server->getShare('test');
$share->put($fileToUpload, 'example.txt');
```
+
+### Using notify
+
+```php
+<?php
+use Icewind\SMB\Server;
+
+require('vendor/autoload.php');
+
+$server = new Server('localhost', 'test', 'test');
+$share = $server->getShare('test');
+
+$share->notify('')->listen(function (\Icewind\SMB\Change $change) {
+ echo $change->getCode() . ': ' . $change->getPath() . "\n";
+});
+```
diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json b/apps/files_external/3rdparty/icewind/smb/composer.json
index 4ac8b27e725..8374f564bf1 100644
--- a/apps/files_external/3rdparty/icewind/smb/composer.json
+++ b/apps/files_external/3rdparty/icewind/smb/composer.json
@@ -9,11 +9,10 @@
}
],
"require" : {
- "php": ">=5.3",
+ "php": ">=5.4",
"icewind/streams": ">=0.2.0"
},
"require-dev": {
- "satooshi/php-coveralls" : "v1.0.0",
"phpunit/phpunit": "^4.8"
},
"autoload" : {
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Change.php b/apps/files_external/3rdparty/icewind/smb/src/Change.php
new file mode 100644
index 00000000000..9dfd57b3973
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/Change.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+class Change {
+ private $code;
+
+ private $path;
+
+ /**
+ * Change constructor.
+ *
+ * @param $code
+ * @param $path
+ */
+ public function __construct($code, $path) {
+ $this->code = $code;
+ $this->path = $path;
+ }
+
+ /**
+ * @return integer
+ */
+ public function getCode() {
+ return $this->code;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPath() {
+ return $this->path;
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Connection.php b/apps/files_external/3rdparty/icewind/smb/src/Connection.php
index d24cdc1f6d0..c1ebb861711 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Connection.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Connection.php
@@ -17,6 +17,14 @@ class Connection extends RawConnection {
const DELIMITER = 'smb:';
const DELIMITER_LENGTH = 4;
+ /** @var Parser */
+ private $parser;
+
+ public function __construct($command, Parser $parser, $env = array()) {
+ parent::__construct($command, $env);
+ $this->parser = $parser;
+ }
+
/**
* send input to smbclient
*
@@ -30,7 +38,7 @@ class Connection extends RawConnection {
* get all unprocessed output from smbclient until the next prompt
*
* @param callable $callback (optional) callback to call for every line read
- * @return string
+ * @return string[]
* @throws AuthenticationException
* @throws ConnectException
* @throws ConnectionException
@@ -42,7 +50,7 @@ class Connection extends RawConnection {
throw new ConnectionException('Connection not valid');
}
$promptLine = $this->readLine(); //first line is prompt
- $this->checkConnectionError($promptLine);
+ $this->parser->checkConnectionError($promptLine);
$output = array();
$line = $this->readLine();
@@ -54,6 +62,7 @@ class Connection extends RawConnection {
$result = $callback($line);
if ($result === false) { // allow the callback to close the connection for infinite running commands
$this->close(true);
+ break;
}
} else {
$output[] .= $line;
@@ -90,33 +99,6 @@ class Connection extends RawConnection {
}
}
- /**
- * check if the first line holds a connection failure
- *
- * @param $line
- * @throws AuthenticationException
- * @throws InvalidHostException
- * @throws NoLoginServerException
- */
- private function checkConnectionError($line) {
- $line = rtrim($line, ')');
- if (substr($line, -23) === ErrorCodes::LogonFailure) {
- throw new AuthenticationException('Invalid login');
- }
- if (substr($line, -26) === ErrorCodes::BadHostName) {
- throw new InvalidHostException('Invalid hostname');
- }
- if (substr($line, -22) === ErrorCodes::Unsuccessful) {
- throw new InvalidHostException('Connection unsuccessful');
- }
- if (substr($line, -28) === ErrorCodes::ConnectionRefused) {
- throw new InvalidHostException('Connection refused');
- }
- if (substr($line, -26) === ErrorCodes::NoLogonServers) {
- throw new NoLoginServerException('No login server');
- }
- }
-
public function close($terminate = true) {
if (is_resource($this->getInputStream())) {
$this->write('close' . PHP_EOL);
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php
new file mode 100644
index 00000000000..39735578798
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\SMB\Exception;
+
+class DependencyException extends Exception {
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php
index 3307ad57a24..7ac528198a9 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php
@@ -7,4 +7,32 @@
namespace Icewind\SMB\Exception;
-class Exception extends \Exception {}
+class Exception extends \Exception {
+ static public function unknown($path, $error) {
+ $message = 'Unknown error (' . $error . ')';
+ if ($path) {
+ $message .= ' for ' . $path;
+ }
+
+ return new Exception($message, $error);
+ }
+
+ /**
+ * @param array $exceptionMap
+ * @param mixed $error
+ * @param string $path
+ * @return Exception
+ */
+ static public function fromMap(array $exceptionMap, $error, $path) {
+ if (isset($exceptionMap[$error])) {
+ $exceptionClass = $exceptionMap[$error];
+ if (is_numeric($error)) {
+ return new $exceptionClass($path, $error);
+ } else {
+ return new $exceptionClass($path);
+ }
+ } else {
+ return Exception::unknown($path, $error);
+ }
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php
new file mode 100644
index 00000000000..1ee59b26ddd
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+
+interface INotifyHandler {
+ // https://msdn.microsoft.com/en-us/library/dn392331.aspx
+ const NOTIFY_ADDED = 1;
+ const NOTIFY_REMOVED = 2;
+ const NOTIFY_MODIFIED = 3;
+ const NOTIFY_RENAMED_OLD = 4;
+ const NOTIFY_RENAMED_NEW = 5;
+ const NOTIFY_ADDED_STREAM = 6;
+ const NOTIFY_REMOVED_STREAM = 7;
+ const NOTIFY_MODIFIED_STREAM = 8;
+ const NOTIFY_REMOVED_BY_DELETE = 9;
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return Change[]
+ */
+ public function getChanges();
+
+ /**
+ * Listen actively to all incoming changes
+ *
+ * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated
+ *
+ * @param callable $callback
+ */
+ public function listen($callback);
+
+ /**
+ * Stop listening for changes
+ *
+ * Note that any pending changes will be discarded
+ */
+ public function stop();
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/IShare.php b/apps/files_external/3rdparty/icewind/smb/src/IShare.php
index 40423151332..8f6d5058b81 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/IShare.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/IShare.php
@@ -8,17 +8,6 @@
namespace Icewind\SMB;
interface IShare {
- // https://msdn.microsoft.com/en-us/library/dn392331.aspx
- const NOTIFY_ADDED = 1;
- const NOTIFY_REMOVED = 2;
- const NOTIFY_MODIFIED = 3;
- const NOTIFY_RENAMED_OLD = 4;
- const NOTIFY_RENAMED_NEW = 5;
- const NOTIFY_ADDED_STREAM = 6;
- const NOTIFY_REMOVED_STREAM = 7;
- const NOTIFY_MODIFIED_STREAM = 8;
- const NOTIFY_REMOVED_BY_DELETE = 9;
-
/**
* Get the name of the share
*
@@ -145,8 +134,7 @@ interface IShare {
/**
* @param string $path
- * @param callable $callback callable which will be called for each received change
- * @return mixed
+ * @return INotifyHandler
*/
- public function notify($path, callable $callback);
+ public function notify($path);
}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeFileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/NativeFileInfo.php
index 6ef5cf0c5b9..6cb070196a6 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeFileInfo.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeFileInfo.php
@@ -26,7 +26,7 @@ class NativeFileInfo implements IFileInfo {
protected $share;
/**
- * @var array | null
+ * @var array|null
*/
protected $statCache;
@@ -66,7 +66,7 @@ class NativeFileInfo implements IFileInfo {
* @return array
*/
protected function stat() {
- if (!$this->statCache) {
+ if (is_null($this->statCache)) {
$this->statCache = $this->share->getStat($this->getPath());
}
return $this->statCache;
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php b/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
index 51e16d1841f..7efa34df370 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
@@ -60,6 +60,7 @@ class NativeShare extends AbstractShare {
}
private function buildUrl($path) {
+ $this->connect();
$this->verifyPath($path);
$url = sprintf('smb://%s/%s', $this->server->getHost(), $this->name);
if ($path) {
@@ -80,7 +81,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function dir($path) {
- $this->connect();
$files = array();
$dh = $this->state->opendir($this->buildUrl($path));
@@ -97,14 +97,13 @@ class NativeShare extends AbstractShare {
/**
* @param string $path
- * @return \Icewind\SMB\IFileInfo[]
+ * @return \Icewind\SMB\IFileInfo
*/
public function stat($path) {
return new NativeFileInfo($this, $path, basename($path), $this->getStat($path));
}
public function getStat($path) {
- $this->connect();
return $this->state->stat($this->buildUrl($path));
}
@@ -118,7 +117,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\AlreadyExistsException
*/
public function mkdir($path) {
- $this->connect();
return $this->state->mkdir($this->buildUrl($path));
}
@@ -132,7 +130,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function rmdir($path) {
- $this->connect();
return $this->state->rmdir($this->buildUrl($path));
}
@@ -146,7 +143,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function del($path) {
- $this->connect();
return $this->state->unlink($this->buildUrl($path));
}
@@ -161,7 +157,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\AlreadyExistsException
*/
public function rename($from, $to) {
- $this->connect();
return $this->state->rename($this->buildUrl($from), $this->buildUrl($to));
}
@@ -176,7 +171,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function put($source, $target) {
- $this->connect();
$sourceHandle = fopen($source, 'rb');
$targetHandle = $this->state->create($this->buildUrl($target));
@@ -214,7 +208,6 @@ class NativeShare extends AbstractShare {
throw new InvalidResourceException('Failed opening local file "' . $target . '" for writing: ' . $reason);
}
- $this->connect();
$sourceHandle = $this->state->open($this->buildUrl($source), 'r');
if (!$sourceHandle) {
fclose($targetHandle);
@@ -238,7 +231,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function read($source) {
- $this->connect();
$url = $this->buildUrl($source);
$handle = $this->state->open($url, 'r');
return NativeStream::wrap($this->state, $handle, 'r', $url);
@@ -254,7 +246,6 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function write($source) {
- $this->connect();
$url = $this->buildUrl($source);
$handle = $this->state->create($url);
return NativeStream::wrap($this->state, $handle, 'w', $url);
@@ -268,10 +259,7 @@ class NativeShare extends AbstractShare {
* @return string the attribute value
*/
public function getAttribute($path, $attribute) {
- $this->connect();
-
- $result = $this->state->getxattr($this->buildUrl($path), $attribute);
- return $result;
+ return $this->state->getxattr($this->buildUrl($path), $attribute);
}
/**
@@ -283,7 +271,6 @@ class NativeShare extends AbstractShare {
* @return string the attribute value
*/
public function setAttribute($path, $attribute, $value) {
- $this->connect();
if ($attribute === 'system.dos_attr.mode' and is_int($value)) {
$value = '0x' . dechex($value);
@@ -303,14 +290,13 @@ class NativeShare extends AbstractShare {
/**
* @param string $path
- * @param callable $callback callable which will be called for each received change
- * @return mixed
+ * @return INotifyHandler
*/
- public function notify($path, callable $callback) {
+ public function notify($path) {
// php-smbclient does support notify (https://github.com/eduardok/libsmbclient-php/issues/29)
// so we use the smbclient based backend for this
$share = new Share($this->server, $this->getName());
- $share->notify($path, $callback);
+ return $share->notify($path);
}
public function __destruct() {
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeState.php b/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
index e3e344d9e01..7ddce831853 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
@@ -7,16 +7,7 @@
namespace Icewind\SMB;
-use Icewind\SMB\Exception\AlreadyExistsException;
-use Icewind\SMB\Exception\ConnectionRefusedException;
use Icewind\SMB\Exception\Exception;
-use Icewind\SMB\Exception\ForbiddenException;
-use Icewind\SMB\Exception\HostDownException;
-use Icewind\SMB\Exception\InvalidTypeException;
-use Icewind\SMB\Exception\NoRouteToHostException;
-use Icewind\SMB\Exception\NotEmptyException;
-use Icewind\SMB\Exception\NotFoundException;
-use Icewind\SMB\Exception\TimedOutException;
/**
* Low level wrapper for libsmbclient-php for error handling
@@ -31,44 +22,39 @@ class NativeState {
protected $connected = false;
+ // todo replace with static once <5.6 support is dropped
+ // see error.h
+ private static $exceptionMap = [
+ 1 => '\Icewind\SMB\Exception\ForbiddenException',
+ 2 => '\Icewind\SMB\Exception\NotFoundException',
+ 13 => '\Icewind\SMB\Exception\ForbiddenException',
+ 17 => '\Icewind\SMB\Exception\AlreadyExistsException',
+ 20 => '\Icewind\SMB\Exception\InvalidTypeException',
+ 21 => '\Icewind\SMB\Exception\InvalidTypeException',
+ 39 => '\Icewind\SMB\Exception\NotEmptyException',
+ 110 => '\Icewind\SMB\Exception\TimedOutException',
+ 111 => '\Icewind\SMB\Exception\ConnectionRefusedException',
+ 112 => '\Icewind\SMB\Exception\HostDownException',
+ 113 => '\Icewind\SMB\Exception\NoRouteToHostException'
+ ];
+
protected function handleError($path) {
$error = smbclient_state_errno($this->state);
- switch ($error) {
- // see error.h
- case 0;
- return;
- case 1:
- case 13:
- throw new ForbiddenException($path, $error);
- case 2:
- throw new NotFoundException($path, $error);
- case 17:
- throw new AlreadyExistsException($path, $error);
- case 20:
- throw new InvalidTypeException($path, $error);
- case 21:
- throw new InvalidTypeException($path, $error);
- case 39:
- throw new NotEmptyException($path, $error);
- case 110:
- throw new TimedOutException($path, $error);
- case 111:
- throw new ConnectionRefusedException($path, $error);
- case 112:
- throw new HostDownException($path, $error);
- case 113:
- throw new NoRouteToHostException($path, $error);
- default:
- $message = 'Unknown error (' . $error . ')';
- if ($path) {
- $message .= ' for ' . $path;
- }
- throw new Exception($message, $error);
+ if ($error === 0) {
+ return;
}
+ throw Exception::fromMap(self::$exceptionMap, $error, $path);
}
- protected function testResult($result, $path) {
+ protected function testResult($result, $uri) {
if ($result === false or $result === null) {
+ // smb://host/share/path
+ if (is_string($uri)) {
+ list(, , , , $path) = explode('/', $uri, 5);
+ $path = '/' . $path;
+ } else {
+ $path = null;
+ }
$this->handleError($path);
}
}
@@ -246,7 +232,7 @@ class NativeState {
* @param resource $file
* @param int $offset
* @param int $whence SEEK_SET | SEEK_CUR | SEEK_END
- * @return int | bool new file offset as measured from the start of the file on success, false on failure.
+ * @return int|bool new file offset as measured from the start of the file on success, false on failure.
*/
public function lseek($file, $offset, $whence = SEEK_SET) {
$result = @smbclient_lseek($this->state, $file, $offset, $whence);
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php
new file mode 100644
index 00000000000..194e848502b
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+
+class NotifyHandler implements INotifyHandler {
+ /**
+ * @var Connection
+ */
+ private $connection;
+
+ /**
+ * @var string
+ */
+ private $path;
+
+ private $listening = true;
+
+ /**
+ * @param Connection $connection
+ * @param string $path
+ */
+ public function __construct(Connection $connection, $path) {
+ $this->connection = $connection;
+ $this->path = $path;
+ }
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return Change[]
+ */
+ public function getChanges() {
+ if (!$this->listening) {
+ return [];
+ }
+ stream_set_blocking($this->connection->getOutputStream(), 0);
+ $lines = [];
+ while (($line = $this->connection->readLine())) {
+ $lines[] = $line;
+ }
+ stream_set_blocking($this->connection->getOutputStream(), 1);
+ return array_values(array_filter(array_map([$this, 'parseChangeLine'], $lines)));
+ }
+
+ /**
+ * Listen actively to all incoming changes
+ *
+ * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated
+ *
+ * @param callable $callback
+ */
+ public function listen($callback) {
+ if ($this->listening) {
+ $this->connection->read(function ($line) use ($callback) {
+ return $callback($this->parseChangeLine($line));
+ });
+ }
+ }
+
+ private function parseChangeLine($line) {
+ $code = (int)substr($line, 0, 4);
+ if ($code === 0) {
+ return null;
+ }
+ $subPath = str_replace('\\', '/', substr($line, 5));
+ if ($this->path === '') {
+ return new Change($code, $subPath);
+ } else {
+ return new Change($code, $this->path . '/' . $subPath);
+ }
+ }
+
+ public function stop() {
+ $this->listening = false;
+ $this->connection->close();
+ }
+
+ public function __destruct() {
+ $this->stop();
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Parser.php b/apps/files_external/3rdparty/icewind/smb/src/Parser.php
index fc1d7f283a8..5cc5acbdf56 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Parser.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Parser.php
@@ -9,19 +9,38 @@ namespace Icewind\SMB;
use Icewind\SMB\Exception\AccessDeniedException;
use Icewind\SMB\Exception\AlreadyExistsException;
+use Icewind\SMB\Exception\AuthenticationException;
use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\FileInUseException;
+use Icewind\SMB\Exception\InvalidHostException;
use Icewind\SMB\Exception\InvalidResourceException;
use Icewind\SMB\Exception\InvalidTypeException;
+use Icewind\SMB\Exception\NoLoginServerException;
use Icewind\SMB\Exception\NotEmptyException;
use Icewind\SMB\Exception\NotFoundException;
class Parser {
+ const MSG_NOT_FOUND = 'Error opening local file ';
+
/**
* @var \Icewind\SMB\TimeZoneProvider
*/
protected $timeZoneProvider;
+ // todo replace with static once <5.6 support is dropped
+ // see error.h
+ private static $exceptionMap = [
+ ErrorCodes::PathNotFound => '\Icewind\SMB\Exception\NotFoundException',
+ ErrorCodes::ObjectNotFound => '\Icewind\SMB\Exception\NotFoundException',
+ ErrorCodes::NoSuchFile => '\Icewind\SMB\Exception\NotFoundException',
+ ErrorCodes::NameCollision => '\Icewind\SMB\Exception\AlreadyExistsException',
+ ErrorCodes::AccessDenied => '\Icewind\SMB\Exception\AccessDeniedException',
+ ErrorCodes::DirectoryNotEmpty => '\Icewind\SMB\Exception\NotEmptyException',
+ ErrorCodes::FileIsADirectory => '\Icewind\SMB\Exception\InvalidTypeException',
+ ErrorCodes::NotADirectory => '\Icewind\SMB\Exception\InvalidTypeException',
+ ErrorCodes::SharingViolation => '\Icewind\SMB\Exception\FileInUseException'
+ ];
+
/**
* @param \Icewind\SMB\TimeZoneProvider $timeZoneProvider
*/
@@ -29,50 +48,54 @@ class Parser {
$this->timeZoneProvider = $timeZoneProvider;
}
- public function checkForError($output, $path) {
- if (count($output) === 0) {
- return true;
- } else {
- if (strpos($output[0], 'does not exist')) {
- throw new NotFoundException($path);
- }
- $parts = explode(' ', $output[0]);
- $error = false;
- foreach ($parts as $part) {
- if (substr($part, 0, 9) === 'NT_STATUS') {
- $error = $part;
- }
+ private function getErrorCode($line) {
+ $parts = explode(' ', $line);
+ foreach ($parts as $part) {
+ if (substr($part, 0, 9) === 'NT_STATUS') {
+ return $part;
}
+ }
+ return false;
+ }
- $notFoundMsg = 'Error opening local file ';
- if (substr($output[0], 0, strlen($notFoundMsg)) === $notFoundMsg) {
- $localPath = substr($output[0], strlen($notFoundMsg));
- throw new InvalidResourceException('Failed opening local file "' . $localPath . '" for writing');
- }
+ public function checkForError($output, $path) {
+ if (strpos($output[0], 'does not exist')) {
+ throw new NotFoundException($path);
+ }
+ $error = $this->getErrorCode($output[0]);
- switch ($error) {
- case ErrorCodes::PathNotFound:
- case ErrorCodes::ObjectNotFound:
- case ErrorCodes::NoSuchFile:
- throw new NotFoundException($path);
- case ErrorCodes::NameCollision:
- throw new AlreadyExistsException($path);
- case ErrorCodes::AccessDenied:
- throw new AccessDeniedException($path);
- case ErrorCodes::DirectoryNotEmpty:
- throw new NotEmptyException($path);
- case ErrorCodes::FileIsADirectory:
- case ErrorCodes::NotADirectory:
- throw new InvalidTypeException($path);
- case ErrorCodes::SharingViolation:
- throw new FileInUseException($path);
- default:
- $message = 'Unknown error (' . $error . ')';
- if ($path) {
- $message .= ' for ' . $path;
- }
- throw new Exception($message);
- }
+ if (substr($output[0], 0, strlen(self::MSG_NOT_FOUND)) === self::MSG_NOT_FOUND) {
+ $localPath = substr($output[0], strlen(self::MSG_NOT_FOUND));
+ throw new InvalidResourceException('Failed opening local file "' . $localPath . '" for writing');
+ }
+
+ throw Exception::fromMap(self::$exceptionMap, $error, $path);
+ }
+
+ /**
+ * check if the first line holds a connection failure
+ *
+ * @param $line
+ * @throws AuthenticationException
+ * @throws InvalidHostException
+ * @throws NoLoginServerException
+ */
+ public function checkConnectionError($line) {
+ $line = rtrim($line, ')');
+ if (substr($line, -23) === ErrorCodes::LogonFailure) {
+ throw new AuthenticationException('Invalid login');
+ }
+ if (substr($line, -26) === ErrorCodes::BadHostName) {
+ throw new InvalidHostException('Invalid hostname');
+ }
+ if (substr($line, -22) === ErrorCodes::Unsuccessful) {
+ throw new InvalidHostException('Connection unsuccessful');
+ }
+ if (substr($line, -28) === ErrorCodes::ConnectionRefused) {
+ throw new InvalidHostException('Connection refused');
+ }
+ if (substr($line, -26) === ErrorCodes::NoLogonServers) {
+ throw new NoLoginServerException('No login server');
}
}
@@ -95,9 +118,7 @@ class Parser {
}
public function parseStat($output) {
- $mtime = 0;
- $mode = 0;
- $size = 0;
+ $data = [];
foreach ($output as $line) {
// A line = explode statement may not fill all array elements
// properly. May happen when accessing non Windows Fileservers
@@ -105,20 +126,13 @@ class Parser {
$name = isset($words[0]) ? $words[0] : '';
$value = isset($words[1]) ? $words[1] : '';
$value = trim($value);
- if ($name === 'write_time') {
- $mtime = strtotime($value);
- } else if ($name === 'attributes') {
- $mode = hexdec(substr($value, 1, -1));
- } else if ($name === 'stream') {
- list(, $size,) = explode(' ', $value);
- $size = intval($size);
- }
+ $data[$name] = $value;
}
- return array(
- 'mtime' => $mtime,
- 'mode' => $mode,
- 'size' => $size
- );
+ return [
+ 'mtime' => strtotime($data['write_time']),
+ 'mode' => hexdec(substr($data['attributes'], strpos($data['attributes'], '('), -1)),
+ 'size' => isset($data['stream']) ? intval(explode(' ', $data['stream'])[1]) : 0
+ ];
}
public function parseDir($output, $basePath) {
@@ -139,4 +153,17 @@ class Parser {
}
return $content;
}
+
+ public function parseListShares($output) {
+ $shareNames = array();
+ foreach ($output as $line) {
+ if (strpos($line, '|')) {
+ list($type, $name, $description) = explode('|', $line);
+ if (strtolower($type) === 'disk') {
+ $shareNames[$name] = $description;
+ }
+ }
+ }
+ return $shareNames;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/RawConnection.php b/apps/files_external/3rdparty/icewind/smb/src/RawConnection.php
index 88ab046ef38..e9349716430 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/RawConnection.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/RawConnection.php
@@ -88,7 +88,7 @@ class RawConnection {
/**
* read a line of output
*
- * @return string
+ * @return string|false
*/
public function readLine() {
return stream_get_line($this->getOutputStream(), 4086, "\n");
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Server.php b/apps/files_external/3rdparty/icewind/smb/src/Server.php
index 25f17201397..12692eb4c6e 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Server.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Server.php
@@ -135,32 +135,11 @@ class Server {
$connection = new RawConnection($command);
$connection->writeAuthentication($this->getUser(), $this->getPassword());
$output = $connection->readAll();
+ $parser = new Parser($this->timezoneProvider);
- $line = $output[0];
+ $parser->checkConnectionError($output[0]);
- $line = rtrim($line, ')');
- if (substr($line, -23) === ErrorCodes::LogonFailure) {
- throw new AuthenticationException();
- }
- if (substr($line, -26) === ErrorCodes::BadHostName) {
- throw new InvalidHostException();
- }
- if (substr($line, -22) === ErrorCodes::Unsuccessful) {
- throw new InvalidHostException();
- }
- if (substr($line, -28) === ErrorCodes::ConnectionRefused) {
- throw new InvalidHostException();
- }
-
- $shareNames = array();
- foreach ($output as $line) {
- if (strpos($line, '|')) {
- list($type, $name, $description) = explode('|', $line);
- if (strtolower($type) === 'disk') {
- $shareNames[$name] = $description;
- }
- }
- }
+ $shareNames = $parser->parseListShares($output);
$shares = array();
foreach ($shareNames as $name => $description) {
@@ -174,7 +153,7 @@ class Server {
* @return \Icewind\SMB\IShare
*/
public function getShare($name) {
- return new Share($this, $name);
+ return new Share($this, $name, $this->system);
}
/**
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Share.php b/apps/files_external/3rdparty/icewind/smb/src/Share.php
index 21f8fe5b139..ba8bbbbb8ca 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Share.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Share.php
@@ -8,6 +8,7 @@
namespace Icewind\SMB;
use Icewind\SMB\Exception\ConnectionException;
+use Icewind\SMB\Exception\DependencyException;
use Icewind\SMB\Exception\FileInUseException;
use Icewind\SMB\Exception\InvalidTypeException;
use Icewind\SMB\Exception\NotFoundException;
@@ -42,24 +43,30 @@ class Share extends AbstractShare {
/**
* @param Server $server
* @param string $name
+ * @param System $system
*/
- public function __construct($server, $name) {
+ public function __construct($server, $name, System $system = null) {
parent::__construct();
$this->server = $server;
$this->name = $name;
- $this->system = new System();
+ $this->system = (!is_null($system)) ? $system : new System();
$this->parser = new Parser(new TimeZoneProvider($this->server->getHost(), $this->system));
}
protected function getConnection() {
$workgroupArgument = ($this->server->getWorkgroup()) ? ' -W ' . escapeshellarg($this->server->getWorkgroup()) : '';
- $command = sprintf('stdbuf -o0 %s %s --authentication-file=%s %s',
+ $smbClientPath = $this->system->getSmbclientPath();
+ if (!$smbClientPath) {
+ throw new DependencyException('Can\'t find smbclient binary in path');
+ }
+ $command = sprintf('%s%s %s --authentication-file=%s %s',
+ $this->system->hasStdBuf() ? 'stdbuf -o0 ' : '',
$this->system->getSmbclientPath(),
$workgroupArgument,
System::getFD(3),
escapeshellarg('//' . $this->server->getHost() . '/' . $this->name)
);
- $connection = new Connection($command);
+ $connection = new Connection($command, $this->parser);
$connection->writeAuthentication($this->server->getUser(), $this->server->getPassword());
if (!$connection->isValid()) {
throw new ConnectionException();
@@ -97,8 +104,8 @@ class Share extends AbstractShare {
}
protected function simpleCommand($command, $path) {
- $path = $this->escapePath($path);
- $cmd = $command . ' ' . $path;
+ $escapedPath = $this->escapePath($path);
+ $cmd = $command . ' ' . $escapedPath;
$output = $this->execute($cmd);
return $this->parseOutput($output, $path);
}
@@ -125,7 +132,7 @@ class Share extends AbstractShare {
/**
* @param string $path
- * @return \Icewind\SMB\IFileInfo[]
+ * @return \Icewind\SMB\IFileInfo
*/
public function stat($path) {
$escapedPath = $this->escapePath($path);
@@ -216,8 +223,7 @@ class Share extends AbstractShare {
public function rename($from, $to) {
$path1 = $this->escapePath($from);
$path2 = $this->escapePath($to);
- $cmd = 'rename ' . $path1 . ' ' . $path2;
- $output = $this->execute($cmd);
+ $output = $this->execute('rename ' . $path1 . ' ' . $path2);
return $this->parseOutput($output, $to);
}
@@ -268,15 +274,8 @@ class Share extends AbstractShare {
$source = $this->escapePath($source);
// since returned stream is closed by the caller we need to create a new instance
// since we can't re-use the same file descriptor over multiple calls
- $workgroupArgument = ($this->server->getWorkgroup()) ? ' -W ' . escapeshellarg($this->server->getWorkgroup()) : '';
- $command = sprintf('%s %s --authentication-file=%s %s',
- $this->system->getSmbclientPath(),
- $workgroupArgument,
- System::getFD(3),
- escapeshellarg('//' . $this->server->getHost() . '/' . $this->name)
- );
- $connection = new Connection($command);
- $connection->writeAuthentication($this->server->getUser(), $this->server->getPassword());
+ $connection = $this->getConnection();
+
$connection->write('get ' . $source . ' ' . System::getFD(5));
$connection->write('exit');
$fh = $connection->getFileOutputStream();
@@ -297,17 +296,9 @@ class Share extends AbstractShare {
$target = $this->escapePath($target);
// since returned stream is closed by the caller we need to create a new instance
// since we can't re-use the same file descriptor over multiple calls
- $workgroupArgument = ($this->server->getWorkgroup()) ? ' -W ' . escapeshellarg($this->server->getWorkgroup()) : '';
- $command = sprintf('%s %s --authentication-file=%s %s',
- $this->system->getSmbclientPath(),
- $workgroupArgument,
- System::getFD(3),
- escapeshellarg('//' . $this->server->getHost() . '/' . $this->name)
- );
- $connection = new Connection($command);
- $connection->writeAuthentication($this->server->getUser(), $this->server->getPassword());
- $fh = $connection->getFileInputStream();
+ $connection = $this->getConnection();
+ $fh = $connection->getFileInputStream();
$connection->write('put ' . System::getFD(4) . ' ' . $target);
$connection->write('exit');
@@ -343,30 +334,30 @@ class Share extends AbstractShare {
$output = $this->execute($cmd);
$this->parseOutput($output, $path);
- // then set the modes we want
- $cmd = 'setmode ' . $path . ' ' . $modeString;
- $output = $this->execute($cmd);
- return $this->parseOutput($output, $path);
+ if ($mode !== FileInfo::MODE_NORMAL) {
+ // then set the modes we want
+ $cmd = 'setmode ' . $path . ' ' . $modeString;
+ $output = $this->execute($cmd);
+ return $this->parseOutput($output, $path);
+ } else {
+ return true;
+ }
}
/**
* @param string $path
- * @param callable $callback callable which will be called for each received change
- * @return mixed
+ * @return INotifyHandler
+ * @throws ConnectionException
+ * @throws DependencyException
*/
- public function notify($path, callable $callback) {
+ public function notify($path) {
+ if (!$this->system->hasStdBuf()) { //stdbuf is required to disable smbclient's output buffering
+ throw new DependencyException('stdbuf is required for usage of the notify command');
+ }
$connection = $this->getConnection(); // use a fresh connection since the notify command blocks the process
$command = 'notify ' . $this->escapePath($path);
$connection->write($command . PHP_EOL);
- $connection->read(function ($line) use ($callback, $path) {
- $code = (int)substr($line, 0, 4);
- $subPath = substr($line, 5);
- if ($path === '') {
- return $callback($code, $subPath);
- } else {
- return $callback($code, $path . '/' . $subPath);
- }
- });
+ return new NotifyHandler($connection, $path);
}
/**
@@ -395,7 +386,12 @@ class Share extends AbstractShare {
* @return bool
*/
protected function parseOutput($lines, $path = '') {
- return $this->parser->checkForError($lines, $path);
+ if (count($lines) === 0) {
+ return true;
+ } else {
+ $this->parser->checkForError($lines, $path);
+ return false;
+ }
}
/**
diff --git a/apps/files_external/3rdparty/icewind/smb/src/System.php b/apps/files_external/3rdparty/icewind/smb/src/System.php
index 192a0b3877d..7c519988aa5 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/System.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/System.php
@@ -14,6 +14,8 @@ class System {
private $net;
+ private $stdbuf;
+
public static function getFD($num) {
$folders = array(
'/proc/self/fd',
@@ -40,4 +42,14 @@ class System {
}
return $this->net;
}
+
+ public function hasStdBuf() {
+ if (!$this->stdbuf) {
+ $result = null;
+ $output = array();
+ exec('which stdbuf 2>&1', $output, $result);
+ $this->stdbuf = $result === 0;
+ }
+ return $this->stdbuf;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php b/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php
index 86d7859a6f7..fcdf7e3e879 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php
@@ -27,7 +27,7 @@ class TimeZoneProvider {
* @param string $host
* @param System $system
*/
- function __construct($host, System $system) {
+ public function __construct($host, System $system) {
$this->host = $host;
$this->system = $system;
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
index c5847b95fdb..4eef55681c7 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
@@ -107,6 +107,8 @@ class CallbackWrapper extends Wrapper {
$result = parent::stream_close();
if (is_callable($this->closeCallback)) {
call_user_func($this->closeCallback);
+ // prevent further calls by potential PHP 7 GC ghosts
+ $this->closeCallback = null;
}
return $result;
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Path.php b/apps/files_external/3rdparty/icewind/streams/src/Path.php
index 46d2156b69a..bef9fd5f616 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/Path.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/Path.php
@@ -56,7 +56,7 @@ class Path {
protected function register() {
if (!$this->registered) {
- $this->appendDefaultContent($this->getProtocol(), $this->contextOptions);
+ $this->appendDefaultContent($this->contextOptions);
stream_wrapper_register($this->getProtocol(), $this->class);
$this->registered = true;
}
@@ -71,13 +71,17 @@ class Path {
/**
* Add values to the default stream context
*
- * @param string $key
* @param array $values
*/
- protected function appendDefaultContent($key, $values) {
+ protected function appendDefaultContent($values) {
+ if (!is_array(current($values))) {
+ $values = array($this->getProtocol() => $values);
+ }
$context = stream_context_get_default();
$defaults = stream_context_get_options($context);
- $defaults[$key] = $values;
+ foreach ($values as $key => $value) {
+ $defaults[$key] = $value;
+ }
stream_context_set_default($defaults);
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php
new file mode 100644
index 00000000000..88af7e17b33
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * A string-like object that maps to an existing stream when opened
+ */
+class PathWrapper extends NullWrapper {
+ /**
+ * @param resource $source
+ * @return Path|string
+ */
+ public static function getPath($source) {
+ return new Path(__CLASS__, [
+ 'null' => [
+ 'source' => $source
+ ]
+ ]);
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
index 53de2942ca9..8e52eff9a08 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
@@ -53,7 +53,7 @@ abstract class Wrapper implements File, Directory {
if (isset($context[$name])) {
$context = $context[$name];
} else {
- throw new \BadMethodCallException('Invalid context, "callable" options not set');
+ throw new \BadMethodCallException('Invalid context, "' . $name . '" options not set');
}
if (isset($context['source']) and is_resource($context['source'])) {
$this->setSourceStream($context['source']);
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index c221ba4145f..3f6a48d2e22 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -3,17 +3,16 @@
<id>files_external</id>
<name>External storage support</name>
<description>
- This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other ownCloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root ownCloud directory, which they can access and use like any other ownCloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.
-
- External storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.
+This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other ownCloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root ownCloud directory, which they can access and use like any other ownCloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.
+
+External storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.
</description>
<licence>AGPL</licence>
<author>Robin Appelman, Michael Gapczynski, Vincent Petry</author>
<documentation>
<admin>admin-external-storage</admin>
</documentation>
- <rememberlogin>false</rememberlogin>
- <version>1.1.2</version>
+ <version>1.3.0</version>
<types>
<filesystem/>
</types>
@@ -22,7 +21,7 @@
<namespace>Files_External</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
diff --git a/apps/files_external/img/app-dark.svg b/apps/files_external/img/app-dark.svg
new file mode 100644
index 00000000000..157af238eeb
--- /dev/null
+++ b/apps/files_external/img/app-dark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path d="M14.903 3.237l4.76 4.515-7.14 6.772 4.76 4.514 7.142-6.772 4.762 4.515V3.237H14.904zM5.38 5.495C4.063 5.495 3 6.5 3 7.752V25.81c0 1.25 1.062 2.257 2.38 2.257h19.045c1.318 0 2.38-1.007 2.38-2.257v-6.772l-2.38-2.257v9.03H5.38V7.752h9.523l-2.38-2.258H5.38z" fill="#000"/></svg>
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js
index 4869e663a0a..782b0b08288 100644
--- a/apps/files_external/js/statusmanager.js
+++ b/apps/files_external/js/statusmanager.js
@@ -539,7 +539,11 @@ OCA.External.StatusManager.Utils = {
* of the tr matching the folder name
*/
getIconRoute: function (tr) {
- var icon = OC.imagePath('core', 'filetypes/folder-external');
+ if (OCA.Theming) {
+ var icon = OC.generateUrl('/apps/theming/img/core/filetypes/folder-external.svg?v=' + OCA.Theming.cacheBuster);
+ } else {
+ var icon = OC.imagePath('core', 'filetypes/folder-external');
+ }
var backend = null;
if (tr instanceof $) {
diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js
index 12d1c259e9e..a32f7f2bcbb 100644
--- a/apps/files_external/l10n/cs_CZ.js
+++ b/apps/files_external/l10n/cs_CZ.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Smazat",
"Allow users to mount external storage" : "Povolit uživatelům připojení externího úložiště",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nelze obdržet informaci z ownCloud serveru: {code} {type}",
- "Access granted" : "Přístup povolen",
- "Global Credentials" : "Globální přihlašovací údaje",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Poznámka:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> cURL podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> \"%s\" není instalováno. Není možné připojení %s. Prosím požádejte svého správce systému o instalaci.",
- "External Storage" : "Externí úložiště"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nelze obdržet informaci z ownCloud serveru: {code} {type}"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json
index 96738c4e689..d4f14f220f3 100644
--- a/apps/files_external/l10n/cs_CZ.json
+++ b/apps/files_external/l10n/cs_CZ.json
@@ -124,14 +124,6 @@
"Delete" : "Smazat",
"Allow users to mount external storage" : "Povolit uživatelům připojení externího úložiště",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nelze obdržet informaci z ownCloud serveru: {code} {type}",
- "Access granted" : "Přístup povolen",
- "Global Credentials" : "Globální přihlašovací údaje",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Poznámka:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> cURL podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> \"%s\" není instalováno. Není možné připojení %s. Prosím požádejte svého správce systému o instalaci.",
- "External Storage" : "Externí úložiště"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nelze obdržet informaci z ownCloud serveru: {code} {type}"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js
index 1eb3f881c79..847a4be17db 100644
--- a/apps/files_external/l10n/da.js
+++ b/apps/files_external/l10n/da.js
@@ -99,12 +99,6 @@ OC.L10N.register(
"Add storage" : "Tilføj lager",
"Advanced settings" : "Avancerede indstillinger",
"Delete" : "Slet",
- "Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Note:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> cURL-understøttelsen i PHP er enten ikke aktiveret eller installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> FTP understøttelsen i PHP er enten ikke aktiveret eller installeret. Montering af %s er ikke muligt. Anmod din systemadministrator om at installere det.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> \"%s\" er ikke installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
- "External Storage" : "Ekstern opbevaring"
+ "Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json
index 2845083e017..e1ee85b5e69 100644
--- a/apps/files_external/l10n/da.json
+++ b/apps/files_external/l10n/da.json
@@ -97,12 +97,6 @@
"Add storage" : "Tilføj lager",
"Advanced settings" : "Avancerede indstillinger",
"Delete" : "Slet",
- "Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Note:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> cURL-understøttelsen i PHP er enten ikke aktiveret eller installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> FTP understøttelsen i PHP er enten ikke aktiveret eller installeret. Montering af %s er ikke muligt. Anmod din systemadministrator om at installere det.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Bemærk:</b> \"%s\" er ikke installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
- "External Storage" : "Ekstern opbevaring"
+ "Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index 65aed9991e9..63fb1e42293 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Löschen",
"Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden",
"Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Die gewünschten Informationen konnten nicht vom Server gelesen werden: {code} {type}",
- "Access granted" : "Zugriff gewährt",
- "Global Credentials" : "Globale Anmeldeinformationen",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Hinweis:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an Deinen Systemadministrator.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> \"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.",
- "External Storage" : "Externer Speicher"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Die gewünschten Informationen konnten nicht vom Server gelesen werden: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index cfd9ad3aa67..4fdb9e776fe 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -124,14 +124,6 @@
"Delete" : "Löschen",
"Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden",
"Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Die gewünschten Informationen konnten nicht vom Server gelesen werden: {code} {type}",
- "Access granted" : "Zugriff gewährt",
- "Global Credentials" : "Globale Anmeldeinformationen",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Hinweis:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an Deinen Systemadministrator.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> \"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.",
- "External Storage" : "Externer Speicher"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Die gewünschten Informationen konnten nicht vom Server gelesen werden: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index 68df8208ada..d136e0176b4 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -52,7 +52,7 @@ OC.L10N.register(
"Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID „%i“ ist nicht bearbeitbar durch Benutzer",
"Access key" : "Zugangsschlüssel",
"Secret key" : "geheimer Schlüssel",
- "Builtin" : "Builtin",
+ "Builtin" : "Eingebaut",
"None" : "Keine",
"OAuth1" : "OAuth1",
"App key" : "App-Schlüssel",
@@ -114,7 +114,7 @@ OC.L10N.register(
"Enable encryption" : "Verschlüsselung aktivieren",
"Enable previews" : "Vorschau aktivieren",
"Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen überprüfen",
+ "Check for changes" : "Auf Änderungen prüfen",
"Never" : "Nie",
"Once every direct access" : "Einmal bei jedem Direktzugriff",
"Folder name" : "Ordnername",
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Löschen",
"Allow users to mount external storage" : "Erlauben Sie den Benutzern externen Speicher hinzuzufügen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen vom entfernten Server gelesen werden: {code} {type}",
- "Access granted" : "Zugriff gewährt",
- "Global Credentials" : "Globale Anmeldeinformationen",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Hinweis:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> \"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "External Storage" : "Externer Speicher"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen vom entfernten Server gelesen werden: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index b2ee065a611..12dea8c0a2a 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -50,7 +50,7 @@
"Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID „%i“ ist nicht bearbeitbar durch Benutzer",
"Access key" : "Zugangsschlüssel",
"Secret key" : "geheimer Schlüssel",
- "Builtin" : "Builtin",
+ "Builtin" : "Eingebaut",
"None" : "Keine",
"OAuth1" : "OAuth1",
"App key" : "App-Schlüssel",
@@ -112,7 +112,7 @@
"Enable encryption" : "Verschlüsselung aktivieren",
"Enable previews" : "Vorschau aktivieren",
"Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen überprüfen",
+ "Check for changes" : "Auf Änderungen prüfen",
"Never" : "Nie",
"Once every direct access" : "Einmal bei jedem Direktzugriff",
"Folder name" : "Ordnername",
@@ -124,14 +124,6 @@
"Delete" : "Löschen",
"Allow users to mount external storage" : "Erlauben Sie den Benutzern externen Speicher hinzuzufügen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen vom entfernten Server gelesen werden: {code} {type}",
- "Access granted" : "Zugriff gewährt",
- "Global Credentials" : "Globale Anmeldeinformationen",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Hinweis:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> \"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Systemadministrator.",
- "External Storage" : "Externer Speicher"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen vom entfernten Server gelesen werden: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js
index c61795a53f7..b5af26264ac 100644
--- a/apps/files_external/l10n/el.js
+++ b/apps/files_external/l10n/el.js
@@ -109,12 +109,6 @@ OC.L10N.register(
"Delete" : "Διαγραφή",
"Allow users to mount external storage" : "Να επιτρέπεται στους χρήστες η σύνδεση εξωτερικού χώρου",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Αδυναμία λήψης πληροφορίας από τον διακομιστή nextcloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Σημείωση:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η υποστήριξη cURL στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η υποστήριξη FTP στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Δεν είναι δυνατή η προσάρτηση του %s. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η επέκταση \"%s\" δεν είναι εγκατεστημένη. Δεν είναι δυνατή η προσάρτηση %s. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "External Storage" : "Εξωτερικό Αποθηκευτικό Μέσο"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Αδυναμία λήψης πληροφορίας από τον διακομιστή nextcloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json
index d640bcb67a4..03e56cfba5c 100644
--- a/apps/files_external/l10n/el.json
+++ b/apps/files_external/l10n/el.json
@@ -107,12 +107,6 @@
"Delete" : "Διαγραφή",
"Allow users to mount external storage" : "Να επιτρέπεται στους χρήστες η σύνδεση εξωτερικού χώρου",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Αδυναμία λήψης πληροφορίας από τον διακομιστή nextcloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Σημείωση:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η υποστήριξη cURL στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η υποστήριξη FTP στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Δεν είναι δυνατή η προσάρτηση του %s. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Σημείωση:</b> Η επέκταση \"%s\" δεν είναι εγκατεστημένη. Δεν είναι δυνατή η προσάρτηση %s. Παρακαλώ ζητήστε από τον διαχειριστή συστημάτων σας να την εγκαταστήσει.",
- "External Storage" : "Εξωτερικό Αποθηκευτικό Μέσο"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Αδυναμία λήψης πληροφορίας από τον διακομιστή nextcloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js
index f357ab6eb2d..12d255d88bd 100644
--- a/apps/files_external/l10n/en_GB.js
+++ b/apps/files_external/l10n/en_GB.js
@@ -119,13 +119,6 @@ OC.L10N.register(
"Delete" : "Delete",
"Allow users to mount external storage" : "Allow users to mount external storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Couldn't get the information from the ownCloud server: {code} {type}",
- "Global Credentials" : "Global Credentials",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Note:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "External Storage" : "External Storage"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Couldn't get the information from the ownCloud server: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json
index 7a7d7f63f37..8e7e2bde31e 100644
--- a/apps/files_external/l10n/en_GB.json
+++ b/apps/files_external/l10n/en_GB.json
@@ -117,13 +117,6 @@
"Delete" : "Delete",
"Allow users to mount external storage" : "Allow users to mount external storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Couldn't get the information from the ownCloud server: {code} {type}",
- "Global Credentials" : "Global Credentials",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Note:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
- "External Storage" : "External Storage"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Couldn't get the information from the ownCloud server: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js
index ab585fb62cd..c8568aa5adc 100644
--- a/apps/files_external/l10n/es.js
+++ b/apps/files_external/l10n/es.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía desde el servidor",
"Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje",
+ "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}",
"There was an error with message: " : "Hubo un error con el mensaje:",
"External mount error" : "Error de montaje externo",
@@ -104,6 +105,7 @@ OC.L10N.register(
"External storages" : "Almacenamientos externos",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP desde PHP no esta habilitado o instalado. Montar el %s no ha sido posible. Por favor consulta al administrador de tu sistema para que lo instale.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no está instalado. El montaje de %s no es posible. Por favor, pregunte a su administrador del sistema para instalarlo.",
"No external storage configured" : "No hay ningún almacenamiento externo configurado",
"You can add external storages in the personal settings" : "Puede agregar almacenamientos externos en la configuración personal",
"Name" : "Nombre",
@@ -124,14 +126,6 @@ OC.L10N.register(
"Delete" : "Eliminar",
"Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "No se puede obtener información acerca del servidor de OwnCloud: {code} {type}",
- "Access granted" : "Acceso permitido",
- "Global Credentials" : "Credenciales Globales",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> El soporte de FTP en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" no está instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "External Storage" : "Almacenamiento externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "No se puede obtener información acerca del servidor de OwnCloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json
index 2900c238f1c..c6b4bdc33c7 100644
--- a/apps/files_external/l10n/es.json
+++ b/apps/files_external/l10n/es.json
@@ -23,6 +23,7 @@
"Save" : "Guardar",
"Empty response from the server" : "Respuesta vacía desde el servidor",
"Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje",
+ "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}",
"There was an error with message: " : "Hubo un error con el mensaje:",
"External mount error" : "Error de montaje externo",
@@ -102,6 +103,7 @@
"External storages" : "Almacenamientos externos",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP desde PHP no esta habilitado o instalado. Montar el %s no ha sido posible. Por favor consulta al administrador de tu sistema para que lo instale.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no está instalado. El montaje de %s no es posible. Por favor, pregunte a su administrador del sistema para instalarlo.",
"No external storage configured" : "No hay ningún almacenamiento externo configurado",
"You can add external storages in the personal settings" : "Puede agregar almacenamientos externos en la configuración personal",
"Name" : "Nombre",
@@ -122,14 +124,6 @@
"Delete" : "Eliminar",
"Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "No se puede obtener información acerca del servidor de OwnCloud: {code} {type}",
- "Access granted" : "Acceso permitido",
- "Global Credentials" : "Credenciales Globales",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> El soporte de FTP en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" no está instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.",
- "External Storage" : "Almacenamiento externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "No se puede obtener información acerca del servidor de OwnCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fi_FI.js b/apps/files_external/l10n/fi_FI.js
index 8064fe16122..a02b6f5c102 100644
--- a/apps/files_external/l10n/fi_FI.js
+++ b/apps/files_external/l10n/fi_FI.js
@@ -106,13 +106,6 @@ OC.L10N.register(
"Delete" : "Poista",
"Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Tietojen saaminen ownCloud-palvelimelta epäonnistui: {code} {type}",
- "Access granted" : "Pääsy myönnetty",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Huomio:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n cURL-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan cURL-tuki käyttöön.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n FTP-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan FTP-tuki käyttöön.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> \"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.",
- "External Storage" : "Erillinen tallennusväline"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Tietojen saaminen ownCloud-palvelimelta epäonnistui: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/fi_FI.json b/apps/files_external/l10n/fi_FI.json
index e78a8f056cd..c0be5812f6b 100644
--- a/apps/files_external/l10n/fi_FI.json
+++ b/apps/files_external/l10n/fi_FI.json
@@ -104,13 +104,6 @@
"Delete" : "Poista",
"Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Tietojen saaminen ownCloud-palvelimelta epäonnistui: {code} {type}",
- "Access granted" : "Pääsy myönnetty",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Huomio:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n cURL-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan cURL-tuki käyttöön.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n FTP-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan FTP-tuki käyttöön.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> \"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.",
- "External Storage" : "Erillinen tallennusväline"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Tietojen saaminen ownCloud-palvelimelta epäonnistui: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index 75c40e540a8..cd65c874f8b 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Supprimer",
"Allow users to mount external storage" : "Autoriser les utilisateurs à monter des espaces de stockage externes",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossible d'obtenir l'information depuis le serveur Nextcloud : {code} {type}",
- "Access granted" : "Accès autorisé",
- "Global Credentials" : "Informations d'identification globales",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Attention :</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "External Storage" : "Stockage externe"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossible d'obtenir l'information depuis le serveur Nextcloud : {code} {type}"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index d9e9f9774d4..d3ccd3a3d88 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -124,14 +124,6 @@
"Delete" : "Supprimer",
"Allow users to mount external storage" : "Autoriser les utilisateurs à monter des espaces de stockage externes",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossible d'obtenir l'information depuis le serveur Nextcloud : {code} {type}",
- "Access granted" : "Accès autorisé",
- "Global Credentials" : "Informations d'identification globales",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Attention :</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
- "External Storage" : "Stockage externe"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossible d'obtenir l'information depuis le serveur Nextcloud : {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js
index 9a677d94b8d..26344421f92 100644
--- a/apps/files_external/l10n/he.js
+++ b/apps/files_external/l10n/he.js
@@ -116,12 +116,6 @@ OC.L10N.register(
"Delete" : "מחיקה",
"Allow users to mount external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני",
"Allow users to mount the following external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני הבא",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "לא ניתן היה לקבל את המידע משרת ה- ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>הערה:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> תמיכת ה- cURL ב- PHP אינה מופעלת או מותקנת. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> תמיכת ה- FTP ב- PHP אינה מופעלת או מותקנת. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> \"%s\" אינו מותקן. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "External Storage" : "אחסון חיצוני"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "לא ניתן היה לקבל את המידע משרת ה- ownCloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json
index f9014235827..e5962dc39ac 100644
--- a/apps/files_external/l10n/he.json
+++ b/apps/files_external/l10n/he.json
@@ -114,12 +114,6 @@
"Delete" : "מחיקה",
"Allow users to mount external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני",
"Allow users to mount the following external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני הבא",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "לא ניתן היה לקבל את המידע משרת ה- ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>הערה:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> תמיכת ה- cURL ב- PHP אינה מופעלת או מותקנת. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> תמיכת ה- FTP ב- PHP אינה מופעלת או מותקנת. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>הערה:</b> \"%s\" אינו מותקן. חיבור של %s אינו אפשרי. יש לבקש ממנהל המערכת להתקין אותה.",
- "External Storage" : "אחסון חיצוני"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "לא ניתן היה לקבל את המידע משרת ה- ownCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/hu_HU.js b/apps/files_external/l10n/hu_HU.js
index 71f51fc21c3..736a2c47091 100644
--- a/apps/files_external/l10n/hu_HU.js
+++ b/apps/files_external/l10n/hu_HU.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}",
"There was an error with message: " : "Hiba történt ezzel az üzenettel:",
"External mount error" : "Külső csatolási hiba",
+ "external-storage" : "külső tároló",
"Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.",
"Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}",
@@ -118,14 +119,6 @@ OC.L10N.register(
"Delete" : "Törlés",
"Allow users to mount external storage" : "Külső tárolók csatolásának engedélyezése a felhasználók részére",
"Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók csatolása:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}",
- "Access granted" : "Hozzáférés biztosítva",
- "Global Credentials" : "Globális azonosítók",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Megjegyzés:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> %s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "External Storage" : "Külső tárolási szolgáltatások becsatolása"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/hu_HU.json b/apps/files_external/l10n/hu_HU.json
index 92c7d6f472a..e143d7acafb 100644
--- a/apps/files_external/l10n/hu_HU.json
+++ b/apps/files_external/l10n/hu_HU.json
@@ -27,6 +27,7 @@
"Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}",
"There was an error with message: " : "Hiba történt ezzel az üzenettel:",
"External mount error" : "Külső csatolási hiba",
+ "external-storage" : "külső tároló",
"Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.",
"Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}",
@@ -116,14 +117,6 @@
"Delete" : "Törlés",
"Allow users to mount external storage" : "Külső tárolók csatolásának engedélyezése a felhasználók részére",
"Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók csatolása:",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}",
- "Access granted" : "Hozzáférés biztosítva",
- "Global Credentials" : "Globális azonosítók",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Megjegyzés:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> %s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
- "External Storage" : "Külső tárolási szolgáltatások becsatolása"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js
index 3798024a2b4..da2326265b0 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Save" : "Simpan",
"Empty response from the server" : "Tidak ada respon dari server",
"Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini",
+ "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}",
"There was an error with message: " : "Terjadi kesalahan dengan pesan:",
"External mount error" : "Kesalahan mount eksternal",
@@ -64,6 +65,7 @@ OC.L10N.register(
"Identity endpoint URL" : "Identitas URL akhir",
"Rackspace" : "Rackspace",
"API key" : "Kunci API",
+ "Global credentials" : "Sandi Global",
"Log-in credentials, save in database" : "Kredensial masuk, simpan di basis data",
"Username and password" : "Nama pengguna dan sandi",
"Log-in credentials, save in session" : "Kredensial masuk, simpan dalam sesi",
@@ -88,6 +90,7 @@ OC.L10N.register(
"Google Drive" : "Google Drive",
"Local" : "Lokal",
"Location" : "lokasi",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Root",
"SFTP with secret key login" : "SFTP dengan kunci rahasia masuk",
@@ -99,6 +102,10 @@ OC.L10N.register(
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Nama layanan",
"Request timeout (seconds)" : "Minta waktu habis (detik)",
+ "External storages" : "Penyimpanan Eksternal",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem anda untuk memasangnya.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" tidak terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.",
"No external storage configured" : "Penyimpanan eksternal tidak dikonfigurasi",
"You can add external storages in the personal settings" : "Anda dapat menambahkan penyimpanan eksternal di pengaturan pribadi",
"Name" : "Nama",
@@ -119,14 +126,6 @@ OC.L10N.register(
"Delete" : "Hapus",
"Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}",
- "Access granted" : "Akses diberikan",
- "Global Credentials" : "Kredensial Global",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Catatan:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "External Storage" : "Penyimpanan Eksternal"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index c091677c498..6367c48e434 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -23,6 +23,7 @@
"Save" : "Simpan",
"Empty response from the server" : "Tidak ada respon dari server",
"Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini",
+ "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}",
"There was an error with message: " : "Terjadi kesalahan dengan pesan:",
"External mount error" : "Kesalahan mount eksternal",
@@ -62,6 +63,7 @@
"Identity endpoint URL" : "Identitas URL akhir",
"Rackspace" : "Rackspace",
"API key" : "Kunci API",
+ "Global credentials" : "Sandi Global",
"Log-in credentials, save in database" : "Kredensial masuk, simpan di basis data",
"Username and password" : "Nama pengguna dan sandi",
"Log-in credentials, save in session" : "Kredensial masuk, simpan dalam sesi",
@@ -86,6 +88,7 @@
"Google Drive" : "Google Drive",
"Local" : "Lokal",
"Location" : "lokasi",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Root",
"SFTP with secret key login" : "SFTP dengan kunci rahasia masuk",
@@ -97,6 +100,10 @@
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Nama layanan",
"Request timeout (seconds)" : "Minta waktu habis (detik)",
+ "External storages" : "Penyimpanan Eksternal",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem anda untuk memasangnya.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" tidak terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.",
"No external storage configured" : "Penyimpanan eksternal tidak dikonfigurasi",
"You can add external storages in the personal settings" : "Anda dapat menambahkan penyimpanan eksternal di pengaturan pribadi",
"Name" : "Nama",
@@ -117,14 +124,6 @@
"Delete" : "Hapus",
"Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}",
- "Access granted" : "Akses diberikan",
- "Global Credentials" : "Kredensial Global",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Catatan:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
- "External Storage" : "Penyimpanan Eksternal"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js
index 2f69656a373..1ecf0fb8795 100644
--- a/apps/files_external/l10n/is.js
+++ b/apps/files_external/l10n/is.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Save" : "Vista",
"Empty response from the server" : "Tómt svar frá þjóni móttekið",
"Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
+ "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}",
"There was an error with message: " : "Það kom upp villa með skilaboðunum: ",
"External mount error" : "Villa við tengingu í fjartengdu skráakerfi",
@@ -125,14 +126,6 @@ OC.L10N.register(
"Delete" : "Eyða",
"Allow users to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi",
"Allow users to mount the following external storage" : "Leyfa notendum að tengja eftirfarandi ytri gagnageymslu í skráakerfi",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Gat ekki lesið upplýsingar frá ownCloud-þjóninum: {code} {type}",
- "Access granted" : "Aðgangur heimilaður",
- "Global Credentials" : "Víðvær innskráningarauðkenni",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Athugið:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> Stuðningur við cURL í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> Stuðningur við FTP í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> \"%s\" ekki uppsett. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "External Storage" : "Ytri gagnageymsla"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Gat ekki lesið upplýsingar frá ownCloud-þjóninum: {code} {type}"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json
index b83e47d210a..76d65737747 100644
--- a/apps/files_external/l10n/is.json
+++ b/apps/files_external/l10n/is.json
@@ -23,6 +23,7 @@
"Save" : "Vista",
"Empty response from the server" : "Tómt svar frá þjóni móttekið",
"Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt",
+ "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}",
"There was an error with message: " : "Það kom upp villa með skilaboðunum: ",
"External mount error" : "Villa við tengingu í fjartengdu skráakerfi",
@@ -123,14 +124,6 @@
"Delete" : "Eyða",
"Allow users to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi",
"Allow users to mount the following external storage" : "Leyfa notendum að tengja eftirfarandi ytri gagnageymslu í skráakerfi",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Gat ekki lesið upplýsingar frá ownCloud-þjóninum: {code} {type}",
- "Access granted" : "Aðgangur heimilaður",
- "Global Credentials" : "Víðvær innskráningarauðkenni",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Athugið:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> Stuðningur við cURL í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> Stuðningur við FTP í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Athugið:</b> \"%s\" ekki uppsett. Tenging %s er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
- "External Storage" : "Ytri gagnageymsla"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Gat ekki lesið upplýsingar frá ownCloud-þjóninum: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index 1c4030b1749..a85786ab2dd 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Elimina",
"Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne",
"Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossibile ottenere le informazioni dal server ownCloud: {code} {type}",
- "Access granted" : "Accesso accordato",
- "Global Credentials" : "Credenziali globali",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> il supporto a cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> il supporto a FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" non è installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "External Storage" : "Archiviazione esterna"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossibile ottenere le informazioni dal server ownCloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 1b83578185f..d48ef3a2ff4 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -124,14 +124,6 @@
"Delete" : "Elimina",
"Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne",
"Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossibile ottenere le informazioni dal server ownCloud: {code} {type}",
- "Access granted" : "Accesso accordato",
- "Global Credentials" : "Credenziali globali",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> il supporto a cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> il supporto a FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" non è installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
- "External Storage" : "Archiviazione esterna"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Impossibile ottenere le informazioni dal server ownCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js
index 54968d1236f..d9a8ae8517c 100644
--- a/apps/files_external/l10n/ja.js
+++ b/apps/files_external/l10n/ja.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "削除",
"Allow users to mount external storage" : "ユーザーに外部ストレージの接続を許可する",
"Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}",
- "Access granted" : "アクセス権の付与",
- "Global Credentials" : "グローバル認証情報",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>注意:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにcURLのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにFTPのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> \"%s\" がインストールされていません。%sをマウントできません。このシステムの管理者にインストールをお願いしてください。",
- "External Storage" : "外部ストレージ"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json
index 1d8d6fe6531..1d93c69b1cf 100644
--- a/apps/files_external/l10n/ja.json
+++ b/apps/files_external/l10n/ja.json
@@ -124,14 +124,6 @@
"Delete" : "削除",
"Allow users to mount external storage" : "ユーザーに外部ストレージの接続を許可する",
"Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}",
- "Access granted" : "アクセス権の付与",
- "Global Credentials" : "グローバル認証情報",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>注意:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにcURLのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにFTPのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> \"%s\" がインストールされていません。%sをマウントできません。このシステムの管理者にインストールをお願いしてください。",
- "External Storage" : "外部ストレージ"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js
index 31dea1ea3cd..1afccee2657 100644
--- a/apps/files_external/l10n/ko.js
+++ b/apps/files_external/l10n/ko.js
@@ -120,14 +120,6 @@ OC.L10N.register(
"Delete" : "삭제",
"Allow users to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud 서버에서 정보를 가져올 수 없음: {code} {type}",
- "Access granted" : "접근 부여",
- "Global Credentials" : "글로벌 자격 증명",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>메모:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP cURL 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP FTP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> \"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "External Storage" : "외부 저장소"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud 서버에서 정보를 가져올 수 없음: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json
index c9e9be6e6cc..cbd6e72b429 100644
--- a/apps/files_external/l10n/ko.json
+++ b/apps/files_external/l10n/ko.json
@@ -118,14 +118,6 @@
"Delete" : "삭제",
"Allow users to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud 서버에서 정보를 가져올 수 없음: {code} {type}",
- "Access granted" : "접근 부여",
- "Global Credentials" : "글로벌 자격 증명",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>메모:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP cURL 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP FTP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> \"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
- "External Storage" : "외부 저장소"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud 서버에서 정보를 가져올 수 없음: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nb_NO.js b/apps/files_external/l10n/nb_NO.js
index 0845186781d..ccf2388355e 100644
--- a/apps/files_external/l10n/nb_NO.js
+++ b/apps/files_external/l10n/nb_NO.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Save" : "Lagre",
"Empty response from the server" : "Tomt svar fra tjeneren",
"Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Vennligst logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}",
"There was an error with message: " : "Det oppstod en feil med melding: ",
"External mount error" : "Ekstern oppkoblingsfeil",
@@ -125,14 +126,6 @@ OC.L10N.register(
"Delete" : "Slett",
"Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra Nextcloud tjeneren: {code} {type}",
- "Access granted" : "Tilgang gitt",
- "Global Credentials" : "Globale pålogginsdetaljer",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Merk:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> Støtte for cURL i PHP er ikke aktivert eller installert. Oppkobling av %s er ikke mulig. Be systemadministratoren om å installere det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> FTP-støtte i PHP er ikke slått på eller installert. Kan ikke koble opp %s. Ta kontakt med systemadministratoren for å få dette installert.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> \"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Spør systemadministratoren om å installere det.",
- "External Storage" : "Ekstern lagring"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra Nextcloud tjeneren: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/nb_NO.json b/apps/files_external/l10n/nb_NO.json
index 01bf2eecf09..525590c5a76 100644
--- a/apps/files_external/l10n/nb_NO.json
+++ b/apps/files_external/l10n/nb_NO.json
@@ -23,6 +23,7 @@
"Save" : "Lagre",
"Empty response from the server" : "Tomt svar fra tjeneren",
"Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Vennligst logg ut og inn igjen for å aktivere dette oppkoblingspunktet.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}",
"There was an error with message: " : "Det oppstod en feil med melding: ",
"External mount error" : "Ekstern oppkoblingsfeil",
@@ -123,14 +124,6 @@
"Delete" : "Slett",
"Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra Nextcloud tjeneren: {code} {type}",
- "Access granted" : "Tilgang gitt",
- "Global Credentials" : "Globale pålogginsdetaljer",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Merk:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> Støtte for cURL i PHP er ikke aktivert eller installert. Oppkobling av %s er ikke mulig. Be systemadministratoren om å installere det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> FTP-støtte i PHP er ikke slått på eller installert. Kan ikke koble opp %s. Ta kontakt med systemadministratoren for å få dette installert.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> \"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Spør systemadministratoren om å installere det.",
- "External Storage" : "Ekstern lagring"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra Nextcloud tjeneren: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js
index 9f80c381383..3b1839bb4fb 100644
--- a/apps/files_external/l10n/nl.js
+++ b/apps/files_external/l10n/nl.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Verwijder",
"Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Kon geen informatie van de ownCloud server krijgen: {code} {type}",
- "Access granted" : "Toegang verleend",
- "Global Credentials" : "Algemene inloggegevens",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Let op:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> Curl ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> FTP ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> \"%s\" is niet geïnstalleerd. Mounten van %s is niet mogelijk. Vraag uw beheerder om dit te installeren.",
- "External Storage" : "Externe opslag"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Kon geen informatie van de ownCloud server krijgen: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json
index 0d81e726c9f..5ffd6fcd4e3 100644
--- a/apps/files_external/l10n/nl.json
+++ b/apps/files_external/l10n/nl.json
@@ -124,14 +124,6 @@
"Delete" : "Verwijder",
"Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Kon geen informatie van de ownCloud server krijgen: {code} {type}",
- "Access granted" : "Toegang verleend",
- "Global Credentials" : "Algemene inloggegevens",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Let op:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> Curl ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> FTP ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Let op:</b> \"%s\" is niet geïnstalleerd. Mounten van %s is niet mogelijk. Vraag uw beheerder om dit te installeren.",
- "External Storage" : "Externe opslag"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Kon geen informatie van de ownCloud server krijgen: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index c9d85abf869..1b25fa1aec8 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Save" : "Zapisz",
"Empty response from the server" : "Puste odpowiedzi z serwera",
"Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania",
+ "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}",
"There was an error with message: " : "Wystąpił błąd o treści:",
"External mount error" : "Błąd przy montowaniu zewnętrznym",
@@ -43,6 +44,8 @@ OC.L10N.register(
"Objectstore forbidden" : "Zabroniony obiekt sklepu",
"Invalid storage backend \"%s\"" : "Nieprawidłowy magazyn zaplecza \"%s\"",
"Not permitted to use backend \"%s\"" : "Nie można używać powrotu \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Nie można używać mechanizmu uwierzytelnienia \"%s\"",
+ "Insufficient data: %s" : "Niewystarczające dane: %s",
"%s" : "%s",
"Access key" : "Klucz dostępu",
"Secret key" : "Sekretny klucz",
@@ -56,6 +59,7 @@ OC.L10N.register(
"Client secret" : "Hasło klienta",
"OpenStack" : "OpenStack",
"Tenant name" : "Nazwa dzierżawcy",
+ "Rackspace" : "Rackspace",
"API key" : "Klucz API",
"Global credentials" : "Globalne poświadczenia",
"Username and password" : "Nazwa użytkownika i hasło",
@@ -111,14 +115,6 @@ OC.L10N.register(
"Delete" : "Usuń",
"Allow users to mount external storage" : "Pozwól użytkownikom montować zewnętrzne zasoby dyskowe",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nie udało się uzyskać informacje z serwera ownCloud: {code} {type}",
- "Access granted" : "Dostęp uzyskany",
- "Global Credentials" : "Globalne Poświadczenia",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Uwaga:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> Wsparcie dla cURL w PHP nie zostało włączone lub zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> Wsparcie dla FTP w PHP nie zostało włączone lub zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> \"%s\" nie jest zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "External Storage" : "Zewnętrzna zasoby dyskowe"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nie udało się uzyskać informacje z serwera ownCloud: {code} {type}"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 8ff63cfb5a4..088a1235cff 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -23,6 +23,7 @@
"Save" : "Zapisz",
"Empty response from the server" : "Puste odpowiedzi z serwera",
"Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania",
+ "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}",
"There was an error with message: " : "Wystąpił błąd o treści:",
"External mount error" : "Błąd przy montowaniu zewnętrznym",
@@ -41,6 +42,8 @@
"Objectstore forbidden" : "Zabroniony obiekt sklepu",
"Invalid storage backend \"%s\"" : "Nieprawidłowy magazyn zaplecza \"%s\"",
"Not permitted to use backend \"%s\"" : "Nie można używać powrotu \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Nie można używać mechanizmu uwierzytelnienia \"%s\"",
+ "Insufficient data: %s" : "Niewystarczające dane: %s",
"%s" : "%s",
"Access key" : "Klucz dostępu",
"Secret key" : "Sekretny klucz",
@@ -54,6 +57,7 @@
"Client secret" : "Hasło klienta",
"OpenStack" : "OpenStack",
"Tenant name" : "Nazwa dzierżawcy",
+ "Rackspace" : "Rackspace",
"API key" : "Klucz API",
"Global credentials" : "Globalne poświadczenia",
"Username and password" : "Nazwa użytkownika i hasło",
@@ -109,14 +113,6 @@
"Delete" : "Usuń",
"Allow users to mount external storage" : "Pozwól użytkownikom montować zewnętrzne zasoby dyskowe",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Nie udało się uzyskać informacje z serwera ownCloud: {code} {type}",
- "Access granted" : "Dostęp uzyskany",
- "Global Credentials" : "Globalne Poświadczenia",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Uwaga:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> Wsparcie dla cURL w PHP nie zostało włączone lub zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> Wsparcie dla FTP w PHP nie zostało włączone lub zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Uwaga:</b> \"%s\" nie jest zainstalowane. Zamontowanie %s nie jest możliwe. Proszę poproś Twojego administratora o zainstalowanie go.",
- "External Storage" : "Zewnętrzna zasoby dyskowe"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Nie udało się uzyskać informacje z serwera ownCloud: {code} {type}"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js
index 4be5956e6e4..20bdc990fb2 100644
--- a/apps/files_external/l10n/pt_BR.js
+++ b/apps/files_external/l10n/pt_BR.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Excluir",
"Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}",
- "Access granted" : "Acesso concedido",
- "Global Credentials" : "Credenciais Globais",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> O suporte cURL do PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> O suporte FTP no PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" não está instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "External Storage" : "Armazenamento Externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json
index 57d0e200052..6edf2f4d27c 100644
--- a/apps/files_external/l10n/pt_BR.json
+++ b/apps/files_external/l10n/pt_BR.json
@@ -124,14 +124,6 @@
"Delete" : "Excluir",
"Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}",
- "Access granted" : "Acesso concedido",
- "Global Credentials" : "Credenciais Globais",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> O suporte cURL do PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> O suporte FTP no PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Nota:</b> \"%s\" não está instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo.",
- "External Storage" : "Armazenamento Externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js
index 94b1f54d159..77433e77acc 100644
--- a/apps/files_external/l10n/pt_PT.js
+++ b/apps/files_external/l10n/pt_PT.js
@@ -116,12 +116,6 @@ OC.L10N.register(
"Delete" : "Apagar",
"Allow users to mount external storage" : "Permitir que os utilizadores montem armazenamento externo",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível recolher a informação do servidor ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte cURL no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte FTP no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O cliente\"%s\" não está instalado. Não é possível montar \"%s\" . Peça ao seu administrador para instalar.",
- "External Storage" : "Armazenamento Externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível recolher a informação do servidor ownCloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json
index 2ee7375e851..3247ec7e4a5 100644
--- a/apps/files_external/l10n/pt_PT.json
+++ b/apps/files_external/l10n/pt_PT.json
@@ -114,12 +114,6 @@
"Delete" : "Apagar",
"Allow users to mount external storage" : "Permitir que os utilizadores montem armazenamento externo",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível recolher a informação do servidor ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Nota:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte cURL no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte FTP no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O cliente\"%s\" não está instalado. Não é possível montar \"%s\" . Peça ao seu administrador para instalar.",
- "External Storage" : "Armazenamento Externo"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível recolher a informação do servidor ownCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index 46a1a8bc29d..dda60f2c30d 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -126,14 +126,6 @@ OC.L10N.register(
"Delete" : "Удалить",
"Allow users to mount external storage" : "Разрешить пользователями монтировать внешние накопители",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера Nextcloud: {code} {type}",
- "Access granted" : "Доступ предоставлен",
- "Global Credentials" : "Глобальные Учетные данные",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Примечание:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка cURL в PHP не включена или не установлена. Монтирование %s невозможно. Обратитесь к вашему системному администратору.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка FTP в PHP не включена или не установлена. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> \"%s\" не установлен. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.",
- "External Storage" : "Внешнее хранилище"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера Nextcloud: {code} {type}"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index a3d466f696d..de57054fced 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -124,14 +124,6 @@
"Delete" : "Удалить",
"Allow users to mount external storage" : "Разрешить пользователями монтировать внешние накопители",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера Nextcloud: {code} {type}",
- "Access granted" : "Доступ предоставлен",
- "Global Credentials" : "Глобальные Учетные данные",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Примечание:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка cURL в PHP не включена или не установлена. Монтирование %s невозможно. Обратитесь к вашему системному администратору.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка FTP в PHP не включена или не установлена. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> \"%s\" не установлен. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.",
- "External Storage" : "Внешнее хранилище"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера Nextcloud: {code} {type}"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index b6d0c1e32bc..365b8c76524 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -119,13 +119,6 @@ OC.L10N.register(
"Delete" : "Izbriši",
"Allow users to mount external storage" : "Dovoli uporabnikom priklapljanje zunanje shrambe",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb.",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}",
- "Global Credentials" : "Globalne poverilnice",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Opomba:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Podpora za naslove cURL v PHP ni omogočena, ali pa ni ustrezno nameščenih programov. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Podpora za protokol FTP v PHP ni omogočena, ali pa ni ustrezno nameščenih programov. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Program \"%s\" ni nameščen. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "External Storage" : "Zunanja podatkovna shramba"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index a0a0a8b2be0..3d2e9729c67 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -117,13 +117,6 @@
"Delete" : "Izbriši",
"Allow users to mount external storage" : "Dovoli uporabnikom priklapljanje zunanje shrambe",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb.",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}",
- "Global Credentials" : "Globalne poverilnice",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Opomba:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Podpora za naslove cURL v PHP ni omogočena, ali pa ni ustrezno nameščenih programov. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Podpora za protokol FTP v PHP ni omogočena, ali pa ni ustrezno nameščenih programov. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Opomba:</b> Program \"%s\" ni nameščen. Priklapljanje %s ni mogoče. Za pomoč pri namestitvi se obrnite na sistemskega skrbnika.",
- "External Storage" : "Zunanja podatkovna shramba"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js
index 0bc3e4b9c95..f782c82c966 100644
--- a/apps/files_external/l10n/sq.js
+++ b/apps/files_external/l10n/sq.js
@@ -21,9 +21,11 @@ OC.L10N.register(
"Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)",
"Admin defined" : "Përcaktuar nga përgjegjësi",
"Saved" : "U ruajt",
+ "Saving..." : "Po ruhet …",
"Save" : "Ruaje",
- "Empty response from the server" : "Përgjigje e zbrazët prej shërbyesit",
+ "Empty response from the server" : "Përgjigje e zbrazët prej serverit",
"Couldn't access. Please logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
+ "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}",
"There was an error with message: " : "Pati një gabim me këtë mesazh:",
"External mount error" : "Gabim i jashtëm montimi",
@@ -63,8 +65,11 @@ OC.L10N.register(
"Identity endpoint URL" : "Identifiko pikëmbarimin URL",
"Rackspace" : "Rackspace",
"API key" : "Kyç API",
+ "Global credentials" : "Kredenciale globale",
+ "Log-in credentials, save in database" : "Kredencialet e identifikimit, ruaji në bazën e të dhënave",
"Username and password" : "Emër përdoruesi dhe fjalëkalim",
"Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaji për sesion",
+ "User entered, store in database" : "Përdoruesi u identifikua, ruaj në bazë të dhënash",
"RSA public key" : "Kyç publik RSA ",
"Public key" : "Kyç publik",
"Amazon S3" : "Amazon S3",
@@ -85,6 +90,7 @@ OC.L10N.register(
"Google Drive" : "Google Drive",
"Local" : "Vendore",
"Location" : "Vendndodhje",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Rrënjë",
"SFTP with secret key login" : "SFTP me hyrje me kyç të fshehtë",
@@ -96,6 +102,10 @@ OC.L10N.register(
"OpenStack Object Storage" : "Depozitë OpenStack Object",
"Service name" : "Emër shërbimi",
"Request timeout (seconds)" : "Kohë skadimi kërkese (sekonda)",
+ "External storages" : "Kujtesë e jashtëme",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
"You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
@@ -116,12 +126,6 @@ OC.L10N.register(
"Delete" : "Fshije",
"Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "S’u morën dot të dhëna nga shërbyesi ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Shënim:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i cURL-ve në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i FTP-së në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është instaluar \"%s\". Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "External Storage" : "Depozitë e Jashtme"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "S’u morën dot të dhëna nga shërbyesi ownCloud: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json
index b572d9826bb..b7b518107fe 100644
--- a/apps/files_external/l10n/sq.json
+++ b/apps/files_external/l10n/sq.json
@@ -19,9 +19,11 @@
"Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)",
"Admin defined" : "Përcaktuar nga përgjegjësi",
"Saved" : "U ruajt",
+ "Saving..." : "Po ruhet …",
"Save" : "Ruaje",
- "Empty response from the server" : "Përgjigje e zbrazët prej shërbyesit",
+ "Empty response from the server" : "Përgjigje e zbrazët prej serverit",
"Couldn't access. Please logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi",
+ "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}",
"Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}",
"There was an error with message: " : "Pati një gabim me këtë mesazh:",
"External mount error" : "Gabim i jashtëm montimi",
@@ -61,8 +63,11 @@
"Identity endpoint URL" : "Identifiko pikëmbarimin URL",
"Rackspace" : "Rackspace",
"API key" : "Kyç API",
+ "Global credentials" : "Kredenciale globale",
+ "Log-in credentials, save in database" : "Kredencialet e identifikimit, ruaji në bazën e të dhënave",
"Username and password" : "Emër përdoruesi dhe fjalëkalim",
"Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaji për sesion",
+ "User entered, store in database" : "Përdoruesi u identifikua, ruaj në bazë të dhënash",
"RSA public key" : "Kyç publik RSA ",
"Public key" : "Kyç publik",
"Amazon S3" : "Amazon S3",
@@ -83,6 +88,7 @@
"Google Drive" : "Google Drive",
"Local" : "Vendore",
"Location" : "Vendndodhje",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Rrënjë",
"SFTP with secret key login" : "SFTP me hyrje me kyç të fshehtë",
@@ -94,6 +100,10 @@
"OpenStack Object Storage" : "Depozitë OpenStack Object",
"Service name" : "Emër shërbimi",
"Request timeout (seconds)" : "Kohë skadimi kërkese (sekonda)",
+ "External storages" : "Kujtesë e jashtëme",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
"You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
@@ -114,12 +124,6 @@
"Delete" : "Fshije",
"Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "S’u morën dot të dhëna nga shërbyesi ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Shënim:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i cURL-ve në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i FTP-së në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është instaluar \"%s\". Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
- "External Storage" : "Depozitë e Jashtme"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "S’u morën dot të dhëna nga shërbyesi ownCloud: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js
index a66a22ae595..0f0ed79c9a6 100644
--- a/apps/files_external/l10n/sv.js
+++ b/apps/files_external/l10n/sv.js
@@ -2,30 +2,51 @@ OC.L10N.register(
"files_external",
{
"Fetching request tokens failed. Verify that your app key and secret are correct." : "Fel vid hämtning av åtkomst-token. Verifiera att din app-nyckel och hemlighet stämmer.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Kontroll av behörigheter misslyckades. Verifiera att ditt app-lösenord och hemlighet är korrekt.",
+ "Please provide a valid app key and secret." : "Vänligen ange en giltig applikationsnyckel och hemlig fras.",
"Step 1 failed. Exception: %s" : "Steg 1 flaerade. Undantag: %s",
"Step 2 failed. Exception: %s" : "Steg 2 falerade. Undantag: %s",
"External storage" : "Extern lagring",
- "Personal" : "Personligt",
+ "Dropbox App Configuration" : "Dropbox Konfiguration",
+ "Google Drive App Configuration" : "Google Drive Konfiguration",
+ "Personal" : "Privat",
"System" : "System",
"Grant access" : "Bevilja åtkomst",
+ "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1",
+ "Error configuring OAuth2" : "Misslyckades konfigurera OAuth2",
"Generate keys" : "Generera nycklar",
"Error generating key pair" : "Fel vid generering av nyckelpar",
"All users. Type to select user or group." : "Alla användare. Skriv för att välja användare eller grupp.",
"(group)" : "(grupp)",
+ "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)",
"Admin defined" : "Admin definerad",
"Saved" : "Sparad",
+ "Saving..." : "Sparar...",
"Save" : "Spara",
"Empty response from the server" : "Tomt svar från servern",
+ "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ",
"Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}",
"There was an error with message: " : "Det fanns ett fel med meddelande:",
"External mount error" : "Fel vid extern montering",
"external-storage" : "extern-lagring",
+ "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.",
+ "Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering",
"Username" : "Användarnamn",
"Password" : "Lösenord",
- "Credentials saved" : "Sparade referenser",
- "Credentials saving failed" : "Misslyckades med att spara referenser",
- "Credentials required" : "Referenser krävs",
+ "Credentials saved" : "Sparade uppgifter",
+ "Credentials saving failed" : "Misslyckades med att spara uppgifterna",
+ "Credentials required" : "Uppgifter krävs",
+ "Storage with id \"%i\" not found" : "Lagring med id \"%i\" kan ej hittas",
+ "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass",
"Invalid mount point" : "Ogiltig monteringspunkt",
+ "Objectstore forbidden" : "Objekt förbjudet",
+ "Invalid storage backend \"%s\"" : "Ogiltig lagrings backend \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Inte tillåtet att använda backend \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Inte tillåtet att använda autentiseringsmekanism \"%s\"",
+ "Unsatisfied backend parameters" : "Otillfredsställda backend parametrar",
+ "Unsatisfied authentication mechanism parameters" : "Otillfredsställda autentiseringsmekanism parametrar",
"Insufficient data: %s" : "Otillräcklig data: %s",
"%s" : "%s",
"Storage with id \"%i\" is not user editable" : "Lagring med id \"%i\" är inte redigerbar av användare",
@@ -38,13 +59,19 @@ OC.L10N.register(
"App secret" : "App-hemlighet",
"OAuth2" : "OAuth2",
"Client ID" : "Klient ID",
- "Client secret" : "klient secret",
+ "Client secret" : "Klienthemlighet",
"OpenStack" : "OpenStack",
"Tenant name" : "Namn på arrendator",
+ "Identity endpoint URL" : "Identitet endpoint URL",
+ "Rackspace" : "Rackutrymme",
"API key" : "API-nyckel",
+ "Global credentials" : "Globala uppgifter",
+ "Log-in credentials, save in database" : "Inloggningsuppgifter sparade i databasen",
"Username and password" : "Användarnamn och lösenord",
"Log-in credentials, save in session" : "Inloggninguppgifter, spara i sessionen",
- "Public key" : "Publik nyckel",
+ "User entered, store in database" : "Användare lades till, lagras i databasen",
+ "RSA public key" : "RSA offentlig nyckel",
+ "Public key" : "Offentlig nyckel",
"Amazon S3" : "Amazon S3",
"Bucket" : "Bucket",
"Hostname" : "Värdnamn",
@@ -54,7 +81,7 @@ OC.L10N.register(
"Enable Path Style" : "Aktivera Path Style",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Fjärrmapp",
+ "Remote subfolder" : "Extern mapp",
"Secure https://" : "Säker https://",
"Dropbox" : "Dropbox",
"FTP" : "FTP",
@@ -63,7 +90,7 @@ OC.L10N.register(
"Google Drive" : "Google Drive",
"Local" : "Lokal",
"Location" : "Plats",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Root",
"SFTP with secret key login" : "SFTP-inloggning med hemlig nyckel",
@@ -74,10 +101,11 @@ OC.L10N.register(
"Username as share" : "Användarnamn till utdelning",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Namn på tjänst",
- "<b>Note:</b> " : "<b> OBS: </ b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> cURL-stöd i PHP inte är aktiverat eller installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> FTP-stödet i PHP inte är aktiverat eller installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> \"%s\" är inte installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
+ "Request timeout (seconds)" : "Sekunder för anslutningsförsök",
+ "External storages" : "Extern Lagring",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" är inte installerad. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
"No external storage configured" : "Ingen extern lagring konfigurerad",
"You can add external storages in the personal settings" : "Du kan lägga till externa lagringar i de personliga inställningarna",
"Name" : "Namn",
@@ -88,7 +116,7 @@ OC.L10N.register(
"Enable sharing" : "Aktivera delning",
"Check for changes" : "Sök efter ändringar",
"Never" : "Aldrig",
- "External Storage" : "Extern lagring",
+ "Once every direct access" : "En gång vid varje direktanslutning",
"Folder name" : "Mappnamn",
"Authentication" : "Autentisering",
"Configuration" : "Konfiguration",
@@ -97,6 +125,7 @@ OC.L10N.register(
"Advanced settings" : "Avancerade inställningar",
"Delete" : "Radera",
"Allow users to mount external storage" : "Tillåt användare att montera extern lagring",
- "Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring"
+ "Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring",
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Kan ej ta emot information från NextCloud server: {code} {type}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json
index 1bfca8f1f50..f9693a98585 100644
--- a/apps/files_external/l10n/sv.json
+++ b/apps/files_external/l10n/sv.json
@@ -1,29 +1,50 @@
{ "translations": {
"Fetching request tokens failed. Verify that your app key and secret are correct." : "Fel vid hämtning av åtkomst-token. Verifiera att din app-nyckel och hemlighet stämmer.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Kontroll av behörigheter misslyckades. Verifiera att ditt app-lösenord och hemlighet är korrekt.",
+ "Please provide a valid app key and secret." : "Vänligen ange en giltig applikationsnyckel och hemlig fras.",
"Step 1 failed. Exception: %s" : "Steg 1 flaerade. Undantag: %s",
"Step 2 failed. Exception: %s" : "Steg 2 falerade. Undantag: %s",
"External storage" : "Extern lagring",
- "Personal" : "Personligt",
+ "Dropbox App Configuration" : "Dropbox Konfiguration",
+ "Google Drive App Configuration" : "Google Drive Konfiguration",
+ "Personal" : "Privat",
"System" : "System",
"Grant access" : "Bevilja åtkomst",
+ "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1",
+ "Error configuring OAuth2" : "Misslyckades konfigurera OAuth2",
"Generate keys" : "Generera nycklar",
"Error generating key pair" : "Fel vid generering av nyckelpar",
"All users. Type to select user or group." : "Alla användare. Skriv för att välja användare eller grupp.",
"(group)" : "(grupp)",
+ "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)",
"Admin defined" : "Admin definerad",
"Saved" : "Sparad",
+ "Saving..." : "Sparar...",
"Save" : "Spara",
"Empty response from the server" : "Tomt svar från servern",
+ "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.",
+ "Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ",
"Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}",
"There was an error with message: " : "Det fanns ett fel med meddelande:",
"External mount error" : "Fel vid extern montering",
"external-storage" : "extern-lagring",
+ "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.",
+ "Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering",
"Username" : "Användarnamn",
"Password" : "Lösenord",
- "Credentials saved" : "Sparade referenser",
- "Credentials saving failed" : "Misslyckades med att spara referenser",
- "Credentials required" : "Referenser krävs",
+ "Credentials saved" : "Sparade uppgifter",
+ "Credentials saving failed" : "Misslyckades med att spara uppgifterna",
+ "Credentials required" : "Uppgifter krävs",
+ "Storage with id \"%i\" not found" : "Lagring med id \"%i\" kan ej hittas",
+ "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass",
"Invalid mount point" : "Ogiltig monteringspunkt",
+ "Objectstore forbidden" : "Objekt förbjudet",
+ "Invalid storage backend \"%s\"" : "Ogiltig lagrings backend \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Inte tillåtet att använda backend \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Inte tillåtet att använda autentiseringsmekanism \"%s\"",
+ "Unsatisfied backend parameters" : "Otillfredsställda backend parametrar",
+ "Unsatisfied authentication mechanism parameters" : "Otillfredsställda autentiseringsmekanism parametrar",
"Insufficient data: %s" : "Otillräcklig data: %s",
"%s" : "%s",
"Storage with id \"%i\" is not user editable" : "Lagring med id \"%i\" är inte redigerbar av användare",
@@ -36,13 +57,19 @@
"App secret" : "App-hemlighet",
"OAuth2" : "OAuth2",
"Client ID" : "Klient ID",
- "Client secret" : "klient secret",
+ "Client secret" : "Klienthemlighet",
"OpenStack" : "OpenStack",
"Tenant name" : "Namn på arrendator",
+ "Identity endpoint URL" : "Identitet endpoint URL",
+ "Rackspace" : "Rackutrymme",
"API key" : "API-nyckel",
+ "Global credentials" : "Globala uppgifter",
+ "Log-in credentials, save in database" : "Inloggningsuppgifter sparade i databasen",
"Username and password" : "Användarnamn och lösenord",
"Log-in credentials, save in session" : "Inloggninguppgifter, spara i sessionen",
- "Public key" : "Publik nyckel",
+ "User entered, store in database" : "Användare lades till, lagras i databasen",
+ "RSA public key" : "RSA offentlig nyckel",
+ "Public key" : "Offentlig nyckel",
"Amazon S3" : "Amazon S3",
"Bucket" : "Bucket",
"Hostname" : "Värdnamn",
@@ -52,7 +79,7 @@
"Enable Path Style" : "Aktivera Path Style",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Fjärrmapp",
+ "Remote subfolder" : "Extern mapp",
"Secure https://" : "Säker https://",
"Dropbox" : "Dropbox",
"FTP" : "FTP",
@@ -61,7 +88,7 @@
"Google Drive" : "Google Drive",
"Local" : "Lokal",
"Location" : "Plats",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "Root",
"SFTP with secret key login" : "SFTP-inloggning med hemlig nyckel",
@@ -72,10 +99,11 @@
"Username as share" : "Användarnamn till utdelning",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Namn på tjänst",
- "<b>Note:</b> " : "<b> OBS: </ b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> cURL-stöd i PHP inte är aktiverat eller installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> FTP-stödet i PHP inte är aktiverat eller installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b> OBS: </ b> \"%s\" är inte installerat. Montering av %s är inte möjlig. Be din systemadministratör att installera det.",
+ "Request timeout (seconds)" : "Sekunder för anslutningsförsök",
+ "External storages" : "Extern Lagring",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" är inte installerad. Montering av %s är inte möjlig. Be din systemadministratör om installation.",
"No external storage configured" : "Ingen extern lagring konfigurerad",
"You can add external storages in the personal settings" : "Du kan lägga till externa lagringar i de personliga inställningarna",
"Name" : "Namn",
@@ -86,7 +114,7 @@
"Enable sharing" : "Aktivera delning",
"Check for changes" : "Sök efter ändringar",
"Never" : "Aldrig",
- "External Storage" : "Extern lagring",
+ "Once every direct access" : "En gång vid varje direktanslutning",
"Folder name" : "Mappnamn",
"Authentication" : "Autentisering",
"Configuration" : "Konfiguration",
@@ -95,6 +123,7 @@
"Advanced settings" : "Avancerade inställningar",
"Delete" : "Radera",
"Allow users to mount external storage" : "Tillåt användare att montera extern lagring",
- "Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring"
+ "Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring",
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "Kan ej ta emot information från NextCloud server: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/th_TH.js b/apps/files_external/l10n/th_TH.js
index f0ddf33ba6c..171ae9bd7c1 100644
--- a/apps/files_external/l10n/th_TH.js
+++ b/apps/files_external/l10n/th_TH.js
@@ -113,12 +113,6 @@ OC.L10N.register(
"Delete" : "ลบ",
"Allow users to mount external storage" : "อนุญาตให้ผู้ใช้ติดตั้งการจัดเก็บข้อมูลภายนอก",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>หมายเหตุ:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> การสนับสนุน cURL ใน PHP ไม่ได้เปิดใช้งานหรือติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> การสนับสนุน FTP ใน PHP ไม่ได้เปิดใช้งานหรือติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> %s ไม่ได้ติดตั้ง การติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "External Storage" : "พื้นทีจัดเก็บข้อมูลจากภายนอก"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/th_TH.json b/apps/files_external/l10n/th_TH.json
index 44ec19a5844..a0f9a659a97 100644
--- a/apps/files_external/l10n/th_TH.json
+++ b/apps/files_external/l10n/th_TH.json
@@ -111,12 +111,6 @@
"Delete" : "ลบ",
"Allow users to mount external storage" : "อนุญาตให้ผู้ใช้ติดตั้งการจัดเก็บข้อมูลภายนอก",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>หมายเหตุ:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> การสนับสนุน cURL ใน PHP ไม่ได้เปิดใช้งานหรือติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> การสนับสนุน FTP ใน PHP ไม่ได้เปิดใช้งานหรือติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>หมายเหตุ:</b> %s ไม่ได้ติดตั้ง การติดตั้ง %s เป็นไปไม่ได้ กรุณาขอให้ผู้ดูแลระบบของคุณติดตั้งมัน",
- "External Storage" : "พื้นทีจัดเก็บข้อมูลจากภายนอก"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js
index dd325f6052e..1c874d47b66 100644
--- a/apps/files_external/l10n/tr.js
+++ b/apps/files_external/l10n/tr.js
@@ -119,13 +119,6 @@ OC.L10N.register(
"Delete" : "Sil",
"Allow users to mount external storage" : "Kullanıcılara harici depolama bağlamalarına izin ver",
"Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud sunucusundan bilgi alınamadı: {code} {type}",
- "Global Credentials" : "Genel Kimlik Bilgileri",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Not:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> PHP'de cURL desteği etkin veya kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> PHP'de FTP desteği etkin veya kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> \"%s\" kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "External Storage" : "Harici Depolama"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud sunucusundan bilgi alınamadı: {code} {type}"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json
index a3b39387fdf..4ea6e0f5391 100644
--- a/apps/files_external/l10n/tr.json
+++ b/apps/files_external/l10n/tr.json
@@ -117,13 +117,6 @@
"Delete" : "Sil",
"Allow users to mount external storage" : "Kullanıcılara harici depolama bağlamalarına izin ver",
"Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud sunucusundan bilgi alınamadı: {code} {type}",
- "Global Credentials" : "Genel Kimlik Bilgileri",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>Not:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> PHP'de cURL desteği etkin veya kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> PHP'de FTP desteği etkin veya kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Not:</b> \"%s\" kurulu değil. %s bağlaması mümkün olmayacak. Lütfen kurulumu için sistem yöneticilerinizle iletişime geçin.",
- "External Storage" : "Harici Depolama"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud sunucusundan bilgi alınamadı: {code} {type}"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js
index fcbee03772f..d7913aa7284 100644
--- a/apps/files_external/l10n/zh_CN.js
+++ b/apps/files_external/l10n/zh_CN.js
@@ -1,32 +1,82 @@
OC.L10N.register(
"files_external",
{
- "Step 1 failed. Exception: %s" : "步骤 1 失败。异常:%s",
- "Step 2 failed. Exception: %s" : "步骤 2 失败。异常:%s",
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "获取 request token 失败. 请验证您的 appkey 和密钥是否正确.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "获取 access token 失败. 请验证您的 appkey 和密钥是否正确.",
+ "Please provide a valid app key and secret." : "请提供有效的 appkey 和密钥.",
+ "Step 1 failed. Exception: %s" : "步骤 1 失败. 异常: %s",
+ "Step 2 failed. Exception: %s" : "步骤 2 失败. 异常: %s",
"External storage" : "外部存储",
+ "Dropbox App Configuration" : "Dropbox 配置",
+ "Google Drive App Configuration" : "Google Drive 配置",
"Personal" : "个人",
"System" : "系统",
"Grant access" : "授权",
+ "Error configuring OAuth1" : "OAuth1 配置错误",
+ "Error configuring OAuth2" : "OAuth2 配置错误",
+ "Generate keys" : "生成密钥",
+ "Error generating key pair" : "生成密钥对错误",
+ "All users. Type to select user or group." : "全部用户. 点击选择用户或分组.",
+ "(group)" : "(分组)",
+ "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)",
+ "Admin defined" : "管理员定义",
"Saved" : "已保存",
+ "Saving..." : "正在保存...",
+ "Save" : "保存",
+ "Empty response from the server" : "服务器响应为空",
+ "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.",
+ "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}",
+ "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}",
+ "There was an error with message: " : "错误信息: ",
"External mount error" : "外部挂载错误",
"external-storage" : "外部存储",
+ "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.",
+ "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据",
"Username" : "用户名",
"Password" : "密码",
- "Save" : "保存",
+ "Credentials saved" : "凭据已保存",
+ "Credentials saving failed" : "凭据保存失败",
+ "Credentials required" : "需要凭据",
+ "Storage with id \"%i\" not found" : "未找到 ID 为 \"%i\" 的存储",
+ "Invalid backend or authentication mechanism class" : "无效的后端或认证类型",
"Invalid mount point" : "无效的挂载点",
+ "Objectstore forbidden" : "对象存储禁止访问",
+ "Invalid storage backend \"%s\"" : "无效的存储后端 \"%s\"",
+ "Not permitted to use backend \"%s\"" : "不允许使用 \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "不允许使用认证方式 \"%s\"",
+ "Unsatisfied backend parameters" : "无法满足后端条件",
+ "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件",
+ "Insufficient data: %s" : "数据不足: %s",
"%s" : "%s",
+ "Storage with id \"%i\" is not user editable" : "无法编辑 ID 为 \"%i\" 的存储",
"Access key" : "Access key",
"Secret key" : "Secret key",
"Builtin" : "内置",
"None" : "无",
+ "OAuth1" : "OAuth1",
+ "App key" : "App key",
+ "App secret" : "App 密钥",
+ "OAuth2" : "OAuth2",
+ "Client ID" : "Client ID",
+ "Client secret" : "客户端密钥",
+ "OpenStack" : "OpenStack",
+ "Tenant name" : "租户名称",
+ "Identity endpoint URL" : "身份识别 URL",
+ "Rackspace" : "Rackspace",
"API key" : "API密匙",
+ "Global credentials" : "全局凭据",
+ "Log-in credentials, save in database" : "登录凭据, 保存在数据库中",
"Username and password" : "用户名和密码",
+ "Log-in credentials, save in session" : "登录凭据, 存储在会话中",
+ "User entered, store in database" : "用户登录, 存储在数据库中",
"RSA public key" : "RSA 公钥",
"Public key" : "公钥",
"Amazon S3" : "Amazon S3",
+ "Bucket" : "Bucket",
"Hostname" : "主机名",
"Port" : "端口",
- "Region" : "地区",
+ "Region" : "区域",
"Enable SSL" : "启用 SSL",
"Enable Path Style" : "启用 Path Style",
"WebDAV" : "WebDAV",
@@ -40,20 +90,23 @@ OC.L10N.register(
"Google Drive" : "Google Drive",
"Local" : "本地",
"Location" : "地点",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "根路径",
- "SFTP with secret key login" : "包含secret key的SFTP",
+ "SFTP with secret key login" : "包含 secret key 的SFTP",
"SMB / CIFS" : "SMB / CIFS",
"Share" : "共享",
"Domain" : "域名",
"SMB / CIFS using OC login" : "SMB / CIFS 使用 OC 登录信息",
+ "Username as share" : "以用户名作为共享名",
"OpenStack Object Storage" : "OpenStack 对象存储",
- "<b>Note:</b> " : "<b>注意:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHP 中的 cURL 支持未启用或未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHP 中的 FTP 支持未启用或未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b>“%s”尚未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "No external storage configured" : "未配置外部存储",
+ "Service name" : "服务名称",
+ "Request timeout (seconds)" : "请求超时时间 (秒)",
+ "External storages" : "外部存储",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 cURL 支持. 无法挂载 %s. 请联系您的系统管理员安装.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 FTP 支持. 无法挂载 %s. 请联系您的系统管理员安装.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装 \"%s\". 无法挂载 %s. 请联系您的系统管理员安装.",
+ "No external storage configured" : "没有配置外部存储",
"You can add external storages in the personal settings" : "您可以在个人设置中添加外部存储",
"Name" : "名称",
"Storage type" : "存储类型",
@@ -61,8 +114,9 @@ OC.L10N.register(
"Enable encryption" : "启用加密",
"Enable previews" : "启用预览",
"Enable sharing" : "启用分享",
+ "Check for changes" : "检查修改",
"Never" : "从不",
- "External Storage" : "外部存储",
+ "Once every direct access" : "每次访问时",
"Folder name" : "目录名称",
"Authentication" : "认证",
"Configuration" : "配置",
@@ -71,6 +125,7 @@ OC.L10N.register(
"Advanced settings" : "高级选项",
"Delete" : "删除",
"Allow users to mount external storage" : "允许用户挂载外部存储",
- "Allow users to mount the following external storage" : "允许用户挂载以下外部存储"
+ "Allow users to mount the following external storage" : "允许用户挂载以下外部存储",
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "无法从 ownCloud 服务器获取信息: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json
index 286156dac52..5653c3fa615 100644
--- a/apps/files_external/l10n/zh_CN.json
+++ b/apps/files_external/l10n/zh_CN.json
@@ -1,30 +1,80 @@
{ "translations": {
- "Step 1 failed. Exception: %s" : "步骤 1 失败。异常:%s",
- "Step 2 failed. Exception: %s" : "步骤 2 失败。异常:%s",
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "获取 request token 失败. 请验证您的 appkey 和密钥是否正确.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "获取 access token 失败. 请验证您的 appkey 和密钥是否正确.",
+ "Please provide a valid app key and secret." : "请提供有效的 appkey 和密钥.",
+ "Step 1 failed. Exception: %s" : "步骤 1 失败. 异常: %s",
+ "Step 2 failed. Exception: %s" : "步骤 2 失败. 异常: %s",
"External storage" : "外部存储",
+ "Dropbox App Configuration" : "Dropbox 配置",
+ "Google Drive App Configuration" : "Google Drive 配置",
"Personal" : "个人",
"System" : "系统",
"Grant access" : "授权",
+ "Error configuring OAuth1" : "OAuth1 配置错误",
+ "Error configuring OAuth2" : "OAuth2 配置错误",
+ "Generate keys" : "生成密钥",
+ "Error generating key pair" : "生成密钥对错误",
+ "All users. Type to select user or group." : "全部用户. 点击选择用户或分组.",
+ "(group)" : "(分组)",
+ "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)",
+ "Admin defined" : "管理员定义",
"Saved" : "已保存",
+ "Saving..." : "正在保存...",
+ "Save" : "保存",
+ "Empty response from the server" : "服务器响应为空",
+ "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.",
+ "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}",
+ "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}",
+ "There was an error with message: " : "错误信息: ",
"External mount error" : "外部挂载错误",
"external-storage" : "外部存储",
+ "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空",
+ "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.",
+ "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据",
"Username" : "用户名",
"Password" : "密码",
- "Save" : "保存",
+ "Credentials saved" : "凭据已保存",
+ "Credentials saving failed" : "凭据保存失败",
+ "Credentials required" : "需要凭据",
+ "Storage with id \"%i\" not found" : "未找到 ID 为 \"%i\" 的存储",
+ "Invalid backend or authentication mechanism class" : "无效的后端或认证类型",
"Invalid mount point" : "无效的挂载点",
+ "Objectstore forbidden" : "对象存储禁止访问",
+ "Invalid storage backend \"%s\"" : "无效的存储后端 \"%s\"",
+ "Not permitted to use backend \"%s\"" : "不允许使用 \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "不允许使用认证方式 \"%s\"",
+ "Unsatisfied backend parameters" : "无法满足后端条件",
+ "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件",
+ "Insufficient data: %s" : "数据不足: %s",
"%s" : "%s",
+ "Storage with id \"%i\" is not user editable" : "无法编辑 ID 为 \"%i\" 的存储",
"Access key" : "Access key",
"Secret key" : "Secret key",
"Builtin" : "内置",
"None" : "无",
+ "OAuth1" : "OAuth1",
+ "App key" : "App key",
+ "App secret" : "App 密钥",
+ "OAuth2" : "OAuth2",
+ "Client ID" : "Client ID",
+ "Client secret" : "客户端密钥",
+ "OpenStack" : "OpenStack",
+ "Tenant name" : "租户名称",
+ "Identity endpoint URL" : "身份识别 URL",
+ "Rackspace" : "Rackspace",
"API key" : "API密匙",
+ "Global credentials" : "全局凭据",
+ "Log-in credentials, save in database" : "登录凭据, 保存在数据库中",
"Username and password" : "用户名和密码",
+ "Log-in credentials, save in session" : "登录凭据, 存储在会话中",
+ "User entered, store in database" : "用户登录, 存储在数据库中",
"RSA public key" : "RSA 公钥",
"Public key" : "公钥",
"Amazon S3" : "Amazon S3",
+ "Bucket" : "Bucket",
"Hostname" : "主机名",
"Port" : "端口",
- "Region" : "地区",
+ "Region" : "区域",
"Enable SSL" : "启用 SSL",
"Enable Path Style" : "启用 Path Style",
"WebDAV" : "WebDAV",
@@ -38,20 +88,23 @@
"Google Drive" : "Google Drive",
"Local" : "本地",
"Location" : "地点",
- "ownCloud" : "ownCloud",
+ "Nextcloud" : "Nextcloud",
"SFTP" : "SFTP",
"Root" : "根路径",
- "SFTP with secret key login" : "包含secret key的SFTP",
+ "SFTP with secret key login" : "包含 secret key 的SFTP",
"SMB / CIFS" : "SMB / CIFS",
"Share" : "共享",
"Domain" : "域名",
"SMB / CIFS using OC login" : "SMB / CIFS 使用 OC 登录信息",
+ "Username as share" : "以用户名作为共享名",
"OpenStack Object Storage" : "OpenStack 对象存储",
- "<b>Note:</b> " : "<b>注意:</b>",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHP 中的 cURL 支持未启用或未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHP 中的 FTP 支持未启用或未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b>“%s”尚未安装。对 %s 的挂载无法进行。请联系系统管理员进行安装。",
- "No external storage configured" : "未配置外部存储",
+ "Service name" : "服务名称",
+ "Request timeout (seconds)" : "请求超时时间 (秒)",
+ "External storages" : "外部存储",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 cURL 支持. 无法挂载 %s. 请联系您的系统管理员安装.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 FTP 支持. 无法挂载 %s. 请联系您的系统管理员安装.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装 \"%s\". 无法挂载 %s. 请联系您的系统管理员安装.",
+ "No external storage configured" : "没有配置外部存储",
"You can add external storages in the personal settings" : "您可以在个人设置中添加外部存储",
"Name" : "名称",
"Storage type" : "存储类型",
@@ -59,8 +112,9 @@
"Enable encryption" : "启用加密",
"Enable previews" : "启用预览",
"Enable sharing" : "启用分享",
+ "Check for changes" : "检查修改",
"Never" : "从不",
- "External Storage" : "外部存储",
+ "Once every direct access" : "每次访问时",
"Folder name" : "目录名称",
"Authentication" : "认证",
"Configuration" : "配置",
@@ -69,6 +123,7 @@
"Advanced settings" : "高级选项",
"Delete" : "删除",
"Allow users to mount external storage" : "允许用户挂载外部存储",
- "Allow users to mount the following external storage" : "允许用户挂载以下外部存储"
+ "Allow users to mount the following external storage" : "允许用户挂载以下外部存储",
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "无法从 ownCloud 服务器获取信息: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js
index 89f072a865b..389910c38bd 100644
--- a/apps/files_external/l10n/zh_TW.js
+++ b/apps/files_external/l10n/zh_TW.js
@@ -104,12 +104,6 @@ OC.L10N.register(
"Delete" : "刪除",
"Allow users to mount external storage" : "允許使用者能自行掛載外部儲存",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "無法從ownCloud伺服器得到資訊: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>警告:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告:</b> PHP 並未啓用 Curl 的支援,因此無法掛載 %s 。請洽您的系統管理員將其安裝並啓用。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告</b>:PHP 並未啓用 FTP 的支援,因此無法掛載 %s,請洽您的系統管理員將其安裝並啓用。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告</b>並未安裝 \"%s\",因此無法掛載 %s。請洽您的系統管理員將其安裝並啓用。",
- "External Storage" : "外部儲存"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "無法從ownCloud伺服器得到資訊: {code} {type}"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json
index 9f6a9351ac8..2f4b0db76d5 100644
--- a/apps/files_external/l10n/zh_TW.json
+++ b/apps/files_external/l10n/zh_TW.json
@@ -102,12 +102,6 @@
"Delete" : "刪除",
"Allow users to mount external storage" : "允許使用者能自行掛載外部儲存",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存",
- "Couldn't get the information from the ownCloud server: {code} {type}" : "無法從ownCloud伺服器得到資訊: {code} {type}",
- "ownCloud" : "ownCloud",
- "<b>Note:</b> " : "<b>警告:</b> ",
- "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告:</b> PHP 並未啓用 Curl 的支援,因此無法掛載 %s 。請洽您的系統管理員將其安裝並啓用。",
- "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告</b>:PHP 並未啓用 FTP 的支援,因此無法掛載 %s,請洽您的系統管理員將其安裝並啓用。",
- "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>警告</b>並未安裝 \"%s\",因此無法掛載 %s。請洽您的系統管理員將其安裝並啓用。",
- "External Storage" : "外部儲存"
+ "Couldn't get the information from the ownCloud server: {code} {type}" : "無法從ownCloud伺服器得到資訊: {code} {type}"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/lib/Command/Notify.php b/apps/files_external/lib/Command/Notify.php
index 913299b59b4..a55b16a45c4 100644
--- a/apps/files_external/lib/Command/Notify.php
+++ b/apps/files_external/lib/Command/Notify.php
@@ -27,7 +27,11 @@ use OC\Core\Command\Base;
use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException;
use OCA\Files_External\Lib\StorageConfig;
use OCA\Files_External\Service\GlobalStoragesService;
+use OCP\Files\Notify\IChange;
+use OCP\Files\Notify\INotifyHandler;
+use OCP\Files\Notify\IRenameChange;
use OCP\Files\Storage\INotifyStorage;
+use OCP\Files\Storage\IStorage;
use OCP\Files\StorageNotAvailableException;
use OCP\IDBConnection;
use Symfony\Component\Console\Input\InputArgument;
@@ -123,14 +127,16 @@ class Notify extends Base {
$verbose = $input->getOption('verbose');
$path = trim($input->getOption('path'), '/');
- $storage->listen($path, function ($type, $path, $renameTarget) use ($mount, $verbose, $output) {
+ $notifyHandler = $storage->notify($path);
+ $this->selfTest($storage, $notifyHandler, $verbose, $output);
+ $notifyHandler->listen(function (IChange $change) use ($mount, $verbose, $output) {
if ($verbose) {
- $this->logUpdate($type, $path, $renameTarget, $output);
+ $this->logUpdate($change, $output);
}
- if ($type == INotifyStorage::NOTIFY_RENAMED) {
- $this->markParentAsOutdated($mount->getId(), $renameTarget);
+ if ($change instanceof IRenameChange) {
+ $this->markParentAsOutdated($mount->getId(), $change->getTargetPath());
}
- $this->markParentAsOutdated($mount->getId(), $path);
+ $this->markParentAsOutdated($mount->getId(), $change->getPath());
});
}
@@ -147,8 +153,8 @@ class Notify extends Base {
$this->updateQuery->execute([$parent, $mountId]);
}
- private function logUpdate($type, $path, $renameTarget, OutputInterface $output) {
- switch ($type) {
+ private function logUpdate(IChange $change, OutputInterface $output) {
+ switch ($change->getType()) {
case INotifyStorage::NOTIFY_ADDED:
$text = 'added';
break;
@@ -165,11 +171,42 @@ class Notify extends Base {
return;
}
- $text .= ' ' . $path;
- if ($type === INotifyStorage::NOTIFY_RENAMED) {
- $text .= ' to ' . $renameTarget;
+ $text .= ' ' . $change->getPath();
+ if ($change instanceof IRenameChange) {
+ $text .= ' to ' . $change->getTargetPath();
}
$output->writeln($text);
}
+
+ private function selfTest(IStorage $storage, INotifyHandler $notifyHandler, $verbose, OutputInterface $output) {
+ usleep(100 * 1000); //give time for the notify to start
+ $storage->file_put_contents('/.nc_test_file.txt', 'test content');
+ $storage->mkdir('/.nc_test_folder');
+ $storage->file_put_contents('/.nc_test_folder/subfile.txt', 'test content');
+ $storage->unlink('/.nc_test_file.txt');
+ $storage->unlink('/.nc_test_folder/subfile.txt');
+ $storage->rmdir('/.nc_test_folder');
+ usleep(100 * 1000); //time for all changes to be processed
+
+ $foundRootChange = false;
+ $foundSubfolderChange = false;
+
+ $changes = $notifyHandler->getChanges();
+ foreach ($changes as $change) {
+ if ($change->getPath() === '/.nc_test_file.txt') {
+ $foundRootChange = true;
+ } else if ($change->getPath() === '/.nc_test_folder/subfile.txt') {
+ $foundSubfolderChange = true;
+ }
+ }
+
+ if ($foundRootChange && $foundSubfolderChange && $verbose) {
+ $output->writeln('<info>Self-test successful</info>');
+ } else if ($foundRootChange && !$foundSubfolderChange) {
+ $output->writeln('<error>Error while running self-test, change is subfolder not detected</error>');
+ } else if (!$foundRootChange) {
+ $output->writeln('<error>Error while running self-test, no changes detected</error>');
+ }
+ }
}
diff --git a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
index 2fa939764d7..30644206c26 100644
--- a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
+++ b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
@@ -1,4 +1,5 @@
<?php
+
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -23,61 +24,42 @@
namespace OCA\Files_External\Lib\Auth\Password;
-use \OCP\IUser;
-use \OCP\IL10N;
-use \OCA\Files_External\Lib\DefinitionParameter;
-use \OCA\Files_External\Lib\Auth\AuthMechanism;
-use \OCA\Files_External\Lib\StorageConfig;
-use \OCP\ISession;
-use \OCP\Security\ICrypto;
-use \OCP\Files\Storage;
-use \OCA\Files_External\Lib\SessionStorageWrapper;
-use \OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException;
+use OCA\Files_External\Lib\Auth\AuthMechanism;
+use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException;
+use OCA\Files_External\Lib\SessionStorageWrapper;
+use OCA\Files_External\Lib\StorageConfig;
+use OCP\Authentication\Exceptions\CredentialsUnavailableException;
+use OCP\Authentication\LoginCredentials\IStore as CredentialsStore;
+use OCP\Files\Storage;
+use OCP\IL10N;
+use OCP\IUser;
/**
* Username and password from login credentials, saved in session
*/
class SessionCredentials extends AuthMechanism {
- /** @var ISession */
- protected $session;
-
- /** @var ICrypto */
- protected $crypto;
+ /** @var CredentialsStore */
+ private $credentialsStore;
- public function __construct(IL10N $l, ISession $session, ICrypto $crypto) {
- $this->session = $session;
- $this->crypto = $crypto;
+ public function __construct(IL10N $l, CredentialsStore $credentialsStore) {
+ $this->credentialsStore = $credentialsStore;
- $this
- ->setIdentifier('password::sessioncredentials')
+ $this->setIdentifier('password::sessioncredentials')
->setScheme(self::SCHEME_PASSWORD)
->setText($l->t('Log-in credentials, save in session'))
- ->addParameters([
- ])
- ;
-
- \OCP\Util::connectHook('OC_User', 'post_login', $this, 'authenticate');
- }
-
- /**
- * Hook listener on post login
- *
- * @param array $params
- */
- public function authenticate(array $params) {
- $this->session->set('password::sessioncredentials/credentials', $this->crypto->encrypt(json_encode($params)));
+ ->addParameters([]);
}
public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = null) {
- $encrypted = $this->session->get('password::sessioncredentials/credentials');
- if (!isset($encrypted)) {
+ try {
+ $credentials = $this->credentialsStore->getLoginCredentials();
+ } catch (CredentialsUnavailableException $e) {
throw new InsufficientDataForMeaningfulAnswerException('No session credentials saved');
}
- $credentials = json_decode($this->crypto->decrypt($encrypted), true);
- $storage->setBackendOption('user', $this->session->get('loginname'));
- $storage->setBackendOption('password', $credentials['password']);
+ $storage->setBackendOption('user', $credentials->getLoginName());
+ $storage->setBackendOption('password', $credentials->getPassword());
}
public function wrapStorage(Storage $storage) {
diff --git a/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php b/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php
new file mode 100644
index 00000000000..9ac74b32ad8
--- /dev/null
+++ b/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php
@@ -0,0 +1,150 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author 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 OCA\Files_External\Lib\Notify;
+
+use OC\Files\Notify\Change;
+use OC\Files\Notify\RenameChange;
+use OCP\Files\Notify\IChange;
+use OCP\Files\Notify\INotifyHandler;
+
+class SMBNotifyHandler implements INotifyHandler {
+ /**
+ * @var \Icewind\SMB\INotifyHandler
+ */
+ private $shareNotifyHandler;
+
+ /**
+ * @var string
+ */
+ private $root;
+
+ private $oldRenamePath = null;
+
+ /**
+ * SMBNotifyHandler constructor.
+ *
+ * @param \Icewind\SMB\INotifyHandler $shareNotifyHandler
+ * @param string $root
+ */
+ public function __construct(\Icewind\SMB\INotifyHandler $shareNotifyHandler, $root) {
+ $this->shareNotifyHandler = $shareNotifyHandler;
+ $this->root = $root;
+ }
+
+ private function relativePath($fullPath) {
+ if ($fullPath === $this->root) {
+ return '';
+ } else if (substr($fullPath, 0, strlen($this->root)) === $this->root) {
+ return substr($fullPath, strlen($this->root));
+ } else {
+ return null;
+ }
+ }
+
+ public function listen(callable $callback) {
+ $oldRenamePath = null;
+ $this->shareNotifyHandler->listen(function (\Icewind\SMB\Change $shareChange) use ($callback) {
+ $change = $this->mapChange($shareChange);
+ if (!is_null($change)) {
+ return $callback($change);
+ } else {
+ return true;
+ }
+ });
+ }
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return IChange[]
+ */
+ public function getChanges() {
+ $shareChanges = $this->shareNotifyHandler->getChanges();
+ $changes = [];
+ foreach ($shareChanges as $shareChange) {
+ $change = $this->mapChange($shareChange);
+ if ($change) {
+ $changes[] = $change;
+ }
+ }
+ return $changes;
+ }
+
+ /**
+ * Stop listening for changes
+ *
+ * Note that any pending changes will be discarded
+ */
+ public function stop() {
+ $this->shareNotifyHandler->stop();
+ }
+
+ /**
+ * @param \Icewind\SMB\Change $change
+ * @return IChange|null
+ */
+ private function mapChange(\Icewind\SMB\Change $change) {
+ $path = $this->relativePath($change->getPath());
+ if (is_null($path)) {
+ return null;
+ }
+ if ($change->getCode() === \Icewind\SMB\INotifyHandler::NOTIFY_RENAMED_OLD) {
+ $this->oldRenamePath = $path;
+ return null;
+ }
+ $type = $this->mapNotifyType($change->getCode());
+ if (is_null($type)) {
+ return null;
+ }
+ if ($type === IChange::RENAMED) {
+ if (!is_null($this->oldRenamePath)) {
+ $result = new RenameChange($type, $this->oldRenamePath, $path);
+ $this->oldRenamePath = null;
+ } else {
+ $result = null;
+ }
+ } else {
+ $result = new Change($type, $path);
+ }
+ return $result;
+ }
+
+ private function mapNotifyType($smbType) {
+ switch ($smbType) {
+ case \Icewind\SMB\INotifyHandler::NOTIFY_ADDED:
+ return IChange::ADDED;
+ case \Icewind\SMB\INotifyHandler::NOTIFY_REMOVED:
+ return IChange::REMOVED;
+ case \Icewind\SMB\INotifyHandler::NOTIFY_MODIFIED:
+ case \Icewind\SMB\INotifyHandler::NOTIFY_ADDED_STREAM:
+ case \Icewind\SMB\INotifyHandler::NOTIFY_MODIFIED_STREAM:
+ case \Icewind\SMB\INotifyHandler::NOTIFY_REMOVED_STREAM:
+ return IChange::MODIFIED;
+ case \Icewind\SMB\INotifyHandler::NOTIFY_RENAMED_NEW:
+ return IChange::RENAMED;
+ default:
+ return null;
+ }
+ }
+}
diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php
index e6e26e3547a..9dab25f7197 100644
--- a/apps/files_external/lib/Lib/Storage/AmazonS3.php
+++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php
@@ -42,6 +42,7 @@ require_once 'aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
+use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OC\Files\ObjectStore\S3ConnectionTrait;
@@ -366,14 +367,15 @@ class AmazonS3 extends \OC\Files\Storage\Common {
$ext = '';
}
$tmpFile = \OCP\Files::tmpFile($ext);
- \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
}
- self::$tmpFiles[$tmpFile] = $path;
- return fopen('close://' . $tmpFile, $mode);
+ $handle = fopen($tmpFile, $mode);
+ return CallbackWrapper::wrap($handle, null, null, function() use ($path, $tmpFile) {
+ $this->writeBack($tmpFile, $path);
+ });
}
return false;
}
@@ -514,15 +516,11 @@ class AmazonS3 extends \OC\Files\Storage\Common {
return $this->id;
}
- public function writeBack($tmpFile) {
- if (!isset(self::$tmpFiles[$tmpFile])) {
- return false;
- }
-
+ public function writeBack($tmpFile, $path) {
try {
$this->getConnection()->putObject(array(
'Bucket' => $this->bucket,
- 'Key' => $this->cleanKey(self::$tmpFiles[$tmpFile]),
+ 'Key' => $this->cleanKey($path),
'SourceFile' => $tmpFile,
'ContentType' => \OC::$server->getMimeTypeDetector()->detect($tmpFile),
'ContentLength' => filesize($tmpFile)
diff --git a/apps/files_external/lib/Lib/Storage/Dropbox.php b/apps/files_external/lib/Lib/Storage/Dropbox.php
index 45bc6cd0e98..d2ba1cca751 100644
--- a/apps/files_external/lib/Lib/Storage/Dropbox.php
+++ b/apps/files_external/lib/Lib/Storage/Dropbox.php
@@ -31,6 +31,7 @@
namespace OCA\Files_External\Lib\Storage;
use GuzzleHttp\Exception\RequestException;
+use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use Icewind\Streams\RetryWrapper;
use OCP\Files\StorageNotAvailableException;
@@ -45,8 +46,6 @@ class Dropbox extends \OC\Files\Storage\Common {
private $metaData = array();
private $oauth;
- private static $tempFiles = array();
-
public function __construct($params) {
if (isset($params['configured']) && $params['configured'] == 'true'
&& isset($params['app_key'])
@@ -305,27 +304,26 @@ class Dropbox extends \OC\Files\Storage\Common {
$ext = '';
}
$tmpFile = \OCP\Files::tmpFile($ext);
- \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
}
- self::$tempFiles[$tmpFile] = $path;
- return fopen('close://'.$tmpFile, $mode);
+ $handle = fopen($tmpFile, $mode);
+ return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) {
+ $this->writeBack($tmpFile, $path);
+ });
}
return false;
}
- public function writeBack($tmpFile) {
- if (isset(self::$tempFiles[$tmpFile])) {
- $handle = fopen($tmpFile, 'r');
- try {
- $this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle);
- unlink($tmpFile);
- $this->deleteMetaData(self::$tempFiles[$tmpFile]);
- } catch (\Exception $exception) {
- \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
- }
+ public function writeBack($tmpFile, $path) {
+ $handle = fopen($tmpFile, 'r');
+ try {
+ $this->dropbox->putFile($path, $handle);
+ unlink($tmpFile);
+ $this->deleteMetaData($path);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
}
}
diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php
index 6f34416d111..22fe2090f30 100644
--- a/apps/files_external/lib/Lib/Storage/FTP.php
+++ b/apps/files_external/lib/Lib/Storage/FTP.php
@@ -33,6 +33,7 @@
namespace OCA\Files_External\Lib\Storage;
+use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\RetryWrapper;
class FTP extends StreamWrapper{
@@ -127,21 +128,20 @@ class FTP extends StreamWrapper{
$ext='';
}
$tmpFile=\OCP\Files::tmpFile($ext);
- \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$this->getFile($path, $tmpFile);
}
- self::$tempFiles[$tmpFile]=$path;
- return fopen('close://'.$tmpFile, $mode);
+ $handle = fopen($tmpFile, $mode);
+ return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) {
+ $this->writeBack($tmpFile, $path);
+ });
}
return false;
}
- public function writeBack($tmpFile) {
- if (isset(self::$tempFiles[$tmpFile])) {
- $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]);
- unlink($tmpFile);
- }
+ public function writeBack($tmpFile, $path) {
+ $this->uploadFile($tmpFile, $path);
+ unlink($tmpFile);
}
/**
diff --git a/apps/files_external/lib/Lib/Storage/Google.php b/apps/files_external/lib/Lib/Storage/Google.php
index a3133cb4743..b22b0c29263 100644
--- a/apps/files_external/lib/Lib/Storage/Google.php
+++ b/apps/files_external/lib/Lib/Storage/Google.php
@@ -36,6 +36,7 @@
namespace OCA\Files_External\Lib\Storage;
use GuzzleHttp\Exception\RequestException;
+use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use Icewind\Streams\RetryWrapper;
@@ -50,8 +51,6 @@ class Google extends \OC\Files\Storage\Common {
private $service;
private $driveFiles;
- private static $tempFiles = array();
-
// Google Doc mimetypes
const FOLDER = 'application/vnd.google-apps.folder';
const DOCUMENT = 'application/vnd.google-apps.document';
@@ -495,94 +494,91 @@ class Google extends \OC\Files\Storage\Common {
case 'c':
case 'c+':
$tmpFile = \OCP\Files::tmpFile($ext);
- \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'rb');
file_put_contents($tmpFile, $source);
}
- self::$tempFiles[$tmpFile] = $path;
- return fopen('close://'.$tmpFile, $mode);
+ $handle = fopen($tmpFile, $mode);
+ return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) {
+ $this->writeBack($tmpFile, $path);
+ });
}
}
- public function writeBack($tmpFile) {
- if (isset(self::$tempFiles[$tmpFile])) {
- $path = self::$tempFiles[$tmpFile];
- $parentFolder = $this->getDriveFile(dirname($path));
- if ($parentFolder) {
- $mimetype = \OC::$server->getMimeTypeDetector()->detect($tmpFile);
- $params = array(
- 'mimeType' => $mimetype,
- 'uploadType' => 'media'
- );
- $result = false;
+ public function writeBack($tmpFile, $path) {
+ $parentFolder = $this->getDriveFile(dirname($path));
+ if ($parentFolder) {
+ $mimetype = \OC::$server->getMimeTypeDetector()->detect($tmpFile);
+ $params = array(
+ 'mimeType' => $mimetype,
+ 'uploadType' => 'media'
+ );
+ $result = false;
+
+ $chunkSizeBytes = 10 * 1024 * 1024;
+
+ $useChunking = false;
+ $size = filesize($tmpFile);
+ if ($size > $chunkSizeBytes) {
+ $useChunking = true;
+ } else {
+ $params['data'] = file_get_contents($tmpFile);
+ }
- $chunkSizeBytes = 10 * 1024 * 1024;
+ if ($this->file_exists($path)) {
+ $file = $this->getDriveFile($path);
+ $this->client->setDefer($useChunking);
+ $request = $this->service->files->update($file->getId(), $file, $params);
+ } else {
+ $file = new \Google_Service_Drive_DriveFile();
+ $file->setTitle(basename($path));
+ $file->setMimeType($mimetype);
+ $parent = new \Google_Service_Drive_ParentReference();
+ $parent->setId($parentFolder->getId());
+ $file->setParents(array($parent));
+ $this->client->setDefer($useChunking);
+ $request = $this->service->files->insert($file, $params);
+ }
- $useChunking = false;
- $size = filesize($tmpFile);
- if ($size > $chunkSizeBytes) {
- $useChunking = true;
- } else {
- $params['data'] = file_get_contents($tmpFile);
+ if ($useChunking) {
+ // Create a media file upload to represent our upload process.
+ $media = new \Google_Http_MediaFileUpload(
+ $this->client,
+ $request,
+ 'text/plain',
+ null,
+ true,
+ $chunkSizeBytes
+ );
+ $media->setFileSize($size);
+
+ // Upload the various chunks. $status will be false until the process is
+ // complete.
+ $status = false;
+ $handle = fopen($tmpFile, 'rb');
+ while (!$status && !feof($handle)) {
+ $chunk = fread($handle, $chunkSizeBytes);
+ $status = $media->nextChunk($chunk);
}
- if ($this->file_exists($path)) {
- $file = $this->getDriveFile($path);
- $this->client->setDefer($useChunking);
- $request = $this->service->files->update($file->getId(), $file, $params);
- } else {
- $file = new \Google_Service_Drive_DriveFile();
- $file->setTitle(basename($path));
- $file->setMimeType($mimetype);
- $parent = new \Google_Service_Drive_ParentReference();
- $parent->setId($parentFolder->getId());
- $file->setParents(array($parent));
- $this->client->setDefer($useChunking);
- $request = $this->service->files->insert($file, $params);
+ // The final value of $status will be the data from the API for the object
+ // that has been uploaded.
+ $result = false;
+ if ($status !== false) {
+ $result = $status;
}
- if ($useChunking) {
- // Create a media file upload to represent our upload process.
- $media = new \Google_Http_MediaFileUpload(
- $this->client,
- $request,
- 'text/plain',
- null,
- true,
- $chunkSizeBytes
- );
- $media->setFileSize($size);
-
- // Upload the various chunks. $status will be false until the process is
- // complete.
- $status = false;
- $handle = fopen($tmpFile, 'rb');
- while (!$status && !feof($handle)) {
- $chunk = fread($handle, $chunkSizeBytes);
- $status = $media->nextChunk($chunk);
- }
-
- // The final value of $status will be the data from the API for the object
- // that has been uploaded.
- $result = false;
- if ($status !== false) {
- $result = $status;
- }
-
- fclose($handle);
- } else {
- $result = $request;
- }
+ fclose($handle);
+ } else {
+ $result = $request;
+ }
- // Reset to the client to execute requests immediately in the future.
- $this->client->setDefer(false);
+ // Reset to the client to execute requests immediately in the future.
+ $this->client->setDefer(false);
- if ($result) {
- $this->setDriveFile($path, $result);
- }
+ if ($result) {
+ $this->setDriveFile($path, $result);
}
- unlink($tmpFile);
}
}
diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php
index 9d20742fcb0..1d9affa8d68 100644
--- a/apps/files_external/lib/Lib/Storage/SFTP.php
+++ b/apps/files_external/lib/Lib/Storage/SFTP.php
@@ -207,7 +207,7 @@ class SFTP extends \OC\Files\Storage\Common {
try {
$storage_view = \OCP\Files::getStorage('files_external');
if ($storage_view) {
- return \OC::$server->getConfig()->getSystemValue('datadirectory') .
+ return \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') .
$storage_view->getAbsolutePath('') .
'ssh_hostKeys';
}
diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php
index 28445dd2f61..690f8e2a334 100644
--- a/apps/files_external/lib/Lib/Storage/SMB.php
+++ b/apps/files_external/lib/Lib/Storage/SMB.php
@@ -31,10 +31,13 @@
namespace OCA\Files_External\Lib\Storage;
+use Icewind\SMB\Change;
use Icewind\SMB\Exception\ConnectException;
use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\ForbiddenException;
use Icewind\SMB\Exception\NotFoundException;
+use Icewind\SMB\INotifyHandler;
+use Icewind\SMB\IFileInfo;
use Icewind\SMB\IShare;
use Icewind\SMB\NativeServer;
use Icewind\SMB\Server;
@@ -43,6 +46,9 @@ use Icewind\Streams\IteratorDirectory;
use OC\Cache\CappedMemoryCache;
use OC\Files\Filesystem;
use OC\Files\Storage\Common;
+use OCA\Files_External\Lib\Notify\SMBNotifyHandler;
+use OCP\Files\Notify\IChange;
+use OCP\Files\Notify\IRenameChange;
use OCP\Files\Storage\INotifyStorage;
use OCP\Files\StorageNotAvailableException;
@@ -146,7 +152,9 @@ class SMB extends Common implements INotifyStorage {
foreach ($files as $file) {
$this->statCache[$path . '/' . $file->getName()] = $file;
}
- return $files;
+ return array_filter($files, function (IFileInfo $file) {
+ return !$file->isHidden();
+ });
} catch (ConnectException $e) {
throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
@@ -168,7 +176,46 @@ class SMB extends Common implements INotifyStorage {
* @return array
*/
public function stat($path) {
- return $this->formatInfo($this->getFileInfo($path));
+ $result = $this->formatInfo($this->getFileInfo($path));
+ if ($this->remoteIsShare() && $this->isRootDir($path)) {
+ $result['mtime'] = $this->shareMTime();
+ }
+ return $result;
+ }
+
+ /**
+ * get the best guess for the modification time of the share
+ *
+ * @return int
+ */
+ private function shareMTime() {
+ $highestMTime = 0;
+ $files = $this->share->dir($this->root);
+ foreach ($files as $fileInfo) {
+ if ($fileInfo->getMTime() > $highestMTime) {
+ $highestMTime = $fileInfo->getMTime();
+ }
+ }
+ return $highestMTime;
+ }
+
+ /**
+ * Check if the path is our root dir (not the smb one)
+ *
+ * @param string $path the path
+ * @return bool
+ */
+ private function isRootDir($path) {
+ return $path === '' || $path === '/' || $path === '.';
+ }
+
+ /**
+ * Check if our root points to a smb share
+ *
+ * @return bool true if our root points to a share false otherwise
+ */
+ private function remoteIsShare() {
+ return $this->share->getName() && (!$this->root || $this->root === '/');
}
/**
@@ -442,46 +489,18 @@ class SMB extends Common implements INotifyStorage {
}
public function listen($path, callable $callback) {
- $fullPath = $this->buildPath($path);
- $oldRenamePath = null;
- $this->share->notify($fullPath, function ($smbType, $fullPath) use (&$oldRenamePath, $callback) {
- $path = $this->relativePath($fullPath);
- if (is_null($path)) {
- return true;
- }
- if ($smbType === IShare::NOTIFY_RENAMED_OLD) {
- $oldRenamePath = $path;
- return true;
- }
- $type = $this->mapNotifyType($smbType);
- if (is_null($type)) {
- return true;
- }
- if ($type === INotifyStorage::NOTIFY_RENAMED && !is_null($oldRenamePath)) {
- $result = $callback($type, $path, $oldRenamePath);
- $oldRenamePath = null;
+ $this->notify($path)->listen(function (IChange $change) use ($callback) {
+ if ($change instanceof IRenameChange) {
+ return $callback($change->getType(), $change->getPath(), $change->getTargetPath());
} else {
- $result = $callback($type, $path);
+ return $callback($change->getType(), $change->getPath());
}
- return $result;
});
}
- private function mapNotifyType($smbType) {
- switch ($smbType) {
- case IShare::NOTIFY_ADDED:
- return INotifyStorage::NOTIFY_ADDED;
- case IShare::NOTIFY_REMOVED:
- return INotifyStorage::NOTIFY_REMOVED;
- case IShare::NOTIFY_MODIFIED:
- case IShare::NOTIFY_ADDED_STREAM:
- case IShare::NOTIFY_MODIFIED_STREAM:
- case IShare::NOTIFY_REMOVED_STREAM:
- return INotifyStorage::NOTIFY_MODIFIED;
- case IShare::NOTIFY_RENAMED_NEW:
- return INotifyStorage::NOTIFY_RENAMED;
- default:
- return null;
- }
+ public function notify($path) {
+ $path = '/' . ltrim($path, '/');
+ $shareNotifyHandler = $this->share->notify($this->buildPath($path));
+ return new SMBNotifyHandler($shareNotifyHandler, $this->root);
}
}
diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php
index ba0b4898e2e..5fec278ef3d 100644
--- a/apps/files_external/lib/Lib/Storage/Swift.php
+++ b/apps/files_external/lib/Lib/Storage/Swift.php
@@ -37,6 +37,7 @@ namespace OCA\Files_External\Lib\Storage;
use Guzzle\Http\Url;
use Guzzle\Http\Exception\ClientErrorResponseException;
+use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OpenCloud;
use OpenCloud\Common\Exceptions;
@@ -410,7 +411,6 @@ class Swift extends \OC\Files\Storage\Common {
$ext = '';
}
$tmpFile = \OCP\Files::tmpFile($ext);
- \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
// Fetch existing file if required
if ($mode[0] !== 'w' && $this->file_exists($path)) {
if ($mode[0] === 'x') {
@@ -424,9 +424,10 @@ class Swift extends \OC\Files\Storage\Common {
fseek($tmpFile, 0, SEEK_END);
}
}
- self::$tmpFiles[$tmpFile] = $path;
-
- return fopen('close://' . $tmpFile, $mode);
+ $handle = fopen($tmpFile, $mode);
+ return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) {
+ $this->writeBack($tmpFile, $path);
+ });
}
}
@@ -615,12 +616,9 @@ class Swift extends \OC\Files\Storage\Common {
return $this->container;
}
- public function writeBack($tmpFile) {
- if (!isset(self::$tmpFiles[$tmpFile])) {
- return false;
- }
+ public function writeBack($tmpFile, $path) {
$fileData = fopen($tmpFile, 'r');
- $this->getContainer()->uploadObject(self::$tmpFiles[$tmpFile], $fileData);
+ $this->getContainer()->uploadObject($path, $fileData);
// invalidate target object to force repopulation on fetch
$this->objectCache->remove(self::$tmpFiles[$tmpFile]);
unlink($tmpFile);
diff --git a/apps/files_external/lib/Settings/Section.php b/apps/files_external/lib/Settings/Section.php
index 4b4bac93d29..4829bb60d39 100644
--- a/apps/files_external/lib/Settings/Section.php
+++ b/apps/files_external/lib/Settings/Section.php
@@ -24,13 +24,21 @@
namespace OCA\Files_External\Settings;
use OCP\IL10N;
-use OCP\Settings\ISection;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
-class Section implements ISection {
+class Section implements IIconSection {
/** @var IL10N */
private $l;
+ /** @var IURLGenerator */
+ private $url;
- public function __construct(IL10N $l) {
+ /**
+ * @param IURLGenerator $url
+ * @param IL10N $l
+ */
+ public function __construct(IURLGenerator $url, IL10N $l) {
+ $this->url = $url;
$this->l = $l;
}
@@ -64,4 +72,11 @@ class Section implements ISection {
public function getPriority() {
return 10;
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIcon() {
+ return $this->url->imagePath('files_external', 'app-dark.svg');
+ }
}
diff --git a/apps/files_external/tests/AmazonS3MigrationTest.php b/apps/files_external/tests/AmazonS3MigrationTest.php
deleted file mode 100644
index 2788ef6cbb4..00000000000
--- a/apps/files_external/tests/AmazonS3MigrationTest.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-
-namespace OCA\Files_External\Tests;
-
-use OCA\Files_External\Lib\Storage\AmazonS3;
-
-/**
- * Class AmazonS3Migration
- *
- * @group DB
- *
- * @package OCA\Files_External\Tests
- */
-class AmazonS3MigrationTest extends \Test\TestCase {
-
- /**
- * @var \OC\Files\Storage\Storage instance
- */
- protected $instance;
-
- /** @var array */
- protected $params;
-
- /** @var string */
- protected $oldId;
-
- /** @var string */
- protected $newId;
-
- protected function setUp() {
- parent::setUp();
-
- $uuid = $this->getUniqueID();
-
- $this->params['key'] = 'key'.$uuid;
- $this->params['secret'] = 'secret'.$uuid;
- $this->params['bucket'] = 'bucket'.$uuid;
-
- $this->oldId = 'amazon::' . $this->params['key'] . md5($this->params['secret']);
- $this->newId = 'amazon::' . $this->params['bucket'];
- }
-
- protected function tearDown() {
- $this->deleteStorage($this->oldId);
- $this->deleteStorage($this->newId);
-
- parent::tearDown();
- }
-
- public function testUpdateLegacyOnlyId () {
- // add storage ids
- $oldCache = new \OC\Files\Cache\Cache($this->oldId);
-
- // add file to old cache
- $fileId = $oldCache->put('foobar', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
-
- try {
- $this->instance = new AmazonS3($this->params);
- } catch (\Exception $e) {
- //ignore
- }
- $storages = $this->getStorages();
-
- $this->assertTrue(isset($storages[$this->newId]));
- $this->assertFalse(isset($storages[$this->oldId]));
- $this->assertSame((int)$oldCache->getNumericStorageId(), (int)$storages[$this->newId]);
-
- list($storageId, $path) = \OC\Files\Cache\Cache::getById($fileId);
-
- $this->assertSame($this->newId, $storageId);
- $this->assertSame('foobar', $path);
- }
-
- public function testUpdateLegacyAndNewId () {
- // add storage ids
-
- $oldCache = new \OC\Files\Cache\Cache($this->oldId);
- new \OC\Files\Cache\Cache($this->newId);
-
- // add file to old cache
- $fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
-
- try {
- $this->instance = new AmazonS3($this->params);
- } catch (\Exception $e) {
- //ignore
- }
- $storages = $this->getStorages();
-
- $this->assertTrue(isset($storages[$this->newId]));
- $this->assertFalse(isset($storages[$this->oldId]));
-
- $this->assertNull(\OC\Files\Cache\Cache::getById($fileId), 'old filecache has not been cleared');
- }
-
- /**
- * @param $storages
- * @return array
- */
- public function getStorages() {
- $storages = array();
- $stmt = \OC::$server->getDatabaseConnection()->prepare(
- 'SELECT `numeric_id`, `id` FROM `*PREFIX*storages` WHERE `id` IN (?, ?)'
- );
- $stmt->execute(array($this->oldId, $this->newId));
- while ($row = $stmt->fetch()) {
- $storages[$row['id']] = $row['numeric_id'];
- }
- return $storages;
- }
-
- /**
- * @param string $id
- */
- public function deleteStorage($id) {
- $stmt = \OC::$server->getDatabaseConnection()->prepare(
- 'DELETE FROM `*PREFIX*storages` WHERE `id` = ?'
- );
- $stmt->execute(array($id));
- }
-}
diff --git a/apps/files_external/tests/Command/ListCommandTest.php b/apps/files_external/tests/Command/ListCommandTest.php
index f2f9fa94c02..76a8f98f520 100644
--- a/apps/files_external/tests/Command/ListCommandTest.php
+++ b/apps/files_external/tests/Command/ListCommandTest.php
@@ -29,31 +29,36 @@ use OCA\Files_External\Lib\Auth\Password\Password;
use OCA\Files_External\Lib\Auth\Password\SessionCredentials;
use OCA\Files_External\Lib\Backend\Local;
use OCA\Files_External\Lib\StorageConfig;
+use OCA\Files_External\Service\GlobalStoragesService;
+use OCA\Files_External\Service\UserStoragesService;
+use OCP\Authentication\LoginCredentials\IStore;
+use OCP\IL10N;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Security\ICrypto;
+use PHPUnit_Framework_MockObject_MockObject;
use Symfony\Component\Console\Output\BufferedOutput;
class ListCommandTest extends CommandTest {
/**
- * @return \OCA\Files_External\Command\ListCommand|\PHPUnit_Framework_MockObject_MockObject
+ * @return ListCommand|PHPUnit_Framework_MockObject_MockObject
*/
private function getInstance() {
- /** @var \OCA\Files_External\Service\GlobalStoragesService|\PHPUnit_Framework_MockObject_MockObject $globalService */
- $globalService = $this->getMock('\OCA\Files_External\Service\GlobalStoragesService', null, [], '', false);
- /** @var \OCA\Files_External\Service\UserStoragesService|\PHPUnit_Framework_MockObject_MockObject $userService */
- $userService = $this->getMock('\OCA\Files_External\Service\UserStoragesService', null, [], '', false);
- /** @var \OCP\IUserManager|\PHPUnit_Framework_MockObject_MockObject $userManager */
+ /** @var GlobalStoragesService|PHPUnit_Framework_MockObject_MockObject $globalService */
+ $globalService = $this->createMock(GlobalStoragesService::class);
+ /** @var UserStoragesService|PHPUnit_Framework_MockObject_MockObject $userService */
+ $userService = $this->createMock(UserStoragesService::class);
+ /** @var IUserManager|PHPUnit_Framework_MockObject_MockObject $userManager */
$userManager = $this->createMock(IUserManager::class);
- /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject $userSession */
+ /** @var IUserSession|PHPUnit_Framework_MockObject_MockObject $userSession */
$userSession = $this->createMock(IUserSession::class);
return new ListCommand($globalService, $userService, $userSession, $userManager);
}
public function testListAuthIdentifier() {
- $l10n = $this->getMock('\OPC\IL10N', null, [], '', false);
+ $l10n = $this->createMock(IL10N::class);
$session = $this->createMock(ISession::class);
$crypto = $this->createMock(ICrypto::class);
$instance = $this->getInstance();
@@ -61,7 +66,8 @@ class ListCommandTest extends CommandTest {
$mount1->setAuthMechanism(new Password($l10n));
$mount1->setBackend(new Local($l10n, new NullMechanism($l10n)));
$mount2 = new StorageConfig();
- $mount2->setAuthMechanism(new SessionCredentials($l10n, $session, $crypto));
+ $credentialStore = $this->createMock(IStore::class);
+ $mount2->setAuthMechanism(new SessionCredentials($l10n, $credentialStore));
$mount2->setBackend(new Local($l10n, new NullMechanism($l10n)));
$input = $this->getInput($instance, [], [
'output' => 'json'
diff --git a/apps/files_external/tests/Settings/AdminTest.php b/apps/files_external/tests/Settings/AdminTest.php
index fdf9680e7c3..6236f2d416a 100644
--- a/apps/files_external/tests/Settings/AdminTest.php
+++ b/apps/files_external/tests/Settings/AdminTest.php
@@ -34,21 +34,21 @@ use Test\TestCase;
class AdminTest extends TestCase {
/** @var Admin */
private $admin;
- /** @var IManager */
+ /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */
private $encryptionManager;
- /** @var GlobalStoragesService */
+ /** @var GlobalStoragesService|\PHPUnit_Framework_MockObject_MockObject */
private $globalStoragesService;
- /** @var BackendService */
+ /** @var BackendService|\PHPUnit_Framework_MockObject_MockObject */
private $backendService;
- /** @var GlobalAuth */
+ /** @var GlobalAuth|\PHPUnit_Framework_MockObject_MockObject */
private $globalAuth;
public function setUp() {
parent::setUp();
- $this->encryptionManager = $this->getMockBuilder('\OCP\Encryption\IManager')->getMock();
- $this->globalStoragesService = $this->getMockBuilder('\OCA\Files_External\Service\GlobalStoragesService')->disableOriginalConstructor()->getMock();
- $this->backendService = $this->getMockBuilder('\OCA\Files_External\Service\BackendService')->disableOriginalConstructor()->getMock();
- $this->globalAuth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Password\GlobalAuth')->disableOriginalConstructor()->getMock();
+ $this->encryptionManager = $this->createMock(IManager::class);
+ $this->globalStoragesService = $this->createMock(GlobalStoragesService::class);
+ $this->backendService = $this->createMock(BackendService::class);
+ $this->globalAuth = $this->createMock(GlobalAuth::class);
$this->admin = new Admin(
$this->encryptionManager,
@@ -79,6 +79,10 @@ class AdminTest extends TestCase {
->expects($this->once())
->method('isUserMountingAllowed')
->willReturn(true);
+ $this->backendService
+ ->expects($this->exactly(2))
+ ->method('getBackends')
+ ->willReturn([]);
$this->globalAuth
->expects($this->once())
->method('getAuth')
diff --git a/apps/files_external/tests/Settings/SectionTest.php b/apps/files_external/tests/Settings/SectionTest.php
index b5dfb28b382..ee501b1270b 100644
--- a/apps/files_external/tests/Settings/SectionTest.php
+++ b/apps/files_external/tests/Settings/SectionTest.php
@@ -25,19 +25,24 @@ namespace OCA\Files_External\Tests\Settings;
use OCA\Files_External\Settings\Section;
use OCP\IL10N;
+use OCP\IURLGenerator;
use Test\TestCase;
class SectionTest extends TestCase {
/** @var IL10N */
private $l;
+ /** @var IURLGenerator */
+ private $urlGenerator;
/** @var Section */
private $section;
public function setUp() {
parent::setUp();
+ $this->urlGenerator = $this->getMockBuilder('\OCP\IURLGenerator')->disableOriginalConstructor()->getMock();
$this->l = $this->getMockBuilder('\OCP\IL10N')->disableOriginalConstructor()->getMock();
$this->section = new Section(
+ $this->urlGenerator,
$this->l
);
}
diff --git a/apps/files_external/tests/Storage/SmbTest.php b/apps/files_external/tests/Storage/SmbTest.php
index 150d4d3a035..45c01a0c59e 100644
--- a/apps/files_external/tests/Storage/SmbTest.php
+++ b/apps/files_external/tests/Storage/SmbTest.php
@@ -27,7 +27,10 @@
namespace OCA\Files_External\Tests\Storage;
+use OC\Files\Notify\Change;
+use OC\Files\Notify\RenameChange;
use \OCA\Files_External\Lib\Storage\SMB;
+use OCP\Files\Notify\IChange;
/**
* Class SmbTest
@@ -37,6 +40,10 @@ use \OCA\Files_External\Lib\Storage\SMB;
* @package OCA\Files_External\Tests\Storage
*/
class SmbTest extends \Test\Files\Storage\Storage {
+ /**
+ * @var SMB instance
+ */
+ protected $instance;
protected function setUp() {
parent::setUp();
@@ -85,4 +92,44 @@ class SmbTest extends \Test\Files\Storage\Storage {
$this->assertEquals('smb::testuser@testhost//someshare//someroot/', $this->instance->getId());
$this->instance = null;
}
+
+ public function testNotifyGetChanges() {
+ $notifyHandler = $this->instance->notify('');
+ usleep(100 * 1000); //give time for the notify to start
+ $this->instance->file_put_contents('/newfile.txt', 'test content');
+ $this->instance->rename('/newfile.txt', 'renamed.txt');
+ $this->instance->unlink('/renamed.txt');
+ usleep(100 * 1000); //time for all changes to be processed
+
+ $changes = $notifyHandler->getChanges();
+ $notifyHandler->stop();
+
+ $expected = [
+ new Change(IChange::ADDED, 'newfile.txt'),
+ new RenameChange(IChange::RENAMED, 'newfile.txt', 'renamed.txt'),
+ new Change(IChange::REMOVED, 'renamed.txt')
+ ];
+
+ foreach ($expected as $expectedChange) {
+ $this->assertContains($expectedChange, $changes, '', false, false); // dont check object identity
+ }
+ }
+
+ public function testNotifyListen() {
+ $notifyHandler = $this->instance->notify('');
+ usleep(100 * 1000); //give time for the notify to start
+ $this->instance->file_put_contents('/newfile.txt', 'test content');
+ $this->instance->unlink('/newfile.txt');
+ usleep(100 * 1000); //time for all changes to be processed
+
+ $result = null;
+
+ // since the notify handler buffers untill we start listening we will get the above changes
+ $notifyHandler->listen(function (IChange $change) use (&$result) {
+ $result = $change;
+ return false;//stop listening
+ });
+
+ $this->assertEquals(new Change(IChange::ADDED, 'newfile.txt'), $result);
+ }
}
diff --git a/apps/files_external/tests/env/start-smb-linux.sh b/apps/files_external/tests/env/start-smb-linux.sh
new file mode 100755
index 00000000000..173dd25ebb9
--- /dev/null
+++ b/apps/files_external/tests/env/start-smb-linux.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+#
+# ownCloud
+#
+# This script start a docker container to test the files_external tests
+# against. It will also change the files_external config to use the docker
+# container as testing environment. This is reverted in the stop step.W
+#
+# Set environment variable DEBUG to print config file
+#
+# @author Morris Jobke
+# @copyright 2015 Morris Jobke <hey@morrisjobke.de>
+#
+
+# retrieve current folder to place the config in the parent folder
+thisFolder=`echo $0 | sed 's#env/start-smb-linux\.sh##'`
+
+if [ -z "$thisFolder" ]; then
+ thisFolder="."
+fi;
+
+cat > $thisFolder/config.smb.php <<DELIM
+<?php
+
+return array(
+ 'run'=>true,
+ 'host'=>'127.0.0.1',
+ 'user'=>'test',
+ 'password'=>'test',
+ 'root'=>'',
+ 'share'=>'public',
+);
+
+DELIM
+
+echo -n "Waiting for samba initialization"
+if ! "$thisFolder"/env/wait-for-connection 127.0.0.1 445 60; then
+ echo "[ERROR] Waited 60 seconds, no response" >&2
+ exit 1
+fi
+
+sleep 1
diff --git a/apps/files_external/tests/env/start-smb-silvershell.sh b/apps/files_external/tests/env/start-smb-silvershell.sh
deleted file mode 100755
index a7ff3f71eb1..00000000000
--- a/apps/files_external/tests/env/start-smb-silvershell.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env bash
-#
-# ownCloud
-#
-# This script start a docker container to test the files_external tests
-# against. It will also change the files_external config to use the docker
-# container as testing environment. This is reverted in the stop step.W
-#
-# Set environment variable DEBUG to print config file
-#
-# @author Morris Jobke
-# @copyright 2015 Morris Jobke <hey@morrisjobke.de>
-#
-
-if ! command -v docker >/dev/null 2>&1; then
- echo "No docker executable found - skipped docker setup"
- exit 0;
-fi
-
-echo "Docker executable found - setup docker"
-
-echo "Fetch recent silvershell/samba docker image"
-docker pull silvershell/samba
-
-# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | sed 's#env/start-smb-silvershell\.sh##'`
-
-if [ -z "$thisFolder" ]; then
- thisFolder="."
-fi;
-
-container=`docker run -d -e SMB_USER=test -e SMB_PWD=test silvershell/samba`
-
-host=`docker inspect --format="{{.NetworkSettings.IPAddress}}" $container`
-
-cat > $thisFolder/config.smb.php <<DELIM
-<?php
-
-return array(
- 'run'=>true,
- 'host'=>'$host',
- 'user'=>'test',
- 'password'=>'test',
- 'root'=>'',
- 'share'=>'public',
-);
-
-DELIM
-
-echo "samba container: $container"
-
-# put container IDs into a file to drop them after the test run (keep in mind that multiple tests run in parallel on the same host)
-echo $container >> $thisFolder/dockerContainerSilvershell.$EXECUTOR_NUMBER.smb
-
-echo -n "Waiting for samba initialization"
-if ! "$thisFolder"/env/wait-for-connection ${host} 445 60; then
- echo "[ERROR] Waited 60 seconds, no response" >&2
- exit 1
-fi
-sleep 1
-
-if [ -n "$DEBUG" ]; then
- cat $thisFolder/config.smb.php
- cat $thisFolder/dockerContainerSilvershell.$EXECUTOR_NUMBER.smb
-fi
-
-
diff --git a/apps/files_external/tests/env/start-webdav-apachedrone.sh b/apps/files_external/tests/env/start-webdav-apachedrone.sh
new file mode 100755
index 00000000000..9887cea5eee
--- /dev/null
+++ b/apps/files_external/tests/env/start-webdav-apachedrone.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+#
+# Nextcloud
+#
+
+# retrieve current folder to place the config in the parent folder
+thisFolder=`echo $0 | sed 's#env/start-webdav-apachedrone\.sh##'`
+
+if [ -z "$thisFolder" ]; then
+ thisFolder="."
+fi;
+
+cat > $thisFolder/config.webdav.php <<DELIM
+<?php
+
+return array(
+ 'run'=>true,
+ 'host'=>'127.0.0.1:80/webdav/',
+ 'user'=>'test',
+ 'password'=>'pass',
+ 'root'=>'',
+ 'wait'=> 0
+);
+
+DELIM
+
diff --git a/apps/files_external/tests/env/stop-smb-linux.sh b/apps/files_external/tests/env/stop-smb-linux.sh
new file mode 100755
index 00000000000..434d3e166b1
--- /dev/null
+++ b/apps/files_external/tests/env/stop-smb-linux.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# ownCloud
+#
+# This script stops the docker container the files_external tests were run
+# against. It will also revert the config changes done in start step.
+#
+# @author Morris Jobke
+# @copyright 2015 Morris Jobke <hey@morrisjobke.de>
+#
+
+# retrieve current folder to remove the config from the parent folder
+thisFolder=`echo $0 | sed 's#env/stop-smb-linux\.sh##'`
+
+if [ -z "$thisFolder" ]; then
+ thisFolder="."
+fi;
+
+# cleanup
+rm $thisFolder/config.smb.php
+
diff --git a/apps/files_external/tests/env/stop-smb-silvershell.sh b/apps/files_external/tests/env/stop-smb-silvershell.sh
deleted file mode 100755
index 56866f13b1f..00000000000
--- a/apps/files_external/tests/env/stop-smb-silvershell.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-#
-# ownCloud
-#
-# This script stops the docker container the files_external tests were run
-# against. It will also revert the config changes done in start step.
-#
-# @author Morris Jobke
-# @copyright 2015 Morris Jobke <hey@morrisjobke.de>
-#
-
-if ! command -v docker >/dev/null 2>&1; then
- echo "No docker executable found - skipped docker stop"
- exit 0;
-fi
-
-echo "Docker executable found - stop and remove docker containers"
-
-# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | sed 's#env/stop-smb-silvershell\.sh##'`
-
-if [ -z "$thisFolder" ]; then
- thisFolder="."
-fi;
-
-# stopping and removing docker containers
-for container in `cat $thisFolder/dockerContainerSilvershell.$EXECUTOR_NUMBER.smb`; do
- echo "Stopping and removing docker container $container"
- # kills running container and removes it
- docker stop $container
- docker rm -f $container
-done;
-
-# cleanup
-rm $thisFolder/config.smb.php
-rm $thisFolder/dockerContainerSilvershell.$EXECUTOR_NUMBER.smb
-
diff --git a/apps/files_external/tests/env/stop-webdav-apachedrone.sh b/apps/files_external/tests/env/stop-webdav-apachedrone.sh
new file mode 100755
index 00000000000..3c4b0492dd0
--- /dev/null
+++ b/apps/files_external/tests/env/stop-webdav-apachedrone.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+#
+# Nextcloud
+
+# retrieve current folder to remove the config from the parent folder
+thisFolder=`echo $0 | sed 's#env/stop-webdav-apachedrone\.sh##'`
+
+if [ -z "$thisFolder" ]; then
+ thisFolder="."
+fi;
+
+# cleanup
+rm $thisFolder/config.webdav.php
+
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index cff424d223a..e93bc99d540 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -3,19 +3,19 @@
<id>files_sharing</id>
<name>File sharing</name>
<description>
- This application enables users to share files within ownCloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within ownCloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of ownCloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.
-Turning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the ownCloud Documentation.
+ This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.
+Turning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation.
</description>
<licence>AGPL</licence>
<author>Michael Gapczynski, Bjoern Schiessle</author>
<default_enable/>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<types>
<filesystem/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<public>
<files>public.php</files>
diff --git a/apps/files_sharing/css/authenticate.css b/apps/files_sharing/css/authenticate.css
index 55a40cf508d..16687916ac4 100644
--- a/apps/files_sharing/css/authenticate.css
+++ b/apps/files_sharing/css/authenticate.css
@@ -9,12 +9,8 @@ input[type='submit'] {
margin: 6px;
}
-#body-login input[type='submit'] {
- position: absolute;
- top: 0;
- border: none;
-}
-
fieldset > p {
position: relative;
+ display: flex;
+ align-items: center;
}
diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css
index 94183cf0057..9c8c4a66630 100644
--- a/apps/files_sharing/css/public.css
+++ b/apps/files_sharing/css/public.css
@@ -107,29 +107,33 @@ thead {
max-width: 90%;
}
+/* header buttons */
+#details {
+ display: inline-flex;
+}
+#details button,
+#details input,
+#details .button {
+ margin: 0 5px;
+ line-height: normal;
+}
+#details button:hover,
+#details input:hover,
+#details .button:hover {
+ /* No */
+ border-color: rgba(0,0,0,0.3) !important;
+}
+
/* within #save */
#save .save-form {
position: relative;
}
#remote_address {
- margin: 0;
- width: 130px;
- height: 14px;
- padding: 6px;
- padding-right: 24px;
-}
+ width: 200px;
-.ie8 #remote_address {
- padding-right: 30px;
-}
-
-#save #save-button,
-#save #save-button-confirm {
- margin: 0 5px;
- height: 28px;
- padding-bottom: 4px;
- line-height: 14px;
+ margin-right: 4px;
+ height: 31px;
}
#save-button-confirm {
@@ -137,31 +141,9 @@ thead {
background-color: transparent;
border: none;
margin: 2px 4px !important;
- right: 0;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
- opacity: .5;
-}
-
-.ie8 #save-button-confirm {
- margin: 2px 0 !important;
-}
-
-#save-button-confirm:disabled,
-#save-button-confirm:disabled:hover,
-#save-button-confirm:disabled:focus {
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
- filter: alpha(opacity=20);
- opacity: .2;
- cursor: default;
-}
-
-#save-button-confirm:hover,
-#save-button-confirm:focus {
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
- opacity: 1;
- cursor: pointer;
+ right: 7px;
+ top: -8px;
+ height: 30px;
}
#public-upload .avatardiv {
diff --git a/apps/files_sharing/css/sharetabview.css b/apps/files_sharing/css/sharetabview.css
index 936e1af246a..979ef01c030 100644
--- a/apps/files_sharing/css/sharetabview.css
+++ b/apps/files_sharing/css/sharetabview.css
@@ -51,10 +51,9 @@
padding: 0 0 16px;
}
-#shareWithList li {
+#shareWithList > li {
padding-top: 5px;
padding-bottom: 5px;
- font-weight: bold;
white-space: normal;
display: inline-flex;
align-items: center;
@@ -70,6 +69,11 @@
opacity: .5;
}
+#shareWithList .shareOption.menuitem > label:before {
+ /* Checkboxes positionning */
+ margin: 0 12px !important;
+}
+
#shareWithList .unshare {
padding: 1px 6px;
vertical-align: text-bottom;
@@ -78,12 +82,6 @@
vertical-align: text-top;
}
-#shareWithList .unshare .icon-delete {
- padding-right: 4px;
- background-position-x: 0;
- display: inline-block;
-}
-
#shareWithList .sharingOptionsGroup .popovermenu:after {
right: 3px;
}
@@ -100,7 +98,7 @@
overflow: hidden;
vertical-align: middle;
}
-#shareWithList li label {
+#shareWithList li .sharingOptionsGroup > .shareOption > label {
padding: 6px;
margin-right: 8px;
vertical-align: text-top;
diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index 0045c7156d2..ad3ef856f23 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -259,7 +259,7 @@ OCA.Sharing.PublicApp = {
$('.save-form').submit(function (event) {
event.preventDefault();
- var remote = $(this).find('input[type="text"]').val();
+ var remote = $(this).find('input[type="email"]').val();
var token = $('#sharingToken').val();
var owner = $('#save').data('owner');
var ownerDisplayName = $('#save').data('owner-display-name');
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 01c2ccfb863..fcae7bc9a58 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -9,6 +9,12 @@
*/
(function() {
+
+ _.extend(OC.Files.Client, {
+ PROPERTY_SHARE_TYPES: '{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',
+ PROPERTY_OWNER_DISPLAY_NAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'
+ });
+
if (!OCA.Sharing) {
OCA.Sharing = {};
}
@@ -65,32 +71,38 @@
fileInfo.shareTypes = shareTypes;
}
+ if( $el.attr('data-expiration')){
+ var expirationTimestamp = parseInt($el.attr('data-expiration'));
+ fileInfo.shares = [];
+ fileInfo.shares.push({expiration: expirationTimestamp});
+ }
+
+ fileInfo.recipientsDisplayName = $el.attr('data-share-recipients') || undefined;
+
return fileInfo;
};
- var NS_OC = 'http://owncloud.org/ns';
-
var oldGetWebdavProperties = fileList._getWebdavProperties;
fileList._getWebdavProperties = function() {
var props = oldGetWebdavProperties.apply(this, arguments);
- props.push('{' + NS_OC + '}owner-display-name');
- props.push('{' + NS_OC + '}share-types');
+ props.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME);
+ props.push(OC.Files.Client.PROPERTY_SHARE_TYPES);
return props;
};
fileList.filesClient.addFileInfoParser(function(response) {
var data = {};
var props = response.propStat[0].properties;
- var permissionsProp = props['{' + NS_OC + '}permissions'];
+ var permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS];
if (permissionsProp && permissionsProp.indexOf('S') >= 0) {
- data.shareOwner = props['{' + NS_OC + '}owner-display-name'];
+ data.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME];
}
- var shareTypesProp = props['{' + NS_OC + '}share-types'];
+ var shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES];
if (shareTypesProp) {
data.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {
- return (xmlvalue.namespaceURI === NS_OC && xmlvalue.nodeName.split(':')[1] === 'share-type');
+ return (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type');
}).map(function(xmlvalue) {
return parseInt(xmlvalue.textContent || xmlvalue.text, 10);
}).value();
diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js
index f2eba22fa17..4dff7b988e4 100644
--- a/apps/files_sharing/l10n/cs_CZ.js
+++ b/apps/files_sharing/l10n/cs_CZ.js
@@ -18,52 +18,82 @@ OC.L10N.register(
"No expiration date set" : "Není nastaveno datum vypršení platnosti",
"Shared by" : "Sdílí",
"Sharing" : "Sdílení",
- "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> soubor nebo adresář sdílený jako veřejný odkaz",
- "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
- "You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
- "%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
- "%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
- "%1$s unshared %2$s from you" : "%1$s již více nesdílí %2$s",
- "Public shared folder %1$s was downloaded" : "Byl stažen veřejně sdílený adresář %1$s ",
- "Public shared file %1$s was downloaded" : "Byl stažen veřejně sdílený soubor %1$s ",
- "You shared %1$s with %2$s" : "Sdílíte %1$s s %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s nasdílel(a) %1$s s %3$s",
- "You removed the share of %2$s for %1$s" : "Odstranil(a) jsi sdílení %2$s pro %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s odstranil(a) sdílení %3$s pro %1$s",
- "You shared %1$s with group %2$s" : "Sdílíte %1$s se skupinou %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s nasdílel(a) %1$s se skupinou %3$s",
- "You removed the share of group %2$s for %1$s" : "Odstranil(a) jsi sdílení skupině %2$s pro %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s odstranil(a) sdílení skupině %3$s pro %1$s",
- "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz",
- "You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
- "You removed the public link for %1$s" : "Odstranil(a) jsi veřejný odkaz na %1$s",
- "%2$s removed the public link for %1$s" : "%2$s odstranil(a) veřejný odkaz na %1$s",
- "Your public link for %1$s expired" : "Veřejný odkaz pro %1$s vypršel",
- "The public link of %2$s for %1$s expired" : "Veřejný odkaz na %2$s pro %1$s vypršel",
- "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
- "%2$s removed the share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
- "File %1$s shared by email with %2$s was downloaded" : "Soubor %1$s sdílen pomocí emailu s %2$s byl stažen",
- "Folder %1$s shared by email with %2$s was downloaded" : "Adresář %1$s sdílen pomocí emailu s %2$s byl stažen",
+ "File shares" : "Sdílení souboru",
"Downloaded via public link" : "Staženo pomocí veřejného odkazu",
- "Shared with %2$s" : "Sdíleno s %2$s",
- "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s",
- "Removed share for %2$s" : "Odstranil(a) sdílení pro %2$s",
- "%2$s removed share for %3$s" : "%2$s odstranil(a) sdílení pro %3$s",
- "Shared with group %2$s" : "Sdíleno se skupinou %2$s",
- "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s",
- "Removed share of group %2$s" : "Odstranil(a) sdílení skupině %2$s",
- "%2$s removed share of group %3$s" : "%2$s odstranil(a) sdílení skupině %3$s",
- "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz",
- "Shared via public link" : "Sdíleno jako veřejný odkaz",
+ "Downloaded by %1$s" : "Stáhnul(o) %1$s",
+ "Downloaded by {email}" : "Stáhl {email}",
+ "%1$s downloaded via public link" : "%1$s stažen pomocí veřejného odkazu",
+ "{file} downloaded via public link" : "{file} stažen pomocí veřejného odkazu",
+ "%1$s downloaded %2$s" : "%1$s stáhl(a) %2$s",
+ "{email} downloaded {file}" : "{email} stáhnul {file}",
+ "Shared with group %1$s" : "Sdíleno se skupinou %1$s",
+ "Shared with group {group}" : "Sdíleno se skupinou {group}",
+ "Removed share for group %1$s" : "Odstraněno sdílení pro skupinu %1$s",
+ "Removed share for group {group}" : "Odstranil sdílení pro skupinu {group}",
+ "%2$s shared with group %1$s" : "%2$s sdílel se skupinou %1$s",
+ "{actor} shared with group {group}" : "{actor} sdílel(a) se skupinou {group}",
+ "%2$s removed share for group %1$s" : "%2$s odstranil(a) sdílení pro skupinu %1$s",
+ "{actor} removed share for group {group}" : "{actor} odstranil(a) sdílení pro skupinu {group}",
+ "You shared %1$s with group %2$s" : "Sdílíte %1$s se skupinou %2$s",
+ "You shared {file} with group {group}" : "Se skupinou {group} jste nasdílel(a) {file}",
+ "You removed group %2$s from %1$s" : "Z %1$s jste odstranil(a) skupinu %2$s",
+ "You removed group {group} from {file}" : "Z {file} jste odstranil(a) skupinu {group}",
+ "%3$s shared %1$s with group %2$s" : "%3$s sdílel %1$s se skupinou %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} sdílel(a) {file} se skupinou {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s odstranil(a) z %1$s skupinu %2$s",
+ "{actor} removed group {group} from {file}" : "{actor} odstranil(a) skupinu {group} z {file}",
+ "Shared as public link" : "Sdíleno jako veřejný odkaz",
"Removed public link" : "Odstranil(a) veřejný odkaz",
- "%2$s removed public link" : "%2$s odstranil(a) veřejný odkaz",
- "Public link expired" : "Veřejný odkaz vypršel",
- "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel",
- "Shared by %2$s" : "%2$s sdílel(a)",
- "Downloaded by %2$s" : "Staženo uživatelem %2$s",
- "File shares" : "Sdílení souboru",
+ "%1$s shared as public link" : "%1$s sdílen jako veřejný odkaz",
+ "{actor} shared as public link" : "{actor} sdílel(a) jako veřejný odkaz",
+ "%1$s removed public link" : "%1$s odstranil(a) veřejný odkaz",
+ "{actor} removed public link" : "{actor} odstranil(a) veřejný odkaz",
+ "You shared %1$s as public link" : "Sdílel(a) jste %1$s jako veřejný odkaz",
+ "You shared {file} as public link" : "Sdílel(a) jste {file} jako veřejný odkaz",
+ "You removed public link for %1$s" : "Odstranil(a) jste veřejný odkaz pro %1$s",
+ "You removed public link for {file}" : "Odstranil(a) jste veřejný odkaz pro {file}",
+ "%2$s shared %1$s as public link" : "%2$s sdílel(a) %1$s jako veřejný odkaz",
+ "{actor} shared {file} as public link" : "{actor} sdílel(a) {file} jako veřejný odkaz",
+ "%2$s removed public link for %1$s" : "%2$s odstranil veřejný odkaz z %1$s",
+ "{actor} removed public link for {file}" : "{actor} odstranil(a) veřejný odkaz pro {file}",
+ "%1$s accepted the remote share" : "%1$s přijal(a) vzdálené sdílení",
+ "{user} accepted the remote share" : "{user} přijal(a) vzdálené sdílení",
+ "%1$s declined the remote share" : "%1$s odmítl(a) vzdálené sdílení",
+ "{user} declined the remote share" : "{user} odmítl vzdálené sdílení",
+ "You received a new remote share %1$s from %2$s" : "Obdržel(a) jste nové vzdálené sdílení %1$s z %2$s",
+ "You received a new remote share {file} from {user}" : "Obdržel(a) jste nové vzdálené sdílení souboru {file} od {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s přijal(a) vzdálené sdílení %1$s",
+ "{user} accepted the remote share of {file}" : "{user} přijal vzdálené sdílení souboru {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s odmítl vzdálené sdílení %1$s",
+ "{user} declined the remote share of {file}" : "{user} odmítl(a) vzdálené sdílení {file}",
+ "%2$s unshared %1$s from you" : "%2$s s vámi přestal(a) sdílet %1$s",
+ "{user} unshared {file} from you" : "{user} s vámi již nesdílí soubor {file}",
+ "Shared with %1$s" : "Sdíleno s %1$s",
+ "Shared with {user}" : "Sdíleno s {user}",
+ "Removed share for %1$s" : "Odstraněno sdílení %1$s",
+ "Removed share for {user}" : "Odstraněno sdílení pro {user}",
+ "%2$s shared with %1$s" : "%2$s sdíleno s %1$s",
+ "{actor} shared with {user}" : "{actor} sdílel(a) s {user}",
+ "%2$s removed share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
+ "{actor} removed share for {user}" : "{actor} odstranil(a) sdílení pro {user}",
+ "Shared by %1$s" : "Sdíleno %1$s",
+ "Shared by {actor}" : "Sdílel {actor}",
+ "%1$s removed share" : "%1$s odstranil(a) sdílení",
+ "{actor} removed share" : "{actor} odebral(a) sdílení",
+ "You shared %1$s with %2$s" : "Sdílíte %1$s s %2$s",
+ "You shared {file} with {user}" : "Sdílel(a) jste {file} s {user}",
+ "You removed %2$s from %1$s" : "Odstranil(a) jste %2$s z %1$s",
+ "You removed {user} from {file}" : "Odstranil(a) jste uživatele {user} z {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s s %2$s sdílel(a) %1$s",
+ "{actor} removed {user} from {file}" : "{actor} odstranil(a) uživatele {user} z {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s odstranil(a) %2$s z %1$s",
+ "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
+ "{actor} shared {file} with you" : "{actor} s vámi sdílel(a) soubor {file}",
+ "%2$s removed you from %1$s" : "%2$s vás odstranil(a) z %1$s",
+ "{actor} removed you from {file}" : "{actor} vás odstranil(a) ze souboru {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> soubor nebo adresář sdílený jako veřejný odkaz",
+ "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>",
"Wrong share ID, share doesn't exist" : "Špatné ID sdílení, sdílení neexistuje",
"could not delete share" : "nelze smazat sdílení",
"Could not delete share" : "Nelze smazat sdílení",
@@ -109,36 +139,40 @@ OC.L10N.register(
"Uploading files…" : "Probíhá nahrávání souborů...",
"Uploaded files:" : "Nahrané soubory:",
"A public shared file or folder was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> veřejně sdílený soubor nebo adresář",
- "Shares" : "Sdílení",
- "Server to server sharing is not enabled on this server" : "Sdílení mezi servery není na tomto serveru povoleno",
- "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje nepovolené znaky.",
- "Not allowed to create a federated share with the same user server" : "Není povoleno vytvořit propojené sdílení s tím samým serverem",
- "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát",
- "Could not authenticate to remote share, password might be wrong" : "Nezdařilo se přihlášení ke vzdálenému úložišti, nejspíše bylo zadáno chybné heslo",
- "Storage not valid" : "Úložiště není platné",
- "Couldn't add remote share" : "Nelze přidat vzdálené úložiště",
- "Federated sharing" : "Propojené sdílení",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Chcete přidat vzdálené úložiště {name} uživatele {owner}@{remote}?",
- "Remote share" : "Vzdálené úložiště",
- "Remote share password" : "Heslo ke vzdálenému úložišti",
- "Cancel" : "Zrušit",
- "Add remote share" : "Přidat vzdálené úložiště",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nebyla nalezena instalace ownCloud (7 nebo vyšší) na {remote}",
- "Invalid ownCloud url" : "Neplatná ownCloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Obdrželi jste \"/%2$s\" jako vzdálené sdílení od %1$s",
- "Accept" : "Přijmout",
- "Decline" : "Zamítnout",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
- "Federated Cloud Sharing" : "Propojené cloudové sdílení",
- "Open documentation" : "Otevřít dokumentaci",
- "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
- "Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů",
- "Federated Cloud" : "Sdružený cloud",
- "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
- "Share it:" : "Sdílet:",
- "Add to your website" : "Přidat na svou webovou stránku",
- "Share with me via Nextcloud" : "Sdíleno se mnou přes Nextcloud",
- "HTML Code:" : "HTML kód:"
+ "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
+ "You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
+ "%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
+ "%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
+ "%1$s unshared %2$s from you" : "%1$s již více nesdílí %2$s",
+ "Public shared folder %1$s was downloaded" : "Byl stažen veřejně sdílený adresář %1$s ",
+ "Public shared file %1$s was downloaded" : "Byl stažen veřejně sdílený soubor %1$s ",
+ "%2$s shared %1$s with %3$s" : "%2$s nasdílel(a) %1$s s %3$s",
+ "You removed the share of %2$s for %1$s" : "Odstranil(a) jsi sdílení %2$s pro %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s odstranil(a) sdílení %3$s pro %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s nasdílel(a) %1$s se skupinou %3$s",
+ "You removed the share of group %2$s for %1$s" : "Odstranil(a) jsi sdílení skupině %2$s pro %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s odstranil(a) sdílení skupině %3$s pro %1$s",
+ "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz",
+ "You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
+ "You removed the public link for %1$s" : "Odstranil(a) jsi veřejný odkaz na %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s odstranil(a) veřejný odkaz na %1$s",
+ "Your public link for %1$s expired" : "Veřejný odkaz pro %1$s vypršel",
+ "The public link of %2$s for %1$s expired" : "Veřejný odkaz na %2$s pro %1$s vypršel",
+ "%2$s removed the share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
+ "Shared with %2$s" : "Sdíleno s %2$s",
+ "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s",
+ "Removed share for %2$s" : "Odstranil(a) sdílení pro %2$s",
+ "%2$s removed share for %3$s" : "%2$s odstranil(a) sdílení pro %3$s",
+ "Shared with group %2$s" : "Sdíleno se skupinou %2$s",
+ "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s",
+ "Removed share of group %2$s" : "Odstranil(a) sdílení skupině %2$s",
+ "%2$s removed share of group %3$s" : "%2$s odstranil(a) sdílení skupině %3$s",
+ "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz",
+ "Shared via public link" : "Sdíleno jako veřejný odkaz",
+ "%2$s removed public link" : "%2$s odstranil(a) veřejný odkaz",
+ "Public link expired" : "Veřejný odkaz vypršel",
+ "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel",
+ "Shared by %2$s" : "%2$s sdílel(a)",
+ "Shares" : "Sdílení"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json
index 9d82343e895..a96d2fd6f7e 100644
--- a/apps/files_sharing/l10n/cs_CZ.json
+++ b/apps/files_sharing/l10n/cs_CZ.json
@@ -16,52 +16,82 @@
"No expiration date set" : "Není nastaveno datum vypršení platnosti",
"Shared by" : "Sdílí",
"Sharing" : "Sdílení",
- "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> soubor nebo adresář sdílený jako veřejný odkaz",
- "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
- "You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
- "%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
- "%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
- "%1$s unshared %2$s from you" : "%1$s již více nesdílí %2$s",
- "Public shared folder %1$s was downloaded" : "Byl stažen veřejně sdílený adresář %1$s ",
- "Public shared file %1$s was downloaded" : "Byl stažen veřejně sdílený soubor %1$s ",
- "You shared %1$s with %2$s" : "Sdílíte %1$s s %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s nasdílel(a) %1$s s %3$s",
- "You removed the share of %2$s for %1$s" : "Odstranil(a) jsi sdílení %2$s pro %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s odstranil(a) sdílení %3$s pro %1$s",
- "You shared %1$s with group %2$s" : "Sdílíte %1$s se skupinou %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s nasdílel(a) %1$s se skupinou %3$s",
- "You removed the share of group %2$s for %1$s" : "Odstranil(a) jsi sdílení skupině %2$s pro %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s odstranil(a) sdílení skupině %3$s pro %1$s",
- "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz",
- "You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
- "You removed the public link for %1$s" : "Odstranil(a) jsi veřejný odkaz na %1$s",
- "%2$s removed the public link for %1$s" : "%2$s odstranil(a) veřejný odkaz na %1$s",
- "Your public link for %1$s expired" : "Veřejný odkaz pro %1$s vypršel",
- "The public link of %2$s for %1$s expired" : "Veřejný odkaz na %2$s pro %1$s vypršel",
- "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
- "%2$s removed the share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
- "File %1$s shared by email with %2$s was downloaded" : "Soubor %1$s sdílen pomocí emailu s %2$s byl stažen",
- "Folder %1$s shared by email with %2$s was downloaded" : "Adresář %1$s sdílen pomocí emailu s %2$s byl stažen",
+ "File shares" : "Sdílení souboru",
"Downloaded via public link" : "Staženo pomocí veřejného odkazu",
- "Shared with %2$s" : "Sdíleno s %2$s",
- "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s",
- "Removed share for %2$s" : "Odstranil(a) sdílení pro %2$s",
- "%2$s removed share for %3$s" : "%2$s odstranil(a) sdílení pro %3$s",
- "Shared with group %2$s" : "Sdíleno se skupinou %2$s",
- "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s",
- "Removed share of group %2$s" : "Odstranil(a) sdílení skupině %2$s",
- "%2$s removed share of group %3$s" : "%2$s odstranil(a) sdílení skupině %3$s",
- "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz",
- "Shared via public link" : "Sdíleno jako veřejný odkaz",
+ "Downloaded by %1$s" : "Stáhnul(o) %1$s",
+ "Downloaded by {email}" : "Stáhl {email}",
+ "%1$s downloaded via public link" : "%1$s stažen pomocí veřejného odkazu",
+ "{file} downloaded via public link" : "{file} stažen pomocí veřejného odkazu",
+ "%1$s downloaded %2$s" : "%1$s stáhl(a) %2$s",
+ "{email} downloaded {file}" : "{email} stáhnul {file}",
+ "Shared with group %1$s" : "Sdíleno se skupinou %1$s",
+ "Shared with group {group}" : "Sdíleno se skupinou {group}",
+ "Removed share for group %1$s" : "Odstraněno sdílení pro skupinu %1$s",
+ "Removed share for group {group}" : "Odstranil sdílení pro skupinu {group}",
+ "%2$s shared with group %1$s" : "%2$s sdílel se skupinou %1$s",
+ "{actor} shared with group {group}" : "{actor} sdílel(a) se skupinou {group}",
+ "%2$s removed share for group %1$s" : "%2$s odstranil(a) sdílení pro skupinu %1$s",
+ "{actor} removed share for group {group}" : "{actor} odstranil(a) sdílení pro skupinu {group}",
+ "You shared %1$s with group %2$s" : "Sdílíte %1$s se skupinou %2$s",
+ "You shared {file} with group {group}" : "Se skupinou {group} jste nasdílel(a) {file}",
+ "You removed group %2$s from %1$s" : "Z %1$s jste odstranil(a) skupinu %2$s",
+ "You removed group {group} from {file}" : "Z {file} jste odstranil(a) skupinu {group}",
+ "%3$s shared %1$s with group %2$s" : "%3$s sdílel %1$s se skupinou %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} sdílel(a) {file} se skupinou {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s odstranil(a) z %1$s skupinu %2$s",
+ "{actor} removed group {group} from {file}" : "{actor} odstranil(a) skupinu {group} z {file}",
+ "Shared as public link" : "Sdíleno jako veřejný odkaz",
"Removed public link" : "Odstranil(a) veřejný odkaz",
- "%2$s removed public link" : "%2$s odstranil(a) veřejný odkaz",
- "Public link expired" : "Veřejný odkaz vypršel",
- "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel",
- "Shared by %2$s" : "%2$s sdílel(a)",
- "Downloaded by %2$s" : "Staženo uživatelem %2$s",
- "File shares" : "Sdílení souboru",
+ "%1$s shared as public link" : "%1$s sdílen jako veřejný odkaz",
+ "{actor} shared as public link" : "{actor} sdílel(a) jako veřejný odkaz",
+ "%1$s removed public link" : "%1$s odstranil(a) veřejný odkaz",
+ "{actor} removed public link" : "{actor} odstranil(a) veřejný odkaz",
+ "You shared %1$s as public link" : "Sdílel(a) jste %1$s jako veřejný odkaz",
+ "You shared {file} as public link" : "Sdílel(a) jste {file} jako veřejný odkaz",
+ "You removed public link for %1$s" : "Odstranil(a) jste veřejný odkaz pro %1$s",
+ "You removed public link for {file}" : "Odstranil(a) jste veřejný odkaz pro {file}",
+ "%2$s shared %1$s as public link" : "%2$s sdílel(a) %1$s jako veřejný odkaz",
+ "{actor} shared {file} as public link" : "{actor} sdílel(a) {file} jako veřejný odkaz",
+ "%2$s removed public link for %1$s" : "%2$s odstranil veřejný odkaz z %1$s",
+ "{actor} removed public link for {file}" : "{actor} odstranil(a) veřejný odkaz pro {file}",
+ "%1$s accepted the remote share" : "%1$s přijal(a) vzdálené sdílení",
+ "{user} accepted the remote share" : "{user} přijal(a) vzdálené sdílení",
+ "%1$s declined the remote share" : "%1$s odmítl(a) vzdálené sdílení",
+ "{user} declined the remote share" : "{user} odmítl vzdálené sdílení",
+ "You received a new remote share %1$s from %2$s" : "Obdržel(a) jste nové vzdálené sdílení %1$s z %2$s",
+ "You received a new remote share {file} from {user}" : "Obdržel(a) jste nové vzdálené sdílení souboru {file} od {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s přijal(a) vzdálené sdílení %1$s",
+ "{user} accepted the remote share of {file}" : "{user} přijal vzdálené sdílení souboru {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s odmítl vzdálené sdílení %1$s",
+ "{user} declined the remote share of {file}" : "{user} odmítl(a) vzdálené sdílení {file}",
+ "%2$s unshared %1$s from you" : "%2$s s vámi přestal(a) sdílet %1$s",
+ "{user} unshared {file} from you" : "{user} s vámi již nesdílí soubor {file}",
+ "Shared with %1$s" : "Sdíleno s %1$s",
+ "Shared with {user}" : "Sdíleno s {user}",
+ "Removed share for %1$s" : "Odstraněno sdílení %1$s",
+ "Removed share for {user}" : "Odstraněno sdílení pro {user}",
+ "%2$s shared with %1$s" : "%2$s sdíleno s %1$s",
+ "{actor} shared with {user}" : "{actor} sdílel(a) s {user}",
+ "%2$s removed share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
+ "{actor} removed share for {user}" : "{actor} odstranil(a) sdílení pro {user}",
+ "Shared by %1$s" : "Sdíleno %1$s",
+ "Shared by {actor}" : "Sdílel {actor}",
+ "%1$s removed share" : "%1$s odstranil(a) sdílení",
+ "{actor} removed share" : "{actor} odebral(a) sdílení",
+ "You shared %1$s with %2$s" : "Sdílíte %1$s s %2$s",
+ "You shared {file} with {user}" : "Sdílel(a) jste {file} s {user}",
+ "You removed %2$s from %1$s" : "Odstranil(a) jste %2$s z %1$s",
+ "You removed {user} from {file}" : "Odstranil(a) jste uživatele {user} z {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s s %2$s sdílel(a) %1$s",
+ "{actor} removed {user} from {file}" : "{actor} odstranil(a) uživatele {user} z {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s odstranil(a) %2$s z %1$s",
+ "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
+ "{actor} shared {file} with you" : "{actor} s vámi sdílel(a) soubor {file}",
+ "%2$s removed you from %1$s" : "%2$s vás odstranil(a) z %1$s",
+ "{actor} removed you from {file}" : "{actor} vás odstranil(a) ze souboru {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> soubor nebo adresář sdílený jako veřejný odkaz",
+ "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>",
"Wrong share ID, share doesn't exist" : "Špatné ID sdílení, sdílení neexistuje",
"could not delete share" : "nelze smazat sdílení",
"Could not delete share" : "Nelze smazat sdílení",
@@ -107,36 +137,40 @@
"Uploading files…" : "Probíhá nahrávání souborů...",
"Uploaded files:" : "Nahrané soubory:",
"A public shared file or folder was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> veřejně sdílený soubor nebo adresář",
- "Shares" : "Sdílení",
- "Server to server sharing is not enabled on this server" : "Sdílení mezi servery není na tomto serveru povoleno",
- "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje nepovolené znaky.",
- "Not allowed to create a federated share with the same user server" : "Není povoleno vytvořit propojené sdílení s tím samým serverem",
- "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát",
- "Could not authenticate to remote share, password might be wrong" : "Nezdařilo se přihlášení ke vzdálenému úložišti, nejspíše bylo zadáno chybné heslo",
- "Storage not valid" : "Úložiště není platné",
- "Couldn't add remote share" : "Nelze přidat vzdálené úložiště",
- "Federated sharing" : "Propojené sdílení",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Chcete přidat vzdálené úložiště {name} uživatele {owner}@{remote}?",
- "Remote share" : "Vzdálené úložiště",
- "Remote share password" : "Heslo ke vzdálenému úložišti",
- "Cancel" : "Zrušit",
- "Add remote share" : "Přidat vzdálené úložiště",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nebyla nalezena instalace ownCloud (7 nebo vyšší) na {remote}",
- "Invalid ownCloud url" : "Neplatná ownCloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Obdrželi jste \"/%2$s\" jako vzdálené sdílení od %1$s",
- "Accept" : "Přijmout",
- "Decline" : "Zamítnout",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
- "Federated Cloud Sharing" : "Propojené cloudové sdílení",
- "Open documentation" : "Otevřít dokumentaci",
- "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
- "Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů",
- "Federated Cloud" : "Sdružený cloud",
- "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
- "Share it:" : "Sdílet:",
- "Add to your website" : "Přidat na svou webovou stránku",
- "Share with me via Nextcloud" : "Sdíleno se mnou přes Nextcloud",
- "HTML Code:" : "HTML kód:"
+ "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
+ "You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
+ "%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
+ "%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
+ "%1$s unshared %2$s from you" : "%1$s již více nesdílí %2$s",
+ "Public shared folder %1$s was downloaded" : "Byl stažen veřejně sdílený adresář %1$s ",
+ "Public shared file %1$s was downloaded" : "Byl stažen veřejně sdílený soubor %1$s ",
+ "%2$s shared %1$s with %3$s" : "%2$s nasdílel(a) %1$s s %3$s",
+ "You removed the share of %2$s for %1$s" : "Odstranil(a) jsi sdílení %2$s pro %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s odstranil(a) sdílení %3$s pro %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s nasdílel(a) %1$s se skupinou %3$s",
+ "You removed the share of group %2$s for %1$s" : "Odstranil(a) jsi sdílení skupině %2$s pro %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s odstranil(a) sdílení skupině %3$s pro %1$s",
+ "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz",
+ "You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
+ "You removed the public link for %1$s" : "Odstranil(a) jsi veřejný odkaz na %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s odstranil(a) veřejný odkaz na %1$s",
+ "Your public link for %1$s expired" : "Veřejný odkaz pro %1$s vypršel",
+ "The public link of %2$s for %1$s expired" : "Veřejný odkaz na %2$s pro %1$s vypršel",
+ "%2$s removed the share for %1$s" : "%2$s odstranil(a) sdílení pro %1$s",
+ "Shared with %2$s" : "Sdíleno s %2$s",
+ "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s",
+ "Removed share for %2$s" : "Odstranil(a) sdílení pro %2$s",
+ "%2$s removed share for %3$s" : "%2$s odstranil(a) sdílení pro %3$s",
+ "Shared with group %2$s" : "Sdíleno se skupinou %2$s",
+ "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s",
+ "Removed share of group %2$s" : "Odstranil(a) sdílení skupině %2$s",
+ "%2$s removed share of group %3$s" : "%2$s odstranil(a) sdílení skupině %3$s",
+ "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz",
+ "Shared via public link" : "Sdíleno jako veřejný odkaz",
+ "%2$s removed public link" : "%2$s odstranil(a) veřejný odkaz",
+ "Public link expired" : "Veřejný odkaz vypršel",
+ "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel",
+ "Shared by %2$s" : "%2$s sdílel(a)",
+ "Shares" : "Sdílení"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 9a500fdf2c9..3505b3b07ab 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -91,9 +91,9 @@ OC.L10N.register(
"{actor} shared {file} with you" : "{actor} hat {file} mit dir geteilt",
"%2$s removed you from %1$s" : "Du wurdest durch %2$s von %1$s entfernt",
"{actor} removed you from {file}" : "Du wurdest durch {actor} von {file} entfernt",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Eine Datei oder ein Ordner der per E-Mail oder öffentlich geteilt ist wurde <strong>heruntergeladen</strong>",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Öffentlich oder per E-Mail geteilte Datei / Ordner wurde <strong>heruntergeladen</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt",
- "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurden <strong>geteilt</strong>",
"Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht",
"could not delete share" : "Freigabe konnte nicht gelöscht werden",
"Could not delete share" : "Freigabe konnte nicht gelöscht werden",
@@ -138,7 +138,7 @@ OC.L10N.register(
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
"Uploading files…" : "Dateien werden hochgeladen...",
"Uploaded files:" : "Hochgeladene Dateien: ",
- "A public shared file or folder was <strong>downloaded</strong>" : "Eine öffentliche geteilte Datei oder ein öffentlicher geteilter Ordner wurde <strong>heruntergeladen</strong>",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Eine öffentlich geteilte Datei / Ordner wurde <strong>heruntergeladen</strong>",
"You received a new remote share %2$s from %1$s" : "Du hast eine neue Remotefreigabe %2$s von %1$s erhalten",
"You received a new remote share from %s" : "Du hast eine neue Remotefreigabe von %s erhalten",
"%1$s accepted remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s akzeptiert",
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "öffentlicher Link ist abgelaufen",
"Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
- "Shares" : "Freigaben",
- "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
- "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Teilen mit Nutzern auf dem selben Server via Federated-Cloud ist nicht erlaubt",
- "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
- "Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzugefügt werden",
- "Federated sharing" : "Federated-Sharing",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soll die entfernte Freigabe {name} von {owner}@{remote} hinzugefügt werden?",
- "Remote share" : "Entfernte Freigabe",
- "Remote share password" : "Passwort für die entfernte Freigabe",
- "Cancel" : "Abbrechen",
- "Add remote share" : "Entfernte Freigabe hinzufügen",
- "No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
- "Invalid ownCloud url" : "Ungültige OwnCloud-URL",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du hast \"/%2$s\" als entfernte Freigabe von %1$s erhalten",
- "Accept" : "Akzeptieren",
- "Decline" : "Ablehnen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID",
- "Federated Cloud Sharing" : "Federated-Cloud-Sharing",
- "Open documentation" : "Dokumentation öffnen",
- "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
- "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated-Cloud",
- "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
- "Share it:" : "Teilen:",
- "Add to your website" : "Zu deiner Webseite hinzufügen",
- "Share with me via Nextcloud" : "Teile mit mir über Nextcloud",
- "HTML Code:" : "HTML-Code:"
+ "Shares" : "Freigaben"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 9191aa2dafd..95c3f5dd72e 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -89,9 +89,9 @@
"{actor} shared {file} with you" : "{actor} hat {file} mit dir geteilt",
"%2$s removed you from %1$s" : "Du wurdest durch %2$s von %1$s entfernt",
"{actor} removed you from {file}" : "Du wurdest durch {actor} von {file} entfernt",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Eine Datei oder ein Ordner der per E-Mail oder öffentlich geteilt ist wurde <strong>heruntergeladen</strong>",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Öffentlich oder per E-Mail geteilte Datei / Ordner wurde <strong>heruntergeladen</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt",
- "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurden <strong>geteilt</strong>",
"Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht",
"could not delete share" : "Freigabe konnte nicht gelöscht werden",
"Could not delete share" : "Freigabe konnte nicht gelöscht werden",
@@ -136,7 +136,7 @@
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
"Uploading files…" : "Dateien werden hochgeladen...",
"Uploaded files:" : "Hochgeladene Dateien: ",
- "A public shared file or folder was <strong>downloaded</strong>" : "Eine öffentliche geteilte Datei oder ein öffentlicher geteilter Ordner wurde <strong>heruntergeladen</strong>",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Eine öffentlich geteilte Datei / Ordner wurde <strong>heruntergeladen</strong>",
"You received a new remote share %2$s from %1$s" : "Du hast eine neue Remotefreigabe %2$s von %1$s erhalten",
"You received a new remote share from %s" : "Du hast eine neue Remotefreigabe von %s erhalten",
"%1$s accepted remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s akzeptiert",
@@ -171,36 +171,6 @@
"Public link expired" : "öffentlicher Link ist abgelaufen",
"Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
- "Shares" : "Freigaben",
- "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
- "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Teilen mit Nutzern auf dem selben Server via Federated-Cloud ist nicht erlaubt",
- "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
- "Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzugefügt werden",
- "Federated sharing" : "Federated-Sharing",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soll die entfernte Freigabe {name} von {owner}@{remote} hinzugefügt werden?",
- "Remote share" : "Entfernte Freigabe",
- "Remote share password" : "Passwort für die entfernte Freigabe",
- "Cancel" : "Abbrechen",
- "Add remote share" : "Entfernte Freigabe hinzufügen",
- "No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
- "Invalid ownCloud url" : "Ungültige OwnCloud-URL",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du hast \"/%2$s\" als entfernte Freigabe von %1$s erhalten",
- "Accept" : "Akzeptieren",
- "Decline" : "Ablehnen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID",
- "Federated Cloud Sharing" : "Federated-Cloud-Sharing",
- "Open documentation" : "Dokumentation öffnen",
- "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
- "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated-Cloud",
- "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
- "Share it:" : "Teilen:",
- "Add to your website" : "Zu deiner Webseite hinzufügen",
- "Share with me via Nextcloud" : "Teile mit mir über Nextcloud",
- "HTML Code:" : "HTML-Code:"
+ "Shares" : "Freigaben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 5ddda8c48f3..01bcc8ccbe8 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -81,10 +81,10 @@ OC.L10N.register(
"%1$s removed share" : "%1$s hat die Freigabe entfernt",
"{actor} removed share" : "{actor} hat die Freigabe entfernt",
"You shared %1$s with %2$s" : "Sie haben %1$s mit %2$s geteilt",
- "You shared {file} with {user}" : "Du hast {file} mit {user} geteilt",
- "You removed %2$s from %1$s" : "Sie haben die %2$s von %1$s entfernt",
- "You removed {user} from {file}" : "Sie haben die {user} von {file} entfernt",
- "%3$s shared %1$s with %2$s" : "%3$s geteilt %1$s mit %2$s",
+ "You shared {file} with {user}" : "Sie haben {file} mit {user} geteilt",
+ "You removed %2$s from %1$s" : "Sie haben %2$s von %1$s entfernt",
+ "You removed {user} from {file}" : "Sie haben {user} von {file} entfernt",
+ "%3$s shared %1$s with %2$s" : "%3$s hat %1$s mit %2$s geteilt",
"{actor} removed {user} from {file}" : "{actor} hat {user} von {file} entfernt",
"%3$s removed %2$s from %1$s" : "%3$s hat %2$s von %1$s entfernt",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
@@ -97,7 +97,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht",
"could not delete share" : "Freigabe konnte nicht gelöscht werden",
"Could not delete share" : "Freigabe konnte nicht gelöscht werden",
- "Please specify a file or folder path" : "Bitte geben Sie eine Datei oder Ordner an",
+ "Please specify a file or folder path" : "Bitte Datei oder Ordner-Pfad eingeben",
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Verzeichnis existiert nicht",
"Could not create share" : "Freigabe konnte nicht erstellt werden",
"invalid permissions" : "Ungültige Berechtigung",
@@ -112,7 +112,7 @@ OC.L10N.register(
"Unknown share type" : "Unbekannter Freigabetyp",
"Not a directory" : "Kein Verzeichnis",
"Could not lock path" : "Pfad konnte nicht gesperrt werden",
- "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben",
+ "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben",
"Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden",
"Cannot increase permissions" : "Berechtigungen können nicht erhöht werden",
"%s is publicly shared" : "%s ist öffentlich geteilt",
@@ -144,8 +144,8 @@ OC.L10N.register(
"%1$s accepted remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s akzeptiert",
"%1$s declined remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s abgelehnt",
"%1$s unshared %2$s from you" : "%1$s hat die Freigabe von %2$s für Sie entfernt",
- "Public shared folder %1$s was downloaded" : "Der öffentliche geteilte Ordner %1$s wurde heruntergeladen",
- "Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
+ "Public shared folder %1$s was downloaded" : "Der öffentlich geteilte Ordner %1$s wurde heruntergeladen",
+ "Public shared file %1$s was downloaded" : "Die öffentlich geteilte Datei %1$s wurde heruntergeladen",
"%2$s shared %1$s with %3$s" : "%2$s hat %1$s mit %3$s geteilt",
"You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s entfernt",
"%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe von %3$s für %1$s entfernt",
@@ -166,43 +166,13 @@ OC.L10N.register(
"Shared with group %2$s" : "Geteilt mit der Gruppe %2$s",
"Shared with group %3$s by %2$s" : "Geteilt mit der Gruppe %3$s von %2$s",
"Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
- "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für die Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt durch einen Link von %2$s",
"Shared via public link" : "Durch einen öffentlichen Link geteilt",
- "%2$s removed public link" : "%2$s hat die Freigabe als Link entfernt",
+ "%2$s removed public link" : "%2$s hat die Freigabe als öffentlichen Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
"Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
- "Shares" : "Geteiltes",
- "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
- "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer-Server ist nicht erlaubt",
- "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
- "Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzugefügt werden",
- "Federated sharing" : "Federated-Sharing",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die entfernte Freigabe {name} von {owner}@{remote} hinzufügen? ",
- "Remote share" : "Entfernte Freigabe",
- "Remote share password" : "Passwort für die entfernte Freigabe",
- "Cancel" : "Abbrechen",
- "Add remote share" : "Entfernte Freigabe hinzufügen",
- "No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
- "Invalid ownCloud url" : "Ungültige Nextcloud-Adresse",
- "You received \"/%2$s\" as a remote share from %1$s" : "Sie haben \"/%2$s\" als Remotefreigabe von %1$s erhalten",
- "Accept" : "Akzeptieren",
- "Decline" : "Ablehnen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID",
- "Federated Cloud Sharing" : "Federated-Cloud-Sharing",
- "Open documentation" : "Dokumentation öffnen",
- "Allow users on this server to send shares to other servers" : "Gestatten Sie Nutzern dieses Servers Freigaben von anderen Servern zu erhalten",
- "Allow users on this server to receive shares from other servers" : "Erlauben Sie Nutzern dieses Servers Freigaben von anderen Servern zu erhalten",
- "Federated Cloud" : "Federated-Cloud",
- "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
- "Share it:" : "Teilen:",
- "Add to your website" : "Zu Ihrer Web-Seite hinzufügen",
- "Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud ",
- "HTML Code:" : "HTML-Code:"
+ "Shares" : "Geteiltes"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 534d7970df7..5c5d6b815b7 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -79,10 +79,10 @@
"%1$s removed share" : "%1$s hat die Freigabe entfernt",
"{actor} removed share" : "{actor} hat die Freigabe entfernt",
"You shared %1$s with %2$s" : "Sie haben %1$s mit %2$s geteilt",
- "You shared {file} with {user}" : "Du hast {file} mit {user} geteilt",
- "You removed %2$s from %1$s" : "Sie haben die %2$s von %1$s entfernt",
- "You removed {user} from {file}" : "Sie haben die {user} von {file} entfernt",
- "%3$s shared %1$s with %2$s" : "%3$s geteilt %1$s mit %2$s",
+ "You shared {file} with {user}" : "Sie haben {file} mit {user} geteilt",
+ "You removed %2$s from %1$s" : "Sie haben %2$s von %1$s entfernt",
+ "You removed {user} from {file}" : "Sie haben {user} von {file} entfernt",
+ "%3$s shared %1$s with %2$s" : "%3$s hat %1$s mit %2$s geteilt",
"{actor} removed {user} from {file}" : "{actor} hat {user} von {file} entfernt",
"%3$s removed %2$s from %1$s" : "%3$s hat %2$s von %1$s entfernt",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
@@ -95,7 +95,7 @@
"Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht",
"could not delete share" : "Freigabe konnte nicht gelöscht werden",
"Could not delete share" : "Freigabe konnte nicht gelöscht werden",
- "Please specify a file or folder path" : "Bitte geben Sie eine Datei oder Ordner an",
+ "Please specify a file or folder path" : "Bitte Datei oder Ordner-Pfad eingeben",
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Verzeichnis existiert nicht",
"Could not create share" : "Freigabe konnte nicht erstellt werden",
"invalid permissions" : "Ungültige Berechtigung",
@@ -110,7 +110,7 @@
"Unknown share type" : "Unbekannter Freigabetyp",
"Not a directory" : "Kein Verzeichnis",
"Could not lock path" : "Pfad konnte nicht gesperrt werden",
- "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben",
+ "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben",
"Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden",
"Cannot increase permissions" : "Berechtigungen können nicht erhöht werden",
"%s is publicly shared" : "%s ist öffentlich geteilt",
@@ -142,8 +142,8 @@
"%1$s accepted remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s akzeptiert",
"%1$s declined remote share %2$s" : "%1$s hat die Remotefreigabe von %2$s abgelehnt",
"%1$s unshared %2$s from you" : "%1$s hat die Freigabe von %2$s für Sie entfernt",
- "Public shared folder %1$s was downloaded" : "Der öffentliche geteilte Ordner %1$s wurde heruntergeladen",
- "Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
+ "Public shared folder %1$s was downloaded" : "Der öffentlich geteilte Ordner %1$s wurde heruntergeladen",
+ "Public shared file %1$s was downloaded" : "Die öffentlich geteilte Datei %1$s wurde heruntergeladen",
"%2$s shared %1$s with %3$s" : "%2$s hat %1$s mit %3$s geteilt",
"You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s entfernt",
"%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe von %3$s für %1$s entfernt",
@@ -164,43 +164,13 @@
"Shared with group %2$s" : "Geteilt mit der Gruppe %2$s",
"Shared with group %3$s by %2$s" : "Geteilt mit der Gruppe %3$s von %2$s",
"Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
- "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für die Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt durch einen Link von %2$s",
"Shared via public link" : "Durch einen öffentlichen Link geteilt",
- "%2$s removed public link" : "%2$s hat die Freigabe als Link entfernt",
+ "%2$s removed public link" : "%2$s hat die Freigabe als öffentlichen Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
"Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
- "Shares" : "Geteiltes",
- "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
- "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer-Server ist nicht erlaubt",
- "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
- "Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzugefügt werden",
- "Federated sharing" : "Federated-Sharing",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Möchten Sie die entfernte Freigabe {name} von {owner}@{remote} hinzufügen? ",
- "Remote share" : "Entfernte Freigabe",
- "Remote share password" : "Passwort für die entfernte Freigabe",
- "Cancel" : "Abbrechen",
- "Add remote share" : "Entfernte Freigabe hinzufügen",
- "No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
- "Invalid ownCloud url" : "Ungültige Nextcloud-Adresse",
- "You received \"/%2$s\" as a remote share from %1$s" : "Sie haben \"/%2$s\" als Remotefreigabe von %1$s erhalten",
- "Accept" : "Akzeptieren",
- "Decline" : "Ablehnen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID",
- "Federated Cloud Sharing" : "Federated-Cloud-Sharing",
- "Open documentation" : "Dokumentation öffnen",
- "Allow users on this server to send shares to other servers" : "Gestatten Sie Nutzern dieses Servers Freigaben von anderen Servern zu erhalten",
- "Allow users on this server to receive shares from other servers" : "Erlauben Sie Nutzern dieses Servers Freigaben von anderen Servern zu erhalten",
- "Federated Cloud" : "Federated-Cloud",
- "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
- "Share it:" : "Teilen:",
- "Add to your website" : "Zu Ihrer Web-Seite hinzufügen",
- "Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud ",
- "HTML Code:" : "HTML-Code:"
+ "Shares" : "Geteiltes"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index b4309c05685..abada5b6efb 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "El enlace público ha expirado",
"Public link of %2$s expired" : "El enlace público %2$s ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
- "Shares" : "Compartidos",
- "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor",
- "The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.",
- "Not allowed to create a federated share with the same user server" : "No se permite crear un recurso compartido federado con el mismo servidor del usuario",
- "Invalid or untrusted SSL certificate" : "Certificado SSL no válido o no confiable",
- "Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña",
- "Storage not valid" : "Almacenamiento inválido",
- "Couldn't add remote share" : "No se ha podido añadir el recurso compartido remoto",
- "Federated sharing" : "Compartido federado",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "¿Desea añadir el recurso compartido remoto {name} de {owner}@{remote}?",
- "Remote share" : "Recurso compartido remoto",
- "Remote share password" : "Contraseña del recurso compartido remoto",
- "Cancel" : "Cancelar",
- "Add remote share" : "Añadir recurso compartido remoto",
- "No ownCloud installation (7 or higher) found at {remote}" : "No se encontró una instalación de ownCloud (7 o mayor) en {remote}",
- "Invalid ownCloud url" : "URL de ownCloud no válida",
- "You received \"/%2$s\" as a remote share from %1$s" : "Has recibido \"/%2$s\" como recurso compartido remoto de %1$s",
- "Accept" : "Aceptar",
- "Decline" : "Rechazar",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparta conmigo a través de mi ID Nube Federada #Nextcloud, ver %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Comparta conmigo a través de mi ID Nube Federada #Nextcloud",
- "Federated Cloud Sharing" : "Compartido en Cloud Federado",
- "Open documentation" : "Documentación abierta",
- "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir recursos compartidos de usuarios de otros servidores",
- "Federated Cloud" : "Nube Federada",
- "Your Federated Cloud ID:" : "Su ID de Nube Federada:",
- "Share it:" : "Compartir:",
- "Add to your website" : "Añadir a su sitio web",
- "Share with me via Nextcloud" : "Compartir conmigo vía Nextcloud",
- "HTML Code:" : "Código HTML:"
+ "Shares" : "Compartidos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 8b3481df8ec..64463b90054 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -171,36 +171,6 @@
"Public link expired" : "El enlace público ha expirado",
"Public link of %2$s expired" : "El enlace público %2$s ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
- "Shares" : "Compartidos",
- "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor",
- "The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.",
- "Not allowed to create a federated share with the same user server" : "No se permite crear un recurso compartido federado con el mismo servidor del usuario",
- "Invalid or untrusted SSL certificate" : "Certificado SSL no válido o no confiable",
- "Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña",
- "Storage not valid" : "Almacenamiento inválido",
- "Couldn't add remote share" : "No se ha podido añadir el recurso compartido remoto",
- "Federated sharing" : "Compartido federado",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "¿Desea añadir el recurso compartido remoto {name} de {owner}@{remote}?",
- "Remote share" : "Recurso compartido remoto",
- "Remote share password" : "Contraseña del recurso compartido remoto",
- "Cancel" : "Cancelar",
- "Add remote share" : "Añadir recurso compartido remoto",
- "No ownCloud installation (7 or higher) found at {remote}" : "No se encontró una instalación de ownCloud (7 o mayor) en {remote}",
- "Invalid ownCloud url" : "URL de ownCloud no válida",
- "You received \"/%2$s\" as a remote share from %1$s" : "Has recibido \"/%2$s\" como recurso compartido remoto de %1$s",
- "Accept" : "Aceptar",
- "Decline" : "Rechazar",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparta conmigo a través de mi ID Nube Federada #Nextcloud, ver %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Comparta conmigo a través de mi ID Nube Federada #Nextcloud",
- "Federated Cloud Sharing" : "Compartido en Cloud Federado",
- "Open documentation" : "Documentación abierta",
- "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir recursos compartidos de usuarios de otros servidores",
- "Federated Cloud" : "Nube Federada",
- "Your Federated Cloud ID:" : "Su ID de Nube Federada:",
- "Share it:" : "Compartir:",
- "Add to your website" : "Añadir a su sitio web",
- "Share with me via Nextcloud" : "Compartir conmigo vía Nextcloud",
- "HTML Code:" : "Código HTML:"
+ "Shares" : "Compartidos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index c82967cc46d..2f9b6c522f5 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -13,7 +13,7 @@ OC.L10N.register(
"You can upload into this folder" : "Vous pouvez téléverser dans ce dossier",
"No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}",
"Invalid server URL" : "URL serveur invalide",
- "Failed to add the public link to your Nextcloud" : "Echec de l'ajout du lien public à votre Nextcloud",
+ "Failed to add the public link to your Nextcloud" : "Échec de l'ajout du lien public à votre Nextcloud",
"Share" : "Partager",
"No expiration date set" : "Aucune date d'expiration définie",
"Shared by" : "Partagé par",
@@ -97,7 +97,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Mauvais ID de partage, le partage n'existe pas",
"could not delete share" : "impossible de supprimer le partage",
"Could not delete share" : "Impossible de supprimer le partage",
- "Please specify a file or folder path" : "Veuillez spécifier un fichier ou dossier",
+ "Please specify a file or folder path" : "Veuillez indiquer un fichier ou un chemin",
"Wrong path, file/folder doesn't exist" : "Mauvais chemin, Le fichier/dossier n'existe pas",
"Could not create share" : "Impossible de créer le partage",
"invalid permissions" : "permissions invalides",
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "Lien public expiré",
"Public link of %2$s expired" : "Le lien public de %2$s a expiré",
"Shared by %2$s" : "Partagé par %2$s",
- "Shares" : "Partages",
- "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
- "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
- "Not allowed to create a federated share with the same user server" : "Non autorisé à créer un partage fédéré avec un utilisateur du même serveur",
- "Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable",
- "Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant, le mot de passe est probablement incorrect",
- "Storage not valid" : "Support de stockage non valide",
- "Couldn't add remote share" : "Impossible d'ajouter le partage distant",
- "Federated sharing" : "Partage fédéré",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voulez-vous ajouter le partage distant {name} depuis {owner}@{remote} ?",
- "Remote share" : "Partage distant",
- "Remote share password" : "Mot de passe du partage distant",
- "Cancel" : "Annuler",
- "Add remote share" : "Ajouter un partage distant",
- "No ownCloud installation (7 or higher) found at {remote}" : "Aucune installation ownCloud (7 ou supérieur) trouvée sur {remote}",
- "Invalid ownCloud url" : "URL Nextcloud non valide",
- "You received \"/%2$s\" as a remote share from %1$s" : "Vous avez reçu \"/%2$s\" comme partage distant de %1$s",
- "Accept" : "Accepter",
- "Decline" : "Refuser",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partager avec moi avec mon ID de Cloud fédéré #ownCloud, voir %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #ownCloud",
- "Federated Cloud Sharing" : "Federated Cloud Sharing",
- "Open documentation" : "Ouvrir la documentation",
- "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
- "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Federated Cloud" : "Federated Cloud",
- "Your Federated Cloud ID:" : "Votre identifiant de Cloud Fédéré:",
- "Share it:" : "Partager :",
- "Add to your website" : "Ajouter à votre site web",
- "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud",
- "HTML Code:" : "Code HTML :"
+ "Shares" : "Partages"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index ee85777b00e..85a2eae4870 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -11,7 +11,7 @@
"You can upload into this folder" : "Vous pouvez téléverser dans ce dossier",
"No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}",
"Invalid server URL" : "URL serveur invalide",
- "Failed to add the public link to your Nextcloud" : "Echec de l'ajout du lien public à votre Nextcloud",
+ "Failed to add the public link to your Nextcloud" : "Échec de l'ajout du lien public à votre Nextcloud",
"Share" : "Partager",
"No expiration date set" : "Aucune date d'expiration définie",
"Shared by" : "Partagé par",
@@ -95,7 +95,7 @@
"Wrong share ID, share doesn't exist" : "Mauvais ID de partage, le partage n'existe pas",
"could not delete share" : "impossible de supprimer le partage",
"Could not delete share" : "Impossible de supprimer le partage",
- "Please specify a file or folder path" : "Veuillez spécifier un fichier ou dossier",
+ "Please specify a file or folder path" : "Veuillez indiquer un fichier ou un chemin",
"Wrong path, file/folder doesn't exist" : "Mauvais chemin, Le fichier/dossier n'existe pas",
"Could not create share" : "Impossible de créer le partage",
"invalid permissions" : "permissions invalides",
@@ -171,36 +171,6 @@
"Public link expired" : "Lien public expiré",
"Public link of %2$s expired" : "Le lien public de %2$s a expiré",
"Shared by %2$s" : "Partagé par %2$s",
- "Shares" : "Partages",
- "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
- "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
- "Not allowed to create a federated share with the same user server" : "Non autorisé à créer un partage fédéré avec un utilisateur du même serveur",
- "Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable",
- "Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant, le mot de passe est probablement incorrect",
- "Storage not valid" : "Support de stockage non valide",
- "Couldn't add remote share" : "Impossible d'ajouter le partage distant",
- "Federated sharing" : "Partage fédéré",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voulez-vous ajouter le partage distant {name} depuis {owner}@{remote} ?",
- "Remote share" : "Partage distant",
- "Remote share password" : "Mot de passe du partage distant",
- "Cancel" : "Annuler",
- "Add remote share" : "Ajouter un partage distant",
- "No ownCloud installation (7 or higher) found at {remote}" : "Aucune installation ownCloud (7 ou supérieur) trouvée sur {remote}",
- "Invalid ownCloud url" : "URL Nextcloud non valide",
- "You received \"/%2$s\" as a remote share from %1$s" : "Vous avez reçu \"/%2$s\" comme partage distant de %1$s",
- "Accept" : "Accepter",
- "Decline" : "Refuser",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partager avec moi avec mon ID de Cloud fédéré #ownCloud, voir %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #ownCloud",
- "Federated Cloud Sharing" : "Federated Cloud Sharing",
- "Open documentation" : "Ouvrir la documentation",
- "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
- "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Federated Cloud" : "Federated Cloud",
- "Your Federated Cloud ID:" : "Votre identifiant de Cloud Fédéré:",
- "Share it:" : "Partager :",
- "Add to your website" : "Ajouter à votre site web",
- "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud",
- "HTML Code:" : "Code HTML :"
+ "Shares" : "Partages"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/hu_HU.js b/apps/files_sharing/l10n/hu_HU.js
index 373946bf602..debb82f3254 100644
--- a/apps/files_sharing/l10n/hu_HU.js
+++ b/apps/files_sharing/l10n/hu_HU.js
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "Nyilvános hivatkozás lejárt",
"Public link of %2$s expired" : "%2$s nyilvános hivatkozása lejárt",
"Shared by %2$s" : "Megosztó: %2$s",
- "Shares" : "Megosztások",
- "Server to server sharing is not enabled on this server" : "A szervertől-szerverig megosztás nem engedélyezett ezen a szerveren",
- "The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz.",
- "Not allowed to create a federated share with the same user server" : "Nem lehet létrehozni egy egyesített megosztást azonos felhasználóval és szerverrel",
- "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható SSL certifikáció",
- "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.",
- "Storage not valid" : "Tároló nem érvényes",
- "Couldn't add remote share" : "Nem sikerült hozzáadni a távoli megosztást",
- "Federated sharing" : "Egyesített megosztás",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Hozzá akarod adni {owner}@{remote} távoli megosztását: {name}?",
- "Remote share" : "Távoli megosztás",
- "Remote share password" : "Távoli megosztás jelszava",
- "Cancel" : "Mégsem",
- "Add remote share" : "Távoli megosztás hozzáadás",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nem található telepített ownCloud (7 vagy újabb) itt: {remote}",
- "Invalid ownCloud url" : "Érvénytelen ownCloud URL",
- "You received \"/%2$s\" as a remote share from %1$s" : "Kaptál egy távoli megosztást: \"/%2$s\", innen: %1$s",
- "Accept" : "Elfogadás",
- "Decline" : "Elutasítás",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Oszd meg velem az #ownCloud Egyesített Felhő Azonosító segítségével, lásd %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Oszd meg velem az #ownCloud Egyesített Felhő Azonosító segítségével",
- "Federated Cloud Sharing" : "Egyesített felhő megosztás",
- "Open documentation" : "Dokumentáció megnyitása",
- "Allow users on this server to send shares to other servers" : "Engedélyezi ezen szerver felhasználóinak, hogy fájlokat osszanak meg más szerverekkel.",
- "Allow users on this server to receive shares from other servers" : "Engedélyezi ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől",
- "Federated Cloud" : "Egyesített felhő",
- "Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
- "Share it:" : "Oszd meg:",
- "Add to your website" : "Add hozzá a weboldaladhoz",
- "Share with me via Nextcloud" : "Oszd meg velem a Nextcloudon",
- "HTML Code:" : "HTML kód:"
+ "Shares" : "Megosztások"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/hu_HU.json b/apps/files_sharing/l10n/hu_HU.json
index 147bdc6ac37..75ec4969e69 100644
--- a/apps/files_sharing/l10n/hu_HU.json
+++ b/apps/files_sharing/l10n/hu_HU.json
@@ -171,36 +171,6 @@
"Public link expired" : "Nyilvános hivatkozás lejárt",
"Public link of %2$s expired" : "%2$s nyilvános hivatkozása lejárt",
"Shared by %2$s" : "Megosztó: %2$s",
- "Shares" : "Megosztások",
- "Server to server sharing is not enabled on this server" : "A szervertől-szerverig megosztás nem engedélyezett ezen a szerveren",
- "The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz.",
- "Not allowed to create a federated share with the same user server" : "Nem lehet létrehozni egy egyesített megosztást azonos felhasználóval és szerverrel",
- "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható SSL certifikáció",
- "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.",
- "Storage not valid" : "Tároló nem érvényes",
- "Couldn't add remote share" : "Nem sikerült hozzáadni a távoli megosztást",
- "Federated sharing" : "Egyesített megosztás",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Hozzá akarod adni {owner}@{remote} távoli megosztását: {name}?",
- "Remote share" : "Távoli megosztás",
- "Remote share password" : "Távoli megosztás jelszava",
- "Cancel" : "Mégsem",
- "Add remote share" : "Távoli megosztás hozzáadás",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nem található telepített ownCloud (7 vagy újabb) itt: {remote}",
- "Invalid ownCloud url" : "Érvénytelen ownCloud URL",
- "You received \"/%2$s\" as a remote share from %1$s" : "Kaptál egy távoli megosztást: \"/%2$s\", innen: %1$s",
- "Accept" : "Elfogadás",
- "Decline" : "Elutasítás",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Oszd meg velem az #ownCloud Egyesített Felhő Azonosító segítségével, lásd %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Oszd meg velem az #ownCloud Egyesített Felhő Azonosító segítségével",
- "Federated Cloud Sharing" : "Egyesített felhő megosztás",
- "Open documentation" : "Dokumentáció megnyitása",
- "Allow users on this server to send shares to other servers" : "Engedélyezi ezen szerver felhasználóinak, hogy fájlokat osszanak meg más szerverekkel.",
- "Allow users on this server to receive shares from other servers" : "Engedélyezi ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől",
- "Federated Cloud" : "Egyesített felhő",
- "Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
- "Share it:" : "Oszd meg:",
- "Add to your website" : "Add hozzá a weboldaladhoz",
- "Share with me via Nextcloud" : "Oszd meg velem a Nextcloudon",
- "HTML Code:" : "HTML kód:"
+ "Shares" : "Megosztások"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 8dfee4bb302..b216a0ccacc 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "Collegamento pubblico scaduto",
"Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto",
"Shared by %2$s" : "Condivisa da %2$s",
- "Shares" : "Condivisioni",
- "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server",
- "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.",
- "Not allowed to create a federated share with the same user server" : "Non è consentito creare una condivisione federata con lo stesso server dell'utente",
- "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile",
- "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata",
- "Storage not valid" : "Archiviazione non valida",
- "Couldn't add remote share" : "Impossibile aggiungere la condivisione remota",
- "Federated sharing" : "Condivisione federata",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vuoi aggiungere la condivisione remota {name} da {owner}@{remote}?",
- "Remote share" : "Condivisione remota",
- "Remote share password" : "Password della condivisione remota",
- "Cancel" : "Annulla",
- "Add remote share" : "Aggiungi condivisione remota",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nessuna installazione di ownCloud (7 o superiore) trovata su {remote}",
- "Invalid ownCloud url" : "URL di ownCloud non valido",
- "You received \"/%2$s\" as a remote share from %1$s" : "Hai ricevuto \"/%2$s\" come condivisione remota da %1$s",
- "Accept" : "Accetta",
- "Decline" : "Rifiuta",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
- "Federated Cloud Sharing" : "Condivisione cloud federata",
- "Open documentation" : "Apri la documentazione",
- "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
- "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Federated Cloud" : "Cloud federata",
- "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
- "Share it:" : "Condividilo:",
- "Add to your website" : "Aggiungi al tuo sito web",
- "Share with me via Nextcloud" : "Condividi con me tramite Nextcloud",
- "HTML Code:" : "Codice HTML:"
+ "Shares" : "Condivisioni"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 2125faa6c52..dc2f25f1676 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -171,36 +171,6 @@
"Public link expired" : "Collegamento pubblico scaduto",
"Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto",
"Shared by %2$s" : "Condivisa da %2$s",
- "Shares" : "Condivisioni",
- "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server",
- "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.",
- "Not allowed to create a federated share with the same user server" : "Non è consentito creare una condivisione federata con lo stesso server dell'utente",
- "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile",
- "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata",
- "Storage not valid" : "Archiviazione non valida",
- "Couldn't add remote share" : "Impossibile aggiungere la condivisione remota",
- "Federated sharing" : "Condivisione federata",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vuoi aggiungere la condivisione remota {name} da {owner}@{remote}?",
- "Remote share" : "Condivisione remota",
- "Remote share password" : "Password della condivisione remota",
- "Cancel" : "Annulla",
- "Add remote share" : "Aggiungi condivisione remota",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nessuna installazione di ownCloud (7 o superiore) trovata su {remote}",
- "Invalid ownCloud url" : "URL di ownCloud non valido",
- "You received \"/%2$s\" as a remote share from %1$s" : "Hai ricevuto \"/%2$s\" come condivisione remota da %1$s",
- "Accept" : "Accetta",
- "Decline" : "Rifiuta",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
- "Federated Cloud Sharing" : "Condivisione cloud federata",
- "Open documentation" : "Apri la documentazione",
- "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
- "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Federated Cloud" : "Cloud federata",
- "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
- "Share it:" : "Condividilo:",
- "Add to your website" : "Aggiungi al tuo sito web",
- "Share with me via Nextcloud" : "Condividi con me tramite Nextcloud",
- "HTML Code:" : "Codice HTML:"
+ "Shares" : "Condivisioni"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js
index 3a1abf17889..c9e842c5d8b 100644
--- a/apps/files_sharing/l10n/nb_NO.js
+++ b/apps/files_sharing/l10n/nb_NO.js
@@ -18,48 +18,82 @@ OC.L10N.register(
"No expiration date set" : "Ingen utløpsdato er satt",
"Shared by" : "Delt av",
"Sharing" : "Deling",
- "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
- "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
- "You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
- "%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
- "%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
- "%1$s unshared %2$s from you" : "%1$s fjernet deling %2$s fra deg",
- "Public shared folder %1$s was downloaded" : "Offentlig delt mappe %1$s ble lastet ned",
- "Public shared file %1$s was downloaded" : "Offentlig delt fil %1$s ble lastet ned",
- "You shared %1$s with %2$s" : "Du delte %1$s med %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s delte %1$s med %3$s",
- "You removed the share of %2$s for %1$s" : "Du fjernet deling av %2$s for %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s fjernet deling av %3$s for %1$s",
- "You shared %1$s with group %2$s" : "Du delte %1$s med gruppe %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s delte %1$s med gruppe %3$s",
- "You removed the share of group %2$s for %1$s" : "Du fjernet deling av gruppe %2$s for %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s fjernet deling av gruppe %3$s for %1$s",
- "%2$s shared %1$s via link" : "%2$s delte %1$s via lenke",
- "You shared %1$s via link" : "Du delte %1$s via lenke",
- "You removed the public link for %1$s" : "Du fjernet den offentlige lenken for %1$s",
- "%2$s removed the public link for %1$s" : "%2$s fjernet den offentlige lenken for %1$s",
- "Your public link for %1$s expired" : "Din offentlige lenke for %1$s er utløpt",
- "The public link of %2$s for %1$s expired" : "Den offentlige lenken til %2$s for %1$s er utløpt",
- "%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
- "%2$s removed the share for %1$s" : "%2$s fjernet delingen for %1$s",
+ "File shares" : "Fildelinger",
"Downloaded via public link" : "Nedlastet via offentlig lenke",
- "Shared with %2$s" : "Delt med %2$s",
- "Shared with %3$s by %2$s" : "Delt med %3$s av %2$s",
- "Removed share for %2$s" : "Fjernet deling for %2$s",
- "%2$s removed share for %3$s" : "%2$s fjernet deling for %3$s",
- "Shared with group %2$s" : "Delt med gruppe %2$s",
- "Shared with group %3$s by %2$s" : "Delt med gruppe %3$s av %2$s",
- "Removed share of group %2$s" : "Fjernet deling av gruppe %2$s",
- "%2$s removed share of group %3$s" : "%2$s fjernet deling av gruppe %3$s",
- "Shared via link by %2$s" : "Delt via lenke av %2$s",
- "Shared via public link" : "Delt via offentlig lenke",
+ "Downloaded by %1$s" : "Lastet ned av %1$s",
+ "Downloaded by {email}" : "Lastet ned av {email}",
+ "%1$s downloaded via public link" : "%1$s lastet ned via offentlig lenke",
+ "{file} downloaded via public link" : "{file} lastet ned via offentlig lenke",
+ "%1$s downloaded %2$s" : "%1$s lastet ned %2$s",
+ "{email} downloaded {file}" : "{email} lastet ned {file}",
+ "Shared with group %1$s" : "Delt med gruppen %1$s",
+ "Shared with group {group}" : "Delt med gruppen {group}",
+ "Removed share for group %1$s" : "Fjernet deling for gruppen %1$s",
+ "Removed share for group {group}" : "Fjernet deling for gruppen {group}",
+ "%2$s shared with group %1$s" : "%2$s delt med gruppen %1$s",
+ "{actor} shared with group {group}" : "{actor} delt med gruppen {group}",
+ "%2$s removed share for group %1$s" : "%2$s fjernet deling for gruppen %1$s",
+ "{actor} removed share for group {group}" : "{actor} fjernet deling for gruppen {group}",
+ "You shared %1$s with group %2$s" : "Du delte %1$s med gruppe %2$s",
+ "You shared {file} with group {group}" : "Du delte {file} med gruppen {group}",
+ "You removed group %2$s from %1$s" : "Du fjernet gruppen %2$s fra %1$s",
+ "You removed group {group} from {file}" : "Du fjernet gruppen {group} fra {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s delte %1$s med gruppen %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} delte {file} med gruppen {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s fjernet gruppen %2$s fra %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} fjernet gruppen {group} fra {file}",
+ "Shared as public link" : "Delt som offentlig lenke",
"Removed public link" : "Fjernet offentlig lenke",
- "%2$s removed public link" : "%2$s fjernet offentlig lenke",
- "Public link expired" : "Offentlig lenke er utløpt",
- "Public link of %2$s expired" : "Offentlig lenke til %2$s er utløpt",
- "Shared by %2$s" : "Delt av %2$s",
- "File shares" : "Fildelinger",
+ "%1$s shared as public link" : "%1$s delt som offentlig lenke",
+ "{actor} shared as public link" : "{actor} delte som offentlig lenke",
+ "%1$s removed public link" : "%1$s fjernet offentlig lenke",
+ "{actor} removed public link" : "{actor} fjernet offentlig lenke",
+ "You shared %1$s as public link" : "Du delte %1$s som offentlig lenke",
+ "You shared {file} as public link" : "Du delte {file} som offentlig lenke",
+ "You removed public link for %1$s" : "Du fjernet offentlig lenke for %1$s",
+ "You removed public link for {file}" : "Du fjernet offentlig lenke for {file}",
+ "%2$s shared %1$s as public link" : "%2$s delte %1$s som offentlig lenke",
+ "{actor} shared {file} as public link" : "{actor} delte {file} som offentlig lenke",
+ "%2$s removed public link for %1$s" : "%2$s fjernet offentlig lenke for %1$s",
+ "{actor} removed public link for {file}" : "{actor} fjernet offentlig lenke for {file}",
+ "%1$s accepted the remote share" : "%1$s godtok den offentlige delingen",
+ "{user} accepted the remote share" : "{user} godtok fjerndelingen",
+ "%1$s declined the remote share" : "%1$s avslo fjerndelingen",
+ "{user} declined the remote share" : "{user} avslo fjerndelingen",
+ "You received a new remote share %1$s from %2$s" : "Du har mottatt en ny fjerndeling %1$s fra %2$s",
+ "You received a new remote share {file} from {user}" : "Du har mottatt en ny fjerndeling {file} fra {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s godtok fjerndelingen av %1$s",
+ "{user} accepted the remote share of {file}" : "{user} godtok fjerndelingen av {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s avslo fjerndelingen av %1$s",
+ "{user} declined the remote share of {file}" : "{user} avslo fjerndelingen av {file}",
+ "%2$s unshared %1$s from you" : "%2$s fjernet deling av %1$s med deg",
+ "{user} unshared {file} from you" : "{user} fjernet deling av {file} med deg",
+ "Shared with %1$s" : "Delt med %1$s",
+ "Shared with {user}" : "Delt med {user}",
+ "Removed share for %1$s" : "Fjernet deling med %1$s",
+ "Removed share for {user}" : "Fjernet deling med {user}",
+ "%2$s shared with %1$s" : "%2$s delt med %1$s",
+ "{actor} shared with {user}" : "{actor} delte med {user}",
+ "%2$s removed share for %1$s" : "%2$s fjernet deling med %1$s",
+ "{actor} removed share for {user}" : "{actor} fjernet deling med {user}",
+ "Shared by %1$s" : "Delt av %1$s",
+ "Shared by {actor}" : "Delt av {actor}",
+ "%1$s removed share" : "%1$s fjernet deling",
+ "{actor} removed share" : "{actor} fjernet deling",
+ "You shared %1$s with %2$s" : "Du delte %1$s med %2$s",
+ "You shared {file} with {user}" : "Du delte {file} med {user}",
+ "You removed %2$s from %1$s" : "Du fjernet %2$s fra %1$s",
+ "You removed {user} from {file}" : "Du fjernet {user} fra {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s delte %1$s med %2$s",
+ "{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s fjernet %2$s fra %1$s",
+ "%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
+ "{actor} shared {file} with you" : "{actor} delte {file} med deg",
+ "%2$s removed you from %1$s" : "%2$s fjernet deg fra %1$s",
+ "{actor} removed you from {file}" : "{actor} fjernet deg fra {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
+ "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
"could not delete share" : "kunne ikke slette ressursen",
"Could not delete share" : "Kunne ikke slette ressursen",
@@ -105,36 +139,40 @@ OC.L10N.register(
"Uploading files…" : "Laster opp filer...",
"Uploaded files:" : "Opplastede filer:",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentlig delt fil eller mappe ble <strong>lastet ned</strong>",
- "Shares" : "Delinger",
- "Server to server sharing is not enabled on this server" : "Tjener til tjenerdeling er ikke aktivert på denne tjeneren",
- "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
- "Not allowed to create a federated share with the same user server" : "Kan ikke opprette en forent ressurs med samme brukertjener",
- "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil",
- "Storage not valid" : "Lagerplass ikke gyldig",
- "Couldn't add remote share" : "Klarte ikke å legge til ekstern ressurs",
- "Federated sharing" : "Sammenknyttet deling",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vil du legge til den eksterne ressursen {name} fra {owner}@{remote}?",
- "Remote share" : "Ekstern ressurs",
- "Remote share password" : "Passord for ekstern ressurs",
- "Cancel" : "Avbryt",
- "Add remote share" : "Legg til ekstern ressurs",
- "No ownCloud installation (7 or higher) found at {remote}" : "Ingen Nextcloud-installasjon (7 eller høyere) funnet på {remote}",
- "Invalid ownCloud url" : "Ugyldig Nextcloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du mottok \"/%2$s\" som en fjerndeling %1$s",
- "Accept" : "Aksepter",
- "Decline" : "Avslå",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #Nextcloud ID for sammenknyttet sky, se %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #Nextcloud ID for sammenknyttet sky",
- "Federated Cloud Sharing" : "Sammenknyttet skydeling",
- "Open documentation" : "Åpne dokumentasjonen",
- "Allow users on this server to send shares to other servers" : "Tillat brukere på denne tjeneren å sende delinger til andre tjenere",
- "Allow users on this server to receive shares from other servers" : "Tillat brukere på denne tjeneren å motta delinger fra andre tjenere",
- "Federated Cloud" : "Sammenknyttet sky",
- "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
- "Share it:" : "Del:",
- "Add to your website" : "Legg på nettsiden din",
- "Share with me via Nextcloud" : "Del med meg via Nextcloud",
- "HTML Code:" : "HTML kode:"
+ "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
+ "You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
+ "%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
+ "%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
+ "%1$s unshared %2$s from you" : "%1$s fjernet deling %2$s fra deg",
+ "Public shared folder %1$s was downloaded" : "Offentlig delt mappe %1$s ble lastet ned",
+ "Public shared file %1$s was downloaded" : "Offentlig delt fil %1$s ble lastet ned",
+ "%2$s shared %1$s with %3$s" : "%2$s delte %1$s med %3$s",
+ "You removed the share of %2$s for %1$s" : "Du fjernet deling av %2$s for %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s fjernet deling av %3$s for %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s delte %1$s med gruppe %3$s",
+ "You removed the share of group %2$s for %1$s" : "Du fjernet deling av gruppe %2$s for %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s fjernet deling av gruppe %3$s for %1$s",
+ "%2$s shared %1$s via link" : "%2$s delte %1$s via lenke",
+ "You shared %1$s via link" : "Du delte %1$s via lenke",
+ "You removed the public link for %1$s" : "Du fjernet den offentlige lenken for %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s fjernet den offentlige lenken for %1$s",
+ "Your public link for %1$s expired" : "Din offentlige lenke for %1$s er utløpt",
+ "The public link of %2$s for %1$s expired" : "Den offentlige lenken til %2$s for %1$s er utløpt",
+ "%2$s removed the share for %1$s" : "%2$s fjernet delingen for %1$s",
+ "Shared with %2$s" : "Delt med %2$s",
+ "Shared with %3$s by %2$s" : "Delt med %3$s av %2$s",
+ "Removed share for %2$s" : "Fjernet deling for %2$s",
+ "%2$s removed share for %3$s" : "%2$s fjernet deling for %3$s",
+ "Shared with group %2$s" : "Delt med gruppe %2$s",
+ "Shared with group %3$s by %2$s" : "Delt med gruppe %3$s av %2$s",
+ "Removed share of group %2$s" : "Fjernet deling av gruppe %2$s",
+ "%2$s removed share of group %3$s" : "%2$s fjernet deling av gruppe %3$s",
+ "Shared via link by %2$s" : "Delt via lenke av %2$s",
+ "Shared via public link" : "Delt via offentlig lenke",
+ "%2$s removed public link" : "%2$s fjernet offentlig lenke",
+ "Public link expired" : "Offentlig lenke er utløpt",
+ "Public link of %2$s expired" : "Offentlig lenke til %2$s er utløpt",
+ "Shared by %2$s" : "Delt av %2$s",
+ "Shares" : "Delinger"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json
index 2811c6ad66d..bc829079db6 100644
--- a/apps/files_sharing/l10n/nb_NO.json
+++ b/apps/files_sharing/l10n/nb_NO.json
@@ -16,48 +16,82 @@
"No expiration date set" : "Ingen utløpsdato er satt",
"Shared by" : "Delt av",
"Sharing" : "Deling",
- "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
- "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
- "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
- "You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
- "%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
- "%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
- "%1$s unshared %2$s from you" : "%1$s fjernet deling %2$s fra deg",
- "Public shared folder %1$s was downloaded" : "Offentlig delt mappe %1$s ble lastet ned",
- "Public shared file %1$s was downloaded" : "Offentlig delt fil %1$s ble lastet ned",
- "You shared %1$s with %2$s" : "Du delte %1$s med %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s delte %1$s med %3$s",
- "You removed the share of %2$s for %1$s" : "Du fjernet deling av %2$s for %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s fjernet deling av %3$s for %1$s",
- "You shared %1$s with group %2$s" : "Du delte %1$s med gruppe %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s delte %1$s med gruppe %3$s",
- "You removed the share of group %2$s for %1$s" : "Du fjernet deling av gruppe %2$s for %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s fjernet deling av gruppe %3$s for %1$s",
- "%2$s shared %1$s via link" : "%2$s delte %1$s via lenke",
- "You shared %1$s via link" : "Du delte %1$s via lenke",
- "You removed the public link for %1$s" : "Du fjernet den offentlige lenken for %1$s",
- "%2$s removed the public link for %1$s" : "%2$s fjernet den offentlige lenken for %1$s",
- "Your public link for %1$s expired" : "Din offentlige lenke for %1$s er utløpt",
- "The public link of %2$s for %1$s expired" : "Den offentlige lenken til %2$s for %1$s er utløpt",
- "%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
- "%2$s removed the share for %1$s" : "%2$s fjernet delingen for %1$s",
+ "File shares" : "Fildelinger",
"Downloaded via public link" : "Nedlastet via offentlig lenke",
- "Shared with %2$s" : "Delt med %2$s",
- "Shared with %3$s by %2$s" : "Delt med %3$s av %2$s",
- "Removed share for %2$s" : "Fjernet deling for %2$s",
- "%2$s removed share for %3$s" : "%2$s fjernet deling for %3$s",
- "Shared with group %2$s" : "Delt med gruppe %2$s",
- "Shared with group %3$s by %2$s" : "Delt med gruppe %3$s av %2$s",
- "Removed share of group %2$s" : "Fjernet deling av gruppe %2$s",
- "%2$s removed share of group %3$s" : "%2$s fjernet deling av gruppe %3$s",
- "Shared via link by %2$s" : "Delt via lenke av %2$s",
- "Shared via public link" : "Delt via offentlig lenke",
+ "Downloaded by %1$s" : "Lastet ned av %1$s",
+ "Downloaded by {email}" : "Lastet ned av {email}",
+ "%1$s downloaded via public link" : "%1$s lastet ned via offentlig lenke",
+ "{file} downloaded via public link" : "{file} lastet ned via offentlig lenke",
+ "%1$s downloaded %2$s" : "%1$s lastet ned %2$s",
+ "{email} downloaded {file}" : "{email} lastet ned {file}",
+ "Shared with group %1$s" : "Delt med gruppen %1$s",
+ "Shared with group {group}" : "Delt med gruppen {group}",
+ "Removed share for group %1$s" : "Fjernet deling for gruppen %1$s",
+ "Removed share for group {group}" : "Fjernet deling for gruppen {group}",
+ "%2$s shared with group %1$s" : "%2$s delt med gruppen %1$s",
+ "{actor} shared with group {group}" : "{actor} delt med gruppen {group}",
+ "%2$s removed share for group %1$s" : "%2$s fjernet deling for gruppen %1$s",
+ "{actor} removed share for group {group}" : "{actor} fjernet deling for gruppen {group}",
+ "You shared %1$s with group %2$s" : "Du delte %1$s med gruppe %2$s",
+ "You shared {file} with group {group}" : "Du delte {file} med gruppen {group}",
+ "You removed group %2$s from %1$s" : "Du fjernet gruppen %2$s fra %1$s",
+ "You removed group {group} from {file}" : "Du fjernet gruppen {group} fra {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s delte %1$s med gruppen %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} delte {file} med gruppen {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s fjernet gruppen %2$s fra %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} fjernet gruppen {group} fra {file}",
+ "Shared as public link" : "Delt som offentlig lenke",
"Removed public link" : "Fjernet offentlig lenke",
- "%2$s removed public link" : "%2$s fjernet offentlig lenke",
- "Public link expired" : "Offentlig lenke er utløpt",
- "Public link of %2$s expired" : "Offentlig lenke til %2$s er utløpt",
- "Shared by %2$s" : "Delt av %2$s",
- "File shares" : "Fildelinger",
+ "%1$s shared as public link" : "%1$s delt som offentlig lenke",
+ "{actor} shared as public link" : "{actor} delte som offentlig lenke",
+ "%1$s removed public link" : "%1$s fjernet offentlig lenke",
+ "{actor} removed public link" : "{actor} fjernet offentlig lenke",
+ "You shared %1$s as public link" : "Du delte %1$s som offentlig lenke",
+ "You shared {file} as public link" : "Du delte {file} som offentlig lenke",
+ "You removed public link for %1$s" : "Du fjernet offentlig lenke for %1$s",
+ "You removed public link for {file}" : "Du fjernet offentlig lenke for {file}",
+ "%2$s shared %1$s as public link" : "%2$s delte %1$s som offentlig lenke",
+ "{actor} shared {file} as public link" : "{actor} delte {file} som offentlig lenke",
+ "%2$s removed public link for %1$s" : "%2$s fjernet offentlig lenke for %1$s",
+ "{actor} removed public link for {file}" : "{actor} fjernet offentlig lenke for {file}",
+ "%1$s accepted the remote share" : "%1$s godtok den offentlige delingen",
+ "{user} accepted the remote share" : "{user} godtok fjerndelingen",
+ "%1$s declined the remote share" : "%1$s avslo fjerndelingen",
+ "{user} declined the remote share" : "{user} avslo fjerndelingen",
+ "You received a new remote share %1$s from %2$s" : "Du har mottatt en ny fjerndeling %1$s fra %2$s",
+ "You received a new remote share {file} from {user}" : "Du har mottatt en ny fjerndeling {file} fra {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s godtok fjerndelingen av %1$s",
+ "{user} accepted the remote share of {file}" : "{user} godtok fjerndelingen av {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s avslo fjerndelingen av %1$s",
+ "{user} declined the remote share of {file}" : "{user} avslo fjerndelingen av {file}",
+ "%2$s unshared %1$s from you" : "%2$s fjernet deling av %1$s med deg",
+ "{user} unshared {file} from you" : "{user} fjernet deling av {file} med deg",
+ "Shared with %1$s" : "Delt med %1$s",
+ "Shared with {user}" : "Delt med {user}",
+ "Removed share for %1$s" : "Fjernet deling med %1$s",
+ "Removed share for {user}" : "Fjernet deling med {user}",
+ "%2$s shared with %1$s" : "%2$s delt med %1$s",
+ "{actor} shared with {user}" : "{actor} delte med {user}",
+ "%2$s removed share for %1$s" : "%2$s fjernet deling med %1$s",
+ "{actor} removed share for {user}" : "{actor} fjernet deling med {user}",
+ "Shared by %1$s" : "Delt av %1$s",
+ "Shared by {actor}" : "Delt av {actor}",
+ "%1$s removed share" : "%1$s fjernet deling",
+ "{actor} removed share" : "{actor} fjernet deling",
+ "You shared %1$s with %2$s" : "Du delte %1$s med %2$s",
+ "You shared {file} with {user}" : "Du delte {file} med {user}",
+ "You removed %2$s from %1$s" : "Du fjernet %2$s fra %1$s",
+ "You removed {user} from {file}" : "Du fjernet {user} fra {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s delte %1$s med %2$s",
+ "{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s fjernet %2$s fra %1$s",
+ "%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
+ "{actor} shared {file} with you" : "{actor} delte {file} med deg",
+ "%2$s removed you from %1$s" : "%2$s fjernet deg fra %1$s",
+ "{actor} removed you from {file}" : "{actor} fjernet deg fra {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>",
+ "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
"could not delete share" : "kunne ikke slette ressursen",
"Could not delete share" : "Kunne ikke slette ressursen",
@@ -103,36 +137,40 @@
"Uploading files…" : "Laster opp filer...",
"Uploaded files:" : "Opplastede filer:",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentlig delt fil eller mappe ble <strong>lastet ned</strong>",
- "Shares" : "Delinger",
- "Server to server sharing is not enabled on this server" : "Tjener til tjenerdeling er ikke aktivert på denne tjeneren",
- "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
- "Not allowed to create a federated share with the same user server" : "Kan ikke opprette en forent ressurs med samme brukertjener",
- "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
- "Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil",
- "Storage not valid" : "Lagerplass ikke gyldig",
- "Couldn't add remote share" : "Klarte ikke å legge til ekstern ressurs",
- "Federated sharing" : "Sammenknyttet deling",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vil du legge til den eksterne ressursen {name} fra {owner}@{remote}?",
- "Remote share" : "Ekstern ressurs",
- "Remote share password" : "Passord for ekstern ressurs",
- "Cancel" : "Avbryt",
- "Add remote share" : "Legg til ekstern ressurs",
- "No ownCloud installation (7 or higher) found at {remote}" : "Ingen Nextcloud-installasjon (7 eller høyere) funnet på {remote}",
- "Invalid ownCloud url" : "Ugyldig Nextcloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du mottok \"/%2$s\" som en fjerndeling %1$s",
- "Accept" : "Aksepter",
- "Decline" : "Avslå",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #Nextcloud ID for sammenknyttet sky, se %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #Nextcloud ID for sammenknyttet sky",
- "Federated Cloud Sharing" : "Sammenknyttet skydeling",
- "Open documentation" : "Åpne dokumentasjonen",
- "Allow users on this server to send shares to other servers" : "Tillat brukere på denne tjeneren å sende delinger til andre tjenere",
- "Allow users on this server to receive shares from other servers" : "Tillat brukere på denne tjeneren å motta delinger fra andre tjenere",
- "Federated Cloud" : "Sammenknyttet sky",
- "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
- "Share it:" : "Del:",
- "Add to your website" : "Legg på nettsiden din",
- "Share with me via Nextcloud" : "Del med meg via Nextcloud",
- "HTML Code:" : "HTML kode:"
+ "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
+ "You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
+ "%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
+ "%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
+ "%1$s unshared %2$s from you" : "%1$s fjernet deling %2$s fra deg",
+ "Public shared folder %1$s was downloaded" : "Offentlig delt mappe %1$s ble lastet ned",
+ "Public shared file %1$s was downloaded" : "Offentlig delt fil %1$s ble lastet ned",
+ "%2$s shared %1$s with %3$s" : "%2$s delte %1$s med %3$s",
+ "You removed the share of %2$s for %1$s" : "Du fjernet deling av %2$s for %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s fjernet deling av %3$s for %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s delte %1$s med gruppe %3$s",
+ "You removed the share of group %2$s for %1$s" : "Du fjernet deling av gruppe %2$s for %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s fjernet deling av gruppe %3$s for %1$s",
+ "%2$s shared %1$s via link" : "%2$s delte %1$s via lenke",
+ "You shared %1$s via link" : "Du delte %1$s via lenke",
+ "You removed the public link for %1$s" : "Du fjernet den offentlige lenken for %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s fjernet den offentlige lenken for %1$s",
+ "Your public link for %1$s expired" : "Din offentlige lenke for %1$s er utløpt",
+ "The public link of %2$s for %1$s expired" : "Den offentlige lenken til %2$s for %1$s er utløpt",
+ "%2$s removed the share for %1$s" : "%2$s fjernet delingen for %1$s",
+ "Shared with %2$s" : "Delt med %2$s",
+ "Shared with %3$s by %2$s" : "Delt med %3$s av %2$s",
+ "Removed share for %2$s" : "Fjernet deling for %2$s",
+ "%2$s removed share for %3$s" : "%2$s fjernet deling for %3$s",
+ "Shared with group %2$s" : "Delt med gruppe %2$s",
+ "Shared with group %3$s by %2$s" : "Delt med gruppe %3$s av %2$s",
+ "Removed share of group %2$s" : "Fjernet deling av gruppe %2$s",
+ "%2$s removed share of group %3$s" : "%2$s fjernet deling av gruppe %3$s",
+ "Shared via link by %2$s" : "Delt via lenke av %2$s",
+ "Shared via public link" : "Delt via offentlig lenke",
+ "%2$s removed public link" : "%2$s fjernet offentlig lenke",
+ "Public link expired" : "Offentlig lenke er utløpt",
+ "Public link of %2$s expired" : "Offentlig lenke til %2$s er utløpt",
+ "Shared by %2$s" : "Delt av %2$s",
+ "Shares" : "Delinger"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index 78e9c9d6aef..e5ba0ad7c21 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "Openbare link is verlopen",
"Public link of %2$s expired" : "Openbare link van %2$s is verlopen",
"Shared by %2$s" : "Gedeeld door %2$s",
- "Shares" : "Gedeeld",
- "Server to server sharing is not enabled on this server" : "Server met server delen is niet geactiveerd op deze server",
- "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.",
- "Not allowed to create a federated share with the same user server" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
- "Invalid or untrusted SSL certificate" : "Ongeldig of niet vertrouwd SSL-certificaat",
- "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord",
- "Storage not valid" : "Opslag ongeldig",
- "Couldn't add remote share" : "Kon geen externe share toevoegen",
- "Federated sharing" : "Gefedereerd delen",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?",
- "Remote share" : "Externe share",
- "Remote share password" : "Wachtwoord externe share",
- "Cancel" : "Annuleren",
- "Add remote share" : "Toevoegen externe share",
- "No ownCloud installation (7 or higher) found at {remote}" : "Geen ownCloud installatie (7 of hoger) gevonden op {remote}",
- "Invalid ownCloud url" : "Ongeldige ownCloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Je ontving \"/%2$s\" als een externe share van %1$s",
- "Accept" : "Accepteren",
- "Decline" : "Afwijzen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud gefedereerde Cloud ID, zie %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud gefedereerde Cloud ID",
- "Federated Cloud Sharing" : "Gefedereerd delen in de Cloud",
- "Open documentation" : "Openen documentatie",
- "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
- "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Federated Cloud" : "Gefedereerde Cloud",
- "Your Federated Cloud ID:" : "Je gefedereerde Cloud ID:",
- "Share it:" : "Deel het:",
- "Add to your website" : "Toevoegen aan je website",
- "Share with me via Nextcloud" : "Deel met mij via Nextcloud",
- "HTML Code:" : "HTML Code:"
+ "Shares" : "Gedeeld"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index 57ca2d4dd1a..b3ceedff6be 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -171,36 +171,6 @@
"Public link expired" : "Openbare link is verlopen",
"Public link of %2$s expired" : "Openbare link van %2$s is verlopen",
"Shared by %2$s" : "Gedeeld door %2$s",
- "Shares" : "Gedeeld",
- "Server to server sharing is not enabled on this server" : "Server met server delen is niet geactiveerd op deze server",
- "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.",
- "Not allowed to create a federated share with the same user server" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
- "Invalid or untrusted SSL certificate" : "Ongeldig of niet vertrouwd SSL-certificaat",
- "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord",
- "Storage not valid" : "Opslag ongeldig",
- "Couldn't add remote share" : "Kon geen externe share toevoegen",
- "Federated sharing" : "Gefedereerd delen",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?",
- "Remote share" : "Externe share",
- "Remote share password" : "Wachtwoord externe share",
- "Cancel" : "Annuleren",
- "Add remote share" : "Toevoegen externe share",
- "No ownCloud installation (7 or higher) found at {remote}" : "Geen ownCloud installatie (7 of hoger) gevonden op {remote}",
- "Invalid ownCloud url" : "Ongeldige ownCloud url",
- "You received \"/%2$s\" as a remote share from %1$s" : "Je ontving \"/%2$s\" als een externe share van %1$s",
- "Accept" : "Accepteren",
- "Decline" : "Afwijzen",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud gefedereerde Cloud ID, zie %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud gefedereerde Cloud ID",
- "Federated Cloud Sharing" : "Gefedereerd delen in de Cloud",
- "Open documentation" : "Openen documentatie",
- "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
- "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Federated Cloud" : "Gefedereerde Cloud",
- "Your Federated Cloud ID:" : "Je gefedereerde Cloud ID:",
- "Share it:" : "Deel het:",
- "Add to your website" : "Toevoegen aan je website",
- "Share with me via Nextcloud" : "Deel met mij via Nextcloud",
- "HTML Code:" : "HTML Code:"
+ "Shares" : "Gedeeld"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index e1bec669533..0e2339b6581 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -1,55 +1,168 @@
OC.L10N.register(
"files_sharing",
{
- "Server to server sharing is not enabled on this server" : "Współdzielenie między serwerami nie jest uruchomione na tym serwerze",
- "The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.",
- "Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL",
- "Could not authenticate to remote share, password might be wrong" : "Nie można zalogować do zdalnego zasobu, hasło może być niepoprawne",
- "Storage not valid" : "Zasób nie jest prawidłowy",
- "Couldn't add remote share" : "Nie można dodać zdalnego folderu",
"Shared with you" : "Współdzielony z Tobą",
"Shared with others" : "Współdzielony z innymi",
"Shared by link" : "Współdzielony linkiem",
"Nothing shared with you yet" : "Nie masz jeszcze nic udostępnionego",
"Files and folders others share with you will show up here" : "Pliki i foldery udostępnione Tobie przez innych wyświetlą się tutaj",
"Nothing shared yet" : "Jeszcze nic nie udostępniono",
- "Files and folders you share will show up here" : "Plik i foldery, które udostępniasz, pokażą się tutaj",
+ "Files and folders you share will show up here" : "Pliki i foldery, które udostępniasz, pokażą się tutaj",
"No shared links" : "Brak udostępnionych odnośników",
- "Files and folders you share by link will show up here" : "Plik i foldery, które udostępniasz, pokażą się tutaj",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Czy chcesz dodać udział zdalny {name} od {owner}@{remote}?",
- "Remote share" : "Zdalny zasób",
- "Remote share password" : "Hasło do zdalnego zasobu",
- "Cancel" : "Anuluj",
- "Add remote share" : "Dodaj zdalny zasób",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nie znaleziono instalacji ownCloud (w wersji 7 lub nowszej) na {remote}",
- "Invalid ownCloud url" : "Błędny adres URL",
+ "Files and folders you share by link will show up here" : "Pliki i foldery, które udostępniasz, pokażą się tutaj",
+ "You can upload into this folder" : "Możesz przesłać do tego folderu",
+ "No compatible server found at {remote}" : "Nie znaleziono kompatybilnego serwera na {remote}",
+ "Invalid server URL" : "Błędny adres serwera",
+ "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku do publicznego Nextcloud",
+ "Share" : "Udostępnij",
+ "No expiration date set" : "Nie ustawiono daty wygaśnięcia",
"Shared by" : "Udostępniane przez",
"Sharing" : "Udostępnianie",
+ "File shares" : "Udziały",
+ "Downloaded via public link" : "Pobierane poprzez link publiczny",
+ "Downloaded by %1$s" : "Pobierane przez %1$s",
+ "Downloaded by {email}" : "Pobierane przez {email}",
+ "%1$s downloaded via public link" : "%1$s pobierane za pośrednictwem łącza publicznego",
+ "{file} downloaded via public link" : "{file} pobierane za pośrednictwem łącza publicznego",
+ "%1$s downloaded %2$s" : "%1$s pobierane %2$s",
+ "{email} downloaded {file}" : "{email} pobierane {file}",
+ "Shared with group %1$s" : "Udostępnione grupie %1$s",
+ "Shared with group {group}" : "Udostępnione grupie {group}",
+ "Removed share for group %1$s" : "Zakończono udostępnianie grupie %1$s",
+ "Removed share for group {group}" : "Zakończono udostępnianie grupie {group}",
+ "%2$s shared with group %1$s" : "%2$s jest udostępniane grupie %1$s",
+ "{actor} shared with group {group}" : "{actor} udostępnił grupie {group}",
+ "%2$s removed share for group %1$s" : "%2$s zakończył udostępnianie grupie %1$s",
+ "{actor} removed share for group {group}" : "{actor} zakończył udostępnianie grupie {group}",
+ "You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
+ "You shared {file} with group {group}" : "Udostępniasz {file} grupie {group}",
+ "You removed group %2$s from %1$s" : "Usunąłeś grupę %2$s z %1$s",
+ "You removed group {group} from {file}" : "Usunąłeś grupę {group} z {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s udostępnił %1$s grupie %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} udostępnił {file} grupie {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s usunął grupę %2$s z %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} usunął grupę {group} z {file}",
+ "Shared as public link" : "Udostępnione jako publiczny link",
+ "Removed public link" : "Usunięto link publiczny",
+ "%1$s shared as public link" : "%1$s udostępnione jako publiczny link",
+ "{actor} shared as public link" : "{actor} udostępniony jako publiczny link",
+ "%1$s removed public link" : "%1$s usunąłeś publiczny link",
+ "{actor} removed public link" : "{actor} usunął publiczny link",
+ "You shared %1$s as public link" : "Udostępniasz %1$s jako publiczny link",
+ "You shared {file} as public link" : "Udostępniasz {file} jako publiczny link",
+ "You removed public link for %1$s" : "Usuwasz link publiczny dla %1$s",
+ "You removed public link for {file}" : "Usuwasz link publiczny dla {file}",
+ "%2$s shared %1$s as public link" : "%2$s udostępnił %1$s jako publiczne łącze",
+ "{actor} shared {file} as public link" : "{actor} udostępnił {file} jako publiczne łącze",
+ "%2$s removed public link for %1$s" : "%2$s usunął publiczne łącze do %1$s",
+ "{actor} removed public link for {file}" : "{actor} usunął publiczne łącze do {file}",
+ "%1$s accepted the remote share" : "%1$s zaakceptował zdalny udział",
+ "{user} accepted the remote share" : "{user} zaakceptował zdalny udział",
+ "%1$s declined the remote share" : "%1$s odrzucił zdalny udział",
+ "{user} declined the remote share" : "{user} odrzucił zdalny udział",
+ "You received a new remote share %1$s from %2$s" : "Otrzymałeś nowy zdalny udział %1$s od użytkownika %2$s",
+ "You received a new remote share {file} from {user}" : "Otrzymałeś nowy zdalny udział {file} od użytkownika {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s zaakceptował zdalny udział %1$s",
+ "{user} accepted the remote share of {file}" : "{user} zaakceptował zdalny udział {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s odrzucił zdalny udział %1$s",
+ "{user} declined the remote share of {file}" : "{user} odrzucił zadalny udział {file}",
+ "%2$s unshared %1$s from you" : "%2$s przestał ci udostępniać %1$s",
+ "{user} unshared {file} from you" : "{user} przestał ci udostępniać {file}",
+ "Shared with %1$s" : "Udostępnione %1$s",
+ "Shared with {user}" : "Udostępnione użytkownikowi {user}",
+ "Removed share for %1$s" : "Zakończono udostępnianie użytkownikowi %1$s",
+ "Removed share for {user}" : "Zakończono udostępnianie użytkownikowi {user}",
+ "%2$s shared with %1$s" : "%2$s udostępnia użytkownikowi %1$s",
+ "{actor} shared with {user}" : "{actor} udostępnia użytkownikowi {user}",
+ "%2$s removed share for %1$s" : "%2$s usuwa udostępnienie dla użytkownika %1$s",
+ "{actor} removed share for {user}" : "{actor} usuwa udostępnienie dla użytkownika {user}",
+ "Shared by %1$s" : "Udostępnione przez użytkownika %1$s",
+ "Shared by {actor}" : "Udostępnione przez użytkownika {actor}",
+ "%1$s removed share" : "%1$s usunął udostępnienie",
+ "{actor} removed share" : "{actor} usunął udostępnienie",
+ "You shared %1$s with %2$s" : "Współdzielisz %1$s z %2$s",
+ "You shared {file} with {user}" : "Współdzielisz {file} z {user}",
+ "You removed %2$s from %1$s" : "Usunąłeś użytkownika %2$s z %1$s",
+ "You removed {user} from {file}" : "Usunąłeś użytkownika {user} z {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s udostępnił %1$s użytkownikowi %2$s",
+ "{actor} removed {user} from {file}" : "{actor} usunął użytkownika {user} z {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s usunął użytkownika %2$s z %1$s",
+ "%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
+ "{actor} shared {file} with you" : "{actor} udostępnił ci {file}",
+ "%2$s removed you from %1$s" : "%2$s usunął cię z %1$s",
+ "{actor} removed you from {file}" : "{actor} usunął cie z {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Plik lub folder udostępniony za pomocą maila lub publicznego łącza został <strong>pobrany</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Plik lub folder został udostępniony z <strong>innego serwera</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Plik lub folder stał się <strong>współdzielony</strong>",
+ "Wrong share ID, share doesn't exist" : "Złe ID udziału, udział nie istnieje",
+ "could not delete share" : "nie można usunąć udział",
+ "Could not delete share" : "Nie można usunąć udział",
+ "Please specify a file or folder path" : "Proszę podać pliku lub ścieżkę do folderu",
+ "Wrong path, file/folder doesn't exist" : "Ścieżka nieprawidłowa, plik/folder nie istnieje",
+ "Could not create share" : "Nie można utworzyć udział",
+ "invalid permissions" : "nieprawidłowe uprawnienia",
+ "Please specify a valid user" : "Proszę podać poprawnego użytkownika",
+ "Group sharing is disabled by the administrator" : "Udostępnianie grupy zostało wyłączone przez administratora",
+ "Please specify a valid group" : "Proszę podać prawidłową grupę",
"Public link sharing is disabled by the administrator" : "Udostępnianie linków publicznych zostało zablokowane przez twojego administratora",
"Public upload disabled by the administrator" : "Publiczne wczytywanie zostało zablokowane przez twojego administratora",
"Public upload is only possible for publicly shared folders" : "Publiczne wczytywanie jest możliwe wyłącznie do katalogów publicznych",
- "A file or folder has been <strong>shared</strong>" : "Plik lub folder stał się <strong>współdzielony</strong>",
- "You shared %1$s with %2$s" : "Współdzielisz %1$s z %2$s",
- "You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
- "You shared %1$s via link" : "Udostępniasz %1$s przez link",
- "%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
- "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
- "Shares" : "Udziały",
+ "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "Udostępnienie %s nie powiodło się ponieważ backend nie zezwala na udziały typu %s",
+ "Unknown share type" : "Nieznany typ udziału",
+ "Not a directory" : "Nie jest katalogiem",
+ "Could not lock path" : "Nie udało się zablokować ścieżki",
+ "Wrong or no update parameter given" : "Brakujący lub błędny parametr aktualizacji",
+ "Can't change permissions for public share links" : "Nie można zmienić uprawnień dla publicznych udziałów",
+ "Cannot increase permissions" : "Nie można zwiększyć uprawnień",
+ "%s is publicly shared" : "%s jest publicznie dostępny",
+ "Share API is disabled" : "API udostępniania jest wyłączone",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
"The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.",
"Password" : "Hasło",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Name" : "Nazwa",
"Share time" : "Czas współdzielenia",
+ "Expiration date" : "Data wygaśnięcia",
"Sorry, this link doesn’t seem to work anymore." : "Przepraszamy ale wygląda na to, że ten link już nie działa.",
"Reasons might be:" : "Możliwe powody:",
"the item was removed" : "element został usunięty",
"the link expired" : "link wygasł",
"sharing is disabled" : "udostępnianie jest wyłączone",
"For more info, please ask the person who sent this link." : "Aby uzyskać więcej informacji proszę poprosić osobę, która wysłał ten link.",
- "Add to your ownCloud" : "Dodaj do twojego ownCloud",
+ "Add to your Nextcloud" : "Dodaj do swojego Nextcloud",
"Download" : "Pobierz",
"Download %s" : "Pobierz %s",
- "Direct link" : "Bezpośredni link"
+ "Direct link" : "Bezpośredni link",
+ "Upload files to %s" : "Prześlij pliki do %s",
+ "Select or drop files" : "Wybierz i upuść pliki",
+ "Uploading files…" : "Wysyłanie plików...",
+ "Uploaded files:" : "Wysłane pliki:",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Publicznie udostępniony plik lub katalog został <strong>pobrany</strong>",
+ "You received a new remote share %2$s from %1$s" : "Otrzymałeś nowy udział zdalny %2$s z %1$s",
+ "You received a new remote share from %s" : "Otrzymałeś nowy zdalny udział z %s",
+ "%1$s accepted remote share %2$s" : "%1$s zaakceptował zdalny udział %2$s",
+ "%1$s declined remote share %2$s" : "%1$s odrzucił zdalny udział %2$s",
+ "%1$s unshared %2$s from you" : "%1$s zakończył udostępnianie Ci %2$s",
+ "Public shared folder %1$s was downloaded" : "Udostępniony publicznie folder %1$s został pobrany",
+ "Public shared file %1$s was downloaded" : "Udostępniony publicznie plik %1$s został pobrany",
+ "%2$s shared %1$s with %3$s" : "%2$s udostępnił %1$s użytkownikowi %3$s",
+ "You removed the share of %2$s for %1$s" : "Zakończyłeś udostępnianie %2$s użytkownikowi %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s zakończył udostępnianie %3$s użytkownikowi %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s udostępnił %1$s grupie %3$s",
+ "%2$s shared %1$s via link" : "%2$s udostępnił %1$s poprzez łącze",
+ "You shared %1$s via link" : "Udostępniasz %1$s przez link",
+ "Your public link for %1$s expired" : "Twoje publiczne łącze do %1$s wygasło",
+ "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
+ "Shared with %2$s" : "Współdzielone z %2$s",
+ "Shared with %3$s by %2$s" : "Udostępniono użytkownikowi %3$s przez %2$s",
+ "Shared with group %2$s" : "Udostępniono grupie %2$s",
+ "Shared with group %3$s by %2$s" : "Udostępniono grupie %3$s przez użytkownika %2$s",
+ "Shared via link by %2$s" : "Udostępniono za pomocą łącza przez użytkownika %2$s",
+ "Shared via public link" : "Udostępniono przez publiczne łącze",
+ "%2$s removed public link" : "%2$s usunął publiczne łącze",
+ "Public link expired" : "Link publiczny wygasł",
+ "Shared by %2$s" : "Udostępniane przez %2$s",
+ "Shares" : "Udziały"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index 6190871b16f..955222647b3 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -1,53 +1,166 @@
{ "translations": {
- "Server to server sharing is not enabled on this server" : "Współdzielenie między serwerami nie jest uruchomione na tym serwerze",
- "The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.",
- "Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL",
- "Could not authenticate to remote share, password might be wrong" : "Nie można zalogować do zdalnego zasobu, hasło może być niepoprawne",
- "Storage not valid" : "Zasób nie jest prawidłowy",
- "Couldn't add remote share" : "Nie można dodać zdalnego folderu",
"Shared with you" : "Współdzielony z Tobą",
"Shared with others" : "Współdzielony z innymi",
"Shared by link" : "Współdzielony linkiem",
"Nothing shared with you yet" : "Nie masz jeszcze nic udostępnionego",
"Files and folders others share with you will show up here" : "Pliki i foldery udostępnione Tobie przez innych wyświetlą się tutaj",
"Nothing shared yet" : "Jeszcze nic nie udostępniono",
- "Files and folders you share will show up here" : "Plik i foldery, które udostępniasz, pokażą się tutaj",
+ "Files and folders you share will show up here" : "Pliki i foldery, które udostępniasz, pokażą się tutaj",
"No shared links" : "Brak udostępnionych odnośników",
- "Files and folders you share by link will show up here" : "Plik i foldery, które udostępniasz, pokażą się tutaj",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Czy chcesz dodać udział zdalny {name} od {owner}@{remote}?",
- "Remote share" : "Zdalny zasób",
- "Remote share password" : "Hasło do zdalnego zasobu",
- "Cancel" : "Anuluj",
- "Add remote share" : "Dodaj zdalny zasób",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nie znaleziono instalacji ownCloud (w wersji 7 lub nowszej) na {remote}",
- "Invalid ownCloud url" : "Błędny adres URL",
+ "Files and folders you share by link will show up here" : "Pliki i foldery, które udostępniasz, pokażą się tutaj",
+ "You can upload into this folder" : "Możesz przesłać do tego folderu",
+ "No compatible server found at {remote}" : "Nie znaleziono kompatybilnego serwera na {remote}",
+ "Invalid server URL" : "Błędny adres serwera",
+ "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku do publicznego Nextcloud",
+ "Share" : "Udostępnij",
+ "No expiration date set" : "Nie ustawiono daty wygaśnięcia",
"Shared by" : "Udostępniane przez",
"Sharing" : "Udostępnianie",
+ "File shares" : "Udziały",
+ "Downloaded via public link" : "Pobierane poprzez link publiczny",
+ "Downloaded by %1$s" : "Pobierane przez %1$s",
+ "Downloaded by {email}" : "Pobierane przez {email}",
+ "%1$s downloaded via public link" : "%1$s pobierane za pośrednictwem łącza publicznego",
+ "{file} downloaded via public link" : "{file} pobierane za pośrednictwem łącza publicznego",
+ "%1$s downloaded %2$s" : "%1$s pobierane %2$s",
+ "{email} downloaded {file}" : "{email} pobierane {file}",
+ "Shared with group %1$s" : "Udostępnione grupie %1$s",
+ "Shared with group {group}" : "Udostępnione grupie {group}",
+ "Removed share for group %1$s" : "Zakończono udostępnianie grupie %1$s",
+ "Removed share for group {group}" : "Zakończono udostępnianie grupie {group}",
+ "%2$s shared with group %1$s" : "%2$s jest udostępniane grupie %1$s",
+ "{actor} shared with group {group}" : "{actor} udostępnił grupie {group}",
+ "%2$s removed share for group %1$s" : "%2$s zakończył udostępnianie grupie %1$s",
+ "{actor} removed share for group {group}" : "{actor} zakończył udostępnianie grupie {group}",
+ "You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
+ "You shared {file} with group {group}" : "Udostępniasz {file} grupie {group}",
+ "You removed group %2$s from %1$s" : "Usunąłeś grupę %2$s z %1$s",
+ "You removed group {group} from {file}" : "Usunąłeś grupę {group} z {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s udostępnił %1$s grupie %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} udostępnił {file} grupie {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s usunął grupę %2$s z %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} usunął grupę {group} z {file}",
+ "Shared as public link" : "Udostępnione jako publiczny link",
+ "Removed public link" : "Usunięto link publiczny",
+ "%1$s shared as public link" : "%1$s udostępnione jako publiczny link",
+ "{actor} shared as public link" : "{actor} udostępniony jako publiczny link",
+ "%1$s removed public link" : "%1$s usunąłeś publiczny link",
+ "{actor} removed public link" : "{actor} usunął publiczny link",
+ "You shared %1$s as public link" : "Udostępniasz %1$s jako publiczny link",
+ "You shared {file} as public link" : "Udostępniasz {file} jako publiczny link",
+ "You removed public link for %1$s" : "Usuwasz link publiczny dla %1$s",
+ "You removed public link for {file}" : "Usuwasz link publiczny dla {file}",
+ "%2$s shared %1$s as public link" : "%2$s udostępnił %1$s jako publiczne łącze",
+ "{actor} shared {file} as public link" : "{actor} udostępnił {file} jako publiczne łącze",
+ "%2$s removed public link for %1$s" : "%2$s usunął publiczne łącze do %1$s",
+ "{actor} removed public link for {file}" : "{actor} usunął publiczne łącze do {file}",
+ "%1$s accepted the remote share" : "%1$s zaakceptował zdalny udział",
+ "{user} accepted the remote share" : "{user} zaakceptował zdalny udział",
+ "%1$s declined the remote share" : "%1$s odrzucił zdalny udział",
+ "{user} declined the remote share" : "{user} odrzucił zdalny udział",
+ "You received a new remote share %1$s from %2$s" : "Otrzymałeś nowy zdalny udział %1$s od użytkownika %2$s",
+ "You received a new remote share {file} from {user}" : "Otrzymałeś nowy zdalny udział {file} od użytkownika {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s zaakceptował zdalny udział %1$s",
+ "{user} accepted the remote share of {file}" : "{user} zaakceptował zdalny udział {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s odrzucił zdalny udział %1$s",
+ "{user} declined the remote share of {file}" : "{user} odrzucił zadalny udział {file}",
+ "%2$s unshared %1$s from you" : "%2$s przestał ci udostępniać %1$s",
+ "{user} unshared {file} from you" : "{user} przestał ci udostępniać {file}",
+ "Shared with %1$s" : "Udostępnione %1$s",
+ "Shared with {user}" : "Udostępnione użytkownikowi {user}",
+ "Removed share for %1$s" : "Zakończono udostępnianie użytkownikowi %1$s",
+ "Removed share for {user}" : "Zakończono udostępnianie użytkownikowi {user}",
+ "%2$s shared with %1$s" : "%2$s udostępnia użytkownikowi %1$s",
+ "{actor} shared with {user}" : "{actor} udostępnia użytkownikowi {user}",
+ "%2$s removed share for %1$s" : "%2$s usuwa udostępnienie dla użytkownika %1$s",
+ "{actor} removed share for {user}" : "{actor} usuwa udostępnienie dla użytkownika {user}",
+ "Shared by %1$s" : "Udostępnione przez użytkownika %1$s",
+ "Shared by {actor}" : "Udostępnione przez użytkownika {actor}",
+ "%1$s removed share" : "%1$s usunął udostępnienie",
+ "{actor} removed share" : "{actor} usunął udostępnienie",
+ "You shared %1$s with %2$s" : "Współdzielisz %1$s z %2$s",
+ "You shared {file} with {user}" : "Współdzielisz {file} z {user}",
+ "You removed %2$s from %1$s" : "Usunąłeś użytkownika %2$s z %1$s",
+ "You removed {user} from {file}" : "Usunąłeś użytkownika {user} z {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s udostępnił %1$s użytkownikowi %2$s",
+ "{actor} removed {user} from {file}" : "{actor} usunął użytkownika {user} z {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s usunął użytkownika %2$s z %1$s",
+ "%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
+ "{actor} shared {file} with you" : "{actor} udostępnił ci {file}",
+ "%2$s removed you from %1$s" : "%2$s usunął cię z %1$s",
+ "{actor} removed you from {file}" : "{actor} usunął cie z {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Plik lub folder udostępniony za pomocą maila lub publicznego łącza został <strong>pobrany</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Plik lub folder został udostępniony z <strong>innego serwera</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Plik lub folder stał się <strong>współdzielony</strong>",
+ "Wrong share ID, share doesn't exist" : "Złe ID udziału, udział nie istnieje",
+ "could not delete share" : "nie można usunąć udział",
+ "Could not delete share" : "Nie można usunąć udział",
+ "Please specify a file or folder path" : "Proszę podać pliku lub ścieżkę do folderu",
+ "Wrong path, file/folder doesn't exist" : "Ścieżka nieprawidłowa, plik/folder nie istnieje",
+ "Could not create share" : "Nie można utworzyć udział",
+ "invalid permissions" : "nieprawidłowe uprawnienia",
+ "Please specify a valid user" : "Proszę podać poprawnego użytkownika",
+ "Group sharing is disabled by the administrator" : "Udostępnianie grupy zostało wyłączone przez administratora",
+ "Please specify a valid group" : "Proszę podać prawidłową grupę",
"Public link sharing is disabled by the administrator" : "Udostępnianie linków publicznych zostało zablokowane przez twojego administratora",
"Public upload disabled by the administrator" : "Publiczne wczytywanie zostało zablokowane przez twojego administratora",
"Public upload is only possible for publicly shared folders" : "Publiczne wczytywanie jest możliwe wyłącznie do katalogów publicznych",
- "A file or folder has been <strong>shared</strong>" : "Plik lub folder stał się <strong>współdzielony</strong>",
- "You shared %1$s with %2$s" : "Współdzielisz %1$s z %2$s",
- "You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
- "You shared %1$s via link" : "Udostępniasz %1$s przez link",
- "%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
- "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
- "Shares" : "Udziały",
+ "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "Udostępnienie %s nie powiodło się ponieważ backend nie zezwala na udziały typu %s",
+ "Unknown share type" : "Nieznany typ udziału",
+ "Not a directory" : "Nie jest katalogiem",
+ "Could not lock path" : "Nie udało się zablokować ścieżki",
+ "Wrong or no update parameter given" : "Brakujący lub błędny parametr aktualizacji",
+ "Can't change permissions for public share links" : "Nie można zmienić uprawnień dla publicznych udziałów",
+ "Cannot increase permissions" : "Nie można zwiększyć uprawnień",
+ "%s is publicly shared" : "%s jest publicznie dostępny",
+ "Share API is disabled" : "API udostępniania jest wyłączone",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
"The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.",
"Password" : "Hasło",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Name" : "Nazwa",
"Share time" : "Czas współdzielenia",
+ "Expiration date" : "Data wygaśnięcia",
"Sorry, this link doesn’t seem to work anymore." : "Przepraszamy ale wygląda na to, że ten link już nie działa.",
"Reasons might be:" : "Możliwe powody:",
"the item was removed" : "element został usunięty",
"the link expired" : "link wygasł",
"sharing is disabled" : "udostępnianie jest wyłączone",
"For more info, please ask the person who sent this link." : "Aby uzyskać więcej informacji proszę poprosić osobę, która wysłał ten link.",
- "Add to your ownCloud" : "Dodaj do twojego ownCloud",
+ "Add to your Nextcloud" : "Dodaj do swojego Nextcloud",
"Download" : "Pobierz",
"Download %s" : "Pobierz %s",
- "Direct link" : "Bezpośredni link"
+ "Direct link" : "Bezpośredni link",
+ "Upload files to %s" : "Prześlij pliki do %s",
+ "Select or drop files" : "Wybierz i upuść pliki",
+ "Uploading files…" : "Wysyłanie plików...",
+ "Uploaded files:" : "Wysłane pliki:",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Publicznie udostępniony plik lub katalog został <strong>pobrany</strong>",
+ "You received a new remote share %2$s from %1$s" : "Otrzymałeś nowy udział zdalny %2$s z %1$s",
+ "You received a new remote share from %s" : "Otrzymałeś nowy zdalny udział z %s",
+ "%1$s accepted remote share %2$s" : "%1$s zaakceptował zdalny udział %2$s",
+ "%1$s declined remote share %2$s" : "%1$s odrzucił zdalny udział %2$s",
+ "%1$s unshared %2$s from you" : "%1$s zakończył udostępnianie Ci %2$s",
+ "Public shared folder %1$s was downloaded" : "Udostępniony publicznie folder %1$s został pobrany",
+ "Public shared file %1$s was downloaded" : "Udostępniony publicznie plik %1$s został pobrany",
+ "%2$s shared %1$s with %3$s" : "%2$s udostępnił %1$s użytkownikowi %3$s",
+ "You removed the share of %2$s for %1$s" : "Zakończyłeś udostępnianie %2$s użytkownikowi %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s zakończył udostępnianie %3$s użytkownikowi %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s udostępnił %1$s grupie %3$s",
+ "%2$s shared %1$s via link" : "%2$s udostępnił %1$s poprzez łącze",
+ "You shared %1$s via link" : "Udostępniasz %1$s przez link",
+ "Your public link for %1$s expired" : "Twoje publiczne łącze do %1$s wygasło",
+ "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
+ "Shared with %2$s" : "Współdzielone z %2$s",
+ "Shared with %3$s by %2$s" : "Udostępniono użytkownikowi %3$s przez %2$s",
+ "Shared with group %2$s" : "Udostępniono grupie %2$s",
+ "Shared with group %3$s by %2$s" : "Udostępniono grupie %3$s przez użytkownika %2$s",
+ "Shared via link by %2$s" : "Udostępniono za pomocą łącza przez użytkownika %2$s",
+ "Shared via public link" : "Udostępniono przez publiczne łącze",
+ "%2$s removed public link" : "%2$s usunął publiczne łącze",
+ "Public link expired" : "Link publiczny wygasł",
+ "Shared by %2$s" : "Udostępniane przez %2$s",
+ "Shares" : "Udziały"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index fd9ccd7259d..6fe2b4ce50b 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -173,36 +173,6 @@ OC.L10N.register(
"Public link expired" : "O link público expirou",
"Public link of %2$s expired" : "O link público de %2$s expirou",
"Shared by %2$s" : "Compartilhado por %2$s",
- "Shares" : "Compartilhamentos",
- "Server to server sharing is not enabled on this server" : "Servidor de compartilhamento não esta habilitado neste servidor",
- "The mountpoint name contains invalid characters." : "O nome de mountpoint contém caracteres inválidos",
- "Not allowed to create a federated share with the same user server" : "Não é permitido criar um compartilhamento federado com o mesmo nome do servidor",
- "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não-confiável",
- "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar no compartilhamento remoto, a senha pode estar errada",
- "Storage not valid" : "Armazenamento inválido",
- "Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto",
- "Federated sharing" : "Compartilhamento federado",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voce deseja adicionar o compartilhamento remoto {name} de {owner}@{remote}?",
- "Remote share" : "Compartilhamento remoto",
- "Remote share password" : "Senha do compartilhamento remoto",
- "Cancel" : "Cancelar",
- "Add remote share" : "Adicionar compartilhamento remoto",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nenhum instalação (7 ou maior) encontrada em {remote}",
- "Invalid ownCloud url" : "URL invalida",
- "You received \"/%2$s\" as a remote share from %1$s" : "Voce recebeu \"/%2$s\" como um compartilhamento remoto de %1$s",
- "Accept" : "Aceitar",
- "Decline" : "Rejeitar",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo pelo meu #ID federado, veja %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo pelo meu #ID federado",
- "Federated Cloud Sharing" : "Compartilhamento cloud federado",
- "Open documentation" : "Abrir documentação",
- "Allow users on this server to send shares to other servers" : "Permitir que usuários deste servidor enviem compartilhamentos para outros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir que usuários deste servidor recebem compartilhamentos de outros servidores",
- "Federated Cloud" : "Cloud Federado",
- "Your Federated Cloud ID:" : "Seu ID Federado Cloud",
- "Share it:" : "Compartilhe isso:",
- "Add to your website" : "Adicionar ao seu website",
- "Share with me via Nextcloud" : "Compartilhe comigo via Nextcloud",
- "HTML Code:" : "Código HTML:"
+ "Shares" : "Compartilhamentos"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 832e12c2356..59536fa6e15 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -171,36 +171,6 @@
"Public link expired" : "O link público expirou",
"Public link of %2$s expired" : "O link público de %2$s expirou",
"Shared by %2$s" : "Compartilhado por %2$s",
- "Shares" : "Compartilhamentos",
- "Server to server sharing is not enabled on this server" : "Servidor de compartilhamento não esta habilitado neste servidor",
- "The mountpoint name contains invalid characters." : "O nome de mountpoint contém caracteres inválidos",
- "Not allowed to create a federated share with the same user server" : "Não é permitido criar um compartilhamento federado com o mesmo nome do servidor",
- "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não-confiável",
- "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar no compartilhamento remoto, a senha pode estar errada",
- "Storage not valid" : "Armazenamento inválido",
- "Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto",
- "Federated sharing" : "Compartilhamento federado",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voce deseja adicionar o compartilhamento remoto {name} de {owner}@{remote}?",
- "Remote share" : "Compartilhamento remoto",
- "Remote share password" : "Senha do compartilhamento remoto",
- "Cancel" : "Cancelar",
- "Add remote share" : "Adicionar compartilhamento remoto",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nenhum instalação (7 ou maior) encontrada em {remote}",
- "Invalid ownCloud url" : "URL invalida",
- "You received \"/%2$s\" as a remote share from %1$s" : "Voce recebeu \"/%2$s\" como um compartilhamento remoto de %1$s",
- "Accept" : "Aceitar",
- "Decline" : "Rejeitar",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo pelo meu #ID federado, veja %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo pelo meu #ID federado",
- "Federated Cloud Sharing" : "Compartilhamento cloud federado",
- "Open documentation" : "Abrir documentação",
- "Allow users on this server to send shares to other servers" : "Permitir que usuários deste servidor enviem compartilhamentos para outros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir que usuários deste servidor recebem compartilhamentos de outros servidores",
- "Federated Cloud" : "Cloud Federado",
- "Your Federated Cloud ID:" : "Seu ID Federado Cloud",
- "Share it:" : "Compartilhe isso:",
- "Add to your website" : "Adicionar ao seu website",
- "Share with me via Nextcloud" : "Compartilhe comigo via Nextcloud",
- "HTML Code:" : "Código HTML:"
+ "Shares" : "Compartilhamentos"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 239178f6df6..e12622cd00e 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -10,56 +10,90 @@ OC.L10N.register(
"Files and folders you share will show up here" : "Здесь появятся файлы и каталоги, которыми вы поделитесь",
"No shared links" : "Нет общих ссылок",
"Files and folders you share by link will show up here" : "Здесь появятся файлы и каталоги, ссылкой на которые вы поделитесь",
- "You can upload into this folder" : "Вы можете загружать в эту папку",
+ "You can upload into this folder" : "Вы можете загружать в этот каталог",
"No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}",
"Invalid server URL" : "Неверный URL сервера",
- "Failed to add the public link to your Nextcloud" : "Не получилось добавить публичную ссылку на ваш Nextcloud",
- "Share" : "Открыть доступ",
+ "Failed to add the public link to your Nextcloud" : "Не получилось добавить общедоступную ссылку в ваш Nextcloud",
+ "Share" : "Поделиться",
"No expiration date set" : "Дата истечения не установлена",
"Shared by" : "Поделился",
"Sharing" : "Общий доступ",
- "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
- "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
- "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
- "You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
- "%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
- "%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
- "%1$s unshared %2$s from you" : "%1$s закрыл для вас доступ к %2$s ",
- "Public shared folder %1$s was downloaded" : "Общий каталог %1$s был скачан",
- "Public shared file %1$s was downloaded" : "Общий файл %1$s, был скачан",
- "You shared %1$s with %2$s" : "Вы поделились %1$s с %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s поделился %1$s с %3$s",
- "You removed the share of %2$s for %1$s" : "Вы удалили общий доступ к %2$s для %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s удалил общий доступ к %3$s для %1$s",
+ "File shares" : "Файловые ресурсы общего доступа",
+ "Downloaded via public link" : "Скачано по открытой ссылке",
+ "Downloaded by %1$s" : "Скачано %1$s",
+ "Downloaded by {email}" : "Скачано {email}",
+ "%1$s downloaded via public link" : "%1$s скачано по общедоступной ссылке",
+ "{file} downloaded via public link" : "{file} скачан по общедоступной ссылке",
+ "%1$s downloaded %2$s" : "%1$s скачан %2$s",
+ "{email} downloaded {file}" : "{email} скачал {file}",
+ "Shared with group %1$s" : "Поделился с группой %1$s",
+ "Shared with group {group}" : "Поделился с группой {group}",
+ "Removed share for group %1$s" : "Закрыт общий доступ для группы %1$s",
+ "Removed share for group {group}" : "Закрыт общий доступ для группы {group}",
+ "%2$s shared with group %1$s" : "%2$s поделился с группой %1$s",
+ "{actor} shared with group {group}" : "{actor} поделился с группой {group}",
+ "%2$s removed share for group %1$s" : "%2$s удалил общий доступ для группы %1$s",
+ "{actor} removed share for group {group}" : "{actor} закрыл общий доступ для группы {group}",
"You shared %1$s with group %2$s" : "Вы поделились %1$s с группой %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s",
- "You removed the share of group %2$s for %1$s" : "Вы удалили общий доступ к группе %2$s для %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s удалил общий доступ к группе %3$s для %1$s",
- "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке",
- "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
- "You removed the public link for %1$s" : "Вы удалили публичную ссылку к %1$s",
- "%2$s removed the public link for %1$s" : "%2$s удалил публичную ссылку к %1$s",
- "Your public link for %1$s expired" : "Срок действия Вашей публичной ссылки к %1$s закончился",
- "The public link of %2$s for %1$s expired" : "Срок действия публичной ссылки к %2$s для %1$s закончился",
+ "You shared {file} with group {group}" : "Вы поделились {file} с группой {group}",
+ "You removed group %2$s from %1$s" : "Вы удалили группу %2$s из %1$s",
+ "You removed group {group} from {file}" : "Вы удалили группу {group} из {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s поделился %1$s с группой %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} поделился {file} с группой {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s удалил группу %2$s из %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} удалил группу {group} из {file}",
+ "Shared as public link" : "Поделился общедоступной ссылкой",
+ "Removed public link" : "Удалена общедоступная ссылка",
+ "%1$s shared as public link" : "%1$s поделился общедоступной ссылкой",
+ "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой",
+ "%1$s removed public link" : "%1$s удалил общедоступной сслыку",
+ "{actor} removed public link" : "{actor} удалил общедоступной ссылку",
+ "You shared %1$s as public link" : "Вы поделись %1$s в виде общедоступной ссылки",
+ "You shared {file} as public link" : "Вы поделись {file} в виде общедоступной ссылки",
+ "You removed public link for %1$s" : "Вы удалили общедоступную ссылку к %1$s",
+ "You removed public link for {file}" : "Вы удалили общедоступную ссылку к {file}",
+ "%2$s shared %1$s as public link" : "%2$s поделился %1$s в виде общедоступной ссылки",
+ "{actor} shared {file} as public link" : "{actor} поделился {file} в виде общедоступной ссылки",
+ "%2$s removed public link for %1$s" : "%2$s удалил общедоступную ссылку к %1$s",
+ "{actor} removed public link for {file}" : "{actor} удалил общедоступную ссылку к {file}",
+ "%1$s accepted the remote share" : "%1$s принял удаленный общий ресурс",
+ "{user} accepted the remote share" : "{user} принял удаленный общий ресурс",
+ "%1$s declined the remote share" : "%1$s отклонил удаленный общий ресурс",
+ "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс",
+ "You received a new remote share %1$s from %2$s" : "Вы получили новый удаленный общий ресурс %1$s от %2$s",
+ "You received a new remote share {file} from {user}" : "Вы получили новый удаленный общий ресурс {file} от {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s принял удаленный общий ресурс %1$s",
+ "{user} accepted the remote share of {file}" : "{user} принял удаленный общий ресурс {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s отклонил удаленный общий ресурс %1$s",
+ "{user} declined the remote share of {file}" : "{user} отклонил удаленный общий ресурс {file}",
+ "%2$s unshared %1$s from you" : "%2$s закрыл для вас доступ к %1$s ",
+ "{user} unshared {file} from you" : "{user} закрыл для вас доступ к {file}",
+ "Shared with %1$s" : "Поделился с %1$s",
+ "Shared with {user}" : "Поделился с {user}",
+ "Removed share for %1$s" : "Закрыт общий доступ для %1$s",
+ "Removed share for {user}" : "Закрыт общий доступ для {user}",
+ "%2$s shared with %1$s" : "%2$s поделился с %1$s",
+ "{actor} shared with {user}" : "{actor} поделился с {user}",
+ "%2$s removed share for %1$s" : "%2$s закрыл общий доступ к %1$s",
+ "{actor} removed share for {user}" : "{actor} закрыл общий доступ для {user}",
+ "Shared by %1$s" : "Поделился через %1$s",
+ "Shared by {actor}" : "Поделился через {actor}",
+ "%1$s removed share" : "%1$s закрыл общий доступ",
+ "{actor} removed share" : "{actor} закрыл общий доступ",
+ "You shared %1$s with %2$s" : "Вы поделились %1$s с %2$s",
+ "You shared {file} with {user}" : "Вы поделились {file} с {user}",
+ "You removed %2$s from %1$s" : "Вы удалили %2$s из %1$s",
+ "You removed {user} from {file}" : "Вы удалили {user} из {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s поделился %1$s с %2$s",
+ "{actor} removed {user} from {file}" : "{actor} удалил {user} из {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s удалил %2$s из %1$s",
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
- "%2$s removed the share for %1$s" : "%2$s удалил общий доступ к %1$s",
- "Downloaded via public link" : "Скачано по открытой ссылке",
- "Shared with %2$s" : "Поделился с %2$s",
- "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s",
- "Removed share for %2$s" : "Удалён общий доступ к %2$s",
- "%2$s removed share for %3$s" : "%2$s удалил общий доступ к %3$s",
- "Shared with group %2$s" : "Поделился с группой %2$s",
- "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s",
- "Removed share of group %2$s" : "Удалён общий доступ к группе %2$s",
- "%2$s removed share of group %3$s" : "%2$s удалил общий доступ к группе %3$s",
- "Shared via link by %2$s" : "Поделился ссылкой %2$s",
- "Shared via public link" : "Поделился открытой ссылкой",
- "Removed public link" : "Удалена публичная ссылка",
- "%2$s removed public link" : "%2$s удалил публичную ссылку",
- "Public link expired" : "Срок действия публичной ссылки закончился",
- "Public link of %2$s expired" : "Срок действия публичной ссылки к %2$s закончился",
- "Shared by %2$s" : "Поделился %2$s",
- "Downloaded by %2$s" : "Скачано %2$s",
+ "{actor} shared {file} with you" : "{actor} поделился {file} с вами",
+ "%2$s removed you from %1$s" : "%2$s удалил вас из %1$s",
+ "{actor} removed you from {file}" : "{actor} удалил вас из {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были <strong>скачаны</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
+ "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует",
"could not delete share" : "Не удалось удалить общий ресурс",
"Could not delete share" : "Не удалось удалить публикацию",
@@ -81,6 +115,7 @@ OC.L10N.register(
"Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан",
"Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку",
"Cannot increase permissions" : "Нельзя увеличить права",
+ "%s is publicly shared" : "%s опубликован",
"Share API is disabled" : "API общего доступа отключён",
"This share is password-protected" : "Общий ресурс защищен паролем",
"The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.",
@@ -104,36 +139,40 @@ OC.L10N.register(
"Uploading files…" : "Загрузка файлов...",
"Uploaded files:" : "Загруженные файлы:",
"A public shared file or folder was <strong>downloaded</strong>" : "<strong>Скачан</strong> общий файл или каталог",
- "Shares" : "События обмена файлами",
- "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
- "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
- "Not allowed to create a federated share with the same user server" : "Не допускается создание федеративного общего ресурса с тем же сервером пользователя",
- "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
- "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль",
- "Storage not valid" : "Хранилище недоступно",
- "Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
- "Federated sharing" : "Общий доступ из объединенного общего хранилища",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?",
- "Remote share" : "Удаленный общий ресурс",
- "Remote share password" : "Пароль для удаленного общего ресурса",
- "Cancel" : "Отмена",
- "Add remote share" : "Добавить удалённый общий ресурс",
- "No ownCloud installation (7 or higher) found at {remote}" : "На удаленном ресурсе {remote} не установлен ownCloud версии 7 или выше",
- "Invalid ownCloud url" : "Неверный адрес Nextcloud",
- "You received \"/%2$s\" as a remote share from %1$s" : "Вы получили \"/%2$s\" в качестве удалённого ресурса из %1$s",
- "Accept" : "Принять",
- "Decline" : "Отклонить",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ, смотрите %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ",
- "Federated Cloud Sharing" : "Объединение облачных хранилищ",
- "Open documentation" : "Открыть документацию",
- "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
- "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ",
- "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
- "Share it:" : "Поделиться:",
- "Add to your website" : "Добавить к себе на сайт",
- "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud",
- "HTML Code:" : "HTML код:"
+ "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
+ "You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
+ "%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
+ "%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
+ "%1$s unshared %2$s from you" : "%1$s закрыл для вас доступ к %2$s ",
+ "Public shared folder %1$s was downloaded" : "Общий каталог %1$s был скачан",
+ "Public shared file %1$s was downloaded" : "Общий файл %1$s, был скачан",
+ "%2$s shared %1$s with %3$s" : "%2$s поделился %1$s с %3$s",
+ "You removed the share of %2$s for %1$s" : "Вы удалили общий доступ к %2$s для %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s удалил общий доступ к %3$s для %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s",
+ "You removed the share of group %2$s for %1$s" : "Вы удалили общий доступ к группе %2$s для %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s удалил общий доступ к группе %3$s для %1$s",
+ "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке",
+ "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
+ "You removed the public link for %1$s" : "Вы удалили общедоступную ссылку к %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s удалил общедоступную ссылку к %1$s",
+ "Your public link for %1$s expired" : "Срок действия Вашей общедоступной ссылки к %1$s закончился",
+ "The public link of %2$s for %1$s expired" : "Срок действия общедоступной ссылки к %2$s для %1$s закончился",
+ "%2$s removed the share for %1$s" : "%2$s удалил общий доступ к %1$s",
+ "Shared with %2$s" : "Поделился с %2$s",
+ "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s",
+ "Removed share for %2$s" : "Удалён общий доступ к %2$s",
+ "%2$s removed share for %3$s" : "%2$s удалил общий доступ к %3$s",
+ "Shared with group %2$s" : "Поделился с группой %2$s",
+ "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s",
+ "Removed share of group %2$s" : "Удалён общий доступ к группе %2$s",
+ "%2$s removed share of group %3$s" : "%2$s удалил общий доступ к группе %3$s",
+ "Shared via link by %2$s" : "Поделился ссылкой %2$s",
+ "Shared via public link" : "Поделился открытой ссылкой",
+ "%2$s removed public link" : "%2$s удалил общедоступную ссылку",
+ "Public link expired" : "Срок действия общедоступнной ссылки закончился",
+ "Public link of %2$s expired" : "Срок действия общедоступной ссылки к %2$s закончился",
+ "Shared by %2$s" : "Поделился %2$s",
+ "Shares" : "События обмена файлами"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index 2548e868c70..fe9b1660292 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -8,56 +8,90 @@
"Files and folders you share will show up here" : "Здесь появятся файлы и каталоги, которыми вы поделитесь",
"No shared links" : "Нет общих ссылок",
"Files and folders you share by link will show up here" : "Здесь появятся файлы и каталоги, ссылкой на которые вы поделитесь",
- "You can upload into this folder" : "Вы можете загружать в эту папку",
+ "You can upload into this folder" : "Вы можете загружать в этот каталог",
"No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}",
"Invalid server URL" : "Неверный URL сервера",
- "Failed to add the public link to your Nextcloud" : "Не получилось добавить публичную ссылку на ваш Nextcloud",
- "Share" : "Открыть доступ",
+ "Failed to add the public link to your Nextcloud" : "Не получилось добавить общедоступную ссылку в ваш Nextcloud",
+ "Share" : "Поделиться",
"No expiration date set" : "Дата истечения не установлена",
"Shared by" : "Поделился",
"Sharing" : "Общий доступ",
- "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
- "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
- "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
- "You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
- "%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
- "%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
- "%1$s unshared %2$s from you" : "%1$s закрыл для вас доступ к %2$s ",
- "Public shared folder %1$s was downloaded" : "Общий каталог %1$s был скачан",
- "Public shared file %1$s was downloaded" : "Общий файл %1$s, был скачан",
- "You shared %1$s with %2$s" : "Вы поделились %1$s с %2$s",
- "%2$s shared %1$s with %3$s" : "%2$s поделился %1$s с %3$s",
- "You removed the share of %2$s for %1$s" : "Вы удалили общий доступ к %2$s для %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s удалил общий доступ к %3$s для %1$s",
+ "File shares" : "Файловые ресурсы общего доступа",
+ "Downloaded via public link" : "Скачано по открытой ссылке",
+ "Downloaded by %1$s" : "Скачано %1$s",
+ "Downloaded by {email}" : "Скачано {email}",
+ "%1$s downloaded via public link" : "%1$s скачано по общедоступной ссылке",
+ "{file} downloaded via public link" : "{file} скачан по общедоступной ссылке",
+ "%1$s downloaded %2$s" : "%1$s скачан %2$s",
+ "{email} downloaded {file}" : "{email} скачал {file}",
+ "Shared with group %1$s" : "Поделился с группой %1$s",
+ "Shared with group {group}" : "Поделился с группой {group}",
+ "Removed share for group %1$s" : "Закрыт общий доступ для группы %1$s",
+ "Removed share for group {group}" : "Закрыт общий доступ для группы {group}",
+ "%2$s shared with group %1$s" : "%2$s поделился с группой %1$s",
+ "{actor} shared with group {group}" : "{actor} поделился с группой {group}",
+ "%2$s removed share for group %1$s" : "%2$s удалил общий доступ для группы %1$s",
+ "{actor} removed share for group {group}" : "{actor} закрыл общий доступ для группы {group}",
"You shared %1$s with group %2$s" : "Вы поделились %1$s с группой %2$s",
- "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s",
- "You removed the share of group %2$s for %1$s" : "Вы удалили общий доступ к группе %2$s для %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s удалил общий доступ к группе %3$s для %1$s",
- "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке",
- "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
- "You removed the public link for %1$s" : "Вы удалили публичную ссылку к %1$s",
- "%2$s removed the public link for %1$s" : "%2$s удалил публичную ссылку к %1$s",
- "Your public link for %1$s expired" : "Срок действия Вашей публичной ссылки к %1$s закончился",
- "The public link of %2$s for %1$s expired" : "Срок действия публичной ссылки к %2$s для %1$s закончился",
+ "You shared {file} with group {group}" : "Вы поделились {file} с группой {group}",
+ "You removed group %2$s from %1$s" : "Вы удалили группу %2$s из %1$s",
+ "You removed group {group} from {file}" : "Вы удалили группу {group} из {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s поделился %1$s с группой %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} поделился {file} с группой {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s удалил группу %2$s из %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} удалил группу {group} из {file}",
+ "Shared as public link" : "Поделился общедоступной ссылкой",
+ "Removed public link" : "Удалена общедоступная ссылка",
+ "%1$s shared as public link" : "%1$s поделился общедоступной ссылкой",
+ "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой",
+ "%1$s removed public link" : "%1$s удалил общедоступной сслыку",
+ "{actor} removed public link" : "{actor} удалил общедоступной ссылку",
+ "You shared %1$s as public link" : "Вы поделись %1$s в виде общедоступной ссылки",
+ "You shared {file} as public link" : "Вы поделись {file} в виде общедоступной ссылки",
+ "You removed public link for %1$s" : "Вы удалили общедоступную ссылку к %1$s",
+ "You removed public link for {file}" : "Вы удалили общедоступную ссылку к {file}",
+ "%2$s shared %1$s as public link" : "%2$s поделился %1$s в виде общедоступной ссылки",
+ "{actor} shared {file} as public link" : "{actor} поделился {file} в виде общедоступной ссылки",
+ "%2$s removed public link for %1$s" : "%2$s удалил общедоступную ссылку к %1$s",
+ "{actor} removed public link for {file}" : "{actor} удалил общедоступную ссылку к {file}",
+ "%1$s accepted the remote share" : "%1$s принял удаленный общий ресурс",
+ "{user} accepted the remote share" : "{user} принял удаленный общий ресурс",
+ "%1$s declined the remote share" : "%1$s отклонил удаленный общий ресурс",
+ "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс",
+ "You received a new remote share %1$s from %2$s" : "Вы получили новый удаленный общий ресурс %1$s от %2$s",
+ "You received a new remote share {file} from {user}" : "Вы получили новый удаленный общий ресурс {file} от {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s принял удаленный общий ресурс %1$s",
+ "{user} accepted the remote share of {file}" : "{user} принял удаленный общий ресурс {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s отклонил удаленный общий ресурс %1$s",
+ "{user} declined the remote share of {file}" : "{user} отклонил удаленный общий ресурс {file}",
+ "%2$s unshared %1$s from you" : "%2$s закрыл для вас доступ к %1$s ",
+ "{user} unshared {file} from you" : "{user} закрыл для вас доступ к {file}",
+ "Shared with %1$s" : "Поделился с %1$s",
+ "Shared with {user}" : "Поделился с {user}",
+ "Removed share for %1$s" : "Закрыт общий доступ для %1$s",
+ "Removed share for {user}" : "Закрыт общий доступ для {user}",
+ "%2$s shared with %1$s" : "%2$s поделился с %1$s",
+ "{actor} shared with {user}" : "{actor} поделился с {user}",
+ "%2$s removed share for %1$s" : "%2$s закрыл общий доступ к %1$s",
+ "{actor} removed share for {user}" : "{actor} закрыл общий доступ для {user}",
+ "Shared by %1$s" : "Поделился через %1$s",
+ "Shared by {actor}" : "Поделился через {actor}",
+ "%1$s removed share" : "%1$s закрыл общий доступ",
+ "{actor} removed share" : "{actor} закрыл общий доступ",
+ "You shared %1$s with %2$s" : "Вы поделились %1$s с %2$s",
+ "You shared {file} with {user}" : "Вы поделились {file} с {user}",
+ "You removed %2$s from %1$s" : "Вы удалили %2$s из %1$s",
+ "You removed {user} from {file}" : "Вы удалили {user} из {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s поделился %1$s с %2$s",
+ "{actor} removed {user} from {file}" : "{actor} удалил {user} из {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s удалил %2$s из %1$s",
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
- "%2$s removed the share for %1$s" : "%2$s удалил общий доступ к %1$s",
- "Downloaded via public link" : "Скачано по открытой ссылке",
- "Shared with %2$s" : "Поделился с %2$s",
- "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s",
- "Removed share for %2$s" : "Удалён общий доступ к %2$s",
- "%2$s removed share for %3$s" : "%2$s удалил общий доступ к %3$s",
- "Shared with group %2$s" : "Поделился с группой %2$s",
- "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s",
- "Removed share of group %2$s" : "Удалён общий доступ к группе %2$s",
- "%2$s removed share of group %3$s" : "%2$s удалил общий доступ к группе %3$s",
- "Shared via link by %2$s" : "Поделился ссылкой %2$s",
- "Shared via public link" : "Поделился открытой ссылкой",
- "Removed public link" : "Удалена публичная ссылка",
- "%2$s removed public link" : "%2$s удалил публичную ссылку",
- "Public link expired" : "Срок действия публичной ссылки закончился",
- "Public link of %2$s expired" : "Срок действия публичной ссылки к %2$s закончился",
- "Shared by %2$s" : "Поделился %2$s",
- "Downloaded by %2$s" : "Скачано %2$s",
+ "{actor} shared {file} with you" : "{actor} поделился {file} с вами",
+ "%2$s removed you from %1$s" : "%2$s удалил вас из %1$s",
+ "{actor} removed you from {file}" : "{actor} удалил вас из {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были <strong>скачаны</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
+ "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует",
"could not delete share" : "Не удалось удалить общий ресурс",
"Could not delete share" : "Не удалось удалить публикацию",
@@ -79,6 +113,7 @@
"Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан",
"Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку",
"Cannot increase permissions" : "Нельзя увеличить права",
+ "%s is publicly shared" : "%s опубликован",
"Share API is disabled" : "API общего доступа отключён",
"This share is password-protected" : "Общий ресурс защищен паролем",
"The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.",
@@ -102,36 +137,40 @@
"Uploading files…" : "Загрузка файлов...",
"Uploaded files:" : "Загруженные файлы:",
"A public shared file or folder was <strong>downloaded</strong>" : "<strong>Скачан</strong> общий файл или каталог",
- "Shares" : "События обмена файлами",
- "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа",
- "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.",
- "Not allowed to create a federated share with the same user server" : "Не допускается создание федеративного общего ресурса с тем же сервером пользователя",
- "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL",
- "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль",
- "Storage not valid" : "Хранилище недоступно",
- "Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс",
- "Federated sharing" : "Общий доступ из объединенного общего хранилища",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?",
- "Remote share" : "Удаленный общий ресурс",
- "Remote share password" : "Пароль для удаленного общего ресурса",
- "Cancel" : "Отмена",
- "Add remote share" : "Добавить удалённый общий ресурс",
- "No ownCloud installation (7 or higher) found at {remote}" : "На удаленном ресурсе {remote} не установлен ownCloud версии 7 или выше",
- "Invalid ownCloud url" : "Неверный адрес Nextcloud",
- "You received \"/%2$s\" as a remote share from %1$s" : "Вы получили \"/%2$s\" в качестве удалённого ресурса из %1$s",
- "Accept" : "Принять",
- "Decline" : "Отклонить",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ, смотрите %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в объединении облачных хранилищ",
- "Federated Cloud Sharing" : "Объединение облачных хранилищ",
- "Open documentation" : "Открыть документацию",
- "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
- "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ",
- "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
- "Share it:" : "Поделиться:",
- "Add to your website" : "Добавить к себе на сайт",
- "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud",
- "HTML Code:" : "HTML код:"
+ "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
+ "You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
+ "%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
+ "%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
+ "%1$s unshared %2$s from you" : "%1$s закрыл для вас доступ к %2$s ",
+ "Public shared folder %1$s was downloaded" : "Общий каталог %1$s был скачан",
+ "Public shared file %1$s was downloaded" : "Общий файл %1$s, был скачан",
+ "%2$s shared %1$s with %3$s" : "%2$s поделился %1$s с %3$s",
+ "You removed the share of %2$s for %1$s" : "Вы удалили общий доступ к %2$s для %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s удалил общий доступ к %3$s для %1$s",
+ "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s",
+ "You removed the share of group %2$s for %1$s" : "Вы удалили общий доступ к группе %2$s для %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s удалил общий доступ к группе %3$s для %1$s",
+ "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке",
+ "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
+ "You removed the public link for %1$s" : "Вы удалили общедоступную ссылку к %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s удалил общедоступную ссылку к %1$s",
+ "Your public link for %1$s expired" : "Срок действия Вашей общедоступной ссылки к %1$s закончился",
+ "The public link of %2$s for %1$s expired" : "Срок действия общедоступной ссылки к %2$s для %1$s закончился",
+ "%2$s removed the share for %1$s" : "%2$s удалил общий доступ к %1$s",
+ "Shared with %2$s" : "Поделился с %2$s",
+ "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s",
+ "Removed share for %2$s" : "Удалён общий доступ к %2$s",
+ "%2$s removed share for %3$s" : "%2$s удалил общий доступ к %3$s",
+ "Shared with group %2$s" : "Поделился с группой %2$s",
+ "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s",
+ "Removed share of group %2$s" : "Удалён общий доступ к группе %2$s",
+ "%2$s removed share of group %3$s" : "%2$s удалил общий доступ к группе %3$s",
+ "Shared via link by %2$s" : "Поделился ссылкой %2$s",
+ "Shared via public link" : "Поделился открытой ссылкой",
+ "%2$s removed public link" : "%2$s удалил общедоступную ссылку",
+ "Public link expired" : "Срок действия общедоступнной ссылки закончился",
+ "Public link of %2$s expired" : "Срок действия общедоступной ссылки к %2$s закончился",
+ "Shared by %2$s" : "Поделился %2$s",
+ "Shares" : "События обмена файлами"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js
index 54544b2a68e..b4872abb55b 100644
--- a/apps/files_sharing/l10n/sq.js
+++ b/apps/files_sharing/l10n/sq.js
@@ -11,12 +11,96 @@ OC.L10N.register(
"No shared links" : "Pa lidhje ndarjesh",
"Files and folders you share by link will show up here" : "Këtu do të shfaqen kartelat dhe dosjet që ndani përmes lidhjesh",
"You can upload into this folder" : "Mund të ngarkoni te kjo dosje",
+ "No compatible server found at {remote}" : "Asnjë server i pajtueshëm nuk është gjetur tek { }",
+ "Invalid server URL" : "Server i pavlefshëm URL",
+ "Failed to add the public link to your Nextcloud" : "Nuk arritët të shtoni ndërlidhjen publike tek Nextcloud juaj",
+ "Share" : "shpërndaj",
+ "No expiration date set" : "Nuk është vendosur data e përfundimit",
"Shared by" : "Ndarë nga",
"Sharing" : "Ndarje",
+ "File shares" : "Ndarja e skedarëve",
+ "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
+ "Downloaded by %1$s" : "Shkarkuar nga %1$s",
+ "Downloaded by {email}" : "Shkarkuar nga {email}",
+ "%1$s downloaded via public link" : "%1$s shkarkuar nga një lidhje publike",
+ "{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike",
+ "%1$s downloaded %2$s" : "%1$s shkarkuar nga %2$s",
+ "{email} downloaded {file}" : "{email} shkarkuar {file}",
+ "Shared with group %1$s" : "U nda me grupin %1$s",
+ "Shared with group {group}" : "U nda me grupin {group}",
+ "Removed share for group %1$s" : "Hoqi ndarjen për grupin %1$s",
+ "Removed share for group {group}" : "Hoqi ndarjen për grupin {group}",
+ "%2$s shared with group %1$s" : "%2$s u nda e grupin %1$s",
+ "{actor} shared with group {group}" : "{actor} u nda me grupin {group}",
+ "%2$s removed share for group %1$s" : "%2$s hoqi ndarjen për grupin %1$s",
+ "{actor} removed share for group {group}" : "{actor} hoqi ndarjen për grupin {group}",
+ "You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
+ "You shared {file} with group {group}" : "Ndatë {file} me grupin {group}",
+ "You removed group %2$s from %1$s" : "Hoqët grupin %2$s nga %1$s",
+ "You removed group {group} from {file}" : "Hoqët grupin {group} nga {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s ndau %1$s me grupin %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} ndau {file} me grupin {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s hoqi grupin %2$s nga %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} hoqi grupin {group} nga {file}",
+ "Shared as public link" : "U nda si një lidhje publike",
+ "Removed public link" : "Hoqi lidhje publike",
+ "%1$s shared as public link" : "%1$s u nda si një lidhje publike",
+ "{actor} shared as public link" : "{actor} u nda si një lidhje publike",
+ "%1$s removed public link" : "%1$s hoqi lidhje publike",
+ "{actor} removed public link" : "{actor} hoqi lidhje publike",
+ "You shared %1$s as public link" : "Ndatë %1$s si një lidhje publike",
+ "You shared {file} as public link" : "Ndatë {file} si një lidhje publike",
+ "You removed public link for %1$s" : "Hoqët lidhje publike për %1$s",
+ "You removed public link for {file}" : "Hoqët lidhje publike për {file}",
+ "%2$s shared %1$s as public link" : "%2$s u nda %1$s si një lidhje publike",
+ "{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike",
+ "%2$s removed public link for %1$s" : "%2$s hoqi lidhje publike për %1$s",
+ "{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}",
+ "%1$s accepted the remote share" : "%1$s pranoi ndarjen e largët",
+ "{user} accepted the remote share" : "{user} pranoi ndarjen e largët",
+ "%1$s declined the remote share" : "%1$s hodhi tej ndarjen e largët",
+ "{user} declined the remote share" : "{user} hodhi tej ndarjen e largët",
+ "You received a new remote share %1$s from %2$s" : "Morët një ndarje të largët %1$s nga %2$s",
+ "You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s pranoi ndarjen e largët e %1$s",
+ "{user} accepted the remote share of {file}" : "{user} pranoi ndarjen e largët të {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s hodhi tej ndarjen e largët të %1$s",
+ "{user} declined the remote share of {file}" : "{user} hodhi tej ndarjen e largët të {file}",
+ "%2$s unshared %1$s from you" : "%2$s nuk ndau %1$s nga ju",
+ "{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju",
+ "Shared with %1$s" : "Ndarë me %1$s",
+ "Shared with {user}" : "Ndarë me {user}",
+ "Removed share for %1$s" : "Hoqi ndarjen për %1$s",
+ "Removed share for {user}" : "Hoqi ndarjen për {user}",
+ "%2$s shared with %1$s" : "%2$s ndau me %1$s",
+ "{actor} shared with {user}" : "{actor} ndau me {user}",
+ "%2$s removed share for %1$s" : "%2$s hoqi ndarjen për %1$s",
+ "{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}",
+ "Shared by %1$s" : "U nda nga %1$s",
+ "Shared by {actor}" : "U nda nga {actor}",
+ "%1$s removed share" : "%1$s hoqi ndarjen",
+ "{actor} removed share" : "{actor} hoqi ndarjen",
+ "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
+ "You shared {file} with {user}" : "Ndatë {file} me {user}",
+ "You removed %2$s from %1$s" : "Hoqët %2$s nga %1$s ",
+ "You removed {user} from {file}" : "Hoqët {user} nga {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s ndau %1$s me %2$s",
+ "{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s hoqi %2$s nga %1$s",
+ "%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
+ "{actor} shared {file} with you" : "{actor} ndau {file} me ju",
+ "%2$s removed you from %1$s" : "%2$s iu hoqi nga %1$s",
+ "{actor} removed you from {file}" : "{actor} iu hoqi nga {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte <strong> shkarkuar</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
+ "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
"Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston",
+ "could not delete share" : "Ndarja s’u fshi dot",
"Could not delete share" : "Ndarja s’u fshi dot",
"Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje",
"Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston",
+ "Could not create share" : "Ndarja nuk u krijua dot",
+ "invalid permissions" : "leje e pavlefshme",
"Please specify a valid user" : "Ju lutemi, tregoni një përdorues të vlefshëm",
"Group sharing is disabled by the administrator" : "Ndarja në grup është çaktivizuar nga përgjegjësi",
"Please specify a valid group" : "Ju lutemi, tregoni një grup të vlefshëm",
@@ -31,8 +115,29 @@ OC.L10N.register(
"Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ",
"Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike",
"Cannot increase permissions" : "S’mund të fuqizohen lejet",
- "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
- "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
+ "%s is publicly shared" : "%s është ndarë publikisht",
+ "Share API is disabled" : "API i ndarjeve është çaktivizuar",
+ "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
+ "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
+ "Password" : "Fjalëkalim",
+ "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
+ "Name" : "Emër",
+ "Share time" : "Kohë ndarjeje",
+ "Expiration date" : "Datë skadimi",
+ "Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
+ "Reasons might be:" : "Arsyet mund të jenë:",
+ "the item was removed" : "objekti është hequr",
+ "the link expired" : "lidhja ka skaduar",
+ "sharing is disabled" : "ndarjet janë çaktivizuar",
+ "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
+ "Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj",
+ "Download" : "Shkarko",
+ "Download %s" : "Shkarko %s",
+ "Direct link" : "Lidhje e drejtpërdrejtë",
+ "Upload files to %s" : "Ngrako skedarët tek %s",
+ "Select or drop files" : "Përzgjidh ose hiq skedarët",
+ "Uploading files…" : "Skedarët po ngarkohen...",
+ "Uploaded files:" : "Skedarët e ngarkuar:",
"A public shared file or folder was <strong>downloaded</strong>" : "<strong>U shkarkua</strong> një kartelë ose dosje e ndarë me të tjerët publikisht",
"You received a new remote share %2$s from %1$s" : "Morët një ndarje të largët %2$s nga %1$s",
"You received a new remote share from %s" : "Morët një ndarje të largët nga %s",
@@ -41,11 +146,9 @@ OC.L10N.register(
"%1$s unshared %2$s from you" : "%1$s shndau me ju %2$s",
"Public shared folder %1$s was downloaded" : "U shkarkua dosja e ndarë publikisht %1$s",
"Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s",
- "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ndau %1$s me %3$s",
"You removed the share of %2$s for %1$s" : "Hoqët ndarjen e %2$s për %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s hoqi ndarjen e %3$s për %1$s",
- "You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
"You removed the share of group %2$s for %1$s" : "Hoqët ndarjen e grupit %2$s për %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s hoqi ndarjen e grupit %3$s për %1$s",
@@ -55,9 +158,7 @@ OC.L10N.register(
"%2$s removed the public link for %1$s" : "%2$s hoqi lidhjen publike për %1$s",
"Your public link for %1$s expired" : "Lidhja juaj publike për %1$s skadoi",
"The public link of %2$s for %1$s expired" : "Lidhja publike e %2$s për %1$s skadoi",
- "%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
"%2$s removed the share for %1$s" : "%2$s hoqi ndarjen për %1$s",
- "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with %3$s by %2$s" : "U nda me %3$s nga %2$s",
"Removed share for %2$s" : "Hoqi ndarjen për %2$s",
@@ -68,27 +169,10 @@ OC.L10N.register(
"%2$s removed share of group %3$s" : "%2$s hoqi ndarjen e grupit %3$s",
"Shared via link by %2$s" : "U nda përmes një lidhje nga %2$s",
"Shared via public link" : "U nda përmes një lidhje publike",
- "Removed public link" : "Hoqi lidhje publike",
"%2$s removed public link" : "%2$s hoqi lidhje publike",
"Public link expired" : "Lidhja publike skadoi",
"Public link of %2$s expired" : "Lidhja publike e %2$s skadoi",
"Shared by %2$s" : "U nda nga %2$s",
- "Shares" : "Ndarje",
- "Share API is disabled" : "API i ndarjeve është çaktivizuar",
- "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
- "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
- "Password" : "Fjalëkalim",
- "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
- "Name" : "Emër",
- "Share time" : "Kohë ndarjeje",
- "Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
- "Reasons might be:" : "Arsyet mund të jenë:",
- "the item was removed" : "objekti është hequr",
- "the link expired" : "lidhja ka skaduar",
- "sharing is disabled" : "ndarjet janë çaktivizuar",
- "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
- "Download" : "Shkarko",
- "Download %s" : "Shkarko %s",
- "Direct link" : "Lidhje e drejtpërdrejtë"
+ "Shares" : "Ndarje"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json
index 3e8fa7b00f0..c1323784cf1 100644
--- a/apps/files_sharing/l10n/sq.json
+++ b/apps/files_sharing/l10n/sq.json
@@ -9,12 +9,96 @@
"No shared links" : "Pa lidhje ndarjesh",
"Files and folders you share by link will show up here" : "Këtu do të shfaqen kartelat dhe dosjet që ndani përmes lidhjesh",
"You can upload into this folder" : "Mund të ngarkoni te kjo dosje",
+ "No compatible server found at {remote}" : "Asnjë server i pajtueshëm nuk është gjetur tek { }",
+ "Invalid server URL" : "Server i pavlefshëm URL",
+ "Failed to add the public link to your Nextcloud" : "Nuk arritët të shtoni ndërlidhjen publike tek Nextcloud juaj",
+ "Share" : "shpërndaj",
+ "No expiration date set" : "Nuk është vendosur data e përfundimit",
"Shared by" : "Ndarë nga",
"Sharing" : "Ndarje",
+ "File shares" : "Ndarja e skedarëve",
+ "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
+ "Downloaded by %1$s" : "Shkarkuar nga %1$s",
+ "Downloaded by {email}" : "Shkarkuar nga {email}",
+ "%1$s downloaded via public link" : "%1$s shkarkuar nga një lidhje publike",
+ "{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike",
+ "%1$s downloaded %2$s" : "%1$s shkarkuar nga %2$s",
+ "{email} downloaded {file}" : "{email} shkarkuar {file}",
+ "Shared with group %1$s" : "U nda me grupin %1$s",
+ "Shared with group {group}" : "U nda me grupin {group}",
+ "Removed share for group %1$s" : "Hoqi ndarjen për grupin %1$s",
+ "Removed share for group {group}" : "Hoqi ndarjen për grupin {group}",
+ "%2$s shared with group %1$s" : "%2$s u nda e grupin %1$s",
+ "{actor} shared with group {group}" : "{actor} u nda me grupin {group}",
+ "%2$s removed share for group %1$s" : "%2$s hoqi ndarjen për grupin %1$s",
+ "{actor} removed share for group {group}" : "{actor} hoqi ndarjen për grupin {group}",
+ "You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
+ "You shared {file} with group {group}" : "Ndatë {file} me grupin {group}",
+ "You removed group %2$s from %1$s" : "Hoqët grupin %2$s nga %1$s",
+ "You removed group {group} from {file}" : "Hoqët grupin {group} nga {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s ndau %1$s me grupin %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} ndau {file} me grupin {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s hoqi grupin %2$s nga %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} hoqi grupin {group} nga {file}",
+ "Shared as public link" : "U nda si një lidhje publike",
+ "Removed public link" : "Hoqi lidhje publike",
+ "%1$s shared as public link" : "%1$s u nda si një lidhje publike",
+ "{actor} shared as public link" : "{actor} u nda si një lidhje publike",
+ "%1$s removed public link" : "%1$s hoqi lidhje publike",
+ "{actor} removed public link" : "{actor} hoqi lidhje publike",
+ "You shared %1$s as public link" : "Ndatë %1$s si një lidhje publike",
+ "You shared {file} as public link" : "Ndatë {file} si një lidhje publike",
+ "You removed public link for %1$s" : "Hoqët lidhje publike për %1$s",
+ "You removed public link for {file}" : "Hoqët lidhje publike për {file}",
+ "%2$s shared %1$s as public link" : "%2$s u nda %1$s si një lidhje publike",
+ "{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike",
+ "%2$s removed public link for %1$s" : "%2$s hoqi lidhje publike për %1$s",
+ "{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}",
+ "%1$s accepted the remote share" : "%1$s pranoi ndarjen e largët",
+ "{user} accepted the remote share" : "{user} pranoi ndarjen e largët",
+ "%1$s declined the remote share" : "%1$s hodhi tej ndarjen e largët",
+ "{user} declined the remote share" : "{user} hodhi tej ndarjen e largët",
+ "You received a new remote share %1$s from %2$s" : "Morët një ndarje të largët %1$s nga %2$s",
+ "You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s pranoi ndarjen e largët e %1$s",
+ "{user} accepted the remote share of {file}" : "{user} pranoi ndarjen e largët të {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s hodhi tej ndarjen e largët të %1$s",
+ "{user} declined the remote share of {file}" : "{user} hodhi tej ndarjen e largët të {file}",
+ "%2$s unshared %1$s from you" : "%2$s nuk ndau %1$s nga ju",
+ "{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju",
+ "Shared with %1$s" : "Ndarë me %1$s",
+ "Shared with {user}" : "Ndarë me {user}",
+ "Removed share for %1$s" : "Hoqi ndarjen për %1$s",
+ "Removed share for {user}" : "Hoqi ndarjen për {user}",
+ "%2$s shared with %1$s" : "%2$s ndau me %1$s",
+ "{actor} shared with {user}" : "{actor} ndau me {user}",
+ "%2$s removed share for %1$s" : "%2$s hoqi ndarjen për %1$s",
+ "{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}",
+ "Shared by %1$s" : "U nda nga %1$s",
+ "Shared by {actor}" : "U nda nga {actor}",
+ "%1$s removed share" : "%1$s hoqi ndarjen",
+ "{actor} removed share" : "{actor} hoqi ndarjen",
+ "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
+ "You shared {file} with {user}" : "Ndatë {file} me {user}",
+ "You removed %2$s from %1$s" : "Hoqët %2$s nga %1$s ",
+ "You removed {user} from {file}" : "Hoqët {user} nga {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s ndau %1$s me %2$s",
+ "{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s hoqi %2$s nga %1$s",
+ "%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
+ "{actor} shared {file} with you" : "{actor} ndau {file} me ju",
+ "%2$s removed you from %1$s" : "%2$s iu hoqi nga %1$s",
+ "{actor} removed you from {file}" : "{actor} iu hoqi nga {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte <strong> shkarkuar</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
+ "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
"Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston",
+ "could not delete share" : "Ndarja s’u fshi dot",
"Could not delete share" : "Ndarja s’u fshi dot",
"Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje",
"Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston",
+ "Could not create share" : "Ndarja nuk u krijua dot",
+ "invalid permissions" : "leje e pavlefshme",
"Please specify a valid user" : "Ju lutemi, tregoni një përdorues të vlefshëm",
"Group sharing is disabled by the administrator" : "Ndarja në grup është çaktivizuar nga përgjegjësi",
"Please specify a valid group" : "Ju lutemi, tregoni një grup të vlefshëm",
@@ -29,8 +113,29 @@
"Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ",
"Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike",
"Cannot increase permissions" : "S’mund të fuqizohen lejet",
- "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje",
- "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>",
+ "%s is publicly shared" : "%s është ndarë publikisht",
+ "Share API is disabled" : "API i ndarjeve është çaktivizuar",
+ "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
+ "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
+ "Password" : "Fjalëkalim",
+ "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
+ "Name" : "Emër",
+ "Share time" : "Kohë ndarjeje",
+ "Expiration date" : "Datë skadimi",
+ "Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
+ "Reasons might be:" : "Arsyet mund të jenë:",
+ "the item was removed" : "objekti është hequr",
+ "the link expired" : "lidhja ka skaduar",
+ "sharing is disabled" : "ndarjet janë çaktivizuar",
+ "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
+ "Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj",
+ "Download" : "Shkarko",
+ "Download %s" : "Shkarko %s",
+ "Direct link" : "Lidhje e drejtpërdrejtë",
+ "Upload files to %s" : "Ngrako skedarët tek %s",
+ "Select or drop files" : "Përzgjidh ose hiq skedarët",
+ "Uploading files…" : "Skedarët po ngarkohen...",
+ "Uploaded files:" : "Skedarët e ngarkuar:",
"A public shared file or folder was <strong>downloaded</strong>" : "<strong>U shkarkua</strong> një kartelë ose dosje e ndarë me të tjerët publikisht",
"You received a new remote share %2$s from %1$s" : "Morët një ndarje të largët %2$s nga %1$s",
"You received a new remote share from %s" : "Morët një ndarje të largët nga %s",
@@ -39,11 +144,9 @@
"%1$s unshared %2$s from you" : "%1$s shndau me ju %2$s",
"Public shared folder %1$s was downloaded" : "U shkarkua dosja e ndarë publikisht %1$s",
"Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s",
- "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ndau %1$s me %3$s",
"You removed the share of %2$s for %1$s" : "Hoqët ndarjen e %2$s për %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s hoqi ndarjen e %3$s për %1$s",
- "You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
"You removed the share of group %2$s for %1$s" : "Hoqët ndarjen e grupit %2$s për %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s hoqi ndarjen e grupit %3$s për %1$s",
@@ -53,9 +156,7 @@
"%2$s removed the public link for %1$s" : "%2$s hoqi lidhjen publike për %1$s",
"Your public link for %1$s expired" : "Lidhja juaj publike për %1$s skadoi",
"The public link of %2$s for %1$s expired" : "Lidhja publike e %2$s për %1$s skadoi",
- "%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
"%2$s removed the share for %1$s" : "%2$s hoqi ndarjen për %1$s",
- "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with %3$s by %2$s" : "U nda me %3$s nga %2$s",
"Removed share for %2$s" : "Hoqi ndarjen për %2$s",
@@ -66,27 +167,10 @@
"%2$s removed share of group %3$s" : "%2$s hoqi ndarjen e grupit %3$s",
"Shared via link by %2$s" : "U nda përmes një lidhje nga %2$s",
"Shared via public link" : "U nda përmes një lidhje publike",
- "Removed public link" : "Hoqi lidhje publike",
"%2$s removed public link" : "%2$s hoqi lidhje publike",
"Public link expired" : "Lidhja publike skadoi",
"Public link of %2$s expired" : "Lidhja publike e %2$s skadoi",
"Shared by %2$s" : "U nda nga %2$s",
- "Shares" : "Ndarje",
- "Share API is disabled" : "API i ndarjeve është çaktivizuar",
- "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim",
- "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.",
- "Password" : "Fjalëkalim",
- "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
- "Name" : "Emër",
- "Share time" : "Kohë ndarjeje",
- "Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
- "Reasons might be:" : "Arsyet mund të jenë:",
- "the item was removed" : "objekti është hequr",
- "the link expired" : "lidhja ka skaduar",
- "sharing is disabled" : "ndarjet janë çaktivizuar",
- "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.",
- "Download" : "Shkarko",
- "Download %s" : "Shkarko %s",
- "Direct link" : "Lidhje e drejtpërdrejtë"
+ "Shares" : "Ndarje"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index 79b85b90711..fb6d04c52c2 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -1,57 +1,164 @@
OC.L10N.register(
"files_sharing",
{
- "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
- "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
- "Not allowed to create a federated share with the same user server" : "Ej tillåten att skapa en federerad delning med samma användarserver.",
- "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
- "Could not authenticate to remote share, password might be wrong" : "Kunde ej autensiera fjärrdelningen, lösenordet kan vara fel",
- "Storage not valid" : "Lagring ej giltig",
- "Couldn't add remote share" : "Kunde inte lägga till fjärrutdelning",
"Shared with you" : "Delat med dig",
"Shared with others" : "Delat med andra",
- "Shared by link" : "Delad som länk",
+ "Shared by link" : "Delat som länk",
"Nothing shared with you yet" : "Inget delat med dig ännu",
- "Files and folders others share with you will show up here" : "Filer och mappar andra delar med dig kommer visas här",
+ "Files and folders others share with you will show up here" : "Filer och mappar som andra delar med dig kommer visas här",
"Nothing shared yet" : "Inget delat ännu",
- "Files and folders you share will show up here" : "Filer och mappar du delar kommer visas här",
+ "Files and folders you share will show up here" : "Filer och mappar som du delar kommer visas här",
"No shared links" : "Inga delade länkar",
- "Files and folders you share by link will show up here" : "Filer och mappar du delar som länkar kommer visas här",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till fjärrdelning {name} från {owner}@{remote}?",
- "Remote share" : "Fjärrdelning",
- "Remote share password" : "Lösenord för fjärrdelning",
- "Cancel" : "Avbryt",
- "Add remote share" : "Lägg till fjärrdelning",
+ "Files and folders you share by link will show up here" : "Filer och mappar som du delar som länkar kommer visas här",
"You can upload into this folder" : "Du kan ladda upp i denna map",
+ "No compatible server found at {remote}" : "Ingen kompatibel server hittad på {remote}",
+ "Invalid server URL" : "Ogiltig server URL",
+ "Failed to add the public link to your Nextcloud" : "Misslyckades skapa den offentliga delningslänken till ditt moln",
+ "Share" : "Dela",
+ "No expiration date set" : "Inget utgångsdatum satt",
"Shared by" : "Delad av",
- "Sharing" : "Dela",
- "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>",
+ "Sharing" : "Delning",
+ "File shares" : "Fildelningar",
+ "Downloaded via public link" : "Nedladdad via offentlig länk",
+ "Downloaded by %1$s" : "Nedladdad av %1$s",
+ "Downloaded by {email}" : "Nedladdad av {email}",
+ "%1$s downloaded via public link" : "%1$s nedladdad via offentlig länk",
+ "{file} downloaded via public link" : "{file} nedladdad via offentlig länk",
+ "%1$s downloaded %2$s" : "%1$s laddade ned %2$s",
+ "{email} downloaded {file}" : "{email} laddade ned {file}",
+ "Shared with group %1$s" : "Delad med grupp %1$s",
+ "Shared with group {group}" : "Delad med grupp {group}",
+ "Removed share for group %1$s" : "Tog bort delning för grupp %1$s",
+ "Removed share for group {group}" : "Tog bort delning för grupp {group}",
+ "%2$s shared with group %1$s" : "%2$s delad med grupp %1$s",
+ "{actor} shared with group {group}" : "{actor} delade med gruppen {group}",
+ "%2$s removed share for group %1$s" : "%2$s tog bort delningen för gruppen %1$s",
+ "{actor} removed share for group {group}" : "{actor} tog bort delningen för gruppen {group}",
+ "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s",
+ "You shared {file} with group {group}" : "Du delade {file} med gruppen {group}",
+ "You removed group %2$s from %1$s" : "Du tog bort gruppen %2$s från %1$s",
+ "You removed group {group} from {file}" : "Du tog bort gruppen {group} från {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s delade %1$s med gruppen %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} delade {file} med gruppen {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s tog bort gruppen %2$s från %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} tog bort gruppen {group} från {file}",
+ "Shared as public link" : "Delades offentligt",
+ "Removed public link" : "Tog bort offentlig länk",
+ "%1$s shared as public link" : "%1$s delade offentligt",
+ "{actor} shared as public link" : "{actor} delade offentligt",
+ "%1$s removed public link" : "%1$s tog bort offentlig länk",
+ "{actor} removed public link" : "{actor} tog bort offentlig länk",
+ "You shared %1$s as public link" : "Du delade %1$s offentligt",
+ "You shared {file} as public link" : "Du delade {file} offentligt",
+ "You removed public link for %1$s" : "Du tog bort den offentliga länken för %1$s",
+ "You removed public link for {file}" : "Du tog bort den offentliga länken för {file}",
+ "%2$s shared %1$s as public link" : "%2$s delade %1$s offentligt",
+ "{actor} shared {file} as public link" : "{actor} delade {file} offentligt",
+ "%2$s removed public link for %1$s" : "%2$s tog bort den offentliga länken för %1$s",
+ "{actor} removed public link for {file}" : "{actor} tog bort den offentliga länken för {file}",
+ "%1$s accepted the remote share" : "%1$s accepterade extern delning",
+ "{user} accepted the remote share" : "{user} accepterade extern delning",
+ "%1$s declined the remote share" : "%1$s nekade extern delning",
+ "{user} declined the remote share" : "{user} nekade extern delning",
+ "You received a new remote share %1$s from %2$s" : "Du har fått en ny extern delning %1$s från %2$s",
+ "You received a new remote share {file} from {user}" : "Du har fått en ny extern delning {file} från {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s accepterade extern delning av %1$s",
+ "{user} accepted the remote share of {file}" : "{user} accepterade extern delning av {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s nekade extern delning av %1$s",
+ "{user} declined the remote share of {file}" : "{user} nekade extern delning av {file}",
+ "%2$s unshared %1$s from you" : "%2$s slutade dela %1$s med dig",
+ "{user} unshared {file} from you" : "{user} slutade dela {file} med dig",
+ "Shared with %1$s" : "Delade med %1$s",
+ "Shared with {user}" : "Delade med {user}",
+ "Removed share for %1$s" : "Tog bort delningen för %1$s",
+ "Removed share for {user}" : "Tog bort delningen för {user}",
+ "%2$s shared with %1$s" : "%2$s delade med %1$s",
+ "{actor} shared with {user}" : "{actor} delade med {user}",
+ "%2$s removed share for %1$s" : "%2$s tog bort delningen för %1$s",
+ "{actor} removed share for {user}" : "{actor} tog bort delningen för {user}",
+ "Shared by %1$s" : "Delad av %1$s",
+ "Shared by {actor}" : "Delad av {actor}",
+ "%1$s removed share" : "%1$s tog bort delning",
+ "{actor} removed share" : "{actor} tog bort delning",
+ "You shared %1$s with %2$s" : "Du delade %1$s med %2$s",
+ "You shared {file} with {user}" : "Du delade {file} med {user}",
+ "You removed %2$s from %1$s" : "Du tog bort %2$s från %1$s",
+ "You removed {user} from {file}" : "Du tog bort {user} från {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s delade %1$s med %2$s",
+ "{actor} removed {user} from {file}" : "{actor} tog bort {user} från {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s tog bort %2$s från %1$s",
+ "%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
+ "{actor} shared {file} with you" : "{actor} delade {file} med dig",
+ "%2$s removed you from %1$s" : "%2$s tog bort dig från %1$s",
+ "{actor} removed you from {file}" : "{actor} tog bort dig från {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mapp som delats via mejl eller offentlig länk har blivit <strong>nedladdad</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mapp delades från <strong>en annan server</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "En publikt delad fil eller mapp blev <strong>nerladdad</strong>",
- "You received a new remote share %2$s from %1$s" : "Du har mottagit en fjärrdelning %2$s från %1$s",
- "You received a new remote share from %s" : "Du mottog en ny fjärrdelning från %s",
- "%1$s accepted remote share %2$s" : "%1$s accepterade fjärrdelning %2$s",
- "%1$s declined remote share %2$s" : "%1$s nekade fjärrdelning %2$s",
+ "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>",
+ "Wrong share ID, share doesn't exist" : "Fel delnings-ID, delningen finns inte",
+ "could not delete share" : "kunde inte ta bort delningen",
+ "Could not delete share" : "Kunde inte ta bort delningen",
+ "Please specify a file or folder path" : "Ange sökväg till filen eller mappen",
+ "Wrong path, file/folder doesn't exist" : "Fel sökväg, fil/mapp finns inte",
+ "Could not create share" : "Kunde inte skapa delning",
+ "invalid permissions" : "ogiltiga behörigheter",
+ "Please specify a valid user" : "Ange en giltig användare",
+ "Group sharing is disabled by the administrator" : "Gruppdelning är avstängt",
+ "Please specify a valid group" : "Ange en giltig grupp",
+ "Public link sharing is disabled by the administrator" : "Offentlig delningslänk är avstängt",
+ "Public upload disabled by the administrator" : "Offentlig uppladdning är avstängt",
+ "Public upload is only possible for publicly shared folders" : "Offentlig uppladdning fungerar endast i offentligt delade mappar",
+ "Invalid date, date format must be YYYY-MM-DD" : "Ogiltigt datum, måste anges: ÅÅÅÅ-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "Delningen av %s misslyckades. Ej tillåtet med delning av %s",
+ "Unknown share type" : "Ogiltig delningstyp",
+ "Not a directory" : "Inte en mapp",
+ "Could not lock path" : "Kunde inte låsa sökvägen",
+ "Wrong or no update parameter given" : "Fel eller ingen uppdateringsparameter angiven",
+ "Can't change permissions for public share links" : "Det går inte att ändra behörigheterna för offentliga länkar",
+ "Cannot increase permissions" : "Kan inte utöka behörigheter",
+ "%s is publicly shared" : "%s är offentligt delad",
+ "Share API is disabled" : "Delning av API är inaktiverad",
+ "This share is password-protected" : "Den här delningen är lösenordsskyddad",
+ "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
+ "Password" : "Lösenord",
+ "No entries found in this folder" : "Inga filer hittades i denna mapp",
+ "Name" : "Namn",
+ "Share time" : "Delningstid",
+ "Expiration date" : "Utgångsdatum",
+ "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
+ "Reasons might be:" : "Orsaker kan vara:",
+ "the item was removed" : "objektet togs bort",
+ "the link expired" : "giltighet för länken har gått ut",
+ "sharing is disabled" : "delning är inaktiverat",
+ "For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
+ "Add to your Nextcloud" : "Lägg till i molnet",
+ "Download" : "Ladda ned",
+ "Download %s" : "Ladda ned %s",
+ "Direct link" : "Direktlänk",
+ "Upload files to %s" : "Ladda upp filer till %s",
+ "Select or drop files" : "Välj eller dra filer hit",
+ "Uploading files…" : "Laddar upp filer...",
+ "Uploaded files:" : "Uppladdade filer:",
+ "A public shared file or folder was <strong>downloaded</strong>" : "En offentligt delad fil eller mapp blev <strong>nedladdad</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du har mottagit en ny extern delning %2$s från %1$s",
+ "You received a new remote share from %s" : "Du har mottagit en ny extern delning från %s",
+ "%1$s accepted remote share %2$s" : "%1$s accepterade extern delning %2$s",
+ "%1$s declined remote share %2$s" : "%1$s nekade extern delning av %2$s",
"%1$s unshared %2$s from you" : "%1$s tog bort delningen %2$s från dig",
- "Public shared folder %1$s was downloaded" : "Publikt delad mapp %1$s blev nerladdad",
- "Public shared file %1$s was downloaded" : "Publikt delad fil %1$s blev nerladdad",
- "You shared %1$s with %2$s" : "Du delade %1$s med %2$s",
+ "Public shared folder %1$s was downloaded" : "Offentligt delad mapp %1$s blev nedladdad",
+ "Public shared file %1$s was downloaded" : "Offentligt delad fil %1$s blev nedladdad",
"%2$s shared %1$s with %3$s" : "%2$s delade %1$s med %3$s",
"You removed the share of %2$s for %1$s" : "Du tog bort delning av %2$s för %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s tog bort delningen av %3$s för %1$s",
- "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s delade %1$s med gruppen %3$s",
"You removed the share of group %2$s for %1$s" : "Du tog bort delningen av gruppen %2$s för %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s tog bort delningen av grupp %3$s för %1$s",
"%2$s shared %1$s via link" : "%2$s delade %1$s via länk",
"You shared %1$s via link" : "Du delade %1$s via länk",
- "You removed the public link for %1$s" : "Du tog bort den publika länken för %1$s",
- "%2$s removed the public link for %1$s" : "%2$s tog bort den publika länken för %1$s",
- "Your public link for %1$s expired" : "Din publika länk för %1$s har löpt ut",
- "The public link of %2$s for %1$s expired" : "Den publika länken för %2$s av %1$s har löpt ut",
- "%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
+ "You removed the public link for %1$s" : "Du tog bort den offentliga länken för %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s tog bort den offentliga länken för %1$s",
+ "Your public link for %1$s expired" : "Din offentliga länk för %1$s har löpt ut",
+ "The public link of %2$s for %1$s expired" : "Den offentliga länken för %2$s av %1$s har löpt ut",
"%2$s removed the share for %1$s" : "%2$s tog bort delningen av %1$s",
- "Downloaded via public link" : "Nerladdad via publik länk",
"Shared with %2$s" : "Delad med %2$s",
"Shared with %3$s by %2$s" : "Delad med %3$s av %2$s",
"Removed share for %2$s" : "Tog bort delningen för %2$s",
@@ -61,28 +168,11 @@ OC.L10N.register(
"Removed share of group %2$s" : "Tog bort delning av grupp %2$s",
"%2$s removed share of group %3$s" : "%2$s tog bort delningen av grupp %3$s",
"Shared via link by %2$s" : "Delad via länk av %2$s",
- "Shared via public link" : "Delad via publik länk",
- "Removed public link" : "Tog bort publik länk",
- "%2$s removed public link" : "%2$s tog bort publik länk",
- "Public link expired" : "Tidsgräns för publik länk har löpt ut",
- "Public link of %2$s expired" : "Tidsgräns för publik länk för %2$s har löpt ut",
+ "Shared via public link" : "Delad via offentlig länk",
+ "%2$s removed public link" : "%2$s tog bort offentlig länk",
+ "Public link expired" : "Tidsgräns för offentlig länk har löpt ut",
+ "Public link of %2$s expired" : "Tidsgräns för offentlig länk för %2$s har löpt ut",
"Shared by %2$s" : "Delad av %2$s",
- "Shares" : "Delningar",
- "This share is password-protected" : "Den här delningen är lösenordsskyddad",
- "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
- "Password" : "Lösenord",
- "No entries found in this folder" : "nga Filer hittades i denna mapp",
- "Name" : "Namn",
- "Share time" : "Delningstid",
- "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
- "Reasons might be:" : "Orsaker kan vara:",
- "the item was removed" : "objektet togs bort",
- "the link expired" : "giltighet för länken har gått ut",
- "sharing is disabled" : "delning är inaktiverat",
- "For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
- "Add to your ownCloud" : "Lägg till i din ownCloud",
- "Download" : "Ladda ner",
- "Download %s" : "Ladda ner %s",
- "Direct link" : "Direkt länk"
+ "Shares" : "Delningar"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index 870d7c1c3a4..84a1e4a83bf 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -1,55 +1,162 @@
{ "translations": {
- "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server",
- "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.",
- "Not allowed to create a federated share with the same user server" : "Ej tillåten att skapa en federerad delning med samma användarserver.",
- "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat",
- "Could not authenticate to remote share, password might be wrong" : "Kunde ej autensiera fjärrdelningen, lösenordet kan vara fel",
- "Storage not valid" : "Lagring ej giltig",
- "Couldn't add remote share" : "Kunde inte lägga till fjärrutdelning",
"Shared with you" : "Delat med dig",
"Shared with others" : "Delat med andra",
- "Shared by link" : "Delad som länk",
+ "Shared by link" : "Delat som länk",
"Nothing shared with you yet" : "Inget delat med dig ännu",
- "Files and folders others share with you will show up here" : "Filer och mappar andra delar med dig kommer visas här",
+ "Files and folders others share with you will show up here" : "Filer och mappar som andra delar med dig kommer visas här",
"Nothing shared yet" : "Inget delat ännu",
- "Files and folders you share will show up here" : "Filer och mappar du delar kommer visas här",
+ "Files and folders you share will show up here" : "Filer och mappar som du delar kommer visas här",
"No shared links" : "Inga delade länkar",
- "Files and folders you share by link will show up here" : "Filer och mappar du delar som länkar kommer visas här",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Vill du lägga till fjärrdelning {name} från {owner}@{remote}?",
- "Remote share" : "Fjärrdelning",
- "Remote share password" : "Lösenord för fjärrdelning",
- "Cancel" : "Avbryt",
- "Add remote share" : "Lägg till fjärrdelning",
+ "Files and folders you share by link will show up here" : "Filer och mappar som du delar som länkar kommer visas här",
"You can upload into this folder" : "Du kan ladda upp i denna map",
+ "No compatible server found at {remote}" : "Ingen kompatibel server hittad på {remote}",
+ "Invalid server URL" : "Ogiltig server URL",
+ "Failed to add the public link to your Nextcloud" : "Misslyckades skapa den offentliga delningslänken till ditt moln",
+ "Share" : "Dela",
+ "No expiration date set" : "Inget utgångsdatum satt",
"Shared by" : "Delad av",
- "Sharing" : "Dela",
- "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>",
+ "Sharing" : "Delning",
+ "File shares" : "Fildelningar",
+ "Downloaded via public link" : "Nedladdad via offentlig länk",
+ "Downloaded by %1$s" : "Nedladdad av %1$s",
+ "Downloaded by {email}" : "Nedladdad av {email}",
+ "%1$s downloaded via public link" : "%1$s nedladdad via offentlig länk",
+ "{file} downloaded via public link" : "{file} nedladdad via offentlig länk",
+ "%1$s downloaded %2$s" : "%1$s laddade ned %2$s",
+ "{email} downloaded {file}" : "{email} laddade ned {file}",
+ "Shared with group %1$s" : "Delad med grupp %1$s",
+ "Shared with group {group}" : "Delad med grupp {group}",
+ "Removed share for group %1$s" : "Tog bort delning för grupp %1$s",
+ "Removed share for group {group}" : "Tog bort delning för grupp {group}",
+ "%2$s shared with group %1$s" : "%2$s delad med grupp %1$s",
+ "{actor} shared with group {group}" : "{actor} delade med gruppen {group}",
+ "%2$s removed share for group %1$s" : "%2$s tog bort delningen för gruppen %1$s",
+ "{actor} removed share for group {group}" : "{actor} tog bort delningen för gruppen {group}",
+ "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s",
+ "You shared {file} with group {group}" : "Du delade {file} med gruppen {group}",
+ "You removed group %2$s from %1$s" : "Du tog bort gruppen %2$s från %1$s",
+ "You removed group {group} from {file}" : "Du tog bort gruppen {group} från {file}",
+ "%3$s shared %1$s with group %2$s" : "%3$s delade %1$s med gruppen %2$s",
+ "{actor} shared {file} with group {group}" : "{actor} delade {file} med gruppen {group}",
+ "%3$s removed group %2$s from %1$s" : "%3$s tog bort gruppen %2$s från %1$s",
+ "{actor} removed group {group} from {file}" : "{actor} tog bort gruppen {group} från {file}",
+ "Shared as public link" : "Delades offentligt",
+ "Removed public link" : "Tog bort offentlig länk",
+ "%1$s shared as public link" : "%1$s delade offentligt",
+ "{actor} shared as public link" : "{actor} delade offentligt",
+ "%1$s removed public link" : "%1$s tog bort offentlig länk",
+ "{actor} removed public link" : "{actor} tog bort offentlig länk",
+ "You shared %1$s as public link" : "Du delade %1$s offentligt",
+ "You shared {file} as public link" : "Du delade {file} offentligt",
+ "You removed public link for %1$s" : "Du tog bort den offentliga länken för %1$s",
+ "You removed public link for {file}" : "Du tog bort den offentliga länken för {file}",
+ "%2$s shared %1$s as public link" : "%2$s delade %1$s offentligt",
+ "{actor} shared {file} as public link" : "{actor} delade {file} offentligt",
+ "%2$s removed public link for %1$s" : "%2$s tog bort den offentliga länken för %1$s",
+ "{actor} removed public link for {file}" : "{actor} tog bort den offentliga länken för {file}",
+ "%1$s accepted the remote share" : "%1$s accepterade extern delning",
+ "{user} accepted the remote share" : "{user} accepterade extern delning",
+ "%1$s declined the remote share" : "%1$s nekade extern delning",
+ "{user} declined the remote share" : "{user} nekade extern delning",
+ "You received a new remote share %1$s from %2$s" : "Du har fått en ny extern delning %1$s från %2$s",
+ "You received a new remote share {file} from {user}" : "Du har fått en ny extern delning {file} från {user}",
+ "%2$s accepted the remote share of %1$s" : "%2$s accepterade extern delning av %1$s",
+ "{user} accepted the remote share of {file}" : "{user} accepterade extern delning av {file}",
+ "%2$s declined the remote share of %1$s" : "%2$s nekade extern delning av %1$s",
+ "{user} declined the remote share of {file}" : "{user} nekade extern delning av {file}",
+ "%2$s unshared %1$s from you" : "%2$s slutade dela %1$s med dig",
+ "{user} unshared {file} from you" : "{user} slutade dela {file} med dig",
+ "Shared with %1$s" : "Delade med %1$s",
+ "Shared with {user}" : "Delade med {user}",
+ "Removed share for %1$s" : "Tog bort delningen för %1$s",
+ "Removed share for {user}" : "Tog bort delningen för {user}",
+ "%2$s shared with %1$s" : "%2$s delade med %1$s",
+ "{actor} shared with {user}" : "{actor} delade med {user}",
+ "%2$s removed share for %1$s" : "%2$s tog bort delningen för %1$s",
+ "{actor} removed share for {user}" : "{actor} tog bort delningen för {user}",
+ "Shared by %1$s" : "Delad av %1$s",
+ "Shared by {actor}" : "Delad av {actor}",
+ "%1$s removed share" : "%1$s tog bort delning",
+ "{actor} removed share" : "{actor} tog bort delning",
+ "You shared %1$s with %2$s" : "Du delade %1$s med %2$s",
+ "You shared {file} with {user}" : "Du delade {file} med {user}",
+ "You removed %2$s from %1$s" : "Du tog bort %2$s från %1$s",
+ "You removed {user} from {file}" : "Du tog bort {user} från {file}",
+ "%3$s shared %1$s with %2$s" : "%3$s delade %1$s med %2$s",
+ "{actor} removed {user} from {file}" : "{actor} tog bort {user} från {file}",
+ "%3$s removed %2$s from %1$s" : "%3$s tog bort %2$s från %1$s",
+ "%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
+ "{actor} shared {file} with you" : "{actor} delade {file} med dig",
+ "%2$s removed you from %1$s" : "%2$s tog bort dig från %1$s",
+ "{actor} removed you from {file}" : "{actor} tog bort dig från {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mapp som delats via mejl eller offentlig länk har blivit <strong>nedladdad</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mapp delades från <strong>en annan server</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "En publikt delad fil eller mapp blev <strong>nerladdad</strong>",
- "You received a new remote share %2$s from %1$s" : "Du har mottagit en fjärrdelning %2$s från %1$s",
- "You received a new remote share from %s" : "Du mottog en ny fjärrdelning från %s",
- "%1$s accepted remote share %2$s" : "%1$s accepterade fjärrdelning %2$s",
- "%1$s declined remote share %2$s" : "%1$s nekade fjärrdelning %2$s",
+ "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>",
+ "Wrong share ID, share doesn't exist" : "Fel delnings-ID, delningen finns inte",
+ "could not delete share" : "kunde inte ta bort delningen",
+ "Could not delete share" : "Kunde inte ta bort delningen",
+ "Please specify a file or folder path" : "Ange sökväg till filen eller mappen",
+ "Wrong path, file/folder doesn't exist" : "Fel sökväg, fil/mapp finns inte",
+ "Could not create share" : "Kunde inte skapa delning",
+ "invalid permissions" : "ogiltiga behörigheter",
+ "Please specify a valid user" : "Ange en giltig användare",
+ "Group sharing is disabled by the administrator" : "Gruppdelning är avstängt",
+ "Please specify a valid group" : "Ange en giltig grupp",
+ "Public link sharing is disabled by the administrator" : "Offentlig delningslänk är avstängt",
+ "Public upload disabled by the administrator" : "Offentlig uppladdning är avstängt",
+ "Public upload is only possible for publicly shared folders" : "Offentlig uppladdning fungerar endast i offentligt delade mappar",
+ "Invalid date, date format must be YYYY-MM-DD" : "Ogiltigt datum, måste anges: ÅÅÅÅ-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "Delningen av %s misslyckades. Ej tillåtet med delning av %s",
+ "Unknown share type" : "Ogiltig delningstyp",
+ "Not a directory" : "Inte en mapp",
+ "Could not lock path" : "Kunde inte låsa sökvägen",
+ "Wrong or no update parameter given" : "Fel eller ingen uppdateringsparameter angiven",
+ "Can't change permissions for public share links" : "Det går inte att ändra behörigheterna för offentliga länkar",
+ "Cannot increase permissions" : "Kan inte utöka behörigheter",
+ "%s is publicly shared" : "%s är offentligt delad",
+ "Share API is disabled" : "Delning av API är inaktiverad",
+ "This share is password-protected" : "Den här delningen är lösenordsskyddad",
+ "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
+ "Password" : "Lösenord",
+ "No entries found in this folder" : "Inga filer hittades i denna mapp",
+ "Name" : "Namn",
+ "Share time" : "Delningstid",
+ "Expiration date" : "Utgångsdatum",
+ "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
+ "Reasons might be:" : "Orsaker kan vara:",
+ "the item was removed" : "objektet togs bort",
+ "the link expired" : "giltighet för länken har gått ut",
+ "sharing is disabled" : "delning är inaktiverat",
+ "For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
+ "Add to your Nextcloud" : "Lägg till i molnet",
+ "Download" : "Ladda ned",
+ "Download %s" : "Ladda ned %s",
+ "Direct link" : "Direktlänk",
+ "Upload files to %s" : "Ladda upp filer till %s",
+ "Select or drop files" : "Välj eller dra filer hit",
+ "Uploading files…" : "Laddar upp filer...",
+ "Uploaded files:" : "Uppladdade filer:",
+ "A public shared file or folder was <strong>downloaded</strong>" : "En offentligt delad fil eller mapp blev <strong>nedladdad</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du har mottagit en ny extern delning %2$s från %1$s",
+ "You received a new remote share from %s" : "Du har mottagit en ny extern delning från %s",
+ "%1$s accepted remote share %2$s" : "%1$s accepterade extern delning %2$s",
+ "%1$s declined remote share %2$s" : "%1$s nekade extern delning av %2$s",
"%1$s unshared %2$s from you" : "%1$s tog bort delningen %2$s från dig",
- "Public shared folder %1$s was downloaded" : "Publikt delad mapp %1$s blev nerladdad",
- "Public shared file %1$s was downloaded" : "Publikt delad fil %1$s blev nerladdad",
- "You shared %1$s with %2$s" : "Du delade %1$s med %2$s",
+ "Public shared folder %1$s was downloaded" : "Offentligt delad mapp %1$s blev nedladdad",
+ "Public shared file %1$s was downloaded" : "Offentligt delad fil %1$s blev nedladdad",
"%2$s shared %1$s with %3$s" : "%2$s delade %1$s med %3$s",
"You removed the share of %2$s for %1$s" : "Du tog bort delning av %2$s för %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s tog bort delningen av %3$s för %1$s",
- "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s delade %1$s med gruppen %3$s",
"You removed the share of group %2$s for %1$s" : "Du tog bort delningen av gruppen %2$s för %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s tog bort delningen av grupp %3$s för %1$s",
"%2$s shared %1$s via link" : "%2$s delade %1$s via länk",
"You shared %1$s via link" : "Du delade %1$s via länk",
- "You removed the public link for %1$s" : "Du tog bort den publika länken för %1$s",
- "%2$s removed the public link for %1$s" : "%2$s tog bort den publika länken för %1$s",
- "Your public link for %1$s expired" : "Din publika länk för %1$s har löpt ut",
- "The public link of %2$s for %1$s expired" : "Den publika länken för %2$s av %1$s har löpt ut",
- "%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
+ "You removed the public link for %1$s" : "Du tog bort den offentliga länken för %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s tog bort den offentliga länken för %1$s",
+ "Your public link for %1$s expired" : "Din offentliga länk för %1$s har löpt ut",
+ "The public link of %2$s for %1$s expired" : "Den offentliga länken för %2$s av %1$s har löpt ut",
"%2$s removed the share for %1$s" : "%2$s tog bort delningen av %1$s",
- "Downloaded via public link" : "Nerladdad via publik länk",
"Shared with %2$s" : "Delad med %2$s",
"Shared with %3$s by %2$s" : "Delad med %3$s av %2$s",
"Removed share for %2$s" : "Tog bort delningen för %2$s",
@@ -59,28 +166,11 @@
"Removed share of group %2$s" : "Tog bort delning av grupp %2$s",
"%2$s removed share of group %3$s" : "%2$s tog bort delningen av grupp %3$s",
"Shared via link by %2$s" : "Delad via länk av %2$s",
- "Shared via public link" : "Delad via publik länk",
- "Removed public link" : "Tog bort publik länk",
- "%2$s removed public link" : "%2$s tog bort publik länk",
- "Public link expired" : "Tidsgräns för publik länk har löpt ut",
- "Public link of %2$s expired" : "Tidsgräns för publik länk för %2$s har löpt ut",
+ "Shared via public link" : "Delad via offentlig länk",
+ "%2$s removed public link" : "%2$s tog bort offentlig länk",
+ "Public link expired" : "Tidsgräns för offentlig länk har löpt ut",
+ "Public link of %2$s expired" : "Tidsgräns för offentlig länk för %2$s har löpt ut",
"Shared by %2$s" : "Delad av %2$s",
- "Shares" : "Delningar",
- "This share is password-protected" : "Den här delningen är lösenordsskyddad",
- "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
- "Password" : "Lösenord",
- "No entries found in this folder" : "nga Filer hittades i denna mapp",
- "Name" : "Namn",
- "Share time" : "Delningstid",
- "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
- "Reasons might be:" : "Orsaker kan vara:",
- "the item was removed" : "objektet togs bort",
- "the link expired" : "giltighet för länken har gått ut",
- "sharing is disabled" : "delning är inaktiverat",
- "For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
- "Add to your ownCloud" : "Lägg till i din ownCloud",
- "Download" : "Ladda ner",
- "Download %s" : "Ladda ner %s",
- "Direct link" : "Direkt länk"
+ "Shares" : "Delningar"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index 80addb4fe86..93bed366572 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -4,19 +4,65 @@ OC.L10N.register(
"Shared with you" : "分享给您的文件",
"Shared with others" : "您分享的文件",
"Shared by link" : "分享链接的文件",
- "Nothing shared with you yet" : "你还没有收到任何共享的文件",
+ "Nothing shared with you yet" : "您还没有收到任何共享的文件",
"Files and folders others share with you will show up here" : "其它人共享给您的文件和文件夹将显示在这里",
"Nothing shared yet" : "还没有共享过文件",
"Files and folders you share will show up here" : "您共享的文件和文件夹将显示在这里",
"No shared links" : "无分享链接",
"Files and folders you share by link will show up here" : "您通过链接共享的文件和文件夹将显示在这里",
"You can upload into this folder" : "您可以上传文件至此文件夹",
+ "No compatible server found at {remote}" : " {remote} 未发现匹配的服务器",
+ "Invalid server URL" : "无效的服务器地址",
+ "Failed to add the public link to your Nextcloud" : "添加公开链接到您的 Nextcloud 失败",
+ "Share" : "分享",
+ "No expiration date set" : "未设置失效时间",
"Shared by" : "共享人",
"Sharing" : "共享",
+ "File shares" : "文件共享",
+ "Downloaded via public link" : "通过公开链接下载",
+ "Downloaded by %1$s" : "已被 %1$s 下载",
+ "Downloaded by {email}" : "已被 {email} 下载",
+ "%1$s downloaded via public link" : "已被 %1$s 通过公开链接下载",
+ "{file} downloaded via public link" : "{file} 被通过公开链接下载",
+ "%1$s downloaded %2$s" : "%1$s 已下载 %2$s",
+ "{email} downloaded {file}" : "{email} 已下载 {file}",
+ "Shared with group %1$s" : "分享到群组 %1$s",
+ "Shared with group {group}" : "分享到群组 {group}",
+ "Removed share for group %1$s" : "到群组 %1$s 的分享已被移除",
+ "Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
+ "%2$s shared with group %1$s" : "%2$s 被分享到群组 %1$s",
+ "{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "You shared %1$s with group %2$s" : "您把 %1$s 分享给了 %2$s 组",
+ "You removed group %2$s from %1$s" : "你移除了群组 %2$s 在 %1$s",
+ "Shared as public link" : "共享为公开链接",
+ "Removed public link" : "移除公开链接",
+ "%1$s shared as public link" : "%1$s 公共链接分享",
+ "{actor} shared as public link" : "{actor} 公共链接分享",
+ "%1$s removed public link" : "%1$s 删除公共链接",
+ "{actor} removed public link" : "{actor} 删除公共链接",
+ "You shared %1$s as public link" : "你共享了 %1$s 为公开链接",
+ "You shared {file} as public link" : "你共享了 {file} 为公开链接",
+ "You removed public link for %1$s" : "你移除了 %1$s 的公开链接",
+ "You removed public link for {file}" : "你移除了 {file} 的公开链接",
+ "{user} accepted the remote share" : "{user} 接受了远程共享",
+ "Shared with %1$s" : "与 %1$s 分享",
+ "Shared with {user}" : "与 {user} 分享",
+ "Removed share for {user}" : "移除给 {user} 的共享",
+ "Shared by %1$s" : "由 %1$s 共享",
+ "Shared by {actor}" : "由 {actor} 共享",
+ "%1$s removed share" : "%1$s 移除共享",
+ "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
+ "{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
+ "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
+ "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
+ "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
"Wrong share ID, share doesn't exist" : "错误的共享 ID,共享不存在",
+ "could not delete share" : "无法删除共享",
"Could not delete share" : "不能删除共享",
"Please specify a file or folder path" : "请指定一个文件或文件夹路径",
"Wrong path, file/folder doesn't exist" : "路径错误,文件/文件夹不存在",
+ "Could not create share" : "无法创建共享",
+ "invalid permissions" : "无效的权限",
"Please specify a valid user" : "请指定一个有效的用户",
"Group sharing is disabled by the administrator" : "群组共享已被管理员禁用",
"Please specify a valid group" : "请指定一个有效的组",
@@ -31,8 +77,29 @@ OC.L10N.register(
"Wrong or no update parameter given" : "错误或没有更新参数给出",
"Can't change permissions for public share links" : "不能改变公共分享链接权限",
"Cannot increase permissions" : "不能增加权限",
- "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
- "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
+ "%s is publicly shared" : "%s 是公开共享",
+ "Share API is disabled" : "共享 API 已被禁用",
+ "This share is password-protected" : "这是一个密码保护的共享",
+ "The password is wrong. Try again." : "用户名或密码错误!请重试",
+ "Password" : "密码",
+ "No entries found in this folder" : "此文件夹中无项目",
+ "Name" : "名称",
+ "Share time" : "分享时间",
+ "Expiration date" : "到期日期 ",
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
+ "Reasons might be:" : "可能原因是:",
+ "the item was removed" : "此项已移除",
+ "the link expired" : "链接过期",
+ "sharing is disabled" : "分享已禁用",
+ "For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
+ "Add to your Nextcloud" : "添加到你的 Nextcloud",
+ "Download" : "下载",
+ "Download %s" : "下载 %s",
+ "Direct link" : "直接链接",
+ "Upload files to %s" : "上传文件到 %s",
+ "Select or drop files" : "选择或删除文件",
+ "Uploading files…" : "上传文件 … ",
+ "Uploaded files:" : "上传的文件: ",
"A public shared file or folder was <strong>downloaded</strong>" : "一个公共共享的文件或文件夹<strong>已下载</strong>",
"You received a new remote share %2$s from %1$s" : "您收到一个新的远程共享 %2$s 来自于 %1$s",
"You received a new remote share from %s" : "您从%s收到了新的远程分享",
@@ -41,11 +108,9 @@ OC.L10N.register(
"%1$s unshared %2$s from you" : "%1$s 未共享你的 %2$s ",
"Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载",
"Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载",
- "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
"%2$s shared %1$s with %3$s" : "%2$s 共享 %1$s 给 %3$s",
"You removed the share of %2$s for %1$s" : "你移除了 %2$s 的共享 %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s 移除了 %3$s 的共享 %1$s",
- "You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组",
"%2$s shared %1$s with group %3$s" : "%2$s 共享 %1$s 给群组 %3$s",
"You removed the share of group %2$s for %1$s" : "你移除了组 %2$s 的共享 %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s 移除了组 %3$s 的共享 %1$s",
@@ -55,9 +120,7 @@ OC.L10N.register(
"%2$s removed the public link for %1$s" : "%2$s 移除了公共链接 %1$s",
"Your public link for %1$s expired" : "你的公开链接 %1$s 已过期",
"The public link of %2$s for %1$s expired" : "%2$s 的公开链接 %1$s 已过期",
- "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
"%2$s removed the share for %1$s" : "%2$s 移除了共享 %1$s",
- "Downloaded via public link" : "通过公开链接下载",
"Shared with %2$s" : "共享给 %2$s",
"Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s",
"Removed share for %2$s" : "移除共享 %2$s",
@@ -68,27 +131,10 @@ OC.L10N.register(
"%2$s removed share of group %3$s" : "%2$s 移除了群 %3$s 的共享",
"Shared via link by %2$s" : "%2$s 以链接方式共享",
"Shared via public link" : "通过公开链接共享",
- "Removed public link" : "移除公开链接",
"%2$s removed public link" : "%2$s 移除了公共链接",
"Public link expired" : "公开链接已过期",
"Public link of %2$s expired" : "%2$s 的公开链接已过期",
"Shared by %2$s" : "由 %2$s 共享",
- "Shares" : "共享",
- "Share API is disabled" : "共享 API 已被禁用",
- "This share is password-protected" : "这是一个密码保护的共享",
- "The password is wrong. Try again." : "用户名或密码错误!请重试",
- "Password" : "密码",
- "No entries found in this folder" : "此文件夹中无项目",
- "Name" : "名称",
- "Share time" : "分享时间",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
- "Reasons might be:" : "可能原因是:",
- "the item was removed" : "此项已移除",
- "the link expired" : "链接过期",
- "sharing is disabled" : "分享已禁用",
- "For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
- "Download" : "下载",
- "Download %s" : "下载 %s",
- "Direct link" : "直接链接"
+ "Shares" : "共享"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index 6110036a466..38e3b36040e 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -2,19 +2,65 @@
"Shared with you" : "分享给您的文件",
"Shared with others" : "您分享的文件",
"Shared by link" : "分享链接的文件",
- "Nothing shared with you yet" : "你还没有收到任何共享的文件",
+ "Nothing shared with you yet" : "您还没有收到任何共享的文件",
"Files and folders others share with you will show up here" : "其它人共享给您的文件和文件夹将显示在这里",
"Nothing shared yet" : "还没有共享过文件",
"Files and folders you share will show up here" : "您共享的文件和文件夹将显示在这里",
"No shared links" : "无分享链接",
"Files and folders you share by link will show up here" : "您通过链接共享的文件和文件夹将显示在这里",
"You can upload into this folder" : "您可以上传文件至此文件夹",
+ "No compatible server found at {remote}" : " {remote} 未发现匹配的服务器",
+ "Invalid server URL" : "无效的服务器地址",
+ "Failed to add the public link to your Nextcloud" : "添加公开链接到您的 Nextcloud 失败",
+ "Share" : "分享",
+ "No expiration date set" : "未设置失效时间",
"Shared by" : "共享人",
"Sharing" : "共享",
+ "File shares" : "文件共享",
+ "Downloaded via public link" : "通过公开链接下载",
+ "Downloaded by %1$s" : "已被 %1$s 下载",
+ "Downloaded by {email}" : "已被 {email} 下载",
+ "%1$s downloaded via public link" : "已被 %1$s 通过公开链接下载",
+ "{file} downloaded via public link" : "{file} 被通过公开链接下载",
+ "%1$s downloaded %2$s" : "%1$s 已下载 %2$s",
+ "{email} downloaded {file}" : "{email} 已下载 {file}",
+ "Shared with group %1$s" : "分享到群组 %1$s",
+ "Shared with group {group}" : "分享到群组 {group}",
+ "Removed share for group %1$s" : "到群组 %1$s 的分享已被移除",
+ "Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
+ "%2$s shared with group %1$s" : "%2$s 被分享到群组 %1$s",
+ "{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "You shared %1$s with group %2$s" : "您把 %1$s 分享给了 %2$s 组",
+ "You removed group %2$s from %1$s" : "你移除了群组 %2$s 在 %1$s",
+ "Shared as public link" : "共享为公开链接",
+ "Removed public link" : "移除公开链接",
+ "%1$s shared as public link" : "%1$s 公共链接分享",
+ "{actor} shared as public link" : "{actor} 公共链接分享",
+ "%1$s removed public link" : "%1$s 删除公共链接",
+ "{actor} removed public link" : "{actor} 删除公共链接",
+ "You shared %1$s as public link" : "你共享了 %1$s 为公开链接",
+ "You shared {file} as public link" : "你共享了 {file} 为公开链接",
+ "You removed public link for %1$s" : "你移除了 %1$s 的公开链接",
+ "You removed public link for {file}" : "你移除了 {file} 的公开链接",
+ "{user} accepted the remote share" : "{user} 接受了远程共享",
+ "Shared with %1$s" : "与 %1$s 分享",
+ "Shared with {user}" : "与 {user} 分享",
+ "Removed share for {user}" : "移除给 {user} 的共享",
+ "Shared by %1$s" : "由 %1$s 共享",
+ "Shared by {actor}" : "由 {actor} 共享",
+ "%1$s removed share" : "%1$s 移除共享",
+ "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
+ "{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
+ "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
+ "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
+ "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
"Wrong share ID, share doesn't exist" : "错误的共享 ID,共享不存在",
+ "could not delete share" : "无法删除共享",
"Could not delete share" : "不能删除共享",
"Please specify a file or folder path" : "请指定一个文件或文件夹路径",
"Wrong path, file/folder doesn't exist" : "路径错误,文件/文件夹不存在",
+ "Could not create share" : "无法创建共享",
+ "invalid permissions" : "无效的权限",
"Please specify a valid user" : "请指定一个有效的用户",
"Group sharing is disabled by the administrator" : "群组共享已被管理员禁用",
"Please specify a valid group" : "请指定一个有效的组",
@@ -29,8 +75,29 @@
"Wrong or no update parameter given" : "错误或没有更新参数给出",
"Can't change permissions for public share links" : "不能改变公共分享链接权限",
"Cannot increase permissions" : "不能增加权限",
- "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
- "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
+ "%s is publicly shared" : "%s 是公开共享",
+ "Share API is disabled" : "共享 API 已被禁用",
+ "This share is password-protected" : "这是一个密码保护的共享",
+ "The password is wrong. Try again." : "用户名或密码错误!请重试",
+ "Password" : "密码",
+ "No entries found in this folder" : "此文件夹中无项目",
+ "Name" : "名称",
+ "Share time" : "分享时间",
+ "Expiration date" : "到期日期 ",
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
+ "Reasons might be:" : "可能原因是:",
+ "the item was removed" : "此项已移除",
+ "the link expired" : "链接过期",
+ "sharing is disabled" : "分享已禁用",
+ "For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
+ "Add to your Nextcloud" : "添加到你的 Nextcloud",
+ "Download" : "下载",
+ "Download %s" : "下载 %s",
+ "Direct link" : "直接链接",
+ "Upload files to %s" : "上传文件到 %s",
+ "Select or drop files" : "选择或删除文件",
+ "Uploading files…" : "上传文件 … ",
+ "Uploaded files:" : "上传的文件: ",
"A public shared file or folder was <strong>downloaded</strong>" : "一个公共共享的文件或文件夹<strong>已下载</strong>",
"You received a new remote share %2$s from %1$s" : "您收到一个新的远程共享 %2$s 来自于 %1$s",
"You received a new remote share from %s" : "您从%s收到了新的远程分享",
@@ -39,11 +106,9 @@
"%1$s unshared %2$s from you" : "%1$s 未共享你的 %2$s ",
"Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载",
"Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载",
- "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
"%2$s shared %1$s with %3$s" : "%2$s 共享 %1$s 给 %3$s",
"You removed the share of %2$s for %1$s" : "你移除了 %2$s 的共享 %1$s",
"%2$s removed the share of %3$s for %1$s" : "%2$s 移除了 %3$s 的共享 %1$s",
- "You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组",
"%2$s shared %1$s with group %3$s" : "%2$s 共享 %1$s 给群组 %3$s",
"You removed the share of group %2$s for %1$s" : "你移除了组 %2$s 的共享 %1$s",
"%2$s removed the share of group %3$s for %1$s" : "%2$s 移除了组 %3$s 的共享 %1$s",
@@ -53,9 +118,7 @@
"%2$s removed the public link for %1$s" : "%2$s 移除了公共链接 %1$s",
"Your public link for %1$s expired" : "你的公开链接 %1$s 已过期",
"The public link of %2$s for %1$s expired" : "%2$s 的公开链接 %1$s 已过期",
- "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
"%2$s removed the share for %1$s" : "%2$s 移除了共享 %1$s",
- "Downloaded via public link" : "通过公开链接下载",
"Shared with %2$s" : "共享给 %2$s",
"Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s",
"Removed share for %2$s" : "移除共享 %2$s",
@@ -66,27 +129,10 @@
"%2$s removed share of group %3$s" : "%2$s 移除了群 %3$s 的共享",
"Shared via link by %2$s" : "%2$s 以链接方式共享",
"Shared via public link" : "通过公开链接共享",
- "Removed public link" : "移除公开链接",
"%2$s removed public link" : "%2$s 移除了公共链接",
"Public link expired" : "公开链接已过期",
"Public link of %2$s expired" : "%2$s 的公开链接已过期",
"Shared by %2$s" : "由 %2$s 共享",
- "Shares" : "共享",
- "Share API is disabled" : "共享 API 已被禁用",
- "This share is password-protected" : "这是一个密码保护的共享",
- "The password is wrong. Try again." : "用户名或密码错误!请重试",
- "Password" : "密码",
- "No entries found in this folder" : "此文件夹中无项目",
- "Name" : "名称",
- "Share time" : "分享时间",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
- "Reasons might be:" : "可能原因是:",
- "the item was removed" : "此项已移除",
- "the link expired" : "链接过期",
- "sharing is disabled" : "分享已禁用",
- "For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
- "Download" : "下载",
- "Download %s" : "下载 %s",
- "Direct link" : "直接链接"
+ "Shares" : "共享"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/lib/Activity/Providers/Downloads.php b/apps/files_sharing/lib/Activity/Providers/Downloads.php
index e1a25156441..01012e4785b 100644
--- a/apps/files_sharing/lib/Activity/Providers/Downloads.php
+++ b/apps/files_sharing/lib/Activity/Providers/Downloads.php
@@ -187,7 +187,7 @@ class Downloads implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/files_sharing/lib/Activity/Providers/Groups.php b/apps/files_sharing/lib/Activity/Providers/Groups.php
index 326ebba9ef7..6c25572d0d4 100644
--- a/apps/files_sharing/lib/Activity/Providers/Groups.php
+++ b/apps/files_sharing/lib/Activity/Providers/Groups.php
@@ -232,7 +232,7 @@ class Groups implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/files_sharing/lib/Activity/Providers/PublicLinks.php b/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
index ec8152c5a32..20070970bca 100644
--- a/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
+++ b/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
@@ -239,7 +239,7 @@ class PublicLinks implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/files_sharing/lib/Activity/Providers/Users.php b/apps/files_sharing/lib/Activity/Providers/Users.php
index d85eeadc315..4db72136a85 100644
--- a/apps/files_sharing/lib/Activity/Providers/Users.php
+++ b/apps/files_sharing/lib/Activity/Providers/Users.php
@@ -260,7 +260,7 @@ class Users implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php
index 922db7dac75..403d30ae2e6 100644
--- a/apps/files_sharing/lib/AppInfo/Application.php
+++ b/apps/files_sharing/lib/AppInfo/Application.php
@@ -111,7 +111,9 @@ class Application extends App {
$c->query('AppName'),
$server->getConfig(),
$server->getAppManager(),
- $c['ControllerMethodReflector']
+ $c['ControllerMethodReflector'],
+ $server->getShareManager(),
+ $server->getRequest()
);
});
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 90274beba49..6181cde6fe6 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -168,8 +168,9 @@ class ShareAPIController extends OCSController {
$result['share_with'] = $share->getSharedWith();
$result['share_with_displayname'] = $sharedWith !== null ? $sharedWith->getDisplayName() : $share->getSharedWith();
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ $group = $this->groupManager->get($share->getSharedWith());
$result['share_with'] = $share->getSharedWith();
- $result['share_with_displayname'] = $share->getSharedWith();
+ $result['share_with_displayname'] = $group !== null ? $group->getDisplayName() : $share->getSharedWith();
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$result['share_with'] = $share->getPassword();
@@ -667,6 +668,7 @@ class ShareAPIController extends OCSController {
\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE, // legacy
\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE, // correct
\OCP\Constants::PERMISSION_CREATE, // hidden file list
+ \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, // allow to edit single files
])
) {
throw new OCSBadRequestException($this->l->t('Can\'t change permissions for public share links'));
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 3b86f7dc23b..6f9d4ca032a 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -160,6 +160,7 @@ class ShareController extends Controller {
/**
* @PublicPage
* @UseSession
+ * @BruteForceProtection publicLinkAuth
*
* Authenticates against password-protected shares
* @param string $token
@@ -487,7 +488,7 @@ class ShareController extends Controller {
// Single file download
$this->singleFileDownloaded($share, $share->getNode());
} else if (!empty($files_list)) {
- $this->fileListDownloaded($share, $files_list);
+ $this->fileListDownloaded($share, $files_list, $node);
} else {
// The folder is downloaded
$this->singleFileDownloaded($share, $share->getNode());
@@ -541,10 +542,11 @@ class ShareController extends Controller {
*
* @param Share\IShare $share
* @param array $files_list
+ * @param \OCP\Files\Folder $node
*/
- protected function fileListDownloaded(Share\IShare $share, array $files_list) {
+ protected function fileListDownloaded(Share\IShare $share, array $files_list, \OCP\Files\Folder $node) {
foreach ($files_list as $file) {
- $subNode = $share->getNode()->get($file);
+ $subNode = $node->get($file);
$this->singleFileDownloaded($share, $subNode);
}
diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php
index 6b3208dc289..cd5139693cf 100644
--- a/apps/files_sharing/lib/Controller/ShareesAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php
@@ -165,9 +165,10 @@ class ShareesAPIController extends OCSController {
}
$foundUserById = false;
+ $lowerSearch = strtolower($search);
foreach ($users as $uid => $userDisplayName) {
- if (strtolower($uid) === strtolower($search) || strtolower($userDisplayName) === strtolower($search)) {
- if (strtolower($uid) === strtolower($search)) {
+ if (strtolower($uid) === $lowerSearch || strtolower($userDisplayName) === $lowerSearch) {
+ if (strtolower($uid) === $lowerSearch) {
$foundUserById = true;
}
$this->result['exact']['users'][] = [
@@ -225,7 +226,7 @@ class ShareesAPIController extends OCSController {
$this->result['groups'] = $this->result['exact']['groups'] = [];
$groups = $this->groupManager->search($search, $this->limit, $this->offset);
- $groups = array_map(function (IGroup $group) { return $group->getGID(); }, $groups);
+ $groupIds = array_map(function (IGroup $group) { return $group->getGID(); }, $groups);
if (!$this->shareeEnumeration || sizeof($groups) < $this->limit) {
$this->reachedEndFor[] = 'groups';
@@ -236,13 +237,19 @@ class ShareesAPIController extends OCSController {
// Intersect all the groups that match with the groups this user is a member of
$userGroups = $this->groupManager->getUserGroups($this->userSession->getUser());
$userGroups = array_map(function (IGroup $group) { return $group->getGID(); }, $userGroups);
- $groups = array_intersect($groups, $userGroups);
+ $groupIds = array_intersect($groupIds, $userGroups);
}
- foreach ($groups as $gid) {
- if (strtolower($gid) === strtolower($search)) {
+ $lowerSearch = strtolower($search);
+ foreach ($groups as $group) {
+ // FIXME: use a more efficient approach
+ $gid = $group->getGID();
+ if (!in_array($gid, $groupIds)) {
+ continue;
+ }
+ if (strtolower($gid) === $lowerSearch || strtolower($group->getDisplayName()) === $lowerSearch) {
$this->result['exact']['groups'][] = [
- 'label' => $gid,
+ 'label' => $group->getDisplayName(),
'value' => [
'shareType' => Share::SHARE_TYPE_GROUP,
'shareWith' => $gid,
@@ -250,7 +257,7 @@ class ShareesAPIController extends OCSController {
];
} else {
$this->result['groups'][] = [
- 'label' => $gid,
+ 'label' => $group->getDisplayName(),
'value' => [
'shareType' => Share::SHARE_TYPE_GROUP,
'shareWith' => $gid,
@@ -265,7 +272,7 @@ class ShareesAPIController extends OCSController {
$group = $this->groupManager->get($search);
if ($group instanceof IGroup && (!$this->shareWithGroupOnly || in_array($group->getGID(), $userGroups))) {
array_push($this->result['exact']['groups'], [
- 'label' => $group->getGID(),
+ 'label' => $group->getDisplayName(),
'value' => [
'shareType' => Share::SHARE_TYPE_GROUP,
'shareWith' => $group->getGID(),
@@ -299,10 +306,11 @@ class ShareesAPIController extends OCSController {
if (!is_array($cloudIds)) {
$cloudIds = [$cloudIds];
}
+ $lowerSearch = strtolower($search);
foreach ($cloudIds as $cloudId) {
list(, $serverUrl) = $this->splitUserRemote($cloudId);
- if (strtolower($contact['FN']) === strtolower($search) || strtolower($cloudId) === strtolower($search)) {
- if (strtolower($cloudId) === strtolower($search)) {
+ if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) {
+ if (strtolower($cloudId) === $lowerSearch) {
$result['exactIdMatch'] = true;
}
$result['exact'][] = [
diff --git a/apps/files_sharing/lib/Helper.php b/apps/files_sharing/lib/Helper.php
index 5ba65ea1317..a659da9292f 100644
--- a/apps/files_sharing/lib/Helper.php
+++ b/apps/files_sharing/lib/Helper.php
@@ -39,7 +39,6 @@ class Helper {
public static function registerHooks() {
\OCP\Util::connectHook('OC_Filesystem', 'post_rename', '\OCA\Files_Sharing\Updater', 'renameHook');
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren');
- \OCP\Util::connectHook('OC_Appconfig', 'post_set_value', '\OCA\Files_Sharing\Maintainer', 'configChangeHook');
\OCP\Util::connectHook('OC_User', 'post_deleteUser', '\OCA\Files_Sharing\Hooks', 'deleteUser');
}
diff --git a/apps/files_sharing/lib/Maintainer.php b/apps/files_sharing/lib/Maintainer.php
deleted file mode 100644
index db8f4aae0aa..00000000000
--- a/apps/files_sharing/lib/Maintainer.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OCA\Files_Sharing;
-
-/**
- * Maintains stuff around the sharing functionality
- *
- * for example: on disable of "allow links" it removes all link shares
- */
-
-class Maintainer {
-
- /**
- * Keeps track of the "allow links" config setting
- * and removes all link shares if the config option is set to "no"
- *
- * @param array $params array with app, key, value as named values
- */
- static public function configChangeHook($params) {
- if($params['app'] === 'core' && $params['key'] === 'shareapi_allow_links' && $params['value'] === 'no') {
- \OCP\Share::removeAllLinkShares();
- }
- }
-
-}
diff --git a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
index 7e9109bf2d1..5712b96b97d 100644
--- a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
+++ b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php
@@ -25,6 +25,8 @@
namespace OCA\Files_Sharing\Middleware;
+use OCA\Files_Sharing\Controller\ExternalSharesController;
+use OCA\Files_Sharing\Controller\ShareController;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\AppFramework\Middleware;
@@ -33,6 +35,8 @@ use OCP\IConfig;
use OCP\AppFramework\Utility\IControllerMethodReflector;
use OCA\Files_Sharing\Exceptions\S2SException;
use OCP\AppFramework\Http\JSONResponse;
+use OCP\IRequest;
+use OCP\Share\IManager;
/**
* Checks whether the "sharing check" is enabled
@@ -49,21 +53,32 @@ class SharingCheckMiddleware extends Middleware {
protected $appManager;
/** @var IControllerMethodReflector */
protected $reflector;
+ /** @var IManager */
+ protected $shareManager;
+ /** @var IRequest */
+ protected $request;
/***
* @param string $appName
* @param IConfig $config
* @param IAppManager $appManager
+ * @param IControllerMethodReflector $reflector
+ * @param IManager $shareManager
+ * @param IRequest $request
*/
public function __construct($appName,
IConfig $config,
IAppManager $appManager,
- IControllerMethodReflector $reflector
+ IControllerMethodReflector $reflector,
+ IManager $shareManager,
+ IRequest $request
) {
$this->appName = $appName;
$this->config = $config;
$this->appManager = $appManager;
$this->reflector = $reflector;
+ $this->shareManager = $shareManager;
+ $this->request = $request;
}
/**
@@ -72,18 +87,23 @@ class SharingCheckMiddleware extends Middleware {
* @param \OCP\AppFramework\Controller $controller
* @param string $methodName
* @throws NotFoundException
+ * @throws S2SException
*/
public function beforeController($controller, $methodName) {
if(!$this->isSharingEnabled()) {
throw new NotFoundException('Sharing is disabled.');
}
- if ($controller instanceof \OCA\Files_Sharing\Controller\ExternalSharesController &&
+ if ($controller instanceof ExternalSharesController &&
!$this->externalSharesChecks()) {
throw new S2SException('Federated sharing not allowed');
- } else if ($controller instanceof \OCA\Files_Sharing\Controller\ShareController &&
- !$this->isLinkSharingEnabled()) {
- throw new NotFoundException('Link sharing is disabled');
+ } else if ($controller instanceof ShareController) {
+ $token = $this->request->getParam('token');
+ $share = $this->shareManager->getShareByToken($token);
+ if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK
+ && !$this->isLinkSharingEnabled()) {
+ throw new NotFoundException('Link sharing is disabled');
+ }
}
}
diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php
index 40d2fb27535..5c5d57057b2 100644
--- a/apps/files_sharing/lib/MountProvider.php
+++ b/apps/files_sharing/lib/MountProvider.php
@@ -123,7 +123,7 @@ class MountProvider implements IMountProvider {
// sort by stime, the super share will be based on the least recent share
foreach ($tmp as &$tmp2) {
@usort($tmp2, function($a, $b) {
- if ($a->getShareTime() < $b->getShareTime()) {
+ if ($a->getShareTime() <= $b->getShareTime()) {
return -1;
}
return 1;
diff --git a/apps/files_sharing/lib/Scanner.php b/apps/files_sharing/lib/Scanner.php
index 86c6b58f439..cab04fa9309 100644
--- a/apps/files_sharing/lib/Scanner.php
+++ b/apps/files_sharing/lib/Scanner.php
@@ -31,6 +31,11 @@ use OC\Files\ObjectStore\NoopScanner;
* Scanner for SharedStorage
*/
class Scanner extends \OC\Files\Cache\Scanner {
+ /**
+ * @var \OCA\Files_Sharing\SharedStorage $storage
+ */
+ protected $storage;
+
private $sourceScanner;
/**
@@ -46,8 +51,8 @@ class Scanner extends \OC\Files\Cache\Scanner {
if ($data === null) {
return null;
}
- list($sourceStorage, $internalPath) = $this->storage->resolvePath($path);
- $data['permissions'] = $sourceStorage->getPermissions($internalPath);
+ $internalPath = $this->storage->getSourcePath($path);
+ $data['permissions'] = $this->storage->getSourceStorage()->getPermissions($internalPath);
return $data;
}
diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php
index 5436f476f1a..2ef5e15b778 100644
--- a/apps/files_sharing/lib/SharedMount.php
+++ b/apps/files_sharing/lib/SharedMount.php
@@ -115,9 +115,9 @@ class SharedMount extends MountPoint implements MoveableMount {
private function updateFileTarget($newPath, &$share) {
$share->setTarget($newPath);
- foreach ($this->groupedShares as $share) {
- $share->setTarget($newPath);
- \OC::$server->getShareManager()->moveShare($share, $this->user);
+ foreach ($this->groupedShares as $tmpShare) {
+ $tmpShare->setTarget($newPath);
+ \OC::$server->getShareManager()->moveShare($tmpShare, $this->user);
}
}
@@ -130,12 +130,12 @@ class SharedMount extends MountPoint implements MoveableMount {
*/
private function generateUniqueTarget($path, $view, array $mountpoints) {
$pathinfo = pathinfo($path);
- $ext = (isset($pathinfo['extension'])) ? '.'.$pathinfo['extension'] : '';
+ $ext = (isset($pathinfo['extension'])) ? '.' . $pathinfo['extension'] : '';
$name = $pathinfo['filename'];
$dir = $pathinfo['dirname'];
// Helper function to find existing mount points
- $mountpointExists = function($path) use ($mountpoints) {
+ $mountpointExists = function ($path) use ($mountpoints) {
foreach ($mountpoints as $mountpoint) {
if ($mountpoint->getShare()->getTarget() === $path) {
return true;
@@ -146,7 +146,7 @@ class SharedMount extends MountPoint implements MoveableMount {
$i = 2;
while ($view->file_exists($path) || $mountpointExists($path)) {
- $path = Filesystem::normalizePath($dir . '/' . $name . ' ('.$i.')' . $ext);
+ $path = Filesystem::normalizePath($dir . '/' . $name . ' (' . $i . ')' . $ext);
$i++;
}
@@ -240,18 +240,22 @@ class SharedMount extends MountPoint implements MoveableMount {
* @return int
*/
public function getNumericStorageId() {
- $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
-
- $query = $builder->select('storage')
- ->from('filecache')
- ->where($builder->expr()->eq('fileid', $builder->createNamedParameter($this->getStorageRootId())));
-
- $result = $query->execute();
- $row = $result->fetch();
- $result->closeCursor();
- if ($row) {
- return $row['storage'];
+ if (!is_null($this->getShare()->getNodeCacheEntry())) {
+ return $this->getShare()->getNodeCacheEntry()->getStorageId();
+ } else {
+ $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+
+ $query = $builder->select('storage')
+ ->from('filecache')
+ ->where($builder->expr()->eq('fileid', $builder->createNamedParameter($this->getStorageRootId())));
+
+ $result = $query->execute();
+ $row = $result->fetch();
+ $result->closeCursor();
+ if ($row) {
+ return $row['storage'];
+ }
+ return -1;
}
- return -1;
}
}
diff --git a/apps/files_sharing/lib/SharedStorage.php b/apps/files_sharing/lib/SharedStorage.php
index ad250a790fa..888cbfda143 100644
--- a/apps/files_sharing/lib/SharedStorage.php
+++ b/apps/files_sharing/lib/SharedStorage.php
@@ -446,7 +446,8 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
}
public function getSourceStorage() {
- return $this->getWrapperStorage();
+ $this->init();
+ return $this->nonMaskedStorage;
}
public function getWrapperStorage() {
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index 32e4f3d3dd6..dd2ea855b0b 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -35,40 +35,35 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<header><div id="header" class="<?php p((isset($_['folder']) ? 'share-folder' : 'share-file')) ?>">
- <a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
- title="" id="nextcloud">
- <div class="logo-icon svg">
- </div>
- </a>
-
- <div class="header-appname-container">
- <h1 class="header-appname">
- <?php p($theme->getName()); ?>
- </h1>
+ <div id="header-left">
+ <a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
+ title="" id="nextcloud">
+ <div class="logo-icon svg"></div>
+ <h1 class="header-appname">
+ <?php p($theme->getName()); ?>
+ </h1>
+ </a>
</div>
<div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div>
- <div class="header-right">
- <span id="details">
- <?php
- if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)) {
- if ($_['server2serversharing']) {
- ?>
- <span id="save" data-protected="<?php p($_['protected']) ?>"
- data-owner-display-name="<?php p($_['displayName']) ?>" data-owner="<?php p($_['owner']) ?>" data-name="<?php p($_['filename']) ?>">
- <button id="save-button"><?php p($l->t('Add to your Nextcloud')) ?></button>
- <form class="save-form hidden" action="#">
- <input type="text" id="remote_address" placeholder="user@yourNextcloud.org"/>
- <button id="save-button-confirm" class="icon-confirm svg" disabled></button>
- </form>
- </span>
- <?php } ?>
- <a href="<?php p($_['downloadURL']); ?>" id="download" class="button">
- <img class="svg" alt="" src="<?php print_unescaped(image_path("core", "actions/download.svg")); ?>"/>
- <span id="download-text"><?php p($l->t('Download'))?></span>
- </a>
+ <div id="header-right">
+ <?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)) {
+ if ($_['server2serversharing']) {
+ ?>
+ <span id="save" data-protected="<?php p($_['protected']) ?>"
+ data-owner-display-name="<?php p($_['displayName']) ?>" data-owner="<?php p($_['owner']) ?>" data-name="<?php p($_['filename']) ?>">
+ <button id="save-button"><?php p($l->t('Add to your Nextcloud')) ?></button>
+ <form class="save-form hidden" action="#">
+ <input type="email" id="remote_address" placeholder="user@yourNextcloud.org"/>
+ <button id="save-button-confirm" class="icon-confirm svg" disabled></button>
+ </form>
+ </span>
<?php } ?>
- </span>
+ <a href="<?php p($_['downloadURL']); ?>" id="download" class="button">
+ <span class="icon icon-download"></span>
+ <span id="download-text"><?php p($l->t('Download'))?></span>
+ </a>
+ <?php } ?>
</div>
</div></header>
<div id="content-wrapper">
@@ -89,8 +84,8 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<div id="imgframe"></div>
<?php endif; ?>
<div class="directDownload">
- <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button">
- <img class="svg" alt="" src="<?php print_unescaped(image_path("core", "actions/download.svg")); ?>"/>
+ <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button primary">
+ <span class="icon icon-download"></span>
<?php p($l->t('Download %s', array($_['filename'])))?> (<?php p($_['fileSize']) ?>)
</a>
</div>
diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
index ed4aa1dba9e..97774081b6a 100644
--- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
@@ -23,10 +23,8 @@
*/
namespace OCA\Files_Sharing\Tests\Controller;
-use OC\ContactsManager;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSNotFoundException;
-use OCP\Contacts;
use OCP\Files\Folder;
use OCP\IL10N;
use OCA\Files_Sharing\Controller\ShareAPIController;
@@ -39,6 +37,7 @@ use OCP\IUser;
use OCP\Files\IRootFolder;
use OCP\Lock\LockedException;
use OCP\Share\IManager;
+use OCP\Share;
/**
* Class ShareAPIControllerTest
@@ -1882,9 +1881,10 @@ class ShareAPIControllerTest extends \Test\TestCase {
], $share, [], false
];
+ // with existing group
$share = \OC::$server->getShareManager()->newShare();
$share->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
- ->setSharedWith('recipient')
+ ->setSharedWith('recipientGroup')
->setSharedBy('initiator')
->setShareOwner('owner')
->setPermissions(\OCP\Constants::PERMISSION_READ)
@@ -1914,8 +1914,47 @@ class ShareAPIControllerTest extends \Test\TestCase {
'file_source' => 3,
'file_parent' => 1,
'file_target' => 'myTarget',
- 'share_with' => 'recipient',
- 'share_with_displayname' => 'recipient',
+ 'share_with' => 'recipientGroup',
+ 'share_with_displayname' => 'recipientGroupDisplayName',
+ 'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
+ ], $share, [], false
+ ];
+
+ // with unknown group / no group backend
+ $share = \OC::$server->getShareManager()->newShare();
+ $share->setShareType(Share::SHARE_TYPE_GROUP)
+ ->setSharedWith('recipientGroup2')
+ ->setSharedBy('initiator')
+ ->setShareOwner('owner')
+ ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setNode($file)
+ ->setShareTime(new \DateTime('2000-01-01T00:01:02'))
+ ->setTarget('myTarget')
+ ->setId(42);
+ $result[] = [
+ [
+ 'id' => 42,
+ 'share_type' => Share::SHARE_TYPE_GROUP,
+ 'uid_owner' => 'initiator',
+ 'displayname_owner' => 'initiator',
+ 'permissions' => 1,
+ 'stime' => 946684862,
+ 'parent' => null,
+ 'expiration' => null,
+ 'token' => null,
+ 'uid_file_owner' => 'owner',
+ 'displayname_file_owner' => 'owner',
+ 'path' => 'file',
+ 'item_type' => 'file',
+ 'storage_id' => 'storageId',
+ 'storage' => 100,
+ 'item_source' => 3,
+ 'file_source' => 3,
+ 'file_parent' => 1,
+ 'file_target' => 'myTarget',
+ 'share_with' => 'recipientGroup2',
+ 'share_with_displayname' => 'recipientGroup2',
'mail_send' => 0,
'mimetype' => 'myMimeType',
], $share, [], false
@@ -2029,6 +2068,13 @@ class ShareAPIControllerTest extends \Test\TestCase {
*/
public function testFormatShare(array $expects, \OCP\Share\IShare $share, array $users, $exception) {
$this->userManager->method('get')->will($this->returnValueMap($users));
+
+ $recipientGroup = $this->createMock('\OCP\IGroup');
+ $recipientGroup->method('getDisplayName')->willReturn('recipientGroupDisplayName');
+ $this->groupManager->method('get')->will($this->returnValueMap([
+ ['recipientGroup', $recipientGroup],
+ ]));
+
$this->urlGenerator->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.showShare', ['token' => 'myToken'])
->willReturn('myLink');
diff --git a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php
index c570cb16980..c68e2304743 100644
--- a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php
@@ -133,7 +133,7 @@ class ShareesAPIControllerTest extends TestCase {
* @param string $gid
* @return \OCP\IGroup|\PHPUnit_Framework_MockObject_MockObject
*/
- protected function getGroupMock($gid) {
+ protected function getGroupMock($gid, $displayName = null) {
$group = $this->getMockBuilder('OCP\IGroup')
->disableOriginalConstructor()
->getMock();
@@ -142,6 +142,15 @@ class ShareesAPIControllerTest extends TestCase {
->method('getGID')
->willReturn($gid);
+ if (is_null($displayName)) {
+ // note: this is how the Group class behaves
+ $displayName = $gid;
+ }
+
+ $group->expects($this->any())
+ ->method('getDisplayName')
+ ->willReturn($displayName);
+
return $group;
}
@@ -467,6 +476,7 @@ class ShareesAPIControllerTest extends TestCase {
return [
['test', false, true, [], [], [], [], true, false],
['test', false, false, [], [], [], [], true, false],
+ // group without display name
[
'test', false, true,
[$this->getGroupMock('test1')],
@@ -476,6 +486,36 @@ class ShareesAPIControllerTest extends TestCase {
true,
false,
],
+ // group with display name, search by id
+ [
+ 'test', false, true,
+ [$this->getGroupMock('test1', 'Test One')],
+ [],
+ [],
+ [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]],
+ true,
+ false,
+ ],
+ // group with display name, search by display name
+ [
+ 'one', false, true,
+ [$this->getGroupMock('test1', 'Test One')],
+ [],
+ [],
+ [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]],
+ true,
+ false,
+ ],
+ // group with display name, search by display name, exact expected
+ [
+ 'Test One', false, true,
+ [$this->getGroupMock('test1', 'Test One')],
+ [],
+ [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]],
+ [],
+ true,
+ false,
+ ],
[
'test', false, false,
[$this->getGroupMock('test1')],
diff --git a/apps/files_sharing/tests/Middleware/SharingCheckMiddlewareTest.php b/apps/files_sharing/tests/Middleware/SharingCheckMiddlewareTest.php
index c2965d04b6b..8d7d42722b9 100644
--- a/apps/files_sharing/tests/Middleware/SharingCheckMiddlewareTest.php
+++ b/apps/files_sharing/tests/Middleware/SharingCheckMiddlewareTest.php
@@ -34,6 +34,9 @@ use OCP\AppFramework\Utility\IControllerMethodReflector;
use OCA\Files_Sharing\Exceptions\S2SException;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IConfig;
+use OCP\IRequest;
+use OCP\Share\IManager;
+use OCP\Share\IShare;
/**
* @package OCA\Files_Sharing\Middleware\SharingCheckMiddleware
@@ -50,6 +53,10 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
private $controllerMock;
/** @var IControllerMethodReflector|\PHPUnit_Framework_MockObject_MockObject */
private $reflector;
+ /** @var IManager | \PHPUnit_Framework_MockObject_MockObject */
+ private $shareManager;
+ /** @var IRequest | \PHPUnit_Framework_MockObject_MockObject */
+ private $request;
protected function setUp() {
parent::setUp();
@@ -58,12 +65,16 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->controllerMock = $this->createMock(Controller::class);
$this->reflector = $this->createMock(IControllerMethodReflector::class);
+ $this->shareManager = $this->createMock(IManager::class);
+ $this->request = $this->createMock(IRequest::class);
$this->sharingCheckMiddleware = new SharingCheckMiddleware(
'files_sharing',
$this->config,
$this->appManager,
- $this->reflector);
+ $this->reflector,
+ $this->shareManager,
+ $this->request);
}
public function testIsSharingEnabledWithAppEnabled() {
@@ -215,6 +226,9 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
}
public function testBeforeControllerWithShareControllerWithSharingEnabled() {
+
+ $share = $this->createMock(IShare::class);
+
$this->appManager
->expects($this->once())
->method('isEnabledForUser')
@@ -233,6 +247,13 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
->with('core', 'shareapi_allow_links', 'yes')
->will($this->returnValue('yes'));
+ $this->request->expects($this->once())->method('getParam')->with('token')
+ ->willReturn('token');
+ $this->shareManager->expects($this->once())->method('getShareByToken')
+ ->with('token')->willReturn($share);
+
+ $share->expects($this->once())->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_LINK);
+
$controller = $this->createMock(ShareController::class);
$this->sharingCheckMiddleware->beforeController($controller, 'myMethod');
@@ -243,6 +264,9 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
* @expectedExceptionMessage Link sharing is disabled
*/
public function testBeforeControllerWithShareControllerWithSharingEnabledAPIDisabled() {
+
+ $share = $this->createMock(IShare::class);
+
$this->appManager
->expects($this->once())
->method('isEnabledForUser')
@@ -251,6 +275,14 @@ class SharingCheckMiddlewareTest extends \Test\TestCase {
$controller = $this->createMock(ShareController::class);
+ $this->request->expects($this->once())->method('getParam')->with('token')
+ ->willReturn('token');
+ $this->shareManager->expects($this->once())->method('getShareByToken')
+ ->with('token')->willReturn($share);
+
+ $share->expects($this->once())->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_LINK);
+
+
$this->sharingCheckMiddleware->beforeController($controller, 'myMethod');
}
diff --git a/apps/files_sharing/tests/SharedStorageTest.php b/apps/files_sharing/tests/SharedStorageTest.php
index f1b0cbb8fbb..eaa138b0f70 100644
--- a/apps/files_sharing/tests/SharedStorageTest.php
+++ b/apps/files_sharing/tests/SharedStorageTest.php
@@ -531,4 +531,32 @@ class SharedStorageTest extends TestCase {
$this->shareManager->deleteShare($share1);
$this->shareManager->deleteShare($share2);
}
+
+ public function testOwnerPermissions() {
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+
+ $share = $this->share(
+ \OCP\Share::SHARE_TYPE_USER,
+ $this->folder,
+ self::TEST_FILES_SHARING_API_USER1,
+ self::TEST_FILES_SHARING_API_USER2,
+ \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_DELETE
+ );
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+ $view = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
+ $this->assertTrue($view->file_exists($this->folder));
+
+ $view->file_put_contents($this->folder . '/newfile.txt', 'asd');
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+
+ $this->assertTrue($this->view->file_exists($this->folder . '/newfile.txt'));
+ $this->assertEquals(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
+ $this->view->getFileInfo($this->folder . '/newfile.txt')->getPermissions());
+
+ $this->view->unlink($this->folder);
+ $this->shareManager->deleteShare($share);
+
+ }
}
diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml
index 04b8a7293cb..a756013568d 100644
--- a/apps/files_trashbin/appinfo/info.xml
+++ b/apps/files_trashbin/appinfo/info.xml
@@ -10,13 +10,13 @@ To prevent a user from running out of disk space, the Deleted files app will not
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
<default_enable/>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<types>
<filesystem/>
</types>
<namespace>Files_Trashbin</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-trashbin</user>
diff --git a/apps/files_trashbin/l10n/ca.js b/apps/files_trashbin/l10n/ca.js
index d5f19e466c1..149611cd8d2 100644
--- a/apps/files_trashbin/l10n/ca.js
+++ b/apps/files_trashbin/l10n/ca.js
@@ -8,9 +8,11 @@ OC.L10N.register(
"Delete" : "Esborra",
"Delete permanently" : "Esborra permanentment",
"Error" : "Error",
+ "This operation is forbidden" : "Aquesta operació està prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Comproveu els registres o contacteu amb l'administrador.",
"restored" : "restaurat",
- "No deleted files" : "No hi ha cap arxiu eliminat",
- "You will be able to recover deleted files from here" : "Des d'aquí es podran recuperar arxius eliminats",
+ "No deleted files" : "No hi ha cap fitxer eliminat",
+ "You will be able to recover deleted files from here" : "Des d'aquí es podran recuperar fitxers eliminats",
"No entries found in this folder" : "No hi ha entrades en aquesta carpeta",
"Select all" : "Seleccionar tot",
"Name" : "Nom",
diff --git a/apps/files_trashbin/l10n/ca.json b/apps/files_trashbin/l10n/ca.json
index 520ef5f2f74..2bd36c79241 100644
--- a/apps/files_trashbin/l10n/ca.json
+++ b/apps/files_trashbin/l10n/ca.json
@@ -6,9 +6,11 @@
"Delete" : "Esborra",
"Delete permanently" : "Esborra permanentment",
"Error" : "Error",
+ "This operation is forbidden" : "Aquesta operació està prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Comproveu els registres o contacteu amb l'administrador.",
"restored" : "restaurat",
- "No deleted files" : "No hi ha cap arxiu eliminat",
- "You will be able to recover deleted files from here" : "Des d'aquí es podran recuperar arxius eliminats",
+ "No deleted files" : "No hi ha cap fitxer eliminat",
+ "You will be able to recover deleted files from here" : "Des d'aquí es podran recuperar fitxers eliminats",
"No entries found in this folder" : "No hi ha entrades en aquesta carpeta",
"Select all" : "Seleccionar tot",
"Name" : "Nom",
diff --git a/apps/files_trashbin/l10n/eo.js b/apps/files_trashbin/l10n/eo.js
index 9fd798d8df9..7a4dd0a5e65 100644
--- a/apps/files_trashbin/l10n/eo.js
+++ b/apps/files_trashbin/l10n/eo.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"This directory is unavailable, please check the logs or contact the administrator" : "Ĉi tiu dosierujo maldisponeblas, bonvolu kontroli la protokolojn aŭ kontakti la administranton",
"restored" : "restaŭrita",
"No deleted files" : "Neniu dosiero foriĝis",
+ "You will be able to recover deleted files from here" : "Vi eblos restaŭrigi forigitaj dosieroj el tie",
"No entries found in this folder" : "Neniu enigo troviĝis en ĉi tiu dosierujo",
"Select all" : "Elekti ĉion",
"Name" : "Nomo",
diff --git a/apps/files_trashbin/l10n/eo.json b/apps/files_trashbin/l10n/eo.json
index 92577367e08..2b491222622 100644
--- a/apps/files_trashbin/l10n/eo.json
+++ b/apps/files_trashbin/l10n/eo.json
@@ -10,6 +10,7 @@
"This directory is unavailable, please check the logs or contact the administrator" : "Ĉi tiu dosierujo maldisponeblas, bonvolu kontroli la protokolojn aŭ kontakti la administranton",
"restored" : "restaŭrita",
"No deleted files" : "Neniu dosiero foriĝis",
+ "You will be able to recover deleted files from here" : "Vi eblos restaŭrigi forigitaj dosieroj el tie",
"No entries found in this folder" : "Neniu enigo troviĝis en ĉi tiu dosierujo",
"Select all" : "Elekti ĉion",
"Name" : "Nomo",
diff --git a/apps/files_trashbin/l10n/sv.js b/apps/files_trashbin/l10n/sv.js
index a022dde5dcb..34e2b2a2f04 100644
--- a/apps/files_trashbin/l10n/sv.js
+++ b/apps/files_trashbin/l10n/sv.js
@@ -11,7 +11,7 @@ OC.L10N.register(
"This operation is forbidden" : "Denna åtgärd är förbjuden",
"This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören",
"restored" : "återställd",
- "No deleted files" : "Inga borttagna filer",
+ "No deleted files" : "Inga raderade filer",
"You will be able to recover deleted files from here" : "Du kommer kunna återskapa raderade filer härifrån",
"No entries found in this folder" : "Inga filer hittades i denna mapp",
"Select all" : "Välj allt",
diff --git a/apps/files_trashbin/l10n/sv.json b/apps/files_trashbin/l10n/sv.json
index 31898a41f5a..1abc0bfba34 100644
--- a/apps/files_trashbin/l10n/sv.json
+++ b/apps/files_trashbin/l10n/sv.json
@@ -9,7 +9,7 @@
"This operation is forbidden" : "Denna åtgärd är förbjuden",
"This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören",
"restored" : "återställd",
- "No deleted files" : "Inga borttagna filer",
+ "No deleted files" : "Inga raderade filer",
"You will be able to recover deleted files from here" : "Du kommer kunna återskapa raderade filer härifrån",
"No entries found in this folder" : "Inga filer hittades i denna mapp",
"Select all" : "Välj allt",
diff --git a/apps/files_trashbin/l10n/zh_CN.js b/apps/files_trashbin/l10n/zh_CN.js
index be1eeab9348..8e1d4317ca4 100644
--- a/apps/files_trashbin/l10n/zh_CN.js
+++ b/apps/files_trashbin/l10n/zh_CN.js
@@ -1,15 +1,15 @@
OC.L10N.register(
"files_trashbin",
{
- "Couldn't delete %s permanently" : "无法彻底删除文件%s",
- "Couldn't restore %s" : "无法恢复%s",
+ "Couldn't delete %s permanently" : "无法彻底删除文件 %s",
+ "Couldn't restore %s" : "无法恢复 %s",
"Deleted files" : "已删除文件",
"Restore" : "恢复",
"Delete" : "删除",
"Delete permanently" : "永久删除",
"Error" : "错误",
"This operation is forbidden" : "操作被禁止",
- "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用, 请检查日志或联系管理员",
"restored" : "已恢复",
"No deleted files" : "无已删除文件",
"You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件",
diff --git a/apps/files_trashbin/l10n/zh_CN.json b/apps/files_trashbin/l10n/zh_CN.json
index 5d458254b87..b7d27ce5168 100644
--- a/apps/files_trashbin/l10n/zh_CN.json
+++ b/apps/files_trashbin/l10n/zh_CN.json
@@ -1,13 +1,13 @@
{ "translations": {
- "Couldn't delete %s permanently" : "无法彻底删除文件%s",
- "Couldn't restore %s" : "无法恢复%s",
+ "Couldn't delete %s permanently" : "无法彻底删除文件 %s",
+ "Couldn't restore %s" : "无法恢复 %s",
"Deleted files" : "已删除文件",
"Restore" : "恢复",
"Delete" : "删除",
"Delete permanently" : "永久删除",
"Error" : "错误",
"This operation is forbidden" : "操作被禁止",
- "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用, 请检查日志或联系管理员",
"restored" : "已恢复",
"No deleted files" : "无已删除文件",
"You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件",
diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php
index a6672dbf63a..b8f154ea051 100644
--- a/apps/files_trashbin/lib/Storage.php
+++ b/apps/files_trashbin/lib/Storage.php
@@ -44,10 +44,24 @@ class Storage extends Wrapper {
*/
private static $disableTrash = false;
+ /**
+ * remember which file/folder was moved out of s shared folder
+ * in this case we want to add a copy to the owners trash bin
+ *
+ * @var array
+ */
+ private static $moveOutOfSharedFolder = [];
+
/** @var IUserManager */
private $userManager;
- function __construct($parameters, IUserManager $userManager = null) {
+ /**
+ * Storage constructor.
+ *
+ * @param array $parameters
+ * @param IUserManager|null $userManager
+ */
+ public function __construct($parameters, IUserManager $userManager = null) {
$this->mountPoint = $parameters['mountPoint'];
$this->userManager = $userManager;
parent::__construct($parameters);
@@ -58,8 +72,47 @@ class Storage extends Wrapper {
*/
public static function preRenameHook($params) {
// in cross-storage cases, a rename is a copy + unlink,
- // that last unlink must not go to trash
- self::$disableTrash = true;
+ // that last unlink must not go to trash, only exception:
+ // if the file was moved from a shared storage to a local folder,
+ // in this case the owner should get a copy in his trash bin so that
+ // they can restore the files again
+
+ $oldPath = $params['oldpath'];
+ $newPath = dirname($params['newpath']);
+ $currentUser = \OC::$server->getUserSession()->getUser();
+
+ $fileMovedOutOfSharedFolder = false;
+
+ try {
+ if ($currentUser) {
+ $currentUserId = $currentUser->getUID();
+
+ $view = new View($currentUserId . '/files');
+ $fileInfo = $view->getFileInfo($oldPath);
+ if ($fileInfo) {
+ $sourceStorage = $fileInfo->getStorage();
+ $sourceOwner = $view->getOwner($oldPath);
+ $targetOwner = $view->getOwner($newPath);
+
+ if ($sourceOwner !== $targetOwner
+ && $sourceStorage->instanceOfStorage('OCA\Files_Sharing\SharedStorage')
+ ) {
+ $fileMovedOutOfSharedFolder = true;
+ }
+ }
+ }
+ } catch (\Exception $e) {
+ // do nothing, in this case we just disable the trashbin and continue
+ $logger = \OC::$server->getLogger();
+ $logger->debug('Trashbin storage could not check if a file was moved out of a shared folder: ' . $e->getMessage());
+ }
+
+ if($fileMovedOutOfSharedFolder) {
+ self::$moveOutOfSharedFolder['/' . $currentUserId . '/files' . $oldPath] = true;
+ } else {
+ self::$disableTrash = true;
+ }
+
}
/**
@@ -74,6 +127,7 @@ class Storage extends Wrapper {
*
* @param string $path1 first path
* @param string $path2 second path
+ * @return bool
*/
public function rename($path1, $path2) {
$result = $this->storage->rename($path1, $path2);
@@ -93,7 +147,14 @@ class Storage extends Wrapper {
* @return bool true if the operation succeeded, false otherwise
*/
public function unlink($path) {
- return $this->doDelete($path, 'unlink');
+ if (isset(self::$moveOutOfSharedFolder[$this->mountPoint . $path])) {
+ $result = $this->doDelete($path, 'unlink', true);
+ unset(self::$moveOutOfSharedFolder[$this->mountPoint . $path]);
+ } else {
+ $result = $this->doDelete($path, 'unlink');
+ }
+
+ return $result;
}
/**
@@ -104,7 +165,14 @@ class Storage extends Wrapper {
* @return bool true if the operation succeeded, false otherwise
*/
public function rmdir($path) {
- return $this->doDelete($path, 'rmdir');
+ if (isset(self::$moveOutOfSharedFolder[$this->mountPoint . $path])) {
+ $result = $this->doDelete($path, 'rmdir', true);
+ unset(self::$moveOutOfSharedFolder[$this->mountPoint . $path]);
+ } else {
+ $result = $this->doDelete($path, 'rmdir');
+ }
+
+ return $result;
}
/**
@@ -133,10 +201,11 @@ class Storage extends Wrapper {
*
* @param string $path path of file or folder to delete
* @param string $method either "unlink" or "rmdir"
+ * @param bool $ownerOnly delete for owner only (if file gets moved out of a shared folder)
*
* @return bool true if the operation succeeded, false otherwise
*/
- private function doDelete($path, $method) {
+ private function doDelete($path, $method, $ownerOnly = false) {
if (self::$disableTrash
|| !\OC_App::isEnabled('files_trashbin')
|| (pathinfo($path, PATHINFO_EXTENSION) === 'part')
@@ -158,7 +227,7 @@ class Storage extends Wrapper {
$this->deletedFiles[$normalized] = $normalized;
if ($filesPath = $view->getRelativePath($normalized)) {
$filesPath = trim($filesPath, '/');
- $result = \OCA\Files_Trashbin\Trashbin::move2trash($filesPath);
+ $result = \OCA\Files_Trashbin\Trashbin::move2trash($filesPath, $ownerOnly);
// in cross-storage cases the file will be copied
// but not deleted, so we delete it here
if ($result) {
diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php
index bf2fa57453f..2e66a6b96e1 100644
--- a/apps/files_trashbin/lib/Trashbin.php
+++ b/apps/files_trashbin/lib/Trashbin.php
@@ -88,6 +88,10 @@ class Trashbin {
if (!$userManager->userExists($uid)) {
$uid = User::getUser();
}
+ if (!$uid) {
+ // no owner, usually because of share link from ext storage
+ return [null, null];
+ }
Filesystem::initMountPoints($uid);
if ($uid != User::getUser()) {
$info = Filesystem::getFileInfo($filename);
@@ -196,14 +200,22 @@ class Trashbin {
* move file to the trash bin
*
* @param string $file_path path to the deleted file/directory relative to the files root directory
+ * @param bool $ownerOnly delete for owner only (if file gets moved out of a shared folder)
+ *
* @return bool
*/
- public static function move2trash($file_path) {
+ public static function move2trash($file_path, $ownerOnly = false) {
// get the user for which the filesystem is setup
$root = Filesystem::getRoot();
list(, $user) = explode('/', $root);
list($owner, $ownerPath) = self::getUidAndFilename($file_path);
+ // if no owner found (ex: ext storage + share link), will use the current user's trashbin then
+ if (is_null($owner)) {
+ $owner = $user;
+ $ownerPath = $file_path;
+ }
+
$ownerView = new View('/' . $owner);
// file has been deleted in between
if (is_null($ownerPath) || $ownerPath === '' || !$ownerView->file_exists('/files/' . $ownerPath)) {
@@ -261,8 +273,8 @@ class Trashbin {
self::retainVersions($filename, $owner, $ownerPath, $timestamp);
- // if owner !== user we need to also add a copy to the owners trash
- if ($user !== $owner) {
+ // if owner !== user we need to also add a copy to the users trash
+ if ($user !== $owner && $ownerOnly === false) {
self::copyFilesToUser($ownerPath, $owner, $file_path, $user, $timestamp);
}
}
@@ -890,7 +902,7 @@ class Trashbin {
* @return integer size of the folder
*/
private static function calculateSize($view) {
- $root = \OC::$server->getConfig()->getSystemValue('datadirectory') . $view->getAbsolutePath('');
+ $root = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . $view->getAbsolutePath('');
if (!file_exists($root)) {
return 0;
}
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index 5eb0df91d8d..5304051d751 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -8,13 +8,13 @@
This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.
In addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation.
</description>
- <version>1.4.0</version>
+ <version>1.5.0</version>
<types>
<filesystem/>
</types>
<namespace>Files_Versions</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-versions</user>
diff --git a/apps/files_versions/l10n/ca.js b/apps/files_versions/l10n/ca.js
index fb4357d5c8e..ca89eacf464 100644
--- a/apps/files_versions/l10n/ca.js
+++ b/apps/files_versions/l10n/ca.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "No s'ha pogut revertir: %s",
"Versions" : "Versions",
"Failed to revert {file} to revision {timestamp}." : "Ha fallat en retornar {file} a la revisió {timestamp}",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Recupera",
+ "No versions available" : "No hi ha versions disponibles",
"More versions..." : "Més versions...",
"No other versions available" : "No hi ha altres versions disponibles"
},
diff --git a/apps/files_versions/l10n/ca.json b/apps/files_versions/l10n/ca.json
index 064e8beb25d..70462746321 100644
--- a/apps/files_versions/l10n/ca.json
+++ b/apps/files_versions/l10n/ca.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "No s'ha pogut revertir: %s",
"Versions" : "Versions",
"Failed to revert {file} to revision {timestamp}." : "Ha fallat en retornar {file} a la revisió {timestamp}",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Recupera",
+ "No versions available" : "No hi ha versions disponibles",
"More versions..." : "Més versions...",
"No other versions available" : "No hi ha altres versions disponibles"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/cs_CZ.js b/apps/files_versions/l10n/cs_CZ.js
index e833455da0b..bb1700c74fb 100644
--- a/apps/files_versions/l10n/cs_CZ.js
+++ b/apps/files_versions/l10n/cs_CZ.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"],
"Restore" : "Obnovit",
+ "No versions available" : "Nejsou dostupné žádné verze",
"More versions..." : "Více verzí...",
"No other versions available" : "Žádné další verze nejsou dostupné"
},
diff --git a/apps/files_versions/l10n/cs_CZ.json b/apps/files_versions/l10n/cs_CZ.json
index 5e79397e24f..47cc35a03fc 100644
--- a/apps/files_versions/l10n/cs_CZ.json
+++ b/apps/files_versions/l10n/cs_CZ.json
@@ -4,6 +4,7 @@
"Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"],
"Restore" : "Obnovit",
+ "No versions available" : "Nejsou dostupné žádné verze",
"More versions..." : "Více verzí...",
"No other versions available" : "Žádné další verze nejsou dostupné"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
diff --git a/apps/files_versions/l10n/de_DE.js b/apps/files_versions/l10n/de_DE.js
index 22a2fb3034c..4b3c9135857 100644
--- a/apps/files_versions/l10n/de_DE.js
+++ b/apps/files_versions/l10n/de_DE.js
@@ -6,7 +6,7 @@ OC.L10N.register(
"Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.",
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Restore" : "Wiederherstellen",
- "No versions available" : "Neue Versionen verfügbar",
+ "No versions available" : "Keine Versionen verfügbar",
"More versions..." : "Weitere Versionen…",
"No other versions available" : "Keine anderen Versionen verfügbar"
},
diff --git a/apps/files_versions/l10n/de_DE.json b/apps/files_versions/l10n/de_DE.json
index 9351b4d829c..caedef871c7 100644
--- a/apps/files_versions/l10n/de_DE.json
+++ b/apps/files_versions/l10n/de_DE.json
@@ -4,7 +4,7 @@
"Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.",
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Restore" : "Wiederherstellen",
- "No versions available" : "Neue Versionen verfügbar",
+ "No versions available" : "Keine Versionen verfügbar",
"More versions..." : "Weitere Versionen…",
"No other versions available" : "Keine anderen Versionen verfügbar"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/el.js b/apps/files_versions/l10n/el.js
index de1b09a6d00..336c017b123 100644
--- a/apps/files_versions/l10n/el.js
+++ b/apps/files_versions/l10n/el.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"Versions" : "Εκδόσεις",
"Failed to revert {file} to revision {timestamp}." : "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Restore" : "Επαναφορά",
+ "No versions available" : "Δεν υπάρχουν εκδόσεις διαθέσιμες",
"More versions..." : "Περισσότερες εκδόσεις...",
"No other versions available" : "Δεν υπάρχουν άλλες εκδόσεις διαθέσιμες"
},
diff --git a/apps/files_versions/l10n/el.json b/apps/files_versions/l10n/el.json
index 5df89260d3c..f6da1dc4539 100644
--- a/apps/files_versions/l10n/el.json
+++ b/apps/files_versions/l10n/el.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"Versions" : "Εκδόσεις",
"Failed to revert {file} to revision {timestamp}." : "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Restore" : "Επαναφορά",
+ "No versions available" : "Δεν υπάρχουν εκδόσεις διαθέσιμες",
"More versions..." : "Περισσότερες εκδόσεις...",
"No other versions available" : "Δεν υπάρχουν άλλες εκδόσεις διαθέσιμες"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/eo.js b/apps/files_versions/l10n/eo.js
index 831e984a885..3ef246ace2a 100644
--- a/apps/files_versions/l10n/eo.js
+++ b/apps/files_versions/l10n/eo.js
@@ -5,6 +5,7 @@ OC.L10N.register(
"Versions" : "Versioj",
"Failed to revert {file} to revision {timestamp}." : "Malsukcesis returnigo de {file} al la revizio {timestamp}.",
"Restore" : "Restaŭri",
+ "No versions available" : "Neniu versio disponebla",
"More versions..." : "Pli da versioj...",
"No other versions available" : "Ne disponeblas aliaj versioj"
},
diff --git a/apps/files_versions/l10n/eo.json b/apps/files_versions/l10n/eo.json
index 751a6e02bf5..f91aafe4d84 100644
--- a/apps/files_versions/l10n/eo.json
+++ b/apps/files_versions/l10n/eo.json
@@ -3,6 +3,7 @@
"Versions" : "Versioj",
"Failed to revert {file} to revision {timestamp}." : "Malsukcesis returnigo de {file} al la revizio {timestamp}.",
"Restore" : "Restaŭri",
+ "No versions available" : "Neniu versio disponebla",
"More versions..." : "Pli da versioj...",
"No other versions available" : "Ne disponeblas aliaj versioj"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/fr.js b/apps/files_versions/l10n/fr.js
index 23cc8be44f3..0e28369303d 100644
--- a/apps/files_versions/l10n/fr.js
+++ b/apps/files_versions/l10n/fr.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Could not revert: %s" : "Impossible de restaurer %s",
"Versions" : "Versions",
- "Failed to revert {file} to revision {timestamp}." : "Échec du retour du fichier {file} à la révision {timestamp}.",
+ "Failed to revert {file} to revision {timestamp}." : "Échec de la restauration du fichier {file} à la révision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Restore" : "Restaurer",
"No versions available" : "Aucune version n'est disponible",
diff --git a/apps/files_versions/l10n/fr.json b/apps/files_versions/l10n/fr.json
index ed563578a6d..10798a0aa20 100644
--- a/apps/files_versions/l10n/fr.json
+++ b/apps/files_versions/l10n/fr.json
@@ -1,7 +1,7 @@
{ "translations": {
"Could not revert: %s" : "Impossible de restaurer %s",
"Versions" : "Versions",
- "Failed to revert {file} to revision {timestamp}." : "Échec du retour du fichier {file} à la révision {timestamp}.",
+ "Failed to revert {file} to revision {timestamp}." : "Échec de la restauration du fichier {file} à la révision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Restore" : "Restaurer",
"No versions available" : "Aucune version n'est disponible",
diff --git a/apps/files_versions/l10n/id.js b/apps/files_versions/l10n/id.js
index aba6fb7f64d..243100d1477 100644
--- a/apps/files_versions/l10n/id.js
+++ b/apps/files_versions/l10n/id.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Tidak dapat mengembalikan: %s",
"Versions" : "Versi",
"Failed to revert {file} to revision {timestamp}." : "Gagal mengembalikan {file} ke revisi {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "Pulihkan",
+ "No versions available" : "Tidak ada versi yang tersedia",
"More versions..." : "Versi lainnya...",
"No other versions available" : "Tidak ada versi lain yang tersedia"
},
diff --git a/apps/files_versions/l10n/id.json b/apps/files_versions/l10n/id.json
index 1df16f621f9..d2cd5919722 100644
--- a/apps/files_versions/l10n/id.json
+++ b/apps/files_versions/l10n/id.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Tidak dapat mengembalikan: %s",
"Versions" : "Versi",
"Failed to revert {file} to revision {timestamp}." : "Gagal mengembalikan {file} ke revisi {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "Pulihkan",
+ "No versions available" : "Tidak ada versi yang tersedia",
"More versions..." : "Versi lainnya...",
"No other versions available" : "Tidak ada versi lain yang tersedia"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_versions/l10n/ja.js b/apps/files_versions/l10n/ja.js
index 4601312a680..9b8cf55e4dd 100644
--- a/apps/files_versions/l10n/ja.js
+++ b/apps/files_versions/l10n/ja.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"Failed to revert {file} to revision {timestamp}." : "{file} を {timestamp} のリビジョンに戻すことができません。",
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Restore" : "復元",
+ "No versions available" : "履歴はありません",
"More versions..." : "他のバージョン...",
"No other versions available" : "利用可能なバージョンはありません"
},
diff --git a/apps/files_versions/l10n/ja.json b/apps/files_versions/l10n/ja.json
index 56c81e17ac6..4e5b8164fef 100644
--- a/apps/files_versions/l10n/ja.json
+++ b/apps/files_versions/l10n/ja.json
@@ -4,6 +4,7 @@
"Failed to revert {file} to revision {timestamp}." : "{file} を {timestamp} のリビジョンに戻すことができません。",
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Restore" : "復元",
+ "No versions available" : "履歴はありません",
"More versions..." : "他のバージョン...",
"No other versions available" : "利用可能なバージョンはありません"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_versions/l10n/lv.js b/apps/files_versions/l10n/lv.js
index e2f19658d5b..932e457cb41 100644
--- a/apps/files_versions/l10n/lv.js
+++ b/apps/files_versions/l10n/lv.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Nevarēja atgriezt — %s",
"Versions" : "Versijas",
"Failed to revert {file} to revision {timestamp}." : "Neizdevās atjaunot {file} no rediģējuma {timestamp} ",
+ "_%n byte_::_%n bytes_" : ["%n baiti","%n baiti","%n baiti"],
"Restore" : "Atjaunot",
+ "No versions available" : "Nav versijas",
"More versions..." : "Vairāk versiju...",
"No other versions available" : "Citas versijas nav pieejamas"
},
diff --git a/apps/files_versions/l10n/lv.json b/apps/files_versions/l10n/lv.json
index 7c2f786034a..fcf03c1f9f5 100644
--- a/apps/files_versions/l10n/lv.json
+++ b/apps/files_versions/l10n/lv.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Nevarēja atgriezt — %s",
"Versions" : "Versijas",
"Failed to revert {file} to revision {timestamp}." : "Neizdevās atjaunot {file} no rediģējuma {timestamp} ",
+ "_%n byte_::_%n bytes_" : ["%n baiti","%n baiti","%n baiti"],
"Restore" : "Atjaunot",
+ "No versions available" : "Nav versijas",
"More versions..." : "Vairāk versiju...",
"No other versions available" : "Citas versijas nav pieejamas"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
diff --git a/apps/files_versions/l10n/nb_NO.js b/apps/files_versions/l10n/nb_NO.js
index 1d990031c39..251555e587c 100644
--- a/apps/files_versions/l10n/nb_NO.js
+++ b/apps/files_versions/l10n/nb_NO.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Klarte ikke å tilbakeføre: %s",
"Versions" : "Versjoner",
"Failed to revert {file} to revision {timestamp}." : "Klarte ikke å tilbakeføre {file} til revisjon {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Gjenopprett",
+ "No versions available" : "Ingen versjoner tilgjengelig",
"More versions..." : "Flere versjoner",
"No other versions available" : "Det finnes ingen andre versjoner"
},
diff --git a/apps/files_versions/l10n/nb_NO.json b/apps/files_versions/l10n/nb_NO.json
index 8324482bf38..e4a1b1b5853 100644
--- a/apps/files_versions/l10n/nb_NO.json
+++ b/apps/files_versions/l10n/nb_NO.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Klarte ikke å tilbakeføre: %s",
"Versions" : "Versjoner",
"Failed to revert {file} to revision {timestamp}." : "Klarte ikke å tilbakeføre {file} til revisjon {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Gjenopprett",
+ "No versions available" : "Ingen versjoner tilgjengelig",
"More versions..." : "Flere versjoner",
"No other versions available" : "Det finnes ingen andre versjoner"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/pl.js b/apps/files_versions/l10n/pl.js
index 7039d97b2d6..e330499d8ef 100644
--- a/apps/files_versions/l10n/pl.js
+++ b/apps/files_versions/l10n/pl.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Nie można było przywrócić: %s",
"Versions" : "Wersje",
"Failed to revert {file} to revision {timestamp}." : "Nie udało się przywrócić {file} do wersji z {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"],
"Restore" : "Przywróć",
+ "No versions available" : "Brak wersji",
"More versions..." : "Więcej wersji...",
"No other versions available" : "Nie są dostępne żadne inne wersje"
},
diff --git a/apps/files_versions/l10n/pl.json b/apps/files_versions/l10n/pl.json
index 5718a223672..7d241cc4254 100644
--- a/apps/files_versions/l10n/pl.json
+++ b/apps/files_versions/l10n/pl.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Nie można było przywrócić: %s",
"Versions" : "Wersje",
"Failed to revert {file} to revision {timestamp}." : "Nie udało się przywrócić {file} do wersji z {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"],
"Restore" : "Przywróć",
+ "No versions available" : "Brak wersji",
"More versions..." : "Więcej wersji...",
"No other versions available" : "Nie są dostępne żadne inne wersje"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
diff --git a/apps/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js
index 63fb321cd2a..476587a470b 100644
--- a/apps/files_versions/l10n/ru.js
+++ b/apps/files_versions/l10n/ru.js
@@ -4,6 +4,7 @@ OC.L10N.register(
"Could not revert: %s" : "Невозможно откатить: %s",
"Versions" : "Версии",
"Failed to revert {file} to revision {timestamp}." : "Не удалось откатить {file} к ревизии {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Restore" : "Откатить",
"No versions available" : "Нет доступных версий",
"More versions..." : "Ещё версии...",
diff --git a/apps/files_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json
index 8f6c2b7d932..871796814fb 100644
--- a/apps/files_versions/l10n/ru.json
+++ b/apps/files_versions/l10n/ru.json
@@ -2,6 +2,7 @@
"Could not revert: %s" : "Невозможно откатить: %s",
"Versions" : "Версии",
"Failed to revert {file} to revision {timestamp}." : "Не удалось откатить {file} к ревизии {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"],
"Restore" : "Откатить",
"No versions available" : "Нет доступных версий",
"More versions..." : "Ещё версии...",
diff --git a/apps/files_versions/l10n/sk_SK.js b/apps/files_versions/l10n/sk_SK.js
index 1c085558c6c..feee7b611a3 100644
--- a/apps/files_versions/l10n/sk_SK.js
+++ b/apps/files_versions/l10n/sk_SK.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Nemožno obnoviť: %s",
"Versions" : "Verzie",
"Failed to revert {file} to revision {timestamp}." : "Zlyhalo obnovenie súboru {file} na verziu {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov"],
"Restore" : "Obnoviť",
+ "No versions available" : "Žiadne verzie nie sú dostupné",
"More versions..." : "Viac verzií...",
"No other versions available" : "Žiadne ďalšie verzie nie sú dostupné"
},
diff --git a/apps/files_versions/l10n/sk_SK.json b/apps/files_versions/l10n/sk_SK.json
index a0620921b61..93a6575cccd 100644
--- a/apps/files_versions/l10n/sk_SK.json
+++ b/apps/files_versions/l10n/sk_SK.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Nemožno obnoviť: %s",
"Versions" : "Verzie",
"Failed to revert {file} to revision {timestamp}." : "Zlyhalo obnovenie súboru {file} na verziu {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov"],
"Restore" : "Obnoviť",
+ "No versions available" : "Žiadne verzie nie sú dostupné",
"More versions..." : "Viac verzií...",
"No other versions available" : "Žiadne ďalšie verzie nie sú dostupné"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
diff --git a/apps/files_versions/l10n/sl.js b/apps/files_versions/l10n/sl.js
index 44d40e93eb5..58dd669580a 100644
--- a/apps/files_versions/l10n/sl.js
+++ b/apps/files_versions/l10n/sl.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "Ni mogoče povrniti: %s",
"Versions" : "Različice",
"Failed to revert {file} to revision {timestamp}." : "Povrnitev datoteke {file} na objavo {timestamp} je spodletelo.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n byte-a","%n byte-i","%n byte-ov"],
"Restore" : "Obnovi",
+ "No versions available" : "Ni verzij na voljo",
"More versions..." : "Več različic",
"No other versions available" : "Ni drugih različic"
},
diff --git a/apps/files_versions/l10n/sl.json b/apps/files_versions/l10n/sl.json
index d73adb935fe..a169af9e1bc 100644
--- a/apps/files_versions/l10n/sl.json
+++ b/apps/files_versions/l10n/sl.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "Ni mogoče povrniti: %s",
"Versions" : "Različice",
"Failed to revert {file} to revision {timestamp}." : "Povrnitev datoteke {file} na objavo {timestamp} je spodletelo.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n byte-a","%n byte-i","%n byte-ov"],
"Restore" : "Obnovi",
+ "No versions available" : "Ni verzij na voljo",
"More versions..." : "Več različic",
"No other versions available" : "Ni drugih različic"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/apps/files_versions/l10n/sq.js b/apps/files_versions/l10n/sq.js
index ec054c6bcfc..976e75163ba 100644
--- a/apps/files_versions/l10n/sq.js
+++ b/apps/files_versions/l10n/sq.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "S’u rikthye dot: %s",
"Versions" : "Versione",
"Failed to revert {file} to revision {timestamp}." : "Dështoi në rikthimin e {file} te rishikimi {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajte","%n bajte"],
"Restore" : "Riktheje",
+ "No versions available" : "Ska versione të gatshme",
"More versions..." : "Më shumë versione…",
"No other versions available" : "Nuk ka versione të tjera të gatshme"
},
diff --git a/apps/files_versions/l10n/sq.json b/apps/files_versions/l10n/sq.json
index a63e4d937dc..04ebebdfd74 100644
--- a/apps/files_versions/l10n/sq.json
+++ b/apps/files_versions/l10n/sq.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "S’u rikthye dot: %s",
"Versions" : "Versione",
"Failed to revert {file} to revision {timestamp}." : "Dështoi në rikthimin e {file} te rishikimi {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n bajte","%n bajte"],
"Restore" : "Riktheje",
+ "No versions available" : "Ska versione të gatshme",
"More versions..." : "Më shumë versione…",
"No other versions available" : "Nuk ka versione të tjera të gatshme"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/sv.js b/apps/files_versions/l10n/sv.js
index d4f51a56cf6..e33aae97a2f 100644
--- a/apps/files_versions/l10n/sv.js
+++ b/apps/files_versions/l10n/sv.js
@@ -3,8 +3,10 @@ OC.L10N.register(
{
"Could not revert: %s" : "Kunde inte återställa: %s",
"Versions" : "Versioner",
- "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till revision {timestamp}.",
+ "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Återskapa",
+ "No versions available" : "Inga versioner tillgängliga",
"More versions..." : "Fler versioner...",
"No other versions available" : "Inga andra versioner tillgängliga"
},
diff --git a/apps/files_versions/l10n/sv.json b/apps/files_versions/l10n/sv.json
index 4d912c3b0bf..5e74937879d 100644
--- a/apps/files_versions/l10n/sv.json
+++ b/apps/files_versions/l10n/sv.json
@@ -1,8 +1,10 @@
{ "translations": {
"Could not revert: %s" : "Kunde inte återställa: %s",
"Versions" : "Versioner",
- "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till revision {timestamp}.",
+ "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till {timestamp}.",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Återskapa",
+ "No versions available" : "Inga versioner tillgängliga",
"More versions..." : "Fler versioner...",
"No other versions available" : "Inga andra versioner tillgängliga"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/zh_CN.js b/apps/files_versions/l10n/zh_CN.js
index e7cbf668da0..77a40dd74f0 100644
--- a/apps/files_versions/l10n/zh_CN.js
+++ b/apps/files_versions/l10n/zh_CN.js
@@ -4,7 +4,9 @@ OC.L10N.register(
"Could not revert: %s" : "无法恢复: %s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "无法恢复 {file} 到 {timestamp} 的版本。",
+ "_%n byte_::_%n bytes_" : ["%n 比特"],
"Restore" : "恢复",
+ "No versions available" : "没有可用的版本",
"More versions..." : "更多版本...",
"No other versions available" : "无其他版本可用"
},
diff --git a/apps/files_versions/l10n/zh_CN.json b/apps/files_versions/l10n/zh_CN.json
index 67253581a35..a44264da4be 100644
--- a/apps/files_versions/l10n/zh_CN.json
+++ b/apps/files_versions/l10n/zh_CN.json
@@ -2,7 +2,9 @@
"Could not revert: %s" : "无法恢复: %s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "无法恢复 {file} 到 {timestamp} 的版本。",
+ "_%n byte_::_%n bytes_" : ["%n 比特"],
"Restore" : "恢复",
+ "No versions available" : "没有可用的版本",
"More versions..." : "更多版本...",
"No other versions available" : "无其他版本可用"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/lookup_server_connector/appinfo/info.xml b/apps/lookup_server_connector/appinfo/info.xml
index 88898c0b71b..7bada73bbbb 100644
--- a/apps/lookup_server_connector/appinfo/info.xml
+++ b/apps/lookup_server_connector/appinfo/info.xml
@@ -9,7 +9,7 @@
<version>1.0.0</version>
<category>other</category>
<dependencies>
- <owncloud min-version="11.0" max-version="11.0" />
+ <nextcloud min-version="12.0" max-version="12.0" />
</dependencies>
<default_enable/>
<types>
diff --git a/apps/provisioning_api/appinfo/info.xml b/apps/provisioning_api/appinfo/info.xml
index 0ebcee9a7f7..e633df00bd9 100644
--- a/apps/provisioning_api/appinfo/info.xml
+++ b/apps/provisioning_api/appinfo/info.xml
@@ -17,12 +17,12 @@
<documentation>
<admin>admin-provisioning-api</admin>
</documentation>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<namespace>Provisioning_API</namespace>
<types>
<prevent_group_restriction/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
</info>
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index 04a34fba903..baa4e475be8 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -45,6 +45,7 @@ return [
['root' => '/cloud', 'name' => 'Users#getUsers', 'url' => '/users', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#addUser', 'url' => '/users', 'verb' => 'POST'],
['root' => '/cloud', 'name' => 'Users#getUser', 'url' => '/users/{userId}', 'verb' => 'GET'],
+ ['root' => '/cloud', 'name' => 'Users#getCurrentUser', 'url' => '/user', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#editUser', 'url' => '/users/{userId}', 'verb' => 'PUT'],
['root' => '/cloud', 'name' => 'Users#deleteUser', 'url' => '/users/{userId}', 'verb' => 'DELETE'],
['root' => '/cloud', 'name' => 'Users#enableUser', 'url' => '/users/{userId}/enable', 'verb' => 'PUT'],
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index cc1d63d2d34..1e8a767b33a 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -29,14 +29,15 @@
namespace OCA\Provisioning_API\Controller;
+use OC\Accounts\AccountManager;
use \OC_Helper;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCS\OCSForbiddenException;
-use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\AppFramework\OCSController;
use OCP\Files\NotFoundException;
use OCP\IConfig;
+use OCP\IGroup;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IRequest;
@@ -53,6 +54,8 @@ class UsersController extends OCSController {
private $groupManager;
/** @var IUserSession */
private $userSession;
+ /** @var AccountManager */
+ private $accountManager;
/** @var ILogger */
private $logger;
@@ -63,6 +66,7 @@ class UsersController extends OCSController {
* @param IConfig $config
* @param IGroupManager $groupManager
* @param IUserSession $userSession
+ * @param AccountManager $accountManager
* @param ILogger $logger
*/
public function __construct($appName,
@@ -71,6 +75,7 @@ class UsersController extends OCSController {
IConfig $config,
IGroupManager $groupManager,
IUserSession $userSession,
+ AccountManager $accountManager,
ILogger $logger) {
parent::__construct($appName, $request);
@@ -78,6 +83,7 @@ class UsersController extends OCSController {
$this->config = $config;
$this->groupManager = $groupManager;
$this->userSession = $userSession;
+ $this->accountManager = $accountManager;
$this->logger = $logger;
}
@@ -107,7 +113,7 @@ class UsersController extends OCSController {
}
if($offset === null) {
- $offset = 0;
+ $offset = 0;
}
$users = [];
@@ -159,7 +165,7 @@ class UsersController extends OCSController {
throw new OCSException('no group specified (required for subadmins)', 106);
}
}
-
+
try {
$newUser = $this->userManager->createUser($userid, $password);
$this->logger->info('Successful addUser call with userid: '.$userid, ['app' => 'ocs_api']);
@@ -188,6 +194,42 @@ class UsersController extends OCSController {
* @throws OCSException
*/
public function getUser($userId) {
+ $data = $this->getUserData($userId);
+ return new DataResponse($data);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @NoSubAdminRequired
+ *
+ * gets user info from the currently logged in user
+ *
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function getCurrentUser() {
+ $user = $this->userSession->getUser();
+ if ($user) {
+ $data = $this->getUserData($user->getUID());
+ // rename "displayname" to "display-name" only for this call to keep
+ // the API stable.
+ $data['display-name'] = $data['displayname'];
+ unset($data['displayname']);
+ return new DataResponse($data);
+
+ }
+
+ throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED);
+ }
+
+ /**
+ * creates a array with all user data
+ *
+ * @param $userId
+ * @return array
+ * @throws OCSException
+ */
+ protected function getUserData($userId) {
$currentLoggedInUser = $this->userSession->getUser();
$data = [];
@@ -209,12 +251,19 @@ class UsersController extends OCSController {
}
}
+ $userAccount = $this->accountManager->getUser($targetUserObject);
+
// Find the data
+ $data['id'] = $targetUserObject->getUID();
$data['quota'] = $this->fillStorageInfo($userId);
$data['email'] = $targetUserObject->getEMailAddress();
$data['displayname'] = $targetUserObject->getDisplayName();
+ $data['phone'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_PHONE]['value'];
+ $data['address'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_ADDRESS]['value'];
+ $data['webpage'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_WEBSITE]['value'];
+ $data['twitter'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_TWITTER]['value'];
- return new DataResponse($data);
+ return $data;
}
/**
@@ -275,9 +324,9 @@ class UsersController extends OCSController {
break;
case 'quota':
$quota = $value;
- if($quota !== 'none' and $quota !== 'default') {
+ if($quota !== 'none' && $quota !== 'default') {
if (is_numeric($quota)) {
- $quota = floatval($quota);
+ $quota = (float) $quota;
} else {
$quota = \OCP\Util::computerFileSize($quota);
}
@@ -421,6 +470,7 @@ class UsersController extends OCSController {
// Looking up someone else
if($subAdminManager->isUserAccessible($loggedInUser, $targetUser)) {
// Return the group that the method caller is subadmin of for the user in question
+ /** @var IGroup[] $getSubAdminsGroups */
$getSubAdminsGroups = $subAdminManager->getSubAdminsGroups($loggedInUser);
foreach ($getSubAdminsGroups as $key => $group) {
$getSubAdminsGroups[$key] = $group->getGID();
@@ -435,11 +485,13 @@ class UsersController extends OCSController {
throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED);
}
}
-
+
}
/**
* @PasswordConfirmationRequired
+ * @NoAdminRequired
+ *
* @param string $userId
* @param string $groupid
* @return DataResponse
@@ -459,6 +511,13 @@ class UsersController extends OCSController {
throw new OCSException('', 103);
}
+ // If they're not an admin, check they are a subadmin of the group in question
+ $loggedInUser = $this->userSession->getUser();
+ $subAdminManager = $this->groupManager->getSubAdmin();
+ if (!$this->groupManager->isAdmin($loggedInUser->getUID()) && !$subAdminManager->isSubAdminOfGroup($loggedInUser, $group)) {
+ throw new OCSException('', 104);
+ }
+
// Add user to group
$group->addUser($targetUser);
return new DataResponse();
@@ -492,25 +551,33 @@ class UsersController extends OCSController {
// If they're not an admin, check they are a subadmin of the group in question
$subAdminManager = $this->groupManager->getSubAdmin();
- if(!$this->groupManager->isAdmin($loggedInUser->getUID()) && !$subAdminManager->isSubAdminofGroup($loggedInUser, $group)) {
+ if (!$this->groupManager->isAdmin($loggedInUser->getUID()) && !$subAdminManager->isSubAdminOfGroup($loggedInUser, $group)) {
throw new OCSException('', 104);
}
+
// Check they aren't removing themselves from 'admin' or their 'subadmin; group
- if($userId === $loggedInUser->getUID()) {
- if($this->groupManager->isAdmin($loggedInUser->getUID())) {
- if($group->getGID() === 'admin') {
+ if ($userId === $loggedInUser->getUID()) {
+ if ($this->groupManager->isAdmin($loggedInUser->getUID())) {
+ if ($group->getGID() === 'admin') {
throw new OCSException('Cannot remove yourself from the admin group', 105);
}
} else {
- // Not an admin, check they are not removing themself from their subadmin group
- $subAdminGroups = $subAdminManager->getSubAdminsGroups($loggedInUser);
- foreach ($subAdminGroups as $key => $group) {
- $subAdminGroups[$key] = $group->getGID();
- }
+ // Not an admin, so the user must be a subadmin of this group, but that is not allowed.
+ throw new OCSException('Cannot remove yourself from this group as you are a SubAdmin', 105);
+ }
- if(in_array($group->getGID(), $subAdminGroups, true)) {
- throw new OCSException('Cannot remove yourself from this group as you are a SubAdmin', 105);
- }
+ } else if (!$this->groupManager->isAdmin($loggedInUser->getUID())) {
+ /** @var IGroup[] $subAdminGroups */
+ $subAdminGroups = $subAdminManager->getSubAdminsGroups($loggedInUser);
+ $subAdminGroups = array_map(function (IGroup $subAdminGroup) {
+ return $subAdminGroup->getGID();
+ }, $subAdminGroups);
+ $userGroups = $this->groupManager->getUserGroupIds($targetUser);
+ $userSubAdminGroups = array_intersect($subAdminGroups, $userGroups);
+
+ if (count($userSubAdminGroups) <= 1) {
+ // Subadmin must not be able to remove a user from all their subadmin groups.
+ throw new OCSException('Cannot remove user from this group as this is the only remaining group you are a SubAdmin of', 105);
}
}
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index e04ee86feae..a3e5bf6fde6 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -29,7 +29,12 @@
namespace OCA\Provisioning_API\Tests\Controller;
+use OC\Accounts\AccountManager;
use OCA\Provisioning_API\Controller\UsersController;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\IGroup;
+use OCP\IRequest;
+use OCP\IUser;
use OCP\IUserManager;
use OCP\IConfig;
use OCP\IUserSession;
@@ -38,7 +43,7 @@ use Test\TestCase as OriginalTest;
use OCP\ILogger;
class UsersControllerTest extends OriginalTest {
-
+
/** @var IUserManager | PHPUnit_Framework_MockObject_MockObject */
protected $userManager;
/** @var IConfig | PHPUnit_Framework_MockObject_MockObject */
@@ -51,6 +56,10 @@ class UsersControllerTest extends OriginalTest {
protected $logger;
/** @var UsersController | PHPUnit_Framework_MockObject_MockObject */
protected $api;
+ /** @var AccountManager | PHPUnit_Framework_MockObject_MockObject */
+ protected $accountManager;
+ /** @var IRequest | PHPUnit_Framework_MockObject_MockObject */
+ protected $request;
protected function tearDown() {
parent::tearDown();
@@ -74,17 +83,21 @@ class UsersControllerTest extends OriginalTest {
$this->logger = $this->getMockBuilder('OCP\ILogger')
->disableOriginalConstructor()
->getMock();
- $request = $this->getMockBuilder('OCP\IRequest')
+ $this->request = $this->getMockBuilder('OCP\IRequest')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->accountManager = $this->getMockBuilder(AccountManager::class)
->disableOriginalConstructor()
->getMock();
$this->api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController')
->setConstructorArgs([
'provisioning_api',
- $request,
+ $this->request,
$this->userManager,
$this->config,
$this->groupManager,
$this->userSession,
+ $this->accountManager,
$this->logger,
])
->setMethods(['fillStorageInfo'])
@@ -621,7 +634,7 @@ class UsersControllerTest extends OriginalTest {
$this->api->getUser('UserToGet');
}
- public function testGetUserAsAdmin() {
+ public function testGetUserDataAsAdmin() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@@ -649,6 +662,16 @@ class UsersControllerTest extends OriginalTest {
->method('isAdmin')
->with('admin')
->will($this->returnValue(true));
+ $this->accountManager->expects($this->any())->method('getUser')
+ ->with($targetUser)
+ ->willReturn(
+ [
+ AccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
+ AccountManager::PROPERTY_PHONE => ['value' => 'phone'],
+ AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
+ AccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
+ ]
+ );
$this->config
->expects($this->at(0))
->method('getUserValue')
@@ -663,17 +686,26 @@ class UsersControllerTest extends OriginalTest {
->expects($this->once())
->method('getDisplayName')
->will($this->returnValue('Demo User'));
+ $targetUser
+ ->expects($this->once())
+ ->method('getUID')
+ ->will($this->returnValue('UID'));
$expected = [
+ 'id' => 'UID',
'enabled' => 'true',
'quota' => ['DummyValue'],
'email' => 'demo@owncloud.org',
'displayname' => 'Demo User',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter'
];
- $this->assertEquals($expected, $this->api->getUser('UserToGet')->getData());
+ $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet']));
}
- public function testGetUserAsSubAdminAndUserIsAccessible() {
+ public function testGetUserDataAsSubAdminAndUserIsAccessible() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@@ -728,14 +760,33 @@ class UsersControllerTest extends OriginalTest {
->expects($this->once())
->method('getDisplayName')
->will($this->returnValue('Demo User'));
+ $targetUser
+ ->expects($this->once())
+ ->method('getUID')
+ ->will($this->returnValue('UID'));
+ $this->accountManager->expects($this->any())->method('getUser')
+ ->with($targetUser)
+ ->willReturn(
+ [
+ AccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
+ AccountManager::PROPERTY_PHONE => ['value' => 'phone'],
+ AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
+ AccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
+ ]
+ );
$expected = [
+ 'id' => 'UID',
'enabled' => 'true',
'quota' => ['DummyValue'],
'email' => 'demo@owncloud.org',
'displayname' => 'Demo User',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter'
];
- $this->assertEquals($expected, $this->api->getUser('UserToGet')->getData());
+ $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet']));
}
@@ -743,7 +794,7 @@ class UsersControllerTest extends OriginalTest {
* @expectedException \OCP\AppFramework\OCS\OCSException
* @expectedExceptionCode 997
*/
- public function testGetUserAsSubAdminAndUserIsNotAccessible() {
+ public function testGetUserDataAsSubAdminAndUserIsNotAccessible() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@@ -781,10 +832,10 @@ class UsersControllerTest extends OriginalTest {
->method('getSubAdmin')
->will($this->returnValue($subAdminManager));
- $this->api->getUser('UserToGet');
+ $this->invokePrivate($this->api, 'getUserData', ['UserToGet']);
}
- public function testGetUserAsSubAdminSelfLookup() {
+ public function testGetUserDataAsSubAdminSelfLookup() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@@ -834,13 +885,32 @@ class UsersControllerTest extends OriginalTest {
->expects($this->once())
->method('getEMailAddress')
->will($this->returnValue('subadmin@owncloud.org'));
+ $targetUser
+ ->expects($this->once())
+ ->method('getUID')
+ ->will($this->returnValue('UID'));
+ $this->accountManager->expects($this->any())->method('getUser')
+ ->with($targetUser)
+ ->willReturn(
+ [
+ AccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
+ AccountManager::PROPERTY_PHONE => ['value' => 'phone'],
+ AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
+ AccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
+ ]
+ );
$expected = [
+ 'id' => 'UID',
'quota' => ['DummyValue'],
'email' => 'subadmin@owncloud.org',
'displayname' => 'Subadmin User',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter'
];
- $this->assertEquals($expected, $this->api->getUser('subadmin')->getData());
+ $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['subadmin']));
}
public function testEditUserRegularUserSelfEditChangeDisplayName() {
@@ -1598,11 +1668,10 @@ class UsersControllerTest extends OriginalTest {
* @expectedExceptionCode 102
*/
public function testAddToGroupWithTargetGroupNotExisting() {
- $this->groupManager
- ->expects($this->once())
+ $this->groupManager->expects($this->once())
->method('get')
->with('GroupToAddTo')
- ->will($this->returnValue(null));
+ ->willReturn(null);
$this->api->addToGroup('TargetUser', 'GroupToAddTo');
}
@@ -1620,16 +1689,149 @@ class UsersControllerTest extends OriginalTest {
* @expectedExceptionCode 103
*/
public function testAddToGroupWithTargetUserNotExisting() {
- $targetGroup = $this->getMockBuilder('\OCP\IGroup')->disableOriginalConstructor()->getMock();
- $this->groupManager
- ->expects($this->once())
+ $targetGroup = $this->createMock(IGroup::class);
+ $this->groupManager->expects($this->once())
->method('get')
->with('GroupToAddTo')
- ->will($this->returnValue($targetGroup));
+ ->willReturn($targetGroup);
+
+ $this->api->addToGroup('TargetUser', 'GroupToAddTo');
+ }
+
+ /**
+ * @expectedException \OCP\AppFramework\OCS\OCSException
+ * @expectedExceptionCode 104
+ */
+ public function testAddToGroupNoSubadmin() {
+ $targetUser = $this->createMock(IUser::class);
+ $loggedInUser = $this->createMock(IUser::class);
+ $loggedInUser->expects($this->once())
+ ->method('getUID')
+ ->willReturn('subadmin');
+
+ $targetGroup = $this->createMock(IGroup::class);
+ $targetGroup->expects($this->never())
+ ->method('addUser')
+ ->with($targetUser);
+
+ $this->groupManager->expects($this->once())
+ ->method('get')
+ ->with('GroupToAddTo')
+ ->willReturn($targetGroup);
+
+
+ $subAdminManager = $this->createMock(\OC\SubAdmin::class);
+ $subAdminManager->expects($this->once())
+ ->method('isSubAdminOfGroup')
+ ->with($loggedInUser, $targetGroup)
+ ->willReturn(false);
+
+ $this->groupManager->expects($this->once())
+ ->method('getSubAdmin')
+ ->willReturn($subAdminManager);
+ $this->groupManager->expects($this->once())
+ ->method('isAdmin')
+ ->with('subadmin')
+ ->willReturn(false);
+
+ $this->userManager->expects($this->once())
+ ->method('get')
+ ->with('TargetUser')
+ ->willReturn($targetUser);
+
+ $this->userSession->expects($this->once())
+ ->method('getUser')
+ ->willReturn($loggedInUser);
$this->api->addToGroup('TargetUser', 'GroupToAddTo');
}
+ public function testAddToGroupSuccessAsSubadmin() {
+ $targetUser = $this->createMock(IUser::class);
+ $loggedInUser = $this->createMock(IUser::class);
+ $loggedInUser->expects($this->once())
+ ->method('getUID')
+ ->willReturn('subadmin');
+
+ $targetGroup = $this->createMock(IGroup::class);
+ $targetGroup->expects($this->once())
+ ->method('addUser')
+ ->with($targetUser);
+
+ $this->groupManager->expects($this->once())
+ ->method('get')
+ ->with('GroupToAddTo')
+ ->willReturn($targetGroup);
+
+
+ $subAdminManager = $this->createMock(\OC\SubAdmin::class);
+ $subAdminManager->expects($this->once())
+ ->method('isSubAdminOfGroup')
+ ->with($loggedInUser, $targetGroup)
+ ->willReturn(true);
+
+ $this->groupManager->expects($this->once())
+ ->method('getSubAdmin')
+ ->willReturn($subAdminManager);
+ $this->groupManager->expects($this->once())
+ ->method('isAdmin')
+ ->with('subadmin')
+ ->willReturn(false);
+
+ $this->userManager->expects($this->once())
+ ->method('get')
+ ->with('TargetUser')
+ ->willReturn($targetUser);
+
+ $this->userSession->expects($this->once())
+ ->method('getUser')
+ ->willReturn($loggedInUser);
+
+ $this->assertEquals(new DataResponse(), $this->api->addToGroup('TargetUser', 'GroupToAddTo'));
+ }
+
+ public function testAddToGroupSuccessAsAdmin() {
+ $targetUser = $this->createMock(IUser::class);
+ $loggedInUser = $this->createMock(IUser::class);
+ $loggedInUser->expects($this->once())
+ ->method('getUID')
+ ->willReturn('admin');
+
+ $targetGroup = $this->createMock(IGroup::class);
+ $targetGroup->expects($this->once())
+ ->method('addUser')
+ ->with($targetUser);
+
+ $this->groupManager->expects($this->once())
+ ->method('get')
+ ->with('GroupToAddTo')
+ ->willReturn($targetGroup);
+
+
+ $subAdminManager = $this->createMock(\OC\SubAdmin::class);
+ $subAdminManager->expects($this->never())
+ ->method('isSubAdminOfGroup');
+
+ $this->groupManager->expects($this->once())
+ ->method('getSubAdmin')
+ ->willReturn($subAdminManager);
+ $this->groupManager->expects($this->once())
+ ->method('isAdmin')
+ ->with('admin')
+ ->willReturn(true);
+
+ $this->userManager->expects($this->once())
+ ->method('get')
+ ->with('TargetUser')
+ ->willReturn($targetUser);
+
+ $this->userSession->expects($this->once())
+ ->method('getUser')
+ ->willReturn($loggedInUser);
+
+ $this->assertEquals(new DataResponse(), $this->api->addToGroup('TargetUser', 'GroupToAddTo'));
+ }
+
/**
* @expectedException \OCP\AppFramework\OCS\OCSException
* @expectedExceptionCode 101
@@ -1813,22 +2015,79 @@ class UsersControllerTest extends OriginalTest {
->method('isSubAdminofGroup')
->with($loggedInUser, $targetGroup)
->will($this->returnValue(true));
+ $this->groupManager
+ ->expects($this->once())
+ ->method('getSubAdmin')
+ ->will($this->returnValue($subAdminManager));
+ $this->groupManager
+ ->expects($this->any())
+ ->method('isAdmin')
+ ->with('subadmin')
+ ->will($this->returnValue(false));
+
+ $this->api->removeFromGroup('subadmin', 'subadmin');
+ }
+
+ /**
+ * @expectedException \OCP\AppFramework\OCS\OCSException
+ * @expectedExceptionCode 105
+ * @expectedExceptionMessage Cannot remove user from this group as this is the only remaining group you are a SubAdmin of
+ */
+ public function testRemoveFromGroupAsSubAdminFromLastSubAdminGroup() {
+ $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock();
+ $loggedInUser
+ ->expects($this->any())
+ ->method('getUID')
+ ->will($this->returnValue('subadmin'));
+ $targetUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock();
+ $targetGroup = $this->getMockBuilder('\OCP\IGroup')->disableOriginalConstructor()->getMock();
+ $targetGroup
+ ->expects($this->any())
+ ->method('getGID')
+ ->will($this->returnValue('subadmin'));
+ $this->userSession
+ ->expects($this->once())
+ ->method('getUser')
+ ->will($this->returnValue($loggedInUser));
+ $this->groupManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('subadmin')
+ ->will($this->returnValue($targetGroup));
+ $this->userManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('AnotherUser')
+ ->will($this->returnValue($targetUser));
+ $subAdminManager = $this->getMockBuilder('OC\SubAdmin')
+ ->disableOriginalConstructor()->getMock();
$subAdminManager
->expects($this->once())
- ->method('getSubAdminsGroups')
- ->with($loggedInUser)
- ->will($this->returnValue([$targetGroup]));
+ ->method('isSubAdminofGroup')
+ ->with($loggedInUser, $targetGroup)
+ ->will($this->returnValue(true));
$this->groupManager
->expects($this->once())
->method('getSubAdmin')
->will($this->returnValue($subAdminManager));
+ $subAdminManager
+ ->expects($this->once())
+ ->method('getSubAdminsGroups')
+ ->with($loggedInUser)
+ ->will($this->returnValue([$targetGroup]));
+
$this->groupManager
->expects($this->any())
->method('isAdmin')
->with('subadmin')
->will($this->returnValue(false));
+ $this->groupManager
+ ->expects($this->once())
+ ->method('getUserGroupIds')
+ ->with($targetUser)
+ ->willReturn(['subadmin', 'other group']);
- $this->api->removeFromGroup('subadmin', 'subadmin');
+ $this->api->removeFromGroup('AnotherUser', 'subadmin');
}
public function testRemoveFromGroupSuccessful() {
@@ -2293,4 +2552,105 @@ class UsersControllerTest extends OriginalTest {
$this->assertEquals([], $this->api->disableUser('RequestedUser')->getData());
}
+
+ public function testGetCurrentUserLoggedIn() {
+
+ $user = $this->getMock(IUser::class);
+ $user->expects($this->once())->method('getUID')->willReturn('UID');
+
+ $this->userSession->expects($this->once())->method('getUser')
+ ->willReturn($user);
+
+ /** @var UsersController | PHPUnit_Framework_MockObject_MockObject $api */
+ $api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController')
+ ->setConstructorArgs([
+ 'provisioning_api',
+ $this->request,
+ $this->userManager,
+ $this->config,
+ $this->groupManager,
+ $this->userSession,
+ $this->accountManager,
+ $this->logger,
+ ])
+ ->setMethods(['getUserData'])
+ ->getMock();
+
+ $api->expects($this->once())->method('getUserData')->with('UID')
+ ->willReturn(
+ [
+ 'id' => 'UID',
+ 'enabled' => 'true',
+ 'quota' => ['DummyValue'],
+ 'email' => 'demo@owncloud.org',
+ 'displayname' => 'Demo User',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter'
+ ]
+ );
+
+ $expected = [
+ 'id' => 'UID',
+ 'enabled' => 'true',
+ 'quota' => ['DummyValue'],
+ 'email' => 'demo@owncloud.org',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter',
+ 'display-name' => 'Demo User'
+ ];
+
+ $this->assertSame($expected, $api->getCurrentUser()->getData());
+ }
+
+ /**
+ * @expectedException \OCP\AppFramework\OCS\OCSException
+ */
+ public function testGetCurrentUserNotLoggedIn() {
+
+ $this->userSession->expects($this->once())->method('getUser')
+ ->willReturn(null);
+
+ $this->api->getCurrentUser();
+ }
+
+
+ public function testGetUser() {
+ /** @var UsersController | PHPUnit_Framework_MockObject_MockObject $api */
+ $api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController')
+ ->setConstructorArgs([
+ 'provisioning_api',
+ $this->request,
+ $this->userManager,
+ $this->config,
+ $this->groupManager,
+ $this->userSession,
+ $this->accountManager,
+ $this->logger,
+ ])
+ ->setMethods(['getUserData'])
+ ->getMock();
+
+ $expected = [
+ 'id' => 'UID',
+ 'enabled' => 'true',
+ 'quota' => ['DummyValue'],
+ 'email' => 'demo@owncloud.org',
+ 'phone' => 'phone',
+ 'address' => 'address',
+ 'webpage' => 'website',
+ 'twitter' => 'twitter',
+ 'displayname' => 'Demo User'
+ ];
+
+ $api->expects($this->once())->method('getUserData')
+ ->with('uid')
+ ->willReturn($expected);
+
+ $this->assertSame($expected, $api->getUser('uid')->getData());
+ }
+
}
diff --git a/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php b/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php
new file mode 100644
index 00000000000..2d8b79842f2
--- /dev/null
+++ b/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * @copyright 2016, 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 OCA\Provisioning_API\Tests\Middleware;
+
+use OCA\Provisioning_API\Middleware\Exceptions\NotSubAdminException;
+use OCA\Provisioning_API\Middleware\ProvisioningApiMiddleware;
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\OCS\OCSException;
+use OCP\AppFramework\Utility\IControllerMethodReflector;
+use Test\TestCase;
+
+class ProvisioningApiMiddlewareTest extends TestCase {
+
+ /** @var IControllerMethodReflector|\PHPUnit_Framework_MockObject_MockObject */
+ private $reflector;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->reflector = $this->createMock(IControllerMethodReflector::class);
+ }
+
+ public function dataAnnotation() {
+ return [
+ [false, false, false, false],
+ [false, false, true, false],
+ [false, true, true, false],
+ [ true, false, false, true],
+ [ true, false, true, false],
+ [ true, true, false, false],
+ [ true, true, true, false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataAnnotation
+ *
+ * @param bool $subadminRequired
+ * @param bool $isAdmin
+ * @param bool $isSubAdmin
+ * @param bool $shouldThrowException
+ */
+ public function testBeforeController($subadminRequired, $isAdmin, $isSubAdmin, $shouldThrowException) {
+ $middleware = new ProvisioningApiMiddleware(
+ $this->reflector,
+ $isAdmin,
+ $isSubAdmin
+ );
+
+ $this->reflector->method('hasAnnotation')
+ ->with('NoSubAdminRequired')
+ ->willReturn(!$subadminRequired);
+
+ try {
+ $middleware->beforeController(
+ $this->createMock(Controller::class),
+ 'myMethod'
+ );
+ $this->assertFalse($shouldThrowException);
+ } catch (NotSubAdminException $e) {
+ $this->assertTrue($shouldThrowException);
+ }
+ }
+
+ public function dataAfterException() {
+ return [
+ [new NotSubAdminException(), false],
+ [new \Exception('test', 42), true],
+ ];
+ }
+
+ /**
+ * @dataProvider dataAfterException
+ *
+ * @param \Exception $e
+ * @param bool $forwared
+ */
+ public function testAfterException(\Exception $exception, $forwared) {
+ $middleware = new ProvisioningApiMiddleware(
+ $this->reflector,
+ false,
+ false
+ );
+
+ try {
+ $middleware->afterException(
+ $this->createMock(Controller::class),
+ 'myMethod',
+ $exception
+ );
+ $this->fail();
+ } catch (OCSException $e) {
+ $this->assertFalse($forwared);
+ $this->assertSame($exception->getMessage(), $e->getMessage());
+ $this->assertSame(\OCP\API::RESPOND_UNAUTHORISED, $e->getCode());
+ } catch (\Exception $e) {
+ $this->assertTrue($forwared);
+ $this->assertSame($exception, $e);
+ }
+
+ }
+}
diff --git a/apps/sharebymail/appinfo/info.xml b/apps/sharebymail/appinfo/info.xml
index 56977fcf285..5528f6158d9 100644
--- a/apps/sharebymail/appinfo/info.xml
+++ b/apps/sharebymail/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Share provider which allows you to share files by mail</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
- <version>1.0.1</version>
+ <version>1.1.0</version>
<namespace>ShareByMail</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<default_enable/>
diff --git a/apps/sharebymail/lib/Activity.php b/apps/sharebymail/lib/Activity.php
index 5342d013ade..1c2f37dc382 100644
--- a/apps/sharebymail/lib/Activity.php
+++ b/apps/sharebymail/lib/Activity.php
@@ -196,7 +196,7 @@ class Activity implements IProvider {
'type' => 'file',
'id' => $id,
'name' => basename($path),
- 'path' => $path,
+ 'path' => trim($path, '/'),
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index cb013acd4de..e09ca308f31 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -31,6 +31,7 @@ use OCP\IDBConnection;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IURLGenerator;
+use OCP\IUser;
use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Security\ISecureRandom;
@@ -167,14 +168,14 @@ class ShareByMailProvider implements IShareProvider {
if ($share->getShareOwner() !== $share->getSharedBy()) {
$ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
$fileId = $share->getNode()->getId();
- $node = $ownerFolder->getById($fileId);
- $ownerPath = $node[0]->getPath();
+ $nodes = $ownerFolder->getById($fileId);
+ $ownerPath = $nodes[0]->getPath();
$this->publishActivity(
Activity::SUBJECT_SHARED_EMAIL_BY,
[$ownerFolder->getRelativePath($ownerPath), $share->getSharedWith(), $share->getSharedBy()],
$share->getShareOwner(),
$fileId,
- $userFolder->getRelativePath($ownerPath)
+ $ownerFolder->getRelativePath($ownerPath)
);
}
@@ -240,15 +241,19 @@ class ShareByMailProvider implements IShareProvider {
}
protected function sendMailNotification($filename, $link, $owner, $initiator, $shareWith) {
+ $ownerUser = $this->userManager->get($owner);
+ $initiatorUser = $this->userManager->get($initiator);
+ $ownerDisplayName = ($ownerUser instanceof IUser) ? $ownerUser->getDisplayName() : $owner;
+ $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
if ($owner === $initiator) {
- $subject = (string)$this->l->t('%s shared »%s« with you', array($owner, $filename));
+ $subject = (string)$this->l->t('%s shared »%s« with you', array($ownerDisplayName, $filename));
} else {
- $subject = (string)$this->l->t('%s shared »%s« with you on behalf of %s', array($owner, $filename, $initiator));
+ $subject = (string)$this->l->t('%s shared »%s« with you on behalf of %s', array($ownerDisplayName, $filename, $initiatorDisplayName));
}
$message = $this->mailer->createMessage();
- $htmlBody = $this->createMailBody('mail', $filename, $link, $owner, $initiator);
- $textBody = $this->createMailBody('altmail', $filename, $link, $owner, $initiator);
+ $htmlBody = $this->createMailBody('mail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
+ $textBody = $this->createMailBody('altmail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
$message->setTo([$shareWith]);
$message->setSubject($subject);
$message->setBody($textBody, 'text/plain');
diff --git a/apps/systemtags/appinfo/info.xml b/apps/systemtags/appinfo/info.xml
index 1d5f33207a4..02cafdb4d26 100644
--- a/apps/systemtags/appinfo/info.xml
+++ b/apps/systemtags/appinfo/info.xml
@@ -7,9 +7,9 @@
<licence>AGPL</licence>
<author>Vincent Petry, Joas Schilling</author>
<default_enable/>
- <version>1.1.3</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<namespace>SystemTags</namespace>
<types>
diff --git a/apps/systemtags/l10n/bg_BG.js b/apps/systemtags/l10n/bg_BG.js
index eeddbd55d1a..e9d207b967d 100644
--- a/apps/systemtags/l10n/bg_BG.js
+++ b/apps/systemtags/l10n/bg_BG.js
@@ -2,11 +2,62 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Етикети",
+ "Update" : "Обнови",
+ "Create" : "Създай",
+ "Select tag…" : "Избери етикет...",
"Tagged files" : "Отбелязани файлове",
+ "Select tags to filter by" : "Моля изберете таг по който да филтрирате",
+ "No tags found" : "Няма открити етикети",
+ "Please select tags to filter by" : "Моля изберете таг за филтриране",
+ "No files found for the selected tags" : "Няма намерени файлове за избраните тагове",
+ "Added system tag %1$s" : "Добавен системен таг %1$s",
+ "Added system tag {systemtag}" : "Добавен системен таг {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s добави системен таг %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} добави системен таг {systemtag}",
+ "Removed system tag %1$s" : "Премахнат системен таг %1$s",
+ "Removed system tag {systemtag}" : "Премахнат системен таг {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s премахна системен таг %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} премахна системен таг {systemtag}",
+ "You created system tag %1$s" : "Създадохте системен таг %1$s",
+ "You created system tag {systemtag}" : "Създадохте системен таг {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s създаде системен таг %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} създаде системен таг {systemtag}",
+ "You deleted system tag %1$s" : "Изтрихте системен таг %1$s",
+ "You deleted system tag {systemtag}" : "Изтрихте системен таг {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s изтри системен таг %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} изтри системен таг {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Актуализирахте системен таг %2$s на %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Актуализирахте системен таг {oldsystemtag} на {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s акутализиран системен таг %3$s на %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} Актуализира системен таг {oldsystemtag} на {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Добавихте системен таг %2$s на %1$s",
+ "You added system tag {systemtag} to {file}" : "Добавихте системен таг {systemtag} на {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s добави системен таг %3$s на %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} добави системен таг {systemtag} на {file}",
+ "You removed system tag %2$s from %1$s" : "Премахнахте системен таг %2$s от %1$s",
+ "You removed system tag {systemtag} from {file}" : "Премахнахте системен таг {systemtag} от {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s премахна системни таг %3$s от %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} премахна системен таг {systemtag} от {file}",
+ "<strong>System tags</strong> for a file have been modified" : "Промяна на <strong>системни тагове</strong> за файл",
+ "Name" : "Име",
+ "Delete" : "Изтриване",
+ "Public" : "Публичен",
+ "Restricted" : "Ограничен",
+ "Reset" : "Възстанови",
"No files in here" : "Тук няма файлове",
"No entries found in this folder" : "Няма намерени записи в тази папка",
- "Name" : "Име",
"Size" : "Размер",
- "Modified" : "Променен на"
+ "Modified" : "Променен на",
+ "You assigned system tag %3$s" : "Назначихте системен таг %3$s",
+ "%1$s assigned system tag %3$s" : "%1$s възложи системен таг %3$s",
+ "You unassigned system tag %3$s" : "Отстранихте системен таг %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s отстрани системен таг %3$s",
+ "You created system tag %2$s" : "Създадохте системен таг %2$s",
+ "You deleted system tag %2$s" : "Изтрихте системен таг %2$s",
+ "You updated system tag %3$s to %2$s" : "Актуализирахте системен таг %3$s на %2$s",
+ "You assigned system tag %3$s to %2$s" : "Назначихте системен таг %3$s на %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s назначи системен таг %3$s на %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Отстранихте системен таг %3$s от %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s отстрани системен таг %3$s от %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/bg_BG.json b/apps/systemtags/l10n/bg_BG.json
index b6f33731e60..25460accb1f 100644
--- a/apps/systemtags/l10n/bg_BG.json
+++ b/apps/systemtags/l10n/bg_BG.json
@@ -1,10 +1,61 @@
{ "translations": {
"Tags" : "Етикети",
+ "Update" : "Обнови",
+ "Create" : "Създай",
+ "Select tag…" : "Избери етикет...",
"Tagged files" : "Отбелязани файлове",
+ "Select tags to filter by" : "Моля изберете таг по който да филтрирате",
+ "No tags found" : "Няма открити етикети",
+ "Please select tags to filter by" : "Моля изберете таг за филтриране",
+ "No files found for the selected tags" : "Няма намерени файлове за избраните тагове",
+ "Added system tag %1$s" : "Добавен системен таг %1$s",
+ "Added system tag {systemtag}" : "Добавен системен таг {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s добави системен таг %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} добави системен таг {systemtag}",
+ "Removed system tag %1$s" : "Премахнат системен таг %1$s",
+ "Removed system tag {systemtag}" : "Премахнат системен таг {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s премахна системен таг %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} премахна системен таг {systemtag}",
+ "You created system tag %1$s" : "Създадохте системен таг %1$s",
+ "You created system tag {systemtag}" : "Създадохте системен таг {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s създаде системен таг %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} създаде системен таг {systemtag}",
+ "You deleted system tag %1$s" : "Изтрихте системен таг %1$s",
+ "You deleted system tag {systemtag}" : "Изтрихте системен таг {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s изтри системен таг %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} изтри системен таг {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Актуализирахте системен таг %2$s на %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Актуализирахте системен таг {oldsystemtag} на {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s акутализиран системен таг %3$s на %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} Актуализира системен таг {oldsystemtag} на {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Добавихте системен таг %2$s на %1$s",
+ "You added system tag {systemtag} to {file}" : "Добавихте системен таг {systemtag} на {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s добави системен таг %3$s на %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} добави системен таг {systemtag} на {file}",
+ "You removed system tag %2$s from %1$s" : "Премахнахте системен таг %2$s от %1$s",
+ "You removed system tag {systemtag} from {file}" : "Премахнахте системен таг {systemtag} от {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s премахна системни таг %3$s от %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} премахна системен таг {systemtag} от {file}",
+ "<strong>System tags</strong> for a file have been modified" : "Промяна на <strong>системни тагове</strong> за файл",
+ "Name" : "Име",
+ "Delete" : "Изтриване",
+ "Public" : "Публичен",
+ "Restricted" : "Ограничен",
+ "Reset" : "Възстанови",
"No files in here" : "Тук няма файлове",
"No entries found in this folder" : "Няма намерени записи в тази папка",
- "Name" : "Име",
"Size" : "Размер",
- "Modified" : "Променен на"
+ "Modified" : "Променен на",
+ "You assigned system tag %3$s" : "Назначихте системен таг %3$s",
+ "%1$s assigned system tag %3$s" : "%1$s възложи системен таг %3$s",
+ "You unassigned system tag %3$s" : "Отстранихте системен таг %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s отстрани системен таг %3$s",
+ "You created system tag %2$s" : "Създадохте системен таг %2$s",
+ "You deleted system tag %2$s" : "Изтрихте системен таг %2$s",
+ "You updated system tag %3$s to %2$s" : "Актуализирахте системен таг %3$s на %2$s",
+ "You assigned system tag %3$s to %2$s" : "Назначихте системен таг %3$s на %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s назначи системен таг %3$s на %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Отстранихте системен таг %3$s от %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s отстрани системен таг %3$s от %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/cs_CZ.js b/apps/systemtags/l10n/cs_CZ.js
index a58f4456d74..1cd9e4224c6 100644
--- a/apps/systemtags/l10n/cs_CZ.js
+++ b/apps/systemtags/l10n/cs_CZ.js
@@ -10,23 +10,37 @@ OC.L10N.register(
"No tags found" : "Nebyly nalezeny žádné tagy",
"Please select tags to filter by" : "Vyberte prosím tagy pro filtrování",
"No files found for the selected tags" : "Nebyly nalezeny žádné soubory s vybranými tagy",
- "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny",
- "You added system tag %3$s" : "Přidal jste systémový štítek %3$s",
- "%1$s added system tag %3$s" : "%1$s přidal systémový štítek %3$s",
- "You removed system tag %3$s" : "Odstranil jste systémový tag %3$s",
- "%1$s removed system tag %3$s" : "%1$s odstranil systémový štítek %3$s",
- "You created system tag %2$s" : "Vytvořili jste systémový tag %2$s",
+ "Added system tag %1$s" : "Přidán systémový tag %1$s",
+ "Added system tag {systemtag}" : "Přidán systémový tag {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s přidal(a) systémový tag %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} přidal(a) systémový tag {systemtag}",
+ "Removed system tag %1$s" : "Odstraněn systémový tag %1$s",
+ "Removed system tag {systemtag}" : "Odstraněn systémový tag {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s odstranil(a) systémový tag %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} odstranil(a) systémový tag {systemtag}",
+ "You created system tag %1$s" : "Vytvořil(a) jste systémový tag %1$s",
+ "You created system tag {systemtag}" : "Vytvořil(a) jste systémový tag {systemtag}",
"%1$s created system tag %2$s" : "%1$s vytvořil systémový tag %2$s",
- "You deleted system tag %2$s" : "Smazali jste systémový tag %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} vytvořil(a) systémový tag {systemtag}",
+ "You deleted system tag %1$s" : "Odstranil(a) jste systémový tag %1$s",
+ "You deleted system tag {systemtag}" : "Odstranil(a) jste systémový tag {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s smazal systémový tag %2$s",
- "You updated system tag %3$s to %2$s" : "Aktualizovali jste systémový tag %3$s na %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} odstranil(a) systémový tag {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Aktualizoval(a) jste systémový tag %2$s na %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Aktualizoval(a) jste systémový tag {oldsystemtag} na {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s aktualizoval systémový tag %3$s na %2$s",
- "You added system tag %3$s to %2$s" : "K %2$s jste přidal systémový štítek %3$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} aktualizoval(a) systémový tag {oldsystemtag} na { newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Přidal(a) jste systémový tag %2$s k %1$s",
+ "You added system tag {systemtag} to {file}" : "K {file} jste přidal(a) systémový tag {systemtag}",
"%1$s added system tag %3$s to %2$s" : "%1$s k %2$s přidal systémový štítek %3$s",
- "You removed system tag %3$s from %2$s" : "Z %2$s jste odstranil systémový štítek %3$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} přidal(a) systémový tag {systemtag} k {file}",
+ "You removed system tag %2$s from %1$s" : "Z %2$s jste odstranil(a) systémový tag %1$s",
+ "You removed system tag {systemtag} from {file}" : "Z {file} jste odstranil(a) systémový tag {systemtag}",
"%1$s removed system tag %3$s from %2$s" : "%1$s odstranil systémový štítek %3$s z %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} odstranil(a) systémotý tag {systemtag} z {file}",
"%s (restricted)" : "%s (omezeno)",
"%s (invisible)" : "%s (neviditelný)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny",
"Collaborative tags" : "Značky pro spolupráci",
"Name" : "Název",
"Delete" : "Smazat",
@@ -42,10 +56,12 @@ OC.L10N.register(
"%1$s assigned system tag %3$s" : "%1$s přiřadil systémový tag %3$s",
"You unassigned system tag %3$s" : "Odebrali jste systémový tag %3$s",
"%1$s unassigned system tag %3$s" : "%1$s odebral systémový tag %3$s",
+ "You created system tag %2$s" : "Vytvořili jste systémový tag %2$s",
+ "You deleted system tag %2$s" : "Smazali jste systémový tag %2$s",
+ "You updated system tag %3$s to %2$s" : "Aktualizovali jste systémový tag %3$s na %2$s",
"You assigned system tag %3$s to %2$s" : "Přiřadili jste systémový tag %3$s na %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s přiřadil systémový tag %3$s na %2$s",
"You unassigned system tag %3$s from %2$s" : "Odebrali jste systémový tag %3$s z %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s",
- "%s (not-assignable)" : "%s (nepřiřaditelné)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/systemtags/l10n/cs_CZ.json b/apps/systemtags/l10n/cs_CZ.json
index 4c431198836..4f37860393e 100644
--- a/apps/systemtags/l10n/cs_CZ.json
+++ b/apps/systemtags/l10n/cs_CZ.json
@@ -8,23 +8,37 @@
"No tags found" : "Nebyly nalezeny žádné tagy",
"Please select tags to filter by" : "Vyberte prosím tagy pro filtrování",
"No files found for the selected tags" : "Nebyly nalezeny žádné soubory s vybranými tagy",
- "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny",
- "You added system tag %3$s" : "Přidal jste systémový štítek %3$s",
- "%1$s added system tag %3$s" : "%1$s přidal systémový štítek %3$s",
- "You removed system tag %3$s" : "Odstranil jste systémový tag %3$s",
- "%1$s removed system tag %3$s" : "%1$s odstranil systémový štítek %3$s",
- "You created system tag %2$s" : "Vytvořili jste systémový tag %2$s",
+ "Added system tag %1$s" : "Přidán systémový tag %1$s",
+ "Added system tag {systemtag}" : "Přidán systémový tag {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s přidal(a) systémový tag %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} přidal(a) systémový tag {systemtag}",
+ "Removed system tag %1$s" : "Odstraněn systémový tag %1$s",
+ "Removed system tag {systemtag}" : "Odstraněn systémový tag {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s odstranil(a) systémový tag %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} odstranil(a) systémový tag {systemtag}",
+ "You created system tag %1$s" : "Vytvořil(a) jste systémový tag %1$s",
+ "You created system tag {systemtag}" : "Vytvořil(a) jste systémový tag {systemtag}",
"%1$s created system tag %2$s" : "%1$s vytvořil systémový tag %2$s",
- "You deleted system tag %2$s" : "Smazali jste systémový tag %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} vytvořil(a) systémový tag {systemtag}",
+ "You deleted system tag %1$s" : "Odstranil(a) jste systémový tag %1$s",
+ "You deleted system tag {systemtag}" : "Odstranil(a) jste systémový tag {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s smazal systémový tag %2$s",
- "You updated system tag %3$s to %2$s" : "Aktualizovali jste systémový tag %3$s na %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} odstranil(a) systémový tag {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Aktualizoval(a) jste systémový tag %2$s na %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Aktualizoval(a) jste systémový tag {oldsystemtag} na {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s aktualizoval systémový tag %3$s na %2$s",
- "You added system tag %3$s to %2$s" : "K %2$s jste přidal systémový štítek %3$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} aktualizoval(a) systémový tag {oldsystemtag} na { newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Přidal(a) jste systémový tag %2$s k %1$s",
+ "You added system tag {systemtag} to {file}" : "K {file} jste přidal(a) systémový tag {systemtag}",
"%1$s added system tag %3$s to %2$s" : "%1$s k %2$s přidal systémový štítek %3$s",
- "You removed system tag %3$s from %2$s" : "Z %2$s jste odstranil systémový štítek %3$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} přidal(a) systémový tag {systemtag} k {file}",
+ "You removed system tag %2$s from %1$s" : "Z %2$s jste odstranil(a) systémový tag %1$s",
+ "You removed system tag {systemtag} from {file}" : "Z {file} jste odstranil(a) systémový tag {systemtag}",
"%1$s removed system tag %3$s from %2$s" : "%1$s odstranil systémový štítek %3$s z %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} odstranil(a) systémotý tag {systemtag} z {file}",
"%s (restricted)" : "%s (omezeno)",
"%s (invisible)" : "%s (neviditelný)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny",
"Collaborative tags" : "Značky pro spolupráci",
"Name" : "Název",
"Delete" : "Smazat",
@@ -40,10 +54,12 @@
"%1$s assigned system tag %3$s" : "%1$s přiřadil systémový tag %3$s",
"You unassigned system tag %3$s" : "Odebrali jste systémový tag %3$s",
"%1$s unassigned system tag %3$s" : "%1$s odebral systémový tag %3$s",
+ "You created system tag %2$s" : "Vytvořili jste systémový tag %2$s",
+ "You deleted system tag %2$s" : "Smazali jste systémový tag %2$s",
+ "You updated system tag %3$s to %2$s" : "Aktualizovali jste systémový tag %3$s na %2$s",
"You assigned system tag %3$s to %2$s" : "Přiřadili jste systémový tag %3$s na %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s přiřadil systémový tag %3$s na %2$s",
"You unassigned system tag %3$s from %2$s" : "Odebrali jste systémový tag %3$s z %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s",
- "%s (not-assignable)" : "%s (nepřiřaditelné)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js
index 966cb646717..8694bb0b389 100644
--- a/apps/systemtags/l10n/de.js
+++ b/apps/systemtags/l10n/de.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat den System-Tag {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert",
"Collaborative tags" : "Zusammenarbeits-Tags",
"Name" : "Name",
"Delete" : "Löschen",
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "System-Tag %3$s an %2$s zugewiesen",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s %2$s zugewiesen",
"You unassigned system tag %3$s from %2$s" : "System-Bezeichnung %3$s von %2$s entfernt",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt",
- "%s (not-assignable)" : "%s (nicht zuweisbar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json
index d95db2afbfb..9c408bb0c09 100644
--- a/apps/systemtags/l10n/de.json
+++ b/apps/systemtags/l10n/de.json
@@ -38,7 +38,7 @@
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat den System-Tag {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert",
"Collaborative tags" : "Zusammenarbeits-Tags",
"Name" : "Name",
"Delete" : "Löschen",
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "System-Tag %3$s an %2$s zugewiesen",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s %2$s zugewiesen",
"You unassigned system tag %3$s from %2$s" : "System-Bezeichnung %3$s von %2$s entfernt",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt",
- "%s (not-assignable)" : "%s (nicht zuweisbar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js
index 5f624847a98..69d9bce4420 100644
--- a/apps/systemtags/l10n/de_DE.js
+++ b/apps/systemtags/l10n/de_DE.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat den System-Tag {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert",
"Collaborative tags" : "Gemeinsame Tags",
"Name" : "Name",
"Delete" : "Löschen",
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s zugeordnet",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hat den System-Tag %3$s an %2$s zugeordnet",
"You unassigned system tag %3$s from %2$s" : "Sie haben den System-Tag %3$s von %2$s entfernt",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt",
- "%s (not-assignable)" : "%s (nicht zuweisbar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json
index 69b48f28469..1155159a066 100644
--- a/apps/systemtags/l10n/de_DE.json
+++ b/apps/systemtags/l10n/de_DE.json
@@ -38,7 +38,7 @@
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat den System-Tag {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert",
"Collaborative tags" : "Gemeinsame Tags",
"Name" : "Name",
"Delete" : "Löschen",
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s zugeordnet",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hat den System-Tag %3$s an %2$s zugeordnet",
"You unassigned system tag %3$s from %2$s" : "Sie haben den System-Tag %3$s von %2$s entfernt",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt",
- "%s (not-assignable)" : "%s (nicht zuweisbar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js
index 6d4d7ff023f..611e96c62e8 100644
--- a/apps/systemtags/l10n/es.js
+++ b/apps/systemtags/l10n/es.js
@@ -32,6 +32,12 @@ OC.L10N.register(
"{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} actualizó la etiqueta de sistema {oldsystemtag} a {newsystemtag}",
"You added system tag %2$s to %1$s" : "Usted añadió la etiqueta de sistema %2$s a %1$s",
"You added system tag {systemtag} to {file}" : "Usted añadió la etiqueta de sistema {systemtag} a {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s agregó la etiqueta de sistema %3$s a %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} agregó la etiqueta de sistema {systemtag} a {file}",
+ "You removed system tag %2$s from %1$s" : "Ha removido la etiqueta de sistema %2$s de %1$s",
+ "You removed system tag {systemtag} from {file}" : "Ha removido la etiqueta de sistema {systemtag} de {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s removió la etiqueta de sistema %3$s de %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} removió la etiqueta de sistema {systemtag} de {file}",
"%s (restricted)" : "%s (restringido)",
"%s (invisible)" : "%s (invisible)",
"<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo",
@@ -56,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Asignaste la etiqueta del sistema de %3$s a %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s asignó la etiqueta de sistema %3$s a %2$s",
"You unassigned system tag %3$s from %2$s" : "Desasignaste la etiqueta del sistema a %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s",
- "%s (not-assignable)" : "%s (no-asignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json
index 4c862068b30..29ab3561313 100644
--- a/apps/systemtags/l10n/es.json
+++ b/apps/systemtags/l10n/es.json
@@ -30,6 +30,12 @@
"{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} actualizó la etiqueta de sistema {oldsystemtag} a {newsystemtag}",
"You added system tag %2$s to %1$s" : "Usted añadió la etiqueta de sistema %2$s a %1$s",
"You added system tag {systemtag} to {file}" : "Usted añadió la etiqueta de sistema {systemtag} a {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s agregó la etiqueta de sistema %3$s a %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} agregó la etiqueta de sistema {systemtag} a {file}",
+ "You removed system tag %2$s from %1$s" : "Ha removido la etiqueta de sistema %2$s de %1$s",
+ "You removed system tag {systemtag} from {file}" : "Ha removido la etiqueta de sistema {systemtag} de {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s removió la etiqueta de sistema %3$s de %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} removió la etiqueta de sistema {systemtag} de {file}",
"%s (restricted)" : "%s (restringido)",
"%s (invisible)" : "%s (invisible)",
"<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo",
@@ -54,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Asignaste la etiqueta del sistema de %3$s a %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s asignó la etiqueta de sistema %3$s a %2$s",
"You unassigned system tag %3$s from %2$s" : "Desasignaste la etiqueta del sistema a %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s",
- "%s (not-assignable)" : "%s (no-asignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/fr.js b/apps/systemtags/l10n/fr.js
index 38dc9d5dedd..c8ae9d40962 100644
--- a/apps/systemtags/l10n/fr.js
+++ b/apps/systemtags/l10n/fr.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Vous avez attribué l'étiquette collaborative %3$s à %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s a attribué l'étiquette collaborative %3$s à %2$s",
"You unassigned system tag %3$s from %2$s" : "Vous avez retiré l'étiquette collaborative %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s de %2$s",
- "%s (not-assignable)" : "%s (non assignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s de %2$s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/systemtags/l10n/fr.json b/apps/systemtags/l10n/fr.json
index f7b526cce22..6bf4ef57225 100644
--- a/apps/systemtags/l10n/fr.json
+++ b/apps/systemtags/l10n/fr.json
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Vous avez attribué l'étiquette collaborative %3$s à %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s a attribué l'étiquette collaborative %3$s à %2$s",
"You unassigned system tag %3$s from %2$s" : "Vous avez retiré l'étiquette collaborative %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s de %2$s",
- "%s (not-assignable)" : "%s (non assignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s de %2$s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/hu_HU.js b/apps/systemtags/l10n/hu_HU.js
index 96fa98bdd31..e53af978e7e 100644
--- a/apps/systemtags/l10n/hu_HU.js
+++ b/apps/systemtags/l10n/hu_HU.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "%3$s rendszer címkét hozzárendelte: %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s neki: %2$s",
"You unassigned system tag %3$s from %2$s" : "%3$s rendszer címke hozzárendelést elvette tőle: %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s",
- "%s (not-assignable)" : "%s (nem hozzárendelhető)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/hu_HU.json b/apps/systemtags/l10n/hu_HU.json
index f0c566aafec..56ce722db09 100644
--- a/apps/systemtags/l10n/hu_HU.json
+++ b/apps/systemtags/l10n/hu_HU.json
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "%3$s rendszer címkét hozzárendelte: %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s neki: %2$s",
"You unassigned system tag %3$s from %2$s" : "%3$s rendszer címke hozzárendelést elvette tőle: %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s",
- "%s (not-assignable)" : "%s (nem hozzárendelhető)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/it.js b/apps/systemtags/l10n/it.js
index 30e5e9a0861..1e330c33640 100644
--- a/apps/systemtags/l10n/it.js
+++ b/apps/systemtags/l10n/it.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Hai assegnato l'etichetta di sistema %3$s a %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s ha assegnato l'etichetta di sistema %3$s a %2$s",
"You unassigned system tag %3$s from %2$s" : "Hai rimosso l'etichetta di sistema %3$s da %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s",
- "%s (not-assignable)" : "%s (non assegnabile)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/it.json b/apps/systemtags/l10n/it.json
index 4e403e6e3cf..10684634acd 100644
--- a/apps/systemtags/l10n/it.json
+++ b/apps/systemtags/l10n/it.json
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Hai assegnato l'etichetta di sistema %3$s a %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s ha assegnato l'etichetta di sistema %3$s a %2$s",
"You unassigned system tag %3$s from %2$s" : "Hai rimosso l'etichetta di sistema %3$s da %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s",
- "%s (not-assignable)" : "%s (non assegnabile)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/nb_NO.js b/apps/systemtags/l10n/nb_NO.js
index 69e904077de..c464d26c6eb 100644
--- a/apps/systemtags/l10n/nb_NO.js
+++ b/apps/systemtags/l10n/nb_NO.js
@@ -7,21 +7,40 @@ OC.L10N.register(
"Select tag…" : "Velg merkelapp...",
"Tagged files" : "Merkede filer",
"Select tags to filter by" : "Velg merkelapper å filtrere på",
+ "No tags found" : "Fant ingen merkelapper",
"Please select tags to filter by" : "Vennligst velg merkelapper å filtrere på",
"No files found for the selected tags" : "Ingen filer funnet for de valgte merkelappene",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret",
- "You added system tag %3$s" : "Du la til system merkelappen %3$s",
- "%1$s added system tag %3$s" : "%1$s la til system merkelapp %3$s",
- "You removed system tag %3$s" : "Du fjernet system merkelappen %3$s",
- "%1$s removed system tag %3$s" : "%1$s fjernet systemetiketten %3$s",
- "You created system tag %2$s" : "Du opprettet system merkelappen %2$s",
+ "Added system tag %1$s" : "La til system-merkelapp %1$s",
+ "Added system tag {systemtag}" : "La til system-merkelapp {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s la til system-merkelapp %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} la til system-merkelapp {systemtag}",
+ "Removed system tag %1$s" : "Fjernet system-merkelapp %1$s",
+ "Removed system tag {systemtag}" : "Fjernet system-merkelapp {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s fjernet system-merkelapp %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} fjernet system-merkelapp {systemtag}",
+ "You created system tag %1$s" : "Du opprettet system-merkelapp %1$s",
+ "You created system tag {systemtag}" : "Du opprettet system-merkelapp {systemtag}",
"%1$s created system tag %2$s" : "%1$s opprettet system-merkelapp %2$s",
- "You deleted system tag %2$s" : "Du slettet system merkelappen %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} opprettet system-merkelapp {systemtag}",
+ "You deleted system tag %1$s" : "Du slettet system-merkelapp %1$s",
+ "You deleted system tag {systemtag}" : "Du slettet system-merkelapp {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s slettet system-merkelapp %2$s",
- "You updated system tag %3$s to %2$s" : "Du oppdaterte system merkelapp %3$s til %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} slettet system-merkelapp {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Du oppdaterte system-merkelapp %2$s til %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Du oppdaterte system-merkelapp {oldsystemtag} til {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s oppdaterte system-merkelapp %3$s til %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} oppdaterte system-merkelapp {oldsystemtag} til {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Du la til system-merkelapp %2$s til %1$s",
+ "You added system tag {systemtag} to {file}" : "Du la til system-merkelapp {systemtag} til {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s la til system-merkelapp %3$s til %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} la til system-merkelapp {systemtag} til {file}",
+ "You removed system tag %2$s from %1$s" : "Du fjernet system-merkelapp %2$s fra %1$s",
+ "You removed system tag {systemtag} from {file}" : "Du fjernet system-merkelapp {systemtag} fra {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} fjernet system-merkelapp {systemtag} fra {file}",
"%s (restricted)" : "%s (begrenset)",
"%s (invisible)" : "%s (usynlig)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret",
"Collaborative tags" : "Felles merkelapper",
"Name" : "Navn",
"Delete" : "Slett",
@@ -33,14 +52,16 @@ OC.L10N.register(
"No entries found in this folder" : "Ingen oppføringer funnet i denne mappen",
"Size" : "Størrelse",
"Modified" : "Endret",
- "You assigned system tag %3$s" : "Du tildelte system merkelappen %3$s",
+ "You assigned system tag %3$s" : "Du tildelte system-merkelappen %3$s",
"%1$s assigned system tag %3$s" : "%1$s festet system-merkelapp %3$s",
- "You unassigned system tag %3$s" : "Du tildelte system merkelappen %3$s",
+ "You unassigned system tag %3$s" : "Du tildelte system-merkelappen %3$s",
"%1$s unassigned system tag %3$s" : "%1$s fjernet system-merkelapp %3$s",
- "You assigned system tag %3$s to %2$s" : "Du tildelte system merkelappen %3$s to %2$s",
+ "You created system tag %2$s" : "Du opprettet system-merkelappen %2$s",
+ "You deleted system tag %2$s" : "Du slettet system-merkelappen %2$s",
+ "You updated system tag %3$s to %2$s" : "Du oppdaterte system-merkelapp %3$s til %2$s",
+ "You assigned system tag %3$s to %2$s" : "Du tildelte system-merkelappen %3$s to %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s festet system-merkelapp %3$s på %2$s",
- "You unassigned system tag %3$s from %2$s" : "Du fjernet system merkelappen %3$s fra %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s",
- "%s (not-assignable)" : "%s (ikke overdragbar)"
+ "You unassigned system tag %3$s from %2$s" : "Du fjernet system-merkelappen %3$s fra %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/nb_NO.json b/apps/systemtags/l10n/nb_NO.json
index 97236b8db4f..9fc637b487b 100644
--- a/apps/systemtags/l10n/nb_NO.json
+++ b/apps/systemtags/l10n/nb_NO.json
@@ -5,21 +5,40 @@
"Select tag…" : "Velg merkelapp...",
"Tagged files" : "Merkede filer",
"Select tags to filter by" : "Velg merkelapper å filtrere på",
+ "No tags found" : "Fant ingen merkelapper",
"Please select tags to filter by" : "Vennligst velg merkelapper å filtrere på",
"No files found for the selected tags" : "Ingen filer funnet for de valgte merkelappene",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret",
- "You added system tag %3$s" : "Du la til system merkelappen %3$s",
- "%1$s added system tag %3$s" : "%1$s la til system merkelapp %3$s",
- "You removed system tag %3$s" : "Du fjernet system merkelappen %3$s",
- "%1$s removed system tag %3$s" : "%1$s fjernet systemetiketten %3$s",
- "You created system tag %2$s" : "Du opprettet system merkelappen %2$s",
+ "Added system tag %1$s" : "La til system-merkelapp %1$s",
+ "Added system tag {systemtag}" : "La til system-merkelapp {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s la til system-merkelapp %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} la til system-merkelapp {systemtag}",
+ "Removed system tag %1$s" : "Fjernet system-merkelapp %1$s",
+ "Removed system tag {systemtag}" : "Fjernet system-merkelapp {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s fjernet system-merkelapp %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} fjernet system-merkelapp {systemtag}",
+ "You created system tag %1$s" : "Du opprettet system-merkelapp %1$s",
+ "You created system tag {systemtag}" : "Du opprettet system-merkelapp {systemtag}",
"%1$s created system tag %2$s" : "%1$s opprettet system-merkelapp %2$s",
- "You deleted system tag %2$s" : "Du slettet system merkelappen %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} opprettet system-merkelapp {systemtag}",
+ "You deleted system tag %1$s" : "Du slettet system-merkelapp %1$s",
+ "You deleted system tag {systemtag}" : "Du slettet system-merkelapp {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s slettet system-merkelapp %2$s",
- "You updated system tag %3$s to %2$s" : "Du oppdaterte system merkelapp %3$s til %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} slettet system-merkelapp {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Du oppdaterte system-merkelapp %2$s til %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Du oppdaterte system-merkelapp {oldsystemtag} til {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s oppdaterte system-merkelapp %3$s til %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} oppdaterte system-merkelapp {oldsystemtag} til {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Du la til system-merkelapp %2$s til %1$s",
+ "You added system tag {systemtag} to {file}" : "Du la til system-merkelapp {systemtag} til {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s la til system-merkelapp %3$s til %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} la til system-merkelapp {systemtag} til {file}",
+ "You removed system tag %2$s from %1$s" : "Du fjernet system-merkelapp %2$s fra %1$s",
+ "You removed system tag {systemtag} from {file}" : "Du fjernet system-merkelapp {systemtag} fra {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} fjernet system-merkelapp {systemtag} fra {file}",
"%s (restricted)" : "%s (begrenset)",
"%s (invisible)" : "%s (usynlig)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret",
"Collaborative tags" : "Felles merkelapper",
"Name" : "Navn",
"Delete" : "Slett",
@@ -31,14 +50,16 @@
"No entries found in this folder" : "Ingen oppføringer funnet i denne mappen",
"Size" : "Størrelse",
"Modified" : "Endret",
- "You assigned system tag %3$s" : "Du tildelte system merkelappen %3$s",
+ "You assigned system tag %3$s" : "Du tildelte system-merkelappen %3$s",
"%1$s assigned system tag %3$s" : "%1$s festet system-merkelapp %3$s",
- "You unassigned system tag %3$s" : "Du tildelte system merkelappen %3$s",
+ "You unassigned system tag %3$s" : "Du tildelte system-merkelappen %3$s",
"%1$s unassigned system tag %3$s" : "%1$s fjernet system-merkelapp %3$s",
- "You assigned system tag %3$s to %2$s" : "Du tildelte system merkelappen %3$s to %2$s",
+ "You created system tag %2$s" : "Du opprettet system-merkelappen %2$s",
+ "You deleted system tag %2$s" : "Du slettet system-merkelappen %2$s",
+ "You updated system tag %3$s to %2$s" : "Du oppdaterte system-merkelapp %3$s til %2$s",
+ "You assigned system tag %3$s to %2$s" : "Du tildelte system-merkelappen %3$s to %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s festet system-merkelapp %3$s på %2$s",
- "You unassigned system tag %3$s from %2$s" : "Du fjernet system merkelappen %3$s fra %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s",
- "%s (not-assignable)" : "%s (ikke overdragbar)"
+ "You unassigned system tag %3$s from %2$s" : "Du fjernet system-merkelappen %3$s fra %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s fjernet system-merkelapp %3$s fra %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/nl.js b/apps/systemtags/l10n/nl.js
index 9fb855151d5..69256cf8b62 100644
--- a/apps/systemtags/l10n/nl.js
+++ b/apps/systemtags/l10n/nl.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Je wees systeemmarkering %3$s aan %2$s toe",
"%1$s assigned system tag %3$s to %2$s" : "%1$s wees systeemmarkering %3$s aan %2$s toe",
"You unassigned system tag %3$s from %2$s" : "Je maakte de toewijzing van systeem markering %3$s van %2$s ongedaan",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemmarkering %3$s van %2$s",
- "%s (not-assignable)" : "%s (niet-toewijsbaar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemmarkering %3$s van %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/nl.json b/apps/systemtags/l10n/nl.json
index 2cdffb4e5fb..1f024aad6b7 100644
--- a/apps/systemtags/l10n/nl.json
+++ b/apps/systemtags/l10n/nl.json
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Je wees systeemmarkering %3$s aan %2$s toe",
"%1$s assigned system tag %3$s to %2$s" : "%1$s wees systeemmarkering %3$s aan %2$s toe",
"You unassigned system tag %3$s from %2$s" : "Je maakte de toewijzing van systeem markering %3$s van %2$s ongedaan",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemmarkering %3$s van %2$s",
- "%s (not-assignable)" : "%s (niet-toewijsbaar)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemmarkering %3$s van %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js
index 365ecf3ca57..0d556a9ec52 100644
--- a/apps/systemtags/l10n/pt_BR.js
+++ b/apps/systemtags/l10n/pt_BR.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"You assigned system tag %3$s to %2$s" : "Você atribuiu a etiqueta do sistema %3$s para %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s etiqueta de sistema atribuída %3$s para %2$s",
"You unassigned system tag %3$s from %2$s" : "Você eliminou a atribuição da etiqueta do sistema %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s",
- "%s (not-assignable)" : "%s (não atribuível)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json
index 26694d202e1..fcef1a22495 100644
--- a/apps/systemtags/l10n/pt_BR.json
+++ b/apps/systemtags/l10n/pt_BR.json
@@ -60,7 +60,6 @@
"You assigned system tag %3$s to %2$s" : "Você atribuiu a etiqueta do sistema %3$s para %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s etiqueta de sistema atribuída %3$s para %2$s",
"You unassigned system tag %3$s from %2$s" : "Você eliminou a atribuição da etiqueta do sistema %3$s de %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s",
- "%s (not-assignable)" : "%s (não atribuível)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js
index bd9385d0bf2..247d6345c3d 100644
--- a/apps/systemtags/l10n/ru.js
+++ b/apps/systemtags/l10n/ru.js
@@ -7,19 +7,40 @@ OC.L10N.register(
"Select tag…" : "Выбрать метку...",
"Tagged files" : "Файлы с метками",
"Select tags to filter by" : "Выберите метки для фильтра",
+ "No tags found" : "Метки не найдены",
"Please select tags to filter by" : "Выберите метки для фильтра",
"No files found for the selected tags" : "Для выбранных меток файлов не найдено",
- "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены",
- "You removed system tag %3$s" : "Вы удалили системную метку %3$s",
- "%1$s removed system tag %3$s" : "%1$s удалил системную метку %3$s",
- "You created system tag %2$s" : "Вы создали системную метку %2$s",
+ "Added system tag %1$s" : "Добавлена системная метка %1$s",
+ "Added system tag {systemtag}" : "Добавлена системная метка {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s добавил системную метку %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} добавил системную метку {systemtag}",
+ "Removed system tag %1$s" : "Убрана системная метка %1$s",
+ "Removed system tag {systemtag}" : "Убрана системная метка {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s удалил системную метку %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} удалили системную метку {systemtag}",
+ "You created system tag %1$s" : "Вы создали системную метку %1$s",
+ "You created system tag {systemtag}" : "Вы создали системную метку {systemtag}",
"%1$s created system tag %2$s" : "%1$s создал системную метку %2$s",
- "You deleted system tag %2$s" : "Вы удалили системную метку %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} создал системную метку {systemtag}",
+ "You deleted system tag %1$s" : "Вы удалили системную метку %1$s",
+ "You deleted system tag {systemtag}" : "Вы удалили системную метку {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s удалил системную метку %2$s",
- "You updated system tag %3$s to %2$s" : "Вы обновили системную метку %3$s на %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} удалил системную метку {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Вы обновили системную метку с %2$s на %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Вы обновили системную метку с {oldsystemtag} на {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s обновил системную метку %3$s для %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} обновил системную метку с {oldsystemtag} на {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Вы добавили системную метку %2$s к %1$s",
+ "You added system tag {systemtag} to {file}" : "Вы добавили системную метку {systemtag} к {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s добавил системную метку %3$s к %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} добавил системную метку {systemtag} к {file}",
+ "You removed system tag %2$s from %1$s" : "Вы удалили системную метку %2$s из %1$s",
+ "You removed system tag {systemtag} from {file}" : "Вы удалили системную метку {systemtag} из {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s удалил системную метку %3$s из %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} удалил системную метку {systemtag} из {file}",
"%s (restricted)" : "%s (ограничено)",
"%s (invisible)" : "%s (невидимые)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены",
"Collaborative tags" : "Совместные метки",
"Name" : "Имя",
"Delete" : "Удалить",
@@ -35,10 +56,12 @@ OC.L10N.register(
"%1$s assigned system tag %3$s" : "%1$s назначил системную метку %3$s",
"You unassigned system tag %3$s" : "Вы убрали системную метку %3$s",
"%1$s unassigned system tag %3$s" : "%1$s убрал системную метку %3$s",
+ "You created system tag %2$s" : "Вы создали системную метку %2$s",
+ "You deleted system tag %2$s" : "Вы удалили системную метку %2$s",
+ "You updated system tag %3$s to %2$s" : "Вы обновили системную метку %3$s на %2$s",
"You assigned system tag %3$s to %2$s" : "Вы назначили системную метку %3$s на %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s назначил системную метку %3$s для %2$s",
"You unassigned system tag %3$s from %2$s" : "Вы назначили системную метку %3$s из %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$s",
- "%s (not-assignable)" : "%s (not-assignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$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/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json
index 65ada9bbfb3..1a41f38126b 100644
--- a/apps/systemtags/l10n/ru.json
+++ b/apps/systemtags/l10n/ru.json
@@ -5,19 +5,40 @@
"Select tag…" : "Выбрать метку...",
"Tagged files" : "Файлы с метками",
"Select tags to filter by" : "Выберите метки для фильтра",
+ "No tags found" : "Метки не найдены",
"Please select tags to filter by" : "Выберите метки для фильтра",
"No files found for the selected tags" : "Для выбранных меток файлов не найдено",
- "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены",
- "You removed system tag %3$s" : "Вы удалили системную метку %3$s",
- "%1$s removed system tag %3$s" : "%1$s удалил системную метку %3$s",
- "You created system tag %2$s" : "Вы создали системную метку %2$s",
+ "Added system tag %1$s" : "Добавлена системная метка %1$s",
+ "Added system tag {systemtag}" : "Добавлена системная метка {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s добавил системную метку %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} добавил системную метку {systemtag}",
+ "Removed system tag %1$s" : "Убрана системная метка %1$s",
+ "Removed system tag {systemtag}" : "Убрана системная метка {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s удалил системную метку %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} удалили системную метку {systemtag}",
+ "You created system tag %1$s" : "Вы создали системную метку %1$s",
+ "You created system tag {systemtag}" : "Вы создали системную метку {systemtag}",
"%1$s created system tag %2$s" : "%1$s создал системную метку %2$s",
- "You deleted system tag %2$s" : "Вы удалили системную метку %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} создал системную метку {systemtag}",
+ "You deleted system tag %1$s" : "Вы удалили системную метку %1$s",
+ "You deleted system tag {systemtag}" : "Вы удалили системную метку {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s удалил системную метку %2$s",
- "You updated system tag %3$s to %2$s" : "Вы обновили системную метку %3$s на %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} удалил системную метку {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Вы обновили системную метку с %2$s на %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Вы обновили системную метку с {oldsystemtag} на {newsystemtag}",
"%1$s updated system tag %3$s to %2$s" : "%1$s обновил системную метку %3$s для %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} обновил системную метку с {oldsystemtag} на {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Вы добавили системную метку %2$s к %1$s",
+ "You added system tag {systemtag} to {file}" : "Вы добавили системную метку {systemtag} к {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s добавил системную метку %3$s к %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} добавил системную метку {systemtag} к {file}",
+ "You removed system tag %2$s from %1$s" : "Вы удалили системную метку %2$s из %1$s",
+ "You removed system tag {systemtag} from {file}" : "Вы удалили системную метку {systemtag} из {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s удалил системную метку %3$s из %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} удалил системную метку {systemtag} из {file}",
"%s (restricted)" : "%s (ограничено)",
"%s (invisible)" : "%s (невидимые)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены",
"Collaborative tags" : "Совместные метки",
"Name" : "Имя",
"Delete" : "Удалить",
@@ -33,10 +54,12 @@
"%1$s assigned system tag %3$s" : "%1$s назначил системную метку %3$s",
"You unassigned system tag %3$s" : "Вы убрали системную метку %3$s",
"%1$s unassigned system tag %3$s" : "%1$s убрал системную метку %3$s",
+ "You created system tag %2$s" : "Вы создали системную метку %2$s",
+ "You deleted system tag %2$s" : "Вы удалили системную метку %2$s",
+ "You updated system tag %3$s to %2$s" : "Вы обновили системную метку %3$s на %2$s",
"You assigned system tag %3$s to %2$s" : "Вы назначили системную метку %3$s на %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s назначил системную метку %3$s для %2$s",
"You unassigned system tag %3$s from %2$s" : "Вы назначили системную метку %3$s из %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$s",
- "%s (not-assignable)" : "%s (not-assignable)"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$s"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/sq.js b/apps/systemtags/l10n/sq.js
index 9312d671bd1..3c1c1b4f039 100644
--- a/apps/systemtags/l10n/sq.js
+++ b/apps/systemtags/l10n/sq.js
@@ -2,31 +2,52 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Etiketa",
+ "Update" : "Përditëso",
+ "Create" : "Krijo",
+ "Select tag…" : "Përzgjidh etiketën...",
"Tagged files" : "Kartela të etiketuara",
"Select tags to filter by" : "Përzgjidhni etiketa sipas të cilat të bëhet filtrimi",
+ "No tags found" : "Asnjë etiket nuk u gjet",
"Please select tags to filter by" : "Ju lutemi, përzgjidhni etiketa sipas të cilat të bëhet filtrimi",
"No files found for the selected tags" : "S’u gjetën kartela për etiketat e përzgjedhura",
+ "Added system tag %1$s" : "U shtua etiketa %1$s e sistemit ",
+ "Added system tag {systemtag}" : "Tagu i shtuar i sistemit{systemtag}",
+ "%1$s added system tag %2$s" : "%1$s shtoi etiketën %2$s të sistemit ",
+ "{actor} added system tag {systemtag}" : "{actor} shtoi etiketën e sistemit {systemtag}",
+ "Removed system tag %1$s" : "Hoqi etiketën %1$s të sistemit ",
+ "Removed system tag {systemtag}" : "Hoqi etiketën e sistemit {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ",
+ "{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}",
+ "You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit",
+ "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
+ "You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit",
+ "You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit",
+ "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} fshiu etiketën {systemtag} të sistemit",
+ "You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
+ "You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s",
+ "You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}",
+ "You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}",
+ "%s (restricted)" : "%s (e kufizuar)",
+ "%s (invisible)" : "%s (e padukshme)",
"<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë",
+ "Name" : "Emër",
+ "No files in here" : "S’ka kartela këtu",
+ "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
+ "Size" : "Madhësi",
+ "Modified" : "Ndryshuar më",
"You assigned system tag %3$s" : "Caktuat etiketën e sistemit %3$s",
"%1$s assigned system tag %3$s" : "%1$s caktoi etiketën e sistemit %3$s",
"You unassigned system tag %3$s" : "I hoqët etiketën e sistemit %3$s",
"%1$s unassigned system tag %3$s" : "%1$s e hoqi %3$s si etiketë sistemi",
"You created system tag %2$s" : "Krijuat etiketën e sistemit %2$s",
- "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
"You deleted system tag %2$s" : "Fshitë etiketën e sistemit %2$s",
- "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
"You updated system tag %3$s to %2$s" : "Përditësuat etiketën e sistemit %3$s në %2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
"You assigned system tag %3$s to %2$s" : "Caktuat etiketë sistemi %3$s për %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s caktoi etiketën e sistemit %3$s si %2$s",
"You unassigned system tag %3$s from %2$s" : "I hoqët %2$s etiketën e sistemit %3$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hoqi prej %2$s etiketën e sistemit %3$s",
- "%s (restricted)" : "%s (e kufizuar)",
- "%s (invisible)" : "%s (e padukshme)",
- "Name" : "Emër",
- "No files in here" : "S’ka kartela këtu",
- "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
- "Size" : "Madhësi",
- "Modified" : "Ndryshuar më"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hoqi prej %2$s etiketën e sistemit %3$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/sq.json b/apps/systemtags/l10n/sq.json
index eed88992e5a..31b30a1ffa3 100644
--- a/apps/systemtags/l10n/sq.json
+++ b/apps/systemtags/l10n/sq.json
@@ -1,30 +1,51 @@
{ "translations": {
"Tags" : "Etiketa",
+ "Update" : "Përditëso",
+ "Create" : "Krijo",
+ "Select tag…" : "Përzgjidh etiketën...",
"Tagged files" : "Kartela të etiketuara",
"Select tags to filter by" : "Përzgjidhni etiketa sipas të cilat të bëhet filtrimi",
+ "No tags found" : "Asnjë etiket nuk u gjet",
"Please select tags to filter by" : "Ju lutemi, përzgjidhni etiketa sipas të cilat të bëhet filtrimi",
"No files found for the selected tags" : "S’u gjetën kartela për etiketat e përzgjedhura",
+ "Added system tag %1$s" : "U shtua etiketa %1$s e sistemit ",
+ "Added system tag {systemtag}" : "Tagu i shtuar i sistemit{systemtag}",
+ "%1$s added system tag %2$s" : "%1$s shtoi etiketën %2$s të sistemit ",
+ "{actor} added system tag {systemtag}" : "{actor} shtoi etiketën e sistemit {systemtag}",
+ "Removed system tag %1$s" : "Hoqi etiketën %1$s të sistemit ",
+ "Removed system tag {systemtag}" : "Hoqi etiketën e sistemit {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ",
+ "{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}",
+ "You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit",
+ "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
+ "You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit",
+ "You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit",
+ "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} fshiu etiketën {systemtag} të sistemit",
+ "You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
+ "You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s",
+ "You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}",
+ "You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}",
+ "%s (restricted)" : "%s (e kufizuar)",
+ "%s (invisible)" : "%s (e padukshme)",
"<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë",
+ "Name" : "Emër",
+ "No files in here" : "S’ka kartela këtu",
+ "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
+ "Size" : "Madhësi",
+ "Modified" : "Ndryshuar më",
"You assigned system tag %3$s" : "Caktuat etiketën e sistemit %3$s",
"%1$s assigned system tag %3$s" : "%1$s caktoi etiketën e sistemit %3$s",
"You unassigned system tag %3$s" : "I hoqët etiketën e sistemit %3$s",
"%1$s unassigned system tag %3$s" : "%1$s e hoqi %3$s si etiketë sistemi",
"You created system tag %2$s" : "Krijuat etiketën e sistemit %2$s",
- "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s",
"You deleted system tag %2$s" : "Fshitë etiketën e sistemit %2$s",
- "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s",
"You updated system tag %3$s to %2$s" : "Përditësuat etiketën e sistemit %3$s në %2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s",
"You assigned system tag %3$s to %2$s" : "Caktuat etiketë sistemi %3$s për %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s caktoi etiketën e sistemit %3$s si %2$s",
"You unassigned system tag %3$s from %2$s" : "I hoqët %2$s etiketën e sistemit %3$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s hoqi prej %2$s etiketën e sistemit %3$s",
- "%s (restricted)" : "%s (e kufizuar)",
- "%s (invisible)" : "%s (e padukshme)",
- "Name" : "Emër",
- "No files in here" : "S’ka kartela këtu",
- "No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
- "Size" : "Madhësi",
- "Modified" : "Ndryshuar më"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s hoqi prej %2$s etiketën e sistemit %3$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/systemtags/l10n/sv.js b/apps/systemtags/l10n/sv.js
index be11b9f9ad3..a91610dd452 100644
--- a/apps/systemtags/l10n/sv.js
+++ b/apps/systemtags/l10n/sv.js
@@ -2,31 +2,66 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Taggar",
+ "Update" : "Uppdatera",
+ "Create" : "Skapa",
+ "Select tag…" : "Välj tagg...",
"Tagged files" : "Taggade filer",
"Select tags to filter by" : "Välj taggar att filtrera med",
+ "No tags found" : "Inga taggar hittades",
"Please select tags to filter by" : "Vänligen välj taggar att filtrera med",
- "No files found for the selected tags" : "Inga filer hittade för de valda taggarna",
+ "No files found for the selected tags" : "Inga filer hittades för de valda taggarna",
+ "Added system tag %1$s" : "La till systemtagg %1$s",
+ "Added system tag {systemtag}" : "La till systemtagg {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s la till systemtagg %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} la till systemtagg {systemtag}",
+ "Removed system tag %1$s" : "Tog bort systemtagg %1$s",
+ "Removed system tag {systemtag}" : "Tog bort systemtagg {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s tog bort systemtagg %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} tog bort systemtagg {systemtag}",
+ "You created system tag %1$s" : "Du skapade systemtagg %1$s",
+ "You created system tag {systemtag}" : "Du skapade systemtagg {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s skapade systemtagg %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} skapade systemtagg {systemtag}",
+ "You deleted system tag %1$s" : "Du raderade systemtagg %1$s",
+ "You deleted system tag {systemtag}" : "Du raderade systemtagg {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s raderade systemtagg %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} raderade systemtagg {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Du uppdaterade systemtagg %2$s till %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Du uppdaterade systemtagg {oldsystemtag} till {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s uppdaterade systemtagg %3$s till %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} uppdaterade systemtagg {oldsystemtag} till {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Du la till systemtagg %2$s på %1$s",
+ "You added system tag {systemtag} to {file}" : "Du la till systemtagg {systemtag} på {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s la till systemtagg %3$s på %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} la till systemtagg {systemtag} på {file}",
+ "You removed system tag %2$s from %1$s" : "Du tog bort systemtagg %2$s från %1$s",
+ "You removed system tag {systemtag} from {file}" : "Du tog bort systemtagg {systemtag} från {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s tog bort systemtagg %3$s från %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} tog bort systemtagg {systemtag} från {file}",
+ "%s (restricted)" : "%s (begränsad)",
+ "%s (invisible)" : "%s (osynlig)",
"<strong>System tags</strong> for a file have been modified" : "<strong>Systemtaggar</strong> för en fil har blivit ändrade",
+ "Collaborative tags" : "Samverkande taggar",
+ "Name" : "Namn",
+ "Delete" : "Radera",
+ "Public" : "Offentlig",
+ "Restricted" : "Begränsad",
+ "Invisible" : "Osynlig",
+ "Reset" : "Återställ",
+ "No files in here" : "Inga filer här inne",
+ "No entries found in this folder" : "Ingenting hittades i denna mapp",
+ "Size" : "Storlek",
+ "Modified" : "Modifierad",
"You assigned system tag %3$s" : "Du tilldelade systemtagg %3$s",
"%1$s assigned system tag %3$s" : "%1$s blev tilldelad systemtagg %3$s",
"You unassigned system tag %3$s" : "Du tog bort tilldelning av systemtag %3$s",
"%1$s unassigned system tag %3$s" : "%1$s tog bort tilldelad systemtagg %3$s",
"You created system tag %2$s" : "Du skapade systemtagg %2$s",
- "%1$s created system tag %2$s" : "%1$s skapade systemtagg %2$s",
- "You deleted system tag %2$s" : "Du tog bort systemtagg %2$s",
- "%1$s deleted system tag %2$s" : "%1$s raderade systemtagg %2$s",
+ "You deleted system tag %2$s" : "Du raderade systemtagg %2$s",
"You updated system tag %3$s to %2$s" : "Du uppdaterade systemtagg %3$s till %2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s uppdaterade systemtagg %3$s till %2$s",
"You assigned system tag %3$s to %2$s" : "Du tilldelade systemtagg %3$s till %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s tilldelade systemtagg %3$s till %2$s",
"You unassigned system tag %3$s from %2$s" : "Du tog bort tilldelad systemtagg %3$s från %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s tog bort tilldelad systemtagg %3$s från %2$s",
- "%s (restricted)" : "%s (begränsad)",
- "%s (invisible)" : "%s (osynlig)",
- "Name" : "Namn",
- "No files in here" : "Inga filer kunde hittas",
- "No entries found in this folder" : "nga Filer hittades i denna mapp",
- "Size" : "Storlek",
- "Modified" : "Ändrad"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s tog bort tilldelad systemtagg %3$s från %2$s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/systemtags/l10n/sv.json b/apps/systemtags/l10n/sv.json
index 214bd3b100a..df64bff3ffe 100644
--- a/apps/systemtags/l10n/sv.json
+++ b/apps/systemtags/l10n/sv.json
@@ -1,30 +1,65 @@
{ "translations": {
"Tags" : "Taggar",
+ "Update" : "Uppdatera",
+ "Create" : "Skapa",
+ "Select tag…" : "Välj tagg...",
"Tagged files" : "Taggade filer",
"Select tags to filter by" : "Välj taggar att filtrera med",
+ "No tags found" : "Inga taggar hittades",
"Please select tags to filter by" : "Vänligen välj taggar att filtrera med",
- "No files found for the selected tags" : "Inga filer hittade för de valda taggarna",
+ "No files found for the selected tags" : "Inga filer hittades för de valda taggarna",
+ "Added system tag %1$s" : "La till systemtagg %1$s",
+ "Added system tag {systemtag}" : "La till systemtagg {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s la till systemtagg %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} la till systemtagg {systemtag}",
+ "Removed system tag %1$s" : "Tog bort systemtagg %1$s",
+ "Removed system tag {systemtag}" : "Tog bort systemtagg {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s tog bort systemtagg %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} tog bort systemtagg {systemtag}",
+ "You created system tag %1$s" : "Du skapade systemtagg %1$s",
+ "You created system tag {systemtag}" : "Du skapade systemtagg {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s skapade systemtagg %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} skapade systemtagg {systemtag}",
+ "You deleted system tag %1$s" : "Du raderade systemtagg %1$s",
+ "You deleted system tag {systemtag}" : "Du raderade systemtagg {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s raderade systemtagg %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} raderade systemtagg {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Du uppdaterade systemtagg %2$s till %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Du uppdaterade systemtagg {oldsystemtag} till {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s uppdaterade systemtagg %3$s till %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} uppdaterade systemtagg {oldsystemtag} till {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Du la till systemtagg %2$s på %1$s",
+ "You added system tag {systemtag} to {file}" : "Du la till systemtagg {systemtag} på {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s la till systemtagg %3$s på %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} la till systemtagg {systemtag} på {file}",
+ "You removed system tag %2$s from %1$s" : "Du tog bort systemtagg %2$s från %1$s",
+ "You removed system tag {systemtag} from {file}" : "Du tog bort systemtagg {systemtag} från {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s tog bort systemtagg %3$s från %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} tog bort systemtagg {systemtag} från {file}",
+ "%s (restricted)" : "%s (begränsad)",
+ "%s (invisible)" : "%s (osynlig)",
"<strong>System tags</strong> for a file have been modified" : "<strong>Systemtaggar</strong> för en fil har blivit ändrade",
+ "Collaborative tags" : "Samverkande taggar",
+ "Name" : "Namn",
+ "Delete" : "Radera",
+ "Public" : "Offentlig",
+ "Restricted" : "Begränsad",
+ "Invisible" : "Osynlig",
+ "Reset" : "Återställ",
+ "No files in here" : "Inga filer här inne",
+ "No entries found in this folder" : "Ingenting hittades i denna mapp",
+ "Size" : "Storlek",
+ "Modified" : "Modifierad",
"You assigned system tag %3$s" : "Du tilldelade systemtagg %3$s",
"%1$s assigned system tag %3$s" : "%1$s blev tilldelad systemtagg %3$s",
"You unassigned system tag %3$s" : "Du tog bort tilldelning av systemtag %3$s",
"%1$s unassigned system tag %3$s" : "%1$s tog bort tilldelad systemtagg %3$s",
"You created system tag %2$s" : "Du skapade systemtagg %2$s",
- "%1$s created system tag %2$s" : "%1$s skapade systemtagg %2$s",
- "You deleted system tag %2$s" : "Du tog bort systemtagg %2$s",
- "%1$s deleted system tag %2$s" : "%1$s raderade systemtagg %2$s",
+ "You deleted system tag %2$s" : "Du raderade systemtagg %2$s",
"You updated system tag %3$s to %2$s" : "Du uppdaterade systemtagg %3$s till %2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s uppdaterade systemtagg %3$s till %2$s",
"You assigned system tag %3$s to %2$s" : "Du tilldelade systemtagg %3$s till %2$s",
"%1$s assigned system tag %3$s to %2$s" : "%1$s tilldelade systemtagg %3$s till %2$s",
"You unassigned system tag %3$s from %2$s" : "Du tog bort tilldelad systemtagg %3$s från %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s tog bort tilldelad systemtagg %3$s från %2$s",
- "%s (restricted)" : "%s (begränsad)",
- "%s (invisible)" : "%s (osynlig)",
- "Name" : "Namn",
- "No files in here" : "Inga filer kunde hittas",
- "No entries found in this folder" : "nga Filer hittades i denna mapp",
- "Size" : "Storlek",
- "Modified" : "Ändrad"
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s tog bort tilldelad systemtagg %3$s från %2$s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/testing/appinfo/app.php b/apps/testing/appinfo/app.php
new file mode 100644
index 00000000000..402889f2674
--- /dev/null
+++ b/apps/testing/appinfo/app.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud GmbH.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+$app = new \OCA\Testing\Application();
+
diff --git a/apps/testing/appinfo/info.xml b/apps/testing/appinfo/info.xml
index 41b07447d55..caefd1709c5 100644
--- a/apps/testing/appinfo/info.xml
+++ b/apps/testing/appinfo/info.xml
@@ -5,8 +5,11 @@
<description>This app is only for testing! It is dangerous to have it enabled in a live instance</description>
<licence>AGPL</licence>
<author>Joas Schilling</author>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
+ <types>
+ <authentication/>
+ </types>
</info>
diff --git a/apps/testing/lib/AlternativeHomeUserBackend.php b/apps/testing/lib/AlternativeHomeUserBackend.php
new file mode 100644
index 00000000000..1e86b0bc555
--- /dev/null
+++ b/apps/testing/lib/AlternativeHomeUserBackend.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud GmbH.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Testing;
+
+/**
+ * Alternative home user backend.
+ *
+ * It returns a md5 of the home folder instead of the user id.
+ * To configure, need to add this in config.php:
+ * 'user_backends' => [
+ * 'default' => false, [
+ * 'class' => '\\OCA\\Testing\\AlternativeHomeUserBackend',
+ * 'arguments' => [],
+ * ],
+ * ]
+ */
+class AlternativeHomeUserBackend extends \OC\User\Database {
+ public function __construct() {
+ parent::__construct();
+ }
+ /**
+ * get the user's home directory
+ * @param string $uid the username
+ * @return string|false
+ */
+ public function getHome($uid) {
+ if ($this->userExists($uid)) {
+ // workaround to avoid killing the admin
+ if ($uid !== 'admin') {
+ $uid = md5($uid);
+ }
+ return \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/' . $uid;
+ }
+
+ return false;
+ }
+}
diff --git a/apps/testing/lib/Application.php b/apps/testing/lib/Application.php
new file mode 100644
index 00000000000..8f42d0442dd
--- /dev/null
+++ b/apps/testing/lib/Application.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud GmbH
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Testing;
+
+use OCP\AppFramework\App;
+use OCA\Testing\AlternativeHomeUserBackend;
+
+class Application extends App {
+ public function __construct (array $urlParams = array()) {
+ $appName = 'testing';
+ parent::__construct($appName, $urlParams);
+
+ $c = $this->getContainer();
+ $config = $c->getServer()->getConfig();
+ if ($config->getAppValue($appName, 'enable_alt_user_backend', 'no') === 'yes') {
+ $userManager = $c->getServer()->getUserManager();
+
+ // replace all user backends with this one
+ $userManager->clearBackends();
+ $userManager->registerBackend($c->query(AlternativeHomeUserBackend::class));
+ }
+ }
+}
diff --git a/apps/theming/appinfo/info.xml b/apps/theming/appinfo/info.xml
index 3a8867dc6f4..9ded5c89b87 100644
--- a/apps/theming/appinfo/info.xml
+++ b/apps/theming/appinfo/info.xml
@@ -5,12 +5,12 @@
<description>Adjust the Nextcloud theme</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>Theming</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
diff --git a/apps/theming/img/app-dark.svg b/apps/theming/img/app-dark.svg
new file mode 100644
index 00000000000..adf97966c41
--- /dev/null
+++ b/apps/theming/img/app-dark.svg
@@ -0,0 +1 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M10.707 11.412l-.587-.587-.03-.03a.513.513 0 0 1-.074-.526L13.07 3.4l-1.5-1.498-.15.15-.708-.706.505-.505a.538.538 0 0 1 .224-.128c.04-.01.05-.01.087-.016h.087c.04.006.05.006.086.016.072.02.134.055.192.1.74.676 1.42 1.415 2.127 2.124a.503.503 0 0 1 .103.556l-3.053 6.87.344.343.49-.49 3.01 3.01a1.192 1.192 0 0 1-1.685 1.686l-3.012-3.01.49-.488zm-.533-10.217a.986.986 0 0 0-1.396 0l-7.582 7.58a.99.99 0 0 0 0 1.398l1.397 1.396a.986.986 0 0 0 1.396 0l7.58-7.583a.988.988 0 0 0 0-1.396l-1.396-1.395z" fill="#000"/></svg>
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index 73e3ed3a4b4..24ac1c7d8d5 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -374,6 +374,7 @@ class ThemingController extends Controller {
';
$responseCss .= sprintf('.nc-theming-main-background {background-color: %s}' . "\n", $color);
$responseCss .= sprintf('.nc-theming-main-text {color: %s}' . "\n", $color);
+ $responseCss .= sprintf('#app-navigation li:hover > a, #app-navigation li:focus > a, #app-navigation a:focus, #app-navigation .selected, #app-navigation .selected a, #app-navigation .active, #app-navigation .active a {box-shadow: inset 2px 0 %s}' . "\n", $color);
}
$logo = $this->config->getAppValue($this->appName, 'logoMime');
@@ -445,8 +446,7 @@ class ThemingController extends Controller {
cacheBuster: ' . json_encode($cacheBusterValue). '
};
})();';
- $response = new Http\DataDisplayResponse($responseJS);
- $response->addHeader('Content-type', 'text/javascript');
+ $response = new DataDownloadResponse($responseJS, 'javascript', 'text/javascript');
$response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
$response->addHeader('Pragma', 'cache');
$response->cacheFor(3600);
diff --git a/apps/theming/lib/Settings/Section.php b/apps/theming/lib/Settings/Section.php
index cffbb8901c8..6078743dead 100644
--- a/apps/theming/lib/Settings/Section.php
+++ b/apps/theming/lib/Settings/Section.php
@@ -24,13 +24,21 @@
namespace OCA\Theming\Settings;
use OCP\IL10N;
-use OCP\Settings\ISection;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
-class Section implements ISection {
+class Section implements IIconSection {
/** @var IL10N */
private $l;
+ /** @var IURLGenerator */
+ private $url;
- public function __construct(IL10N $l) {
+ /**
+ * @param IURLGenerator $url
+ * @param IL10N $l
+ */
+ public function __construct(IURLGenerator $url, IL10N $l) {
+ $this->url = $url;
$this->l = $l;
}
@@ -64,4 +72,11 @@ class Section implements ISection {
public function getPriority() {
return 30;
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIcon() {
+ return $this->url->imagePath('theming', 'app-dark.svg');
+ }
}
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index 9fea56838ad..5c9ccb3baa6 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -128,7 +128,7 @@ class Util {
} catch (AppPathNotFoundException $e) {}
if($this->config->getAppValue('theming', 'logoMime', '') !== '' && $this->rootFolder->nodeExists('/themedinstancelogo')) {
- return $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/') . '/themedinstancelogo';
+ return $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/themedinstancelogo';
}
return \OC::$SERVERROOT . '/core/img/logo.svg';
}
diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php
index 013b3bcf34f..920b4a007da 100644
--- a/apps/theming/templates/settings-admin.php
+++ b/apps/theming/templates/settings-admin.php
@@ -74,7 +74,7 @@ style('theming', 'settings-admin');
<div>
<form class="uploadButton inlineblock" method="post" action="<?php p($_['uploadLogoRoute']) ?>">
<input type="hidden" id="current-backgroundMime" name="current-backgroundMime" value="<?php p($_['backgroundMime']); ?>" />
- <label for="upload-login-background"><span><?php p($l->t('Log in image')) ?></span></label>
+ <label for="upload-login-background"><span><?php p($l->t('Login image')) ?></span></label>
<input id="upload-login-background" class="upload-logo-field" name="upload-login-background" type="file">
<label for="upload-login-background" class="button icon-upload svg" id="upload-login-background" title="<?php p($l->t("Upload new login background")) ?>"></label>
<div data-setting="backgroundMime" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></div>
diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php
index d42e5afb245..97a5e985860 100644
--- a/apps/theming/tests/Controller/ThemingControllerTest.php
+++ b/apps/theming/tests/Controller/ThemingControllerTest.php
@@ -487,6 +487,7 @@ class ThemingControllerTest extends TestCase {
';
$expectedData .= sprintf('.nc-theming-main-background {background-color: %s}' . "\n", $color);
$expectedData .= sprintf('.nc-theming-main-text {color: %s}' . "\n", $color);
+ $expectedData .= sprintf('#app-navigation li:hover > a, #app-navigation li:focus > a, #app-navigation a:focus, #app-navigation .selected, #app-navigation .selected a, #app-navigation .active, #app-navigation .active a {box-shadow: inset 2px 0 %s}' . "\n", $color);
$expectedData .= '.nc-theming-contrast {color: #ffffff}' . "\n";
$expectedData .= '.icon-file,.icon-filetype-text {' .
'background-image: url(\'./img/core/filetypes/text.svg?v=0\');' . "}\n" .
@@ -581,6 +582,7 @@ class ThemingControllerTest extends TestCase {
';
$expectedData .= sprintf('.nc-theming-main-background {background-color: %s}' . "\n", $color);
$expectedData .= sprintf('.nc-theming-main-text {color: %s}' . "\n", $color);
+ $expectedData .= sprintf('#app-navigation li:hover > a, #app-navigation li:focus > a, #app-navigation a:focus, #app-navigation .selected, #app-navigation .selected a, #app-navigation .active, #app-navigation .active a {box-shadow: inset 2px 0 %s}' . "\n", $color);
$expectedData .= '#header .header-appname, #expandDisplayName { color: #000000; }' . "\n";
$expectedData .= '#header .icon-caret { background-image: url(\'' . \OC::$WEBROOT . '/core/img/actions/caret-dark.svg\'); }' . "\n";
$expectedData .= '.searchbox input[type="search"] { background: transparent url(\'' . \OC::$WEBROOT . '/core/img/actions/search.svg\') no-repeat 6px center; color: #000; }' . "\n";
@@ -768,6 +770,7 @@ class ThemingControllerTest extends TestCase {
';
$expectedData .= sprintf('.nc-theming-main-background {background-color: %s}' . "\n", $color);
$expectedData .= sprintf('.nc-theming-main-text {color: %s}' . "\n", $color);
+ $expectedData .= sprintf('#app-navigation li:hover > a, #app-navigation li:focus > a, #app-navigation a:focus, #app-navigation .selected, #app-navigation .selected a, #app-navigation .active, #app-navigation .active a {box-shadow: inset 2px 0 %s}' . "\n", $color);
$expectedData .= sprintf(
'#header .logo {' .
'background-image: url(\'./logo?v=0\');' .
@@ -879,6 +882,7 @@ class ThemingControllerTest extends TestCase {
';
$expectedData .= sprintf('.nc-theming-main-background {background-color: %s}' . "\n", $color);
$expectedData .= sprintf('.nc-theming-main-text {color: %s}' . "\n", $color);
+ $expectedData .= sprintf('#app-navigation li:hover > a, #app-navigation li:focus > a, #app-navigation a:focus, #app-navigation .selected, #app-navigation .selected a, #app-navigation .active, #app-navigation .active a {box-shadow: inset 2px 0 %s}' . "\n", $color);
$expectedData .= sprintf(
'#header .logo {' .
'background-image: url(\'./logo?v=0\');' .
@@ -910,7 +914,6 @@ class ThemingControllerTest extends TestCase {
'background-image: url(\'./img/core/filetypes/folder.svg?v=0\');' . "}\n" .
'.icon-filetype-folder-drag-accept {' .
'background-image: url(\'./img/core/filetypes/folder-drag-accept.svg?v=0\')!important;' . "}\n";
- $expected = new Http\DataDownloadResponse($expectedData, 'style', 'text/css');
$expected = new Http\DataDownloadResponse($expectedData, 'style', 'text/css');
$expected->cacheFor(3600);
@@ -948,8 +951,7 @@ class ThemingControllerTest extends TestCase {
cacheBuster: null
};
})();';
- $expected = new Http\DataDisplayResponse($expectedResponse);
- $expected->addHeader("Content-type","text/javascript");
+ $expected = new Http\DataDownloadResponse($expectedResponse, 'javascript', 'text/javascript');
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
$expected->addHeader('Pragma', 'cache');
$expected->cacheFor(3600);
@@ -983,8 +985,7 @@ class ThemingControllerTest extends TestCase {
cacheBuster: null
};
})();';
- $expected = new Http\DataDisplayResponse($expectedResponse);
- $expected->addHeader("Content-type","text/javascript");
+ $expected = new Http\DataDownloadResponse($expectedResponse, 'javascript', 'text/javascript');
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
$expected->addHeader('Pragma', 'cache');
$expected->cacheFor(3600);
diff --git a/apps/theming/tests/Settings/SectionTest.php b/apps/theming/tests/Settings/SectionTest.php
index 3a3a4375236..90d1854aebf 100644
--- a/apps/theming/tests/Settings/SectionTest.php
+++ b/apps/theming/tests/Settings/SectionTest.php
@@ -25,19 +25,24 @@ namespace OCA\Theming\Tests\Settings;
use OCA\Theming\Settings\Section;
use OCP\IL10N;
+use OCP\IURLGenerator;
use Test\TestCase;
class SectionTest extends TestCase {
- /** @var IL10N */
+ /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
+ private $url;
+ /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l;
/** @var Section */
private $section;
public function setUp() {
parent::setUp();
- $this->l = $this->getMockBuilder('\OCP\IL10N')->getMock();
+ $this->url = $this->createMock(IURLGenerator::class);
+ $this->l = $this->createMock(IL10N::class);
$this->section = new Section(
+ $this->url,
$this->l
);
}
@@ -59,4 +64,13 @@ class SectionTest extends TestCase {
public function testGetPriority() {
$this->assertSame(30, $this->section->getPriority());
}
+
+ public function testGetIcon() {
+ $this->url->expects($this->once())
+ ->method('imagePath')
+ ->with('theming', 'app-dark.svg')
+ ->willReturn('icon');
+
+ $this->assertSame('icon', $this->section->getIcon());
+ }
}
diff --git a/apps/twofactor_backupcodes/appinfo/app.php b/apps/twofactor_backupcodes/appinfo/app.php
index 31f9b6b8eae..0cb10531360 100644
--- a/apps/twofactor_backupcodes/appinfo/app.php
+++ b/apps/twofactor_backupcodes/appinfo/app.php
@@ -19,4 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
+// @codeCoverageIgnoreStart
OC_App::registerPersonal('twofactor_backupcodes', 'settings/personal');
+// @codeCoverageIgnoreEnd
diff --git a/apps/twofactor_backupcodes/appinfo/info.xml b/apps/twofactor_backupcodes/appinfo/info.xml
index d5dd3f4db9e..42985d15481 100644
--- a/apps/twofactor_backupcodes/appinfo/info.xml
+++ b/apps/twofactor_backupcodes/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>A two-factor auth backup codes provider</description>
<licence>agpl</licence>
<author>Christoph Wurst</author>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<namespace>TwoFactorBackupCodes</namespace>
<category>other</category>
@@ -14,6 +14,19 @@
</two-factor-providers>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
+
+ <activity>
+ <filters>
+ <filter>OCA\TwoFactorBackupCodes\Activity\GenericFilter</filter>
+ </filters>
+ <settings>
+ <setting>OCA\TwoFactorBackupCodes\Activity\GenericSetting</setting>
+ </settings>
+ <providers>
+ <provider>OCA\TwoFactorBackupCodes\Activity\GenericProvider</provider>
+ <provider>OCA\TwoFactorBackupCodes\Activity\Provider</provider>
+ </providers>
+ </activity>
</info>
diff --git a/apps/twofactor_backupcodes/appinfo/routes.php b/apps/twofactor_backupcodes/appinfo/routes.php
index f2af12e9b45..0119bfd0b08 100644
--- a/apps/twofactor_backupcodes/appinfo/routes.php
+++ b/apps/twofactor_backupcodes/appinfo/routes.php
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+// @codeCoverageIgnoreStart
return [
'routes' => [
[
@@ -33,3 +34,4 @@ return [
],
]
];
+// @codeCoverageIgnoreEnd
diff --git a/apps/twofactor_backupcodes/l10n/cs_CZ.js b/apps/twofactor_backupcodes/l10n/cs_CZ.js
index 346fc3ab1ca..126b5b20ec1 100644
--- a/apps/twofactor_backupcodes/l10n/cs_CZ.js
+++ b/apps/twofactor_backupcodes/l10n/cs_CZ.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Pokud vytvoříte nové záložní kódy, staré budou automaticky zrušeny.",
"An error occurred while generating your backup codes" : "Při pokusu o vytvoření záložních kódů nastala chyba.",
"Nextcloud backup codes" : "Nextcloud záložní kódy",
+ "Two-factor authentication" : "Dvoufázová autentizace",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Úspěšně jste se přihlásil(a) pomocí dvoufázové autentizace (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o přihlášení s použitím dvoufázové autentizace selhal (%1$s)",
+ "You created two-factor backup codes for your account" : "Vytvořil(a) jste záložní kódy dvoufázové autentizace pro váš účet",
"Backup code" : "Záložní kód",
"Use backup code" : "Použít záložní kód",
"Second-factor backup codes" : "Dvoufázové záložní kódy"
diff --git a/apps/twofactor_backupcodes/l10n/cs_CZ.json b/apps/twofactor_backupcodes/l10n/cs_CZ.json
index a397a5ba8db..98005f8e6ee 100644
--- a/apps/twofactor_backupcodes/l10n/cs_CZ.json
+++ b/apps/twofactor_backupcodes/l10n/cs_CZ.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Pokud vytvoříte nové záložní kódy, staré budou automaticky zrušeny.",
"An error occurred while generating your backup codes" : "Při pokusu o vytvoření záložních kódů nastala chyba.",
"Nextcloud backup codes" : "Nextcloud záložní kódy",
+ "Two-factor authentication" : "Dvoufázová autentizace",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Úspěšně jste se přihlásil(a) pomocí dvoufázové autentizace (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o přihlášení s použitím dvoufázové autentizace selhal (%1$s)",
+ "You created two-factor backup codes for your account" : "Vytvořil(a) jste záložní kódy dvoufázové autentizace pro váš účet",
"Backup code" : "Záložní kód",
"Use backup code" : "Použít záložní kód",
"Second-factor backup codes" : "Dvoufázové záložní kódy"
diff --git a/apps/twofactor_backupcodes/l10n/de.js b/apps/twofactor_backupcodes/l10n/de.js
index e5ca6422df6..039b8bea68b 100644
--- a/apps/twofactor_backupcodes/l10n/de.js
+++ b/apps/twofactor_backupcodes/l10n/de.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Du Backup-Codes neu generierst, werden alte automatisch ungültig.",
"An error occurred while generating your backup codes" : "Ein Fehler ist bei der Erstellung Deiner Backup-Codes aufgetreten",
"Nextcloud backup codes" : "Nextcloud-Backup-Codes",
+ "Two-factor authentication" : "Zwei-Faktor Authentifizierung",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Erfolgreich mittels Zwei-Faktorauthentifizierung angemeldet (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktorauthentifizierung gescheitert (%1$s)",
+ "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt",
"Backup code" : "Backup-Code",
"Use backup code" : "Backup-Code verwenden",
"Second-factor backup codes" : "Zweitfaktor-Backup-Codes"
diff --git a/apps/twofactor_backupcodes/l10n/de.json b/apps/twofactor_backupcodes/l10n/de.json
index e3cdfce9d7b..6afdfa52ac4 100644
--- a/apps/twofactor_backupcodes/l10n/de.json
+++ b/apps/twofactor_backupcodes/l10n/de.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Du Backup-Codes neu generierst, werden alte automatisch ungültig.",
"An error occurred while generating your backup codes" : "Ein Fehler ist bei der Erstellung Deiner Backup-Codes aufgetreten",
"Nextcloud backup codes" : "Nextcloud-Backup-Codes",
+ "Two-factor authentication" : "Zwei-Faktor Authentifizierung",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Erfolgreich mittels Zwei-Faktorauthentifizierung angemeldet (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktorauthentifizierung gescheitert (%1$s)",
+ "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt",
"Backup code" : "Backup-Code",
"Use backup code" : "Backup-Code verwenden",
"Second-factor backup codes" : "Zweitfaktor-Backup-Codes"
diff --git a/apps/twofactor_backupcodes/l10n/de_DE.js b/apps/twofactor_backupcodes/l10n/de_DE.js
index 2405813cca0..771051e41b8 100644
--- a/apps/twofactor_backupcodes/l10n/de_DE.js
+++ b/apps/twofactor_backupcodes/l10n/de_DE.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Sie die Backup-Codes erneuern werde die alten Codes automatisch ungültig.",
"An error occurred while generating your backup codes" : "Beim Erstellen Ihrer Backup-Codes ist ein Fehler aufgetreten",
"Nextcloud backup codes" : "Nextcloud Backup-Codes",
+ "Two-factor authentication" : "Zwei-Faktor Authentifizierung",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Erfolgreich mittels Zwei-Faktorauthentifizierung angemeldet (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktorauthentifizierung gescheitert (%1$s)",
+ "You created two-factor backup codes for your account" : "Sie haben Zwei-Faktor Sicherungs-Codes für Ihr Konto erstellt",
"Backup code" : "Backup-Code",
"Use backup code" : "Verwende Backup-Code",
"Second-factor backup codes" : "Zweitfaktor Backup-Codes"
diff --git a/apps/twofactor_backupcodes/l10n/de_DE.json b/apps/twofactor_backupcodes/l10n/de_DE.json
index 5bd7b6b7667..c8d3ba5a737 100644
--- a/apps/twofactor_backupcodes/l10n/de_DE.json
+++ b/apps/twofactor_backupcodes/l10n/de_DE.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Sie die Backup-Codes erneuern werde die alten Codes automatisch ungültig.",
"An error occurred while generating your backup codes" : "Beim Erstellen Ihrer Backup-Codes ist ein Fehler aufgetreten",
"Nextcloud backup codes" : "Nextcloud Backup-Codes",
+ "Two-factor authentication" : "Zwei-Faktor Authentifizierung",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Erfolgreich mittels Zwei-Faktorauthentifizierung angemeldet (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktorauthentifizierung gescheitert (%1$s)",
+ "You created two-factor backup codes for your account" : "Sie haben Zwei-Faktor Sicherungs-Codes für Ihr Konto erstellt",
"Backup code" : "Backup-Code",
"Use backup code" : "Verwende Backup-Code",
"Second-factor backup codes" : "Zweitfaktor Backup-Codes"
diff --git a/apps/twofactor_backupcodes/l10n/es.js b/apps/twofactor_backupcodes/l10n/es.js
index c7018056f7f..add6139bc99 100644
--- a/apps/twofactor_backupcodes/l10n/es.js
+++ b/apps/twofactor_backupcodes/l10n/es.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Si regenera los códigos de respaldo automaticamente invalidara los antiguos.",
"An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban los códigos de respaldo.",
"Nextcloud backup codes" : "Códigos de respaldo de Nextcloud",
+ "Two-factor authentication" : "Autenticación en dos pasos",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Te has identificado correctamente usando la autenticación en dos pasos (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de identificación usando autenticación en dos pasos ha fallado (%1$s)",
+ "You created two-factor backup codes for your account" : "Has creado códigos de respaldo de dos pasos para tu cuenta",
"Backup code" : "Código de respaldo",
"Use backup code" : "Usar código de respaldo",
"Second-factor backup codes" : "Codigo de copia de seguridad de segundo-factor"
diff --git a/apps/twofactor_backupcodes/l10n/es.json b/apps/twofactor_backupcodes/l10n/es.json
index 963aa4763e0..33b6a696ae0 100644
--- a/apps/twofactor_backupcodes/l10n/es.json
+++ b/apps/twofactor_backupcodes/l10n/es.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Si regenera los códigos de respaldo automaticamente invalidara los antiguos.",
"An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban los códigos de respaldo.",
"Nextcloud backup codes" : "Códigos de respaldo de Nextcloud",
+ "Two-factor authentication" : "Autenticación en dos pasos",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Te has identificado correctamente usando la autenticación en dos pasos (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de identificación usando autenticación en dos pasos ha fallado (%1$s)",
+ "You created two-factor backup codes for your account" : "Has creado códigos de respaldo de dos pasos para tu cuenta",
"Backup code" : "Código de respaldo",
"Use backup code" : "Usar código de respaldo",
"Second-factor backup codes" : "Codigo de copia de seguridad de segundo-factor"
diff --git a/apps/twofactor_backupcodes/l10n/fr.js b/apps/twofactor_backupcodes/l10n/fr.js
index 56b14ae0f6a..f046128f474 100644
--- a/apps/twofactor_backupcodes/l10n/fr.js
+++ b/apps/twofactor_backupcodes/l10n/fr.js
@@ -3,13 +3,17 @@ OC.L10N.register(
{
"Generate backup codes" : "Générer des codes de récupération",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Les codes de récupération ont été générés. {{used}} codes sur {{total}} ont été utilisés.",
- "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Voici vos codes de récupération. Veuillez les sauvegarder et/ou les imprimer car vous ne pouvez plus y avoir accès ultérieurement",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Voici vos codes de récupération. Veuillez les sauvegarder et/ou les imprimer car vous ne pourrez plus y avoir accès ultérieurement",
"Save backup codes" : "Sauvegarder les codes de récupération",
"Print backup codes" : "Imprimer les codes de récupération",
"Regenerate backup codes" : "Régénérer les codes de récupération",
"If you regenerate backup codes, you automatically invalidate old codes." : "Si vous régénérez les codes de récupération, vous invalidez automatiquement les anciens codes.",
"An error occurred while generating your backup codes" : "Une erreur est survenue lors de la génération de vos codes de récupération",
"Nextcloud backup codes" : "Codes de récupération Nextcloud",
+ "Two-factor authentication" : "Authentification à deux facteurs",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Vous avez réussi à vous connecter en utilisant l'authentification à deux facteurs (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échouée (%1$s)",
+ "You created two-factor backup codes for your account" : "Vous avez créé des codes de secours à deux facteurs pour votre compte",
"Backup code" : "Code de récupération",
"Use backup code" : "Utiliser un code de récupération",
"Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes"
diff --git a/apps/twofactor_backupcodes/l10n/fr.json b/apps/twofactor_backupcodes/l10n/fr.json
index 275fbb7e2f2..6f7801119b9 100644
--- a/apps/twofactor_backupcodes/l10n/fr.json
+++ b/apps/twofactor_backupcodes/l10n/fr.json
@@ -1,13 +1,17 @@
{ "translations": {
"Generate backup codes" : "Générer des codes de récupération",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Les codes de récupération ont été générés. {{used}} codes sur {{total}} ont été utilisés.",
- "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Voici vos codes de récupération. Veuillez les sauvegarder et/ou les imprimer car vous ne pouvez plus y avoir accès ultérieurement",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Voici vos codes de récupération. Veuillez les sauvegarder et/ou les imprimer car vous ne pourrez plus y avoir accès ultérieurement",
"Save backup codes" : "Sauvegarder les codes de récupération",
"Print backup codes" : "Imprimer les codes de récupération",
"Regenerate backup codes" : "Régénérer les codes de récupération",
"If you regenerate backup codes, you automatically invalidate old codes." : "Si vous régénérez les codes de récupération, vous invalidez automatiquement les anciens codes.",
"An error occurred while generating your backup codes" : "Une erreur est survenue lors de la génération de vos codes de récupération",
"Nextcloud backup codes" : "Codes de récupération Nextcloud",
+ "Two-factor authentication" : "Authentification à deux facteurs",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Vous avez réussi à vous connecter en utilisant l'authentification à deux facteurs (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échouée (%1$s)",
+ "You created two-factor backup codes for your account" : "Vous avez créé des codes de secours à deux facteurs pour votre compte",
"Backup code" : "Code de récupération",
"Use backup code" : "Utiliser un code de récupération",
"Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes"
diff --git a/apps/twofactor_backupcodes/l10n/hu_HU.js b/apps/twofactor_backupcodes/l10n/hu_HU.js
index c5e10d26f2d..af793b8fb9a 100644
--- a/apps/twofactor_backupcodes/l10n/hu_HU.js
+++ b/apps/twofactor_backupcodes/l10n/hu_HU.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Ha újra generálod a biztonsági kódokat, akkor a régiek automatikusan érvénytelenítve lesznek.",
"An error occurred while generating your backup codes" : "Hiba történt a biztonsági kódok generálása közben",
"Nextcloud backup codes" : "Nextcloud biztonsági kódok",
+ "Two-factor authentication" : "Kétlépcsős hitelesítés",
"Backup code" : "Biztonsági kód",
"Use backup code" : "Biztonsági kód használata",
"Second-factor backup codes" : "Második lépcsős biztonsági kódok"
diff --git a/apps/twofactor_backupcodes/l10n/hu_HU.json b/apps/twofactor_backupcodes/l10n/hu_HU.json
index 1afa0a6ac84..acb9373df72 100644
--- a/apps/twofactor_backupcodes/l10n/hu_HU.json
+++ b/apps/twofactor_backupcodes/l10n/hu_HU.json
@@ -8,6 +8,7 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Ha újra generálod a biztonsági kódokat, akkor a régiek automatikusan érvénytelenítve lesznek.",
"An error occurred while generating your backup codes" : "Hiba történt a biztonsági kódok generálása közben",
"Nextcloud backup codes" : "Nextcloud biztonsági kódok",
+ "Two-factor authentication" : "Kétlépcsős hitelesítés",
"Backup code" : "Biztonsági kód",
"Use backup code" : "Biztonsági kód használata",
"Second-factor backup codes" : "Második lépcsős biztonsági kódok"
diff --git a/apps/twofactor_backupcodes/l10n/it.js b/apps/twofactor_backupcodes/l10n/it.js
index 400647479bd..7150d2ed427 100644
--- a/apps/twofactor_backupcodes/l10n/it.js
+++ b/apps/twofactor_backupcodes/l10n/it.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Se rigeneri i codici di backup, invaliderai automaticamente i vecchi codici.",
"An error occurred while generating your backup codes" : "Si è verificato un errore durante la generazione dei tuoi codici di backup",
"Nextcloud backup codes" : "Codici di backup di Nextcloud",
+ "Two-factor authentication" : "Autenticazione a due fattori",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Hai effettuato correttamente l'accesso utilizzando l'autenticazione a due fattori (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Un tentativo di utilizzare l'autenticazione a due fattori non è riuscito (%1$s)",
+ "You created two-factor backup codes for your account" : "Hai creato codici di backup a due fattori per il tuo account",
"Backup code" : "Codice di backup",
"Use backup code" : "Usa il codice di backup",
"Second-factor backup codes" : "Codici di backup con secondo fattore"
diff --git a/apps/twofactor_backupcodes/l10n/it.json b/apps/twofactor_backupcodes/l10n/it.json
index 5bfc8a109b1..b24eae99c6f 100644
--- a/apps/twofactor_backupcodes/l10n/it.json
+++ b/apps/twofactor_backupcodes/l10n/it.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Se rigeneri i codici di backup, invaliderai automaticamente i vecchi codici.",
"An error occurred while generating your backup codes" : "Si è verificato un errore durante la generazione dei tuoi codici di backup",
"Nextcloud backup codes" : "Codici di backup di Nextcloud",
+ "Two-factor authentication" : "Autenticazione a due fattori",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Hai effettuato correttamente l'accesso utilizzando l'autenticazione a due fattori (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Un tentativo di utilizzare l'autenticazione a due fattori non è riuscito (%1$s)",
+ "You created two-factor backup codes for your account" : "Hai creato codici di backup a due fattori per il tuo account",
"Backup code" : "Codice di backup",
"Use backup code" : "Usa il codice di backup",
"Second-factor backup codes" : "Codici di backup con secondo fattore"
diff --git a/apps/twofactor_backupcodes/l10n/ko.js b/apps/twofactor_backupcodes/l10n/ko.js
index a3644a27d2c..53ea6f37f20 100644
--- a/apps/twofactor_backupcodes/l10n/ko.js
+++ b/apps/twofactor_backupcodes/l10n/ko.js
@@ -2,14 +2,16 @@ OC.L10N.register(
"twofactor_backupcodes",
{
"Generate backup codes" : "백업 코드 생성",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "백업 코드가 생성되었습니다. {{total}}개 중 {{used}}개의 코드가 사용되었습니다.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "이것은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.",
"Save backup codes" : "백업 코드 저장",
"Print backup codes" : "백업 코드 인쇄",
- "Regenerate backup codes" : "백업 코드 다시생성",
- "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 생성하면 자동으로 이전 코드는 무효화 됩니다.",
- "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류 발생",
+ "Regenerate backup codes" : "백업 코드 다시 생성",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 다시 생성하면 이전 코드는 자동으로 무효화 됩니다.",
+ "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류가 발생했습니다.",
"Nextcloud backup codes" : "Nextcloud 백업 코드",
"Backup code" : "백업 코드",
"Use backup code" : "백업 코드 사용",
- "Second-factor backup codes" : "두 번째 인자 백업 코드"
+ "Second-factor backup codes" : "이중 인증 백업 코드"
},
"nplurals=1; plural=0;");
diff --git a/apps/twofactor_backupcodes/l10n/ko.json b/apps/twofactor_backupcodes/l10n/ko.json
index 22f0dd138f6..cce8a5ac0b8 100644
--- a/apps/twofactor_backupcodes/l10n/ko.json
+++ b/apps/twofactor_backupcodes/l10n/ko.json
@@ -1,13 +1,15 @@
{ "translations": {
"Generate backup codes" : "백업 코드 생성",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "백업 코드가 생성되었습니다. {{total}}개 중 {{used}}개의 코드가 사용되었습니다.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "이것은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.",
"Save backup codes" : "백업 코드 저장",
"Print backup codes" : "백업 코드 인쇄",
- "Regenerate backup codes" : "백업 코드 다시생성",
- "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 생성하면 자동으로 이전 코드는 무효화 됩니다.",
- "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류 발생",
+ "Regenerate backup codes" : "백업 코드 다시 생성",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 다시 생성하면 이전 코드는 자동으로 무효화 됩니다.",
+ "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류가 발생했습니다.",
"Nextcloud backup codes" : "Nextcloud 백업 코드",
"Backup code" : "백업 코드",
"Use backup code" : "백업 코드 사용",
- "Second-factor backup codes" : "두 번째 인자 백업 코드"
+ "Second-factor backup codes" : "이중 인증 백업 코드"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/lv.js b/apps/twofactor_backupcodes/l10n/lv.js
new file mode 100644
index 00000000000..0731fc56890
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/lv.js
@@ -0,0 +1,20 @@
+OC.L10N.register(
+ "twofactor_backupcodes",
+ {
+ "Generate backup codes" : "Izveidot rezerves kodus",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Rezerves kodi ir ģenerēti. {{used}} no {{total}} kodiem ir izmantoti.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Šie ir jūsu dublējuma kodi. Lūdzu saglabāt un / vai izdrukāt tos, jūs nevarēsiet izlasīt kodus vēlreiz",
+ "Save backup codes" : "Saglabāt rezerves kodus",
+ "Print backup codes" : "Drukāt dublējuma kodus",
+ "Regenerate backup codes" : "Atjaunot dublējuma kodus",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Ja atjaunot dublējum kodus, tiek automātiski anulēti vecie kodi.",
+ "An error occurred while generating your backup codes" : "Radās kļūda, ģenerējot jūsu dublējuma kodus",
+ "Nextcloud backup codes" : "Nextcloud dublēšanas kodi",
+ "Two-factor authentication" : "Divpakāpju autentifikācija",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Esat veiksmīgi pieteicies, izmantojot divpakāpju autentifikācija (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums, izmantojot divpakāpju autentifikāciju neizdevās (%1$s)",
+ "You created two-factor backup codes for your account" : "Jūs izveidojāt divpakāpju dublējumu kodus savam kontam",
+ "Backup code" : "Dublēšanas kods",
+ "Use backup code" : "Izmantojiet dublēšanas kodu"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/twofactor_backupcodes/l10n/lv.json b/apps/twofactor_backupcodes/l10n/lv.json
new file mode 100644
index 00000000000..c7a827cdda4
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/lv.json
@@ -0,0 +1,18 @@
+{ "translations": {
+ "Generate backup codes" : "Izveidot rezerves kodus",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Rezerves kodi ir ģenerēti. {{used}} no {{total}} kodiem ir izmantoti.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Šie ir jūsu dublējuma kodi. Lūdzu saglabāt un / vai izdrukāt tos, jūs nevarēsiet izlasīt kodus vēlreiz",
+ "Save backup codes" : "Saglabāt rezerves kodus",
+ "Print backup codes" : "Drukāt dublējuma kodus",
+ "Regenerate backup codes" : "Atjaunot dublējuma kodus",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Ja atjaunot dublējum kodus, tiek automātiski anulēti vecie kodi.",
+ "An error occurred while generating your backup codes" : "Radās kļūda, ģenerējot jūsu dublējuma kodus",
+ "Nextcloud backup codes" : "Nextcloud dublēšanas kodi",
+ "Two-factor authentication" : "Divpakāpju autentifikācija",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Esat veiksmīgi pieteicies, izmantojot divpakāpju autentifikācija (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums, izmantojot divpakāpju autentifikāciju neizdevās (%1$s)",
+ "You created two-factor backup codes for your account" : "Jūs izveidojāt divpakāpju dublējumu kodus savam kontam",
+ "Backup code" : "Dublēšanas kods",
+ "Use backup code" : "Izmantojiet dublēšanas kodu"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/nb_NO.js b/apps/twofactor_backupcodes/l10n/nb_NO.js
index dd340787993..98ad943d2cd 100644
--- a/apps/twofactor_backupcodes/l10n/nb_NO.js
+++ b/apps/twofactor_backupcodes/l10n/nb_NO.js
@@ -1,17 +1,21 @@
OC.L10N.register(
"twofactor_backupcodes",
{
- "Generate backup codes" : "Generer sikkerhetskopi koder",
- "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Sikkerhetskopi koder har blitt generert. {{used}} av {{total}} koder er brukt.",
- "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dette er sikkerhetskopi kodene. Vennligst lagre og/eller skriv dem ut siden du ikke vil kunne lese kodene her igjen senere.",
- "Save backup codes" : "Lagre sikkerhetskopi kodene",
- "Print backup codes" : "Skriv sikkerhetskopi koder",
- "Regenerate backup codes" : "Lag sikkerhetskopi koder på nytt",
- "If you regenerate backup codes, you automatically invalidate old codes." : "Hvis du regenererer nye sikkerhetskopi kodene vil du automatisk gjøre de gamle kodene ugyldige.",
- "An error occurred while generating your backup codes" : "En feil oppstod under generering av sikkerhetskopi koder",
- "Nextcloud backup codes" : "Nextclouds backupkoder",
- "Backup code" : "Sikkerhetskopi kode",
- "Use backup code" : "Bruker sikkerhetskopi kode",
- "Second-factor backup codes" : "To-faktor sikkerhetskopikoder"
+ "Generate backup codes" : "Generer sikkerhetskopi-koder",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Sikkerhetskopi-koder har blitt generert. {{used}} av {{total}} koder er brukt.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dette er sikkerhetskopi-kodene. Vennligst lagre og/eller skriv dem ut siden du ikke vil kunne se kodene her igjen senere.",
+ "Save backup codes" : "Lagre sikkerhetskopi-kodene",
+ "Print backup codes" : "Skriv ut sikkerhetskopi-koder",
+ "Regenerate backup codes" : "Lag sikkerhetskopi-koder på nytt",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Hvis du regenererer nye sikkerhetskopi-koder, vil du automatisk gjøre de gamle kodene ugyldige.",
+ "An error occurred while generating your backup codes" : "En feil oppstod under generering av sikkerhetskopi-kodene",
+ "Nextcloud backup codes" : "Nextcloud sikkerhetskopi-koder",
+ "Two-factor authentication" : "To-trinns bekreftelse",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Din innlogging med to-trinns bekreftelse var velykket (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "En innlogging med to-trinns bekreftelse mislyktes (%1$s)",
+ "You created two-factor backup codes for your account" : "Du opprettet to-trinns bekreftelse sikkerhetskopi-koder",
+ "Backup code" : "Sikkerhetskopi-kode",
+ "Use backup code" : "Bruker sikkerhetskopi-kode",
+ "Second-factor backup codes" : "To-trinns bekreftelse sikkerhetskopi-koder"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/twofactor_backupcodes/l10n/nb_NO.json b/apps/twofactor_backupcodes/l10n/nb_NO.json
index 282514e1e8a..1fe3d2a9a32 100644
--- a/apps/twofactor_backupcodes/l10n/nb_NO.json
+++ b/apps/twofactor_backupcodes/l10n/nb_NO.json
@@ -1,15 +1,19 @@
{ "translations": {
- "Generate backup codes" : "Generer sikkerhetskopi koder",
- "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Sikkerhetskopi koder har blitt generert. {{used}} av {{total}} koder er brukt.",
- "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dette er sikkerhetskopi kodene. Vennligst lagre og/eller skriv dem ut siden du ikke vil kunne lese kodene her igjen senere.",
- "Save backup codes" : "Lagre sikkerhetskopi kodene",
- "Print backup codes" : "Skriv sikkerhetskopi koder",
- "Regenerate backup codes" : "Lag sikkerhetskopi koder på nytt",
- "If you regenerate backup codes, you automatically invalidate old codes." : "Hvis du regenererer nye sikkerhetskopi kodene vil du automatisk gjøre de gamle kodene ugyldige.",
- "An error occurred while generating your backup codes" : "En feil oppstod under generering av sikkerhetskopi koder",
- "Nextcloud backup codes" : "Nextclouds backupkoder",
- "Backup code" : "Sikkerhetskopi kode",
- "Use backup code" : "Bruker sikkerhetskopi kode",
- "Second-factor backup codes" : "To-faktor sikkerhetskopikoder"
+ "Generate backup codes" : "Generer sikkerhetskopi-koder",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Sikkerhetskopi-koder har blitt generert. {{used}} av {{total}} koder er brukt.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dette er sikkerhetskopi-kodene. Vennligst lagre og/eller skriv dem ut siden du ikke vil kunne se kodene her igjen senere.",
+ "Save backup codes" : "Lagre sikkerhetskopi-kodene",
+ "Print backup codes" : "Skriv ut sikkerhetskopi-koder",
+ "Regenerate backup codes" : "Lag sikkerhetskopi-koder på nytt",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Hvis du regenererer nye sikkerhetskopi-koder, vil du automatisk gjøre de gamle kodene ugyldige.",
+ "An error occurred while generating your backup codes" : "En feil oppstod under generering av sikkerhetskopi-kodene",
+ "Nextcloud backup codes" : "Nextcloud sikkerhetskopi-koder",
+ "Two-factor authentication" : "To-trinns bekreftelse",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Din innlogging med to-trinns bekreftelse var velykket (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "En innlogging med to-trinns bekreftelse mislyktes (%1$s)",
+ "You created two-factor backup codes for your account" : "Du opprettet to-trinns bekreftelse sikkerhetskopi-koder",
+ "Backup code" : "Sikkerhetskopi-kode",
+ "Use backup code" : "Bruker sikkerhetskopi-kode",
+ "Second-factor backup codes" : "To-trinns bekreftelse sikkerhetskopi-koder"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/nl.js b/apps/twofactor_backupcodes/l10n/nl.js
index e0dde0e9a0e..8d95cad5151 100644
--- a/apps/twofactor_backupcodes/l10n/nl.js
+++ b/apps/twofactor_backupcodes/l10n/nl.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Als je backup codes opnieuw genereert, worden oude codes automatisch ongeldig gemaakt.",
"An error occurred while generating your backup codes" : "Er trad een fout op bij het genereren van je backup codes",
"Nextcloud backup codes" : "Nextcloud backup codes",
+ "Two-factor authentication" : "Tweefactor authenticatie",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Je bent succesvol ingelogd via tweefactot authenticatie (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Een inlogpoging via tweefactor authenticatie is mislukt (%1$s)",
+ "You created two-factor backup codes for your account" : "Je creëerde tweefactor back-up codes voor je account",
"Backup code" : "Backup code",
"Use backup code" : "Gebruik backup code",
"Second-factor backup codes" : "Twee-factor backup code"
diff --git a/apps/twofactor_backupcodes/l10n/nl.json b/apps/twofactor_backupcodes/l10n/nl.json
index 77185e6f36e..4041eae646a 100644
--- a/apps/twofactor_backupcodes/l10n/nl.json
+++ b/apps/twofactor_backupcodes/l10n/nl.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Als je backup codes opnieuw genereert, worden oude codes automatisch ongeldig gemaakt.",
"An error occurred while generating your backup codes" : "Er trad een fout op bij het genereren van je backup codes",
"Nextcloud backup codes" : "Nextcloud backup codes",
+ "Two-factor authentication" : "Tweefactor authenticatie",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Je bent succesvol ingelogd via tweefactot authenticatie (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Een inlogpoging via tweefactor authenticatie is mislukt (%1$s)",
+ "You created two-factor backup codes for your account" : "Je creëerde tweefactor back-up codes voor je account",
"Backup code" : "Backup code",
"Use backup code" : "Gebruik backup code",
"Second-factor backup codes" : "Twee-factor backup code"
diff --git a/apps/twofactor_backupcodes/l10n/pl.js b/apps/twofactor_backupcodes/l10n/pl.js
index 1291e75856f..2fdb0332e7a 100644
--- a/apps/twofactor_backupcodes/l10n/pl.js
+++ b/apps/twofactor_backupcodes/l10n/pl.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Jeśli generujesz kody zapasowe ponownie, automatycznie unieważnia stare kody.",
"An error occurred while generating your backup codes" : "Wystąpił błąd podczas generowania kodów zapasowych.",
"Nextcloud backup codes" : "Kody zapasowe Nextcloud",
+ "Two-factor authentication" : "Uwierzytelnienie dwuetapowe",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Zalogowałeś się z wykorzystaniem uwierzytelnienia dwuetapowego (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Próba zalogowania się z użyciem uwierzytelnienia dwuetapowego nie udała się (%1$s)",
+ "You created two-factor backup codes for your account" : "Stworzyłeś zapasowe kody uwierzytelnienia dwuetapowego swojego konta",
"Backup code" : "Kopia zapasowa kodów",
"Use backup code" : "Użyj kodu zapasowego",
"Second-factor backup codes" : "Druga opcja kodów zapasowych"
diff --git a/apps/twofactor_backupcodes/l10n/pl.json b/apps/twofactor_backupcodes/l10n/pl.json
index be569fe740f..5662387446c 100644
--- a/apps/twofactor_backupcodes/l10n/pl.json
+++ b/apps/twofactor_backupcodes/l10n/pl.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Jeśli generujesz kody zapasowe ponownie, automatycznie unieważnia stare kody.",
"An error occurred while generating your backup codes" : "Wystąpił błąd podczas generowania kodów zapasowych.",
"Nextcloud backup codes" : "Kody zapasowe Nextcloud",
+ "Two-factor authentication" : "Uwierzytelnienie dwuetapowe",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Zalogowałeś się z wykorzystaniem uwierzytelnienia dwuetapowego (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Próba zalogowania się z użyciem uwierzytelnienia dwuetapowego nie udała się (%1$s)",
+ "You created two-factor backup codes for your account" : "Stworzyłeś zapasowe kody uwierzytelnienia dwuetapowego swojego konta",
"Backup code" : "Kopia zapasowa kodów",
"Use backup code" : "Użyj kodu zapasowego",
"Second-factor backup codes" : "Druga opcja kodów zapasowych"
diff --git a/apps/twofactor_backupcodes/l10n/pt_BR.js b/apps/twofactor_backupcodes/l10n/pt_BR.js
index 59833bc35b0..7b6cfccb60c 100644
--- a/apps/twofactor_backupcodes/l10n/pt_BR.js
+++ b/apps/twofactor_backupcodes/l10n/pt_BR.js
@@ -10,6 +10,10 @@ OC.L10N.register(
"If you regenerate backup codes, you automatically invalidate old codes." : "Se você regenerar os códigos de backup, invalidara automaticamente os códigos antigos.",
"An error occurred while generating your backup codes" : "Ocorreu um erro ao gerar os códigos de backup",
"Nextcloud backup codes" : "Nextcloud códigos de backup",
+ "Two-factor authentication" : "Autenticação de dois fatores",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Você está logado utilizando usando autenticação de dois fatores com sucesso (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "A tentativa de logar usando autenticação de dois fatores falhou (%1$s)",
+ "You created two-factor backup codes for your account" : "Você criou backup de códigos de dois fatores para sua conta.",
"Backup code" : "Código de backup",
"Use backup code" : "Usar o código de backup",
"Second-factor backup codes" : "Códigos de backup de segundo fator"
diff --git a/apps/twofactor_backupcodes/l10n/pt_BR.json b/apps/twofactor_backupcodes/l10n/pt_BR.json
index 677da150923..e6aa3c53f76 100644
--- a/apps/twofactor_backupcodes/l10n/pt_BR.json
+++ b/apps/twofactor_backupcodes/l10n/pt_BR.json
@@ -8,6 +8,10 @@
"If you regenerate backup codes, you automatically invalidate old codes." : "Se você regenerar os códigos de backup, invalidara automaticamente os códigos antigos.",
"An error occurred while generating your backup codes" : "Ocorreu um erro ao gerar os códigos de backup",
"Nextcloud backup codes" : "Nextcloud códigos de backup",
+ "Two-factor authentication" : "Autenticação de dois fatores",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Você está logado utilizando usando autenticação de dois fatores com sucesso (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "A tentativa de logar usando autenticação de dois fatores falhou (%1$s)",
+ "You created two-factor backup codes for your account" : "Você criou backup de códigos de dois fatores para sua conta.",
"Backup code" : "Código de backup",
"Use backup code" : "Usar o código de backup",
"Second-factor backup codes" : "Códigos de backup de segundo fator"
diff --git a/apps/twofactor_backupcodes/l10n/ru.js b/apps/twofactor_backupcodes/l10n/ru.js
index ac137fb48d6..b8e20f8d0a4 100644
--- a/apps/twofactor_backupcodes/l10n/ru.js
+++ b/apps/twofactor_backupcodes/l10n/ru.js
@@ -1,17 +1,21 @@
OC.L10N.register(
"twofactor_backupcodes",
{
- "Generate backup codes" : "Генерировать код восстановления",
+ "Generate backup codes" : "Создать резервные коды",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Резервные коды были созданы. Использовано {{used}} из {{total}} кодов.",
"These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Это ваши резервные коды доступа. Пожалуйста, сохраните и/или распечатайте их, так как вы не сможете увидеть эти коды снова.",
- "Save backup codes" : "Сохранить код восстановления",
+ "Save backup codes" : "Сохранить резервные коды",
"Print backup codes" : "Распечатать резервные коды",
- "Regenerate backup codes" : "Пересоздать коды восстановления",
- "If you regenerate backup codes, you automatically invalidate old codes." : "Если перевыпустить коды восстановления, то старые автоматически становятся не активными.",
+ "Regenerate backup codes" : "Перевыпустить резервные коды",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "При перевыпуске резервных кодов, старые автоматически становятся недействительными.",
"An error occurred while generating your backup codes" : "Произошла ошибка при создании резервных кодов",
"Nextcloud backup codes" : "Резервные коды Nextcloud",
- "Backup code" : "Код восстановления",
- "Use backup code" : "Использовать код восстановления",
+ "Two-factor authentication" : "Двухфакторная аутентификация",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Вы успешно вошли в систему используя двухфакторную аутентификацию (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Сбой при попытке входа с использованием двухфакторной аутентификации (%1$s)",
+ "You created two-factor backup codes for your account" : "Вы создали двухфакторные резервные коды для своего аккаунта",
+ "Backup code" : "Резервный код",
+ "Use backup code" : "Использовать резервный код",
"Second-factor backup codes" : "Резервные коды двухфакторной аутентификации"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/twofactor_backupcodes/l10n/ru.json b/apps/twofactor_backupcodes/l10n/ru.json
index 1c5dd43437f..51aff5de850 100644
--- a/apps/twofactor_backupcodes/l10n/ru.json
+++ b/apps/twofactor_backupcodes/l10n/ru.json
@@ -1,15 +1,19 @@
{ "translations": {
- "Generate backup codes" : "Генерировать код восстановления",
+ "Generate backup codes" : "Создать резервные коды",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Резервные коды были созданы. Использовано {{used}} из {{total}} кодов.",
"These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Это ваши резервные коды доступа. Пожалуйста, сохраните и/или распечатайте их, так как вы не сможете увидеть эти коды снова.",
- "Save backup codes" : "Сохранить код восстановления",
+ "Save backup codes" : "Сохранить резервные коды",
"Print backup codes" : "Распечатать резервные коды",
- "Regenerate backup codes" : "Пересоздать коды восстановления",
- "If you regenerate backup codes, you automatically invalidate old codes." : "Если перевыпустить коды восстановления, то старые автоматически становятся не активными.",
+ "Regenerate backup codes" : "Перевыпустить резервные коды",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "При перевыпуске резервных кодов, старые автоматически становятся недействительными.",
"An error occurred while generating your backup codes" : "Произошла ошибка при создании резервных кодов",
"Nextcloud backup codes" : "Резервные коды Nextcloud",
- "Backup code" : "Код восстановления",
- "Use backup code" : "Использовать код восстановления",
+ "Two-factor authentication" : "Двухфакторная аутентификация",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Вы успешно вошли в систему используя двухфакторную аутентификацию (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Сбой при попытке входа с использованием двухфакторной аутентификации (%1$s)",
+ "You created two-factor backup codes for your account" : "Вы создали двухфакторные резервные коды для своего аккаунта",
+ "Backup code" : "Резервный код",
+ "Use backup code" : "Использовать резервный код",
"Second-factor backup codes" : "Резервные коды двухфакторной аутентификации"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/sv.js b/apps/twofactor_backupcodes/l10n/sv.js
new file mode 100644
index 00000000000..2c4f3a40ac8
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/sv.js
@@ -0,0 +1,21 @@
+OC.L10N.register(
+ "twofactor_backupcodes",
+ {
+ "Generate backup codes" : "Generera återställningsnycklar",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Återställningsnycklarna har skapats. {{used}} av {{total}} nycklar har använts.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Detta är dina återställningsnycklar. Vänligen spara och/eller skriv ut dem eftersom du inte kommer kunna se dessa nycklar igen.",
+ "Save backup codes" : "Spara återställningsnycklar",
+ "Print backup codes" : "Skriv ut återställningsnycklar",
+ "Regenerate backup codes" : "Skapa nya återställningsnycklar",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Om du skapar nya återställningsnycklar så kommer de gamla automatiskt att sluta fungera.",
+ "An error occurred while generating your backup codes" : "Ett fel uppstod vid skapandet av nya återställningsnycklar",
+ "Nextcloud backup codes" : "Nextcloud återställningsnycklar",
+ "Two-factor authentication" : "Tvåfaktorsautentisering",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Du lyckades logga in genom att använda tvåfaktorsautentisering (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ett inloggningsförsök med tvåfaktorsautentisering misslyckades (%1$s)",
+ "You created two-factor backup codes for your account" : "Du skapade återställningsnycklar till tvåfaktorsautentiseringen på ditt användarkonto.",
+ "Backup code" : "Återställningsnyckel",
+ "Use backup code" : "Använd återställningsnyckel",
+ "Second-factor backup codes" : "Tvåfaktorsautentisering"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/twofactor_backupcodes/l10n/sv.json b/apps/twofactor_backupcodes/l10n/sv.json
new file mode 100644
index 00000000000..096f04f0f8f
--- /dev/null
+++ b/apps/twofactor_backupcodes/l10n/sv.json
@@ -0,0 +1,19 @@
+{ "translations": {
+ "Generate backup codes" : "Generera återställningsnycklar",
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Återställningsnycklarna har skapats. {{used}} av {{total}} nycklar har använts.",
+ "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Detta är dina återställningsnycklar. Vänligen spara och/eller skriv ut dem eftersom du inte kommer kunna se dessa nycklar igen.",
+ "Save backup codes" : "Spara återställningsnycklar",
+ "Print backup codes" : "Skriv ut återställningsnycklar",
+ "Regenerate backup codes" : "Skapa nya återställningsnycklar",
+ "If you regenerate backup codes, you automatically invalidate old codes." : "Om du skapar nya återställningsnycklar så kommer de gamla automatiskt att sluta fungera.",
+ "An error occurred while generating your backup codes" : "Ett fel uppstod vid skapandet av nya återställningsnycklar",
+ "Nextcloud backup codes" : "Nextcloud återställningsnycklar",
+ "Two-factor authentication" : "Tvåfaktorsautentisering",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Du lyckades logga in genom att använda tvåfaktorsautentisering (%1$s)",
+ "A login attempt using two-factor authentication failed (%1$s)" : "Ett inloggningsförsök med tvåfaktorsautentisering misslyckades (%1$s)",
+ "You created two-factor backup codes for your account" : "Du skapade återställningsnycklar till tvåfaktorsautentiseringen på ditt användarkonto.",
+ "Backup code" : "Återställningsnyckel",
+ "Use backup code" : "Använd återställningsnyckel",
+ "Second-factor backup codes" : "Tvåfaktorsautentisering"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericFilter.php b/apps/twofactor_backupcodes/lib/Activity/GenericFilter.php
new file mode 100644
index 00000000000..27c0274b600
--- /dev/null
+++ b/apps/twofactor_backupcodes/lib/Activity/GenericFilter.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @author 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 OCA\TwoFactorBackupCodes\Activity;
+
+use OCP\Activity\IFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class GenericFilter implements IFilter {
+
+ /** @var IURLGenerator */
+ private $urlGenerator;
+
+ /** @var IL10N */
+ private $l10n;
+
+ public function __construct(IURLGenerator $urlGenerator, IL10N $l10n) {
+ $this->urlGenerator = $urlGenerator;
+ $this->l10n = $l10n;
+ }
+
+ public function allowedApps() {
+ return [];
+ }
+
+ public function filterTypes(array $types) {
+ return array_intersect(['twofactor'], $types);
+ }
+
+ public function getIcon() {
+ return $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'));
+ }
+
+ public function getIdentifier() {
+ return 'twofactor';
+ }
+
+ public function getName() {
+ return $this->l10n->t('Two-factor authentication');
+ }
+
+ public function getPriority() {
+ return 30;
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php b/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php
new file mode 100644
index 00000000000..ffdd47708d5
--- /dev/null
+++ b/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Activity;
+
+use InvalidArgumentException;
+use OCP\Activity\IEvent;
+use OCP\Activity\IProvider;
+use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\L10N\IFactory as L10nFactory;
+
+class GenericProvider implements IProvider {
+
+ /** @var L10nFactory */
+ private $l10n;
+
+ /** @var IURLGenerator */
+ private $urlGenerator;
+
+ /** @var ILogger */
+ private $logger;
+
+ public function __construct(L10nFactory $l10n, IURLGenerator $urlGenerator, ILogger $logger) {
+ $this->logger = $logger;
+ $this->urlGenerator = $urlGenerator;
+ $this->l10n = $l10n;
+ }
+
+ public function parse($language, IEvent $event, IEvent $previousEvent = null) {
+ if ($event->getType() !== 'twofactor') {
+ throw new InvalidArgumentException();
+ }
+
+ $l = $this->l10n->get('core', $language);
+
+ switch ($event->getSubject()) {
+ case 'twofactor_success':
+ $params = $event->getSubjectParameters();
+ $event->setParsedSubject($l->t('You successfully logged in using two-factor authentication (%1$s)', [
+ $params['provider'],
+ ]));
+ $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
+ break;
+ case 'twofactor_failed':
+ $params = $event->getSubjectParameters();
+ $event->setParsedSubject($l->t('A login attempt using two-factor authentication failed (%1$s)', [
+ $params['provider'],
+ ]));
+ $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
+ break;
+ default:
+ throw new InvalidArgumentException();
+ }
+ return $event;
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericSetting.php b/apps/twofactor_backupcodes/lib/Activity/GenericSetting.php
new file mode 100644
index 00000000000..abd1c60f1d5
--- /dev/null
+++ b/apps/twofactor_backupcodes/lib/Activity/GenericSetting.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Activity;
+
+use OCP\Activity\ISetting;
+use OCP\IL10N;
+
+class GenericSetting implements ISetting {
+
+ /** @var IL10N */
+ private $l10n;
+
+ public function __construct(IL10N $l10n) {
+ $this->l10n = $l10n;
+ }
+
+ public function canChangeMail() {
+ return false;
+ }
+
+ public function canChangeStream() {
+ return false;
+ }
+
+ public function getIdentifier() {
+ return 'twofactor';
+ }
+
+ public function getName() {
+ return $this->l10n->t('Two-factor authentication');
+ }
+
+ public function getPriority() {
+ return 30;
+ }
+
+ public function isDefaultEnabledMail() {
+ return true;
+ }
+
+ public function isDefaultEnabledStream() {
+ return true;
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/lib/Activity/Provider.php b/apps/twofactor_backupcodes/lib/Activity/Provider.php
new file mode 100644
index 00000000000..9c7aaeae630
--- /dev/null
+++ b/apps/twofactor_backupcodes/lib/Activity/Provider.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Activity;
+
+use InvalidArgumentException;
+use OCP\Activity\IEvent;
+use OCP\Activity\IProvider;
+use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\L10N\IFactory as L10nFactory;
+
+class Provider implements IProvider {
+
+ /** @var L10nFactory */
+ private $l10n;
+
+ /** @var IURLGenerator */
+ private $urlGenerator;
+
+ /** @var ILogger */
+ private $logger;
+
+ /**
+ * @param L10nFactory $l10n
+ * @param IURLGenerator $urlGenerator
+ * @param ILogger $logger
+ */
+ public function __construct(L10nFactory $l10n, IURLGenerator $urlGenerator, ILogger $logger) {
+ $this->logger = $logger;
+ $this->urlGenerator = $urlGenerator;
+ $this->l10n = $l10n;
+ }
+
+ public function parse($language, IEvent $event, IEvent $previousEvent = null) {
+ if ($event->getApp() !== 'twofactor_backupcodes') {
+ throw new InvalidArgumentException();
+ }
+
+ $l = $this->l10n->get('twofactor_backupcodes', $language);
+
+ switch ($event->getSubject()) {
+ case 'codes_generated':
+ $event->setParsedSubject($l->t('You created two-factor backup codes for your account'));
+ $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
+ break;
+ default:
+ throw new InvalidArgumentException();
+ }
+ return $event;
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
index 8b56724fcec..85cc174fb6a 100644
--- a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
+++ b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
@@ -22,13 +22,12 @@
namespace OCA\TwoFactorBackupCodes\Db;
use OCP\AppFramework\Db\Mapper;
-use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IDb;
+use OCP\IDBConnection;
use OCP\IUser;
class BackupCodeMapper extends Mapper {
- public function __construct(IDb $db) {
+ public function __construct(IDBConnection $db) {
parent::__construct($db, 'twofactor_backup_codes');
}
diff --git a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
index bb10081bb54..1cf62d18801 100644
--- a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
+++ b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
@@ -22,14 +22,19 @@
namespace OCA\TwoFactorBackupCodes\Service;
+use BadMethodCallException;
use OCA\TwoFactorBackupCodes\Db\BackupCode;
use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
+use OCP\Activity\IManager;
+use OCP\ILogger;
use OCP\IUser;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
class BackupCodeStorage {
+ private static $CODE_LENGTH = 16;
+
/** @var BackupCodeMapper */
private $mapper;
@@ -39,10 +44,26 @@ class BackupCodeStorage {
/** @var ISecureRandom */
private $random;
- public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher) {
+ /** @var IManager */
+ private $activityManager;
+
+ /** @var ILogger */
+ private $logger;
+
+ /**
+ * @param BackupCodeMapper $mapper
+ * @param ISecureRandom $random
+ * @param IHasher $hasher
+ * @param IManager $activityManager
+ * @param ILogger $logger
+ */
+ public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher,
+ IManager $activityManager, ILogger $logger) {
$this->mapper = $mapper;
$this->hasher = $hasher;
$this->random = $random;
+ $this->activityManager = $activityManager;
+ $this->logger = $logger;
}
/**
@@ -57,7 +78,7 @@ class BackupCodeStorage {
$uid = $user->getUID();
foreach (range(1, min([$number, 20])) as $i) {
- $code = $this->random->generate(10, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
+ $code = $this->random->generate(self::$CODE_LENGTH, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS);
$dbCode = new BackupCode();
$dbCode->setUserId($uid);
@@ -68,10 +89,33 @@ class BackupCodeStorage {
array_push($result, $code);
}
+ $this->publishEvent($user, 'codes_generated');
+
return $result;
}
/**
+ * Push an event the user's activity stream
+ *
+ * @param IUser $user
+ * @param string $event
+ */
+ private function publishEvent(IUser $user, $event) {
+ $activity = $this->activityManager->generateEvent();
+ $activity->setApp('twofactor_backupcodes')
+ ->setType('twofactor')
+ ->setAuthor($user->getUID())
+ ->setAffectedUser($user->getUID())
+ ->setSubject($event);
+ try {
+ $this->activityManager->publish($activity);
+ } catch (BadMethodCallException $e) {
+ $this->logger->warning('could not publish backup code creation activity', ['app' => 'twofactor_backupcodes']);
+ $this->logger->logException($e, ['app' => 'twofactor_backupcodes']);
+ }
+ }
+
+ /**
* @param IUser $user
* @return bool
*/
diff --git a/apps/twofactor_backupcodes/settings/personal.php b/apps/twofactor_backupcodes/settings/personal.php
index 037516e39a3..0a018c0ff28 100644
--- a/apps/twofactor_backupcodes/settings/personal.php
+++ b/apps/twofactor_backupcodes/settings/personal.php
@@ -1,5 +1,6 @@
<?php
-
+// @codeCoverageIgnoreStart
$tmpl = new \OCP\Template('twofactor_backupcodes', 'personal');
return $tmpl->fetchPage();
+// @codeCoverageIgnoreEnd
diff --git a/apps/twofactor_backupcodes/tests/Unit/Activity/GenericFilterTest.php b/apps/twofactor_backupcodes/tests/Unit/Activity/GenericFilterTest.php
new file mode 100644
index 00000000000..ca24c0be647
--- /dev/null
+++ b/apps/twofactor_backupcodes/tests/Unit/Activity/GenericFilterTest.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @author 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 OCA\TwoFactorBackupCodes\Test\Unit\Activity;
+
+use OCA\TwoFactorBackupCodes\Activity\GenericFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use Test\TestCase;
+
+class GenericFilterTest extends TestCase {
+
+ private $urlGenerator;
+ private $l10n;
+
+ /** @var GenericFilter */
+ private $filter;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
+ $this->l10n = $this->createMock(IL10N::class);
+
+ $this->filter = new GenericFilter($this->urlGenerator, $this->l10n);
+ }
+
+ public function testAllowedApps() {
+ $this->assertEquals([], $this->filter->allowedApps());
+ }
+
+ public function testFilterTypes() {
+ $this->assertEquals(['twofactor'], $this->filter->filterTypes(['comments', 'twofactor']));
+ }
+
+ public function testGetIcon() {
+ $this->urlGenerator->expects($this->once())
+ ->method('imagePath')
+ ->with('core', 'actions/password.svg')
+ ->will($this->returnValue('path/to/icon.svg'));
+ $this->urlGenerator->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('path/to/icon.svg')
+ ->will($this->returnValue('abs/path/to/icon.svg'));
+ $this->assertEquals('abs/path/to/icon.svg', $this->filter->getIcon());
+ }
+
+ public function testGetIdentifier() {
+ $this->assertEquals('twofactor', $this->filter->getIdentifier());
+ }
+
+ public function testGetName() {
+ $this->l10n->expects($this->once())
+ ->method('t')
+ ->with('Two-factor authentication')
+ ->will($this->returnValue('translated'));
+ $this->assertEquals('translated', $this->filter->getName());
+ }
+
+ public function testGetPriority() {
+ $this->assertEquals(30, $this->filter->getPriority());
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/tests/Unit/Activity/GenericProviderTest.php b/apps/twofactor_backupcodes/tests/Unit/Activity/GenericProviderTest.php
new file mode 100644
index 00000000000..242c4ab4e8d
--- /dev/null
+++ b/apps/twofactor_backupcodes/tests/Unit/Activity/GenericProviderTest.php
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Test\Unit\Activity;
+
+use InvalidArgumentException;
+use OCA\TwoFactorBackupCodes\Activity\GenericProvider;
+use OCP\Activity\IEvent;
+use OCP\IL10N;
+use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
+use PHPUnit_Framework_MockObject_MockObject;
+use Test\TestCase;
+
+class GenericProviderTest extends TestCase {
+
+ /** @var IL10N|PHPUnit_Framework_MockObject_MockObject */
+ private $l10n;
+
+ /** @var IURLGenerator|PHPUnit_Framework_MockObject_MockObject */
+ private $urlGenerator;
+
+ /** @var ILogger|PHPUnit_Framework_MockObject_MockObject */
+ private $logger;
+
+ /** @var GenericProvider */
+ private $provider;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->l10n = $this->createMock(IFactory::class);
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
+ $this->logger = $this->createMock(ILogger::class);
+
+ $this->provider = new GenericProvider($this->l10n, $this->urlGenerator, $this->logger);
+ }
+
+ public function testParseUnrelated() {
+ $lang = 'ru';
+ $event = $this->createMock(IEvent::class);
+ $event->expects($this->once())
+ ->method('getType')
+ ->willReturn('comments');
+ $this->setExpectedException(InvalidArgumentException::class);
+
+ $this->provider->parse($lang, $event);
+ }
+
+ public function subjectData() {
+ return [
+ ['twofactor_success'],
+ ['twofactor_failed'],
+ ];
+ }
+
+ /**
+ * @dataProvider subjectData
+ */
+ public function testParse($subject) {
+ $lang = 'ru';
+ $event = $this->createMock(IEvent::class);
+ $l = $this->createMock(IL10N::class);
+
+ $event->expects($this->once())
+ ->method('getType')
+ ->willReturn('twofactor');
+ $this->l10n->expects($this->once())
+ ->method('get')
+ ->with('core', $lang)
+ ->willReturn($l);
+ $this->urlGenerator->expects($this->once())
+ ->method('imagePath')
+ ->with('core', 'actions/password.svg')
+ ->willReturn('path/to/image');
+ $this->urlGenerator->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('path/to/image')
+ ->willReturn('absolute/path/to/image');
+ $event->expects($this->once())
+ ->method('setIcon')
+ ->with('absolute/path/to/image');
+ $event->expects($this->once())
+ ->method('getSubject')
+ ->willReturn($subject);
+ $event->expects($this->once())
+ ->method('setParsedSubject');
+
+ $this->provider->parse($lang, $event);
+ }
+
+ public function testParseInvalidSubject() {
+ $lang = 'ru';
+ $l = $this->createMock(IL10N::class);
+ $event = $this->createMock(IEvent::class);
+
+ $event->expects($this->once())
+ ->method('getType')
+ ->willReturn('twofactor');
+ $this->l10n->expects($this->once())
+ ->method('get')
+ ->with('core', $lang)
+ ->willReturn($l);
+ $event->expects($this->once())
+ ->method('getSubject')
+ ->willReturn('unrelated');
+
+ $this->expectException(InvalidArgumentException::class);
+ $this->provider->parse($lang, $event);
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/tests/Unit/Activity/ProviderTest.php b/apps/twofactor_backupcodes/tests/Unit/Activity/ProviderTest.php
new file mode 100644
index 00000000000..e1a13c89c10
--- /dev/null
+++ b/apps/twofactor_backupcodes/tests/Unit/Activity/ProviderTest.php
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2017 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Test\Unit\Activity;
+
+use InvalidArgumentException;
+use OCA\TwoFactorBackupCodes\Activity\Provider;
+use OCP\Activity\IEvent;
+use OCP\IL10N;
+use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
+use PHPUnit_Framework_MockObject_MockObject;
+use Test\TestCase;
+
+class ProviderTest extends TestCase {
+
+ /** @var IL10N|PHPUnit_Framework_MockObject_MockObject */
+ private $l10n;
+
+ /** @var IURLGenerator|PHPUnit_Framework_MockObject_MockObject */
+ private $urlGenerator;
+
+ /** @var ILogger|PHPUnit_Framework_MockObject_MockObject */
+ private $logger;
+
+ /** @var Provider */
+ private $provider;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->l10n = $this->createMock(IFactory::class);
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
+ $this->logger = $this->createMock(ILogger::class);
+
+ $this->provider = new Provider($this->l10n, $this->urlGenerator, $this->logger);
+ }
+
+ public function testParseUnrelated() {
+ $lang = 'ru';
+ $event = $this->createMock(IEvent::class);
+ $event->expects($this->once())
+ ->method('getApp')
+ ->willReturn('comments');
+ $this->setExpectedException(InvalidArgumentException::class);
+
+ $this->provider->parse($lang, $event);
+ }
+
+ public function subjectData() {
+ return [
+ ['codes_generated'],
+ ];
+ }
+
+ /**
+ * @dataProvider subjectData
+ */
+ public function testParse($subject) {
+ $lang = 'ru';
+ $event = $this->createMock(IEvent::class);
+ $l = $this->createMock(IL10N::class);
+
+ $event->expects($this->once())
+ ->method('getApp')
+ ->willReturn('twofactor_backupcodes');
+ $this->l10n->expects($this->once())
+ ->method('get')
+ ->with('twofactor_backupcodes', $lang)
+ ->willReturn($l);
+ $this->urlGenerator->expects($this->once())
+ ->method('imagePath')
+ ->with('core', 'actions/password.svg')
+ ->willReturn('path/to/image');
+ $this->urlGenerator->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('path/to/image')
+ ->willReturn('absolute/path/to/image');
+ $event->expects($this->once())
+ ->method('setIcon')
+ ->with('absolute/path/to/image');
+ $event->expects($this->once())
+ ->method('getSubject')
+ ->willReturn($subject);
+ $event->expects($this->once())
+ ->method('setParsedSubject');
+
+ $this->provider->parse($lang, $event);
+ }
+
+ public function testParseInvalidSubject() {
+ $lang = 'ru';
+ $l = $this->createMock(IL10N::class);
+ $event = $this->createMock(IEvent::class);
+
+ $event->expects($this->once())
+ ->method('getApp')
+ ->willReturn('twofactor_backupcodes');
+ $this->l10n->expects($this->once())
+ ->method('get')
+ ->with('twofactor_backupcodes', $lang)
+ ->willReturn($l);
+ $event->expects($this->once())
+ ->method('getSubject')
+ ->willReturn('unrelated');
+
+ $this->expectException(InvalidArgumentException::class);
+ $this->provider->parse($lang, $event);
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/tests/Unit/Activity/SettingTest.php b/apps/twofactor_backupcodes/tests/Unit/Activity/SettingTest.php
new file mode 100644
index 00000000000..2f6aed040f0
--- /dev/null
+++ b/apps/twofactor_backupcodes/tests/Unit/Activity/SettingTest.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Two-factor backup codes
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\TwoFactorBackupCodes\Test\Unit\Activity;
+
+use OCA\TwoFactorBackupCodes\Activity\GenericSetting;
+use OCP\IL10N;
+use Test\TestCase;
+
+class SettingTest extends TestCase {
+
+ private $l10n;
+
+ /** @var GenericSetting */
+ private $setting;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->l10n = $this->createMock(IL10N::class);
+
+ $this->setting = new GenericSetting($this->l10n);
+ }
+
+ public function testCanChangeMail() {
+ $this->assertFalse($this->setting->canChangeMail());
+ }
+
+ public function testCanChangeStream() {
+ $this->assertFalse($this->setting->canChangeStream());
+ }
+
+ public function testGetIdentifier() {
+ $this->assertEquals('twofactor', $this->setting->getIdentifier());
+ }
+
+ public function testGetName() {
+ $this->l10n->expects($this->once())
+ ->method('t')
+ ->with('Two-factor authentication')
+ ->will($this->returnValue('Zwei-Faktor-Authentifizierung'));
+ $this->assertEquals('Zwei-Faktor-Authentifizierung', $this->setting->getName());
+ }
+
+ public function testGetPriority() {
+ $this->assertEquals(30, $this->setting->getPriority());
+ }
+
+ public function testIsDefaultEnabled() {
+ $this->assertTrue($this->setting->isDefaultEnabledMail());
+ $this->assertTrue($this->setting->isDefaultEnabledStream());
+ }
+
+}
diff --git a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
index 7a1132b064b..109db7f688c 100644
--- a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
+++ b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
@@ -25,46 +25,58 @@ namespace OCA\TwoFactorBackupCodes\Tests\Unit\Service;
use OCA\TwoFactorBackupCodes\Db\BackupCode;
use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
+use OCP\Activity\IEvent;
+use OCP\Activity\IManager;
+use OCP\ILogger;
use OCP\IUser;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
+use PHPUnit_Framework_MockObject_MockObject;
use Test\TestCase;
class BackupCodeStorageTest extends TestCase {
- /** @var BackupCodeMapper|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var BackupCodeMapper|PHPUnit_Framework_MockObject_MockObject */
private $mapper;
- /** @var ISecureRandom|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var ISecureRandom|PHPUnit_Framework_MockObject_MockObject */
private $random;
- /** @var IHasher|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var IHasher|PHPUnit_Framework_MockObject_MockObject */
private $hasher;
+ /** @var IManager|PHPUnit_Framework_MockObject_MockObject */
+ private $activityManager;
+
+ /** @var ILogger|PHPUnit_Framework_MockObject_MockObject */
+ private $logger;
+
/** @var BackupCodeStorage */
private $storage;
protected function setUp() {
parent::setUp();
- $this->mapper = $this->getMockBuilder(BackupCodeMapper::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->random = $this->getMockBuilder(ISecureRandom::class)->getMock();
- $this->hasher = $this->getMockBuilder(IHasher::class)->getMock();
- $this->storage = new BackupCodeStorage($this->mapper, $this->random, $this->hasher);
+ $this->mapper = $this->createMock(BackupCodeMapper::class);
+ $this->random = $this->createMock(ISecureRandom::class);
+ $this->hasher = $this->createMock(IHasher::class);
+ $this->activityManager = $this->createMock(IManager::class);
+ $this->logger = $this->createMock(ILogger::class);
+
+ $this->storage = new BackupCodeStorage($this->mapper, $this->random, $this->hasher, $this->activityManager, $this->logger);
}
public function testCreateCodes() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$number = 5;
+ $event = $this->createMock(IEvent::class);
- $user->expects($this->once())
+ $user->expects($this->any())
->method('getUID')
->will($this->returnValue('fritz'));
$this->random->expects($this->exactly($number))
->method('generate')
- ->with(10, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
+ ->with(16, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
->will($this->returnValue('CODEABCDEF'));
$this->hasher->expects($this->exactly($number))
->method('hash')
@@ -77,6 +89,28 @@ class BackupCodeStorageTest extends TestCase {
$this->mapper->expects($this->exactly($number))
->method('insert')
->with($this->equalTo($row));
+ $this->activityManager->expects($this->once())
+ ->method('generateEvent')
+ ->will($this->returnValue($event));
+ $event->expects($this->once())
+ ->method('setApp')
+ ->with('twofactor_backupcodes')
+ ->will($this->returnSelf());
+ $event->expects($this->once())
+ ->method('setType')
+ ->with('twofactor')
+ ->will($this->returnSelf());
+ $event->expects($this->once())
+ ->method('setAuthor')
+ ->with('fritz')
+ ->will($this->returnSelf());
+ $event->expects($this->once())
+ ->method('setAffectedUser')
+ ->with('fritz')
+ ->will($this->returnSelf());
+ $this->activityManager->expects($this->once())
+ ->method('publish')
+ ->will($this->returnValue($event));
$codes = $this->storage->createCodes($user, $number);
$this->assertCount($number, $codes);
@@ -86,7 +120,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testHasBackupCodes() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$codes = [
new BackupCode(),
new BackupCode(),
@@ -101,7 +135,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testHasBackupCodesNoCodes() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$codes = [];
$this->mapper->expects($this->once())
@@ -113,7 +147,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testGetBackupCodeState() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$code1 = new BackupCode();
$code1->setUsed(1);
@@ -138,7 +172,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testGetBackupCodeDisabled() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$codes = [];
@@ -156,7 +190,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testValidateCode() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$code = new BackupCode();
$code->setUsed(0);
$code->setCode('HASHEDVALUE');
@@ -182,7 +216,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testValidateUsedCode() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$code = new BackupCode();
$code->setUsed('1');
$code->setCode('HASHEDVALUE');
@@ -203,7 +237,7 @@ class BackupCodeStorageTest extends TestCase {
}
public function testValidateCodeWithWrongHash() {
- $user = $this->getMockBuilder(IUser::class)->getMock();
+ $user = $this->createMock(IUser::class);
$code = new BackupCode();
$code->setUsed(0);
$code->setCode('HASHEDVALUE');
diff --git a/apps/updatenotification/appinfo/app.php b/apps/updatenotification/appinfo/app.php
index e3010d418bb..3e966fd1276 100644
--- a/apps/updatenotification/appinfo/app.php
+++ b/apps/updatenotification/appinfo/app.php
@@ -33,7 +33,8 @@ if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) {
$userObject = \OC::$server->getUserSession()->getUser();
if($userObject !== null) {
- if(\OC::$server->getGroupManager()->isAdmin($userObject->getUID())) {
+ if(\OC::$server->getGroupManager()->isAdmin($userObject->getUID()) &&
+ !\OC::$server->getAppManager()->isEnabledForUser('notifications')) {
if($updateChecker->getUpdateState() !== []) {
\OCP\Util::addScript('updatenotification', 'notification');
OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'getJavaScript');
diff --git a/apps/updatenotification/appinfo/info.xml b/apps/updatenotification/appinfo/info.xml
index 4cd84ac827b..d920e866f1c 100644
--- a/apps/updatenotification/appinfo/info.xml
+++ b/apps/updatenotification/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Displays update notifications for ownCloud and provides the SSO for the updater.</description>
<licence>AGPL</licence>
<author>Lukas Reschke</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>UpdateNotification</namespace>
<default_enable/>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<background-jobs>
diff --git a/apps/updatenotification/l10n/cs_CZ.js b/apps/updatenotification/l10n/cs_CZ.js
index 3b0e5f3bb67..b8fcc5a8e92 100644
--- a/apps/updatenotification/l10n/cs_CZ.js
+++ b/apps/updatenotification/l10n/cs_CZ.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Channel updated" : "Kanál aktualizován",
"Update to %1$s is available." : "Je dostupná aktualizace na %1$s.",
"Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.",
+ "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.",
"A new version is available: %s" : "Je dostupná nová verze: %s",
"Open updater" : "Otevřít aktualizátor",
"Download now" : "Stáhnout nyní",
@@ -18,6 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.",
"The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.",
- "Updater" : "Automatické aktualizace"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Provozujete PHP %s. Abyste mohl provozovat Nextcloud 11 a vyšší, musíte mít aspoň PHP 5.6. Přijímat oznámení o těchto novějších verzích budete moct až po aktualizaci verze PHP."
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/updatenotification/l10n/cs_CZ.json b/apps/updatenotification/l10n/cs_CZ.json
index 5d84942cd03..cdb176f8d0f 100644
--- a/apps/updatenotification/l10n/cs_CZ.json
+++ b/apps/updatenotification/l10n/cs_CZ.json
@@ -5,6 +5,7 @@
"Channel updated" : "Kanál aktualizován",
"Update to %1$s is available." : "Je dostupná aktualizace na %1$s.",
"Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.",
+ "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.",
"A new version is available: %s" : "Je dostupná nová verze: %s",
"Open updater" : "Otevřít aktualizátor",
"Download now" : "Stáhnout nyní",
@@ -16,6 +17,6 @@
"Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.",
"The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.",
- "Updater" : "Automatické aktualizace"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Provozujete PHP %s. Abyste mohl provozovat Nextcloud 11 a vyšší, musíte mít aspoň PHP 5.6. Přijímat oznámení o těchto novějších verzích budete moct až po aktualizaci verze PHP."
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index a64b952e9a5..c848fea6422 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du benutzt PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version wirst Du wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du benutzt PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version wirst Du wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index 45b59ec2344..1f07e886c0d 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du benutzt PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version wirst Du wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du benutzt PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version wirst Du wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js
index b0fbbdebd22..9d59376c6b4 100644
--- a/apps/updatenotification/l10n/de_DE.js
+++ b/apps/updatenotification/l10n/de_DE.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"updatenotification",
{
"Update notifications" : "Update-Benachrichtigungen",
- "Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuchen Sie ein mauelles Update",
+ "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
"Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.",
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Sie benutzen PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version werden Sie wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Sie benutzen PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist mindestens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version werden Sie wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json
index 89064c26eed..6daa24ad99a 100644
--- a/apps/updatenotification/l10n/de_DE.json
+++ b/apps/updatenotification/l10n/de_DE.json
@@ -1,6 +1,6 @@
{ "translations": {
"Update notifications" : "Update-Benachrichtigungen",
- "Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuchen Sie ein mauelles Update",
+ "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
"Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.",
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Sie benutzen PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist wenigstens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version werden Sie wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Sie benutzen PHP %s. Um die Aktualisierung auf Nextcloud 11 und höher zu ermöglichen ist mindestens PHP 5.6 erforderlich. Nach Aktualisierung der PHP-Version werden Sie wieder Benachrichtigungen über neuere Nextcloud-Versionen erhalten."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/es.js b/apps/updatenotification/l10n/es.js
index 00ffa0e9290..9c27e48fcda 100644
--- a/apps/updatenotification/l10n/es.js
+++ b/apps/updatenotification/l10n/es.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Solo están disponibles las notificaciones para actualizaciones de apps",
"The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor.",
"The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Esta usando PHP %s. Para permitir actualizar a Nextcloud 11 y superior necesita usar al menos PHP 5.6. Una vez que haya actualizado su versión de PHP será capaz de recibir las notificaciones de actualización para estas nuevas versiones.",
- "Updater" : "Actualizador"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Esta usando PHP %s. Para permitir actualizar a Nextcloud 11 y superior necesita usar al menos PHP 5.6. Una vez que haya actualizado su versión de PHP será capaz de recibir las notificaciones de actualización para estas nuevas versiones."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/es.json b/apps/updatenotification/l10n/es.json
index 2c05dc19830..36180bc1a8b 100644
--- a/apps/updatenotification/l10n/es.json
+++ b/apps/updatenotification/l10n/es.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Solo están disponibles las notificaciones para actualizaciones de apps",
"The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor.",
"The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Esta usando PHP %s. Para permitir actualizar a Nextcloud 11 y superior necesita usar al menos PHP 5.6. Una vez que haya actualizado su versión de PHP será capaz de recibir las notificaciones de actualización para estas nuevas versiones.",
- "Updater" : "Actualizador"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Esta usando PHP %s. Para permitir actualizar a Nextcloud 11 y superior necesita usar al menos PHP 5.6. Una vez que haya actualizado su versión de PHP será capaz de recibir las notificaciones de actualización para estas nuevas versiones."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js
index 6b035827049..8187ca3b0bf 100644
--- a/apps/updatenotification/l10n/fr.js
+++ b/apps/updatenotification/l10n/fr.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Seules les notifications pour les mises à jour d'applications sont diponibles.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.",
"The selected update channel does not support updates of the server." : "Le canal de mises à jour sélectionné ne supporte pas les mises à jour du serveur.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Vous utilisé PHP %s. Pour pouvoir mettre à jour vers Nextcloud 11 et supérieur, vous devez utiliser au minimum PHP 5.6. Une fois votre version PHP mis à jour, vous pourrez recevoir des notifications de mise à jour pour ces nouvelles versions. ",
- "Updater" : "Mises à jour"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Vous utilisé PHP %s. Pour pouvoir mettre à jour vers Nextcloud 11 et supérieur, vous devez utiliser au minimum PHP 5.6. Une fois votre version PHP mis à jour, vous pourrez recevoir des notifications de mise à jour pour ces nouvelles versions. "
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json
index 63341f10185..2638d2e2f42 100644
--- a/apps/updatenotification/l10n/fr.json
+++ b/apps/updatenotification/l10n/fr.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Seules les notifications pour les mises à jour d'applications sont diponibles.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.",
"The selected update channel does not support updates of the server." : "Le canal de mises à jour sélectionné ne supporte pas les mises à jour du serveur.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Vous utilisé PHP %s. Pour pouvoir mettre à jour vers Nextcloud 11 et supérieur, vous devez utiliser au minimum PHP 5.6. Une fois votre version PHP mis à jour, vous pourrez recevoir des notifications de mise à jour pour ces nouvelles versions. ",
- "Updater" : "Mises à jour"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Vous utilisé PHP %s. Pour pouvoir mettre à jour vers Nextcloud 11 et supérieur, vous devez utiliser au minimum PHP 5.6. Une fois votre version PHP mis à jour, vous pourrez recevoir des notifications de mise à jour pour ces nouvelles versions. "
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/hu_HU.js b/apps/updatenotification/l10n/hu_HU.js
index 31711425204..096b0466cc5 100644
--- a/apps/updatenotification/l10n/hu_HU.js
+++ b/apps/updatenotification/l10n/hu_HU.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Csak az értesítő alkalmazás frissítései érhetők el.",
"The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.",
"The selected update channel does not support updates of the server." : "A kiválasztott frissítése csatorna nem támogatja a szerver frissítéseit.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s verziót futtatod. A Nextcloud 11-re vagy újabbra frissítéshez legalább PHP 5.6-ra van szükség. Miután frissítetted a PHP-t értesítéseket fogsz kapni az újabb verziók frissítési lehetőségeiről.",
- "Updater" : "Frissítéskezelő"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s verziót futtatod. A Nextcloud 11-re vagy újabbra frissítéshez legalább PHP 5.6-ra van szükség. Miután frissítetted a PHP-t értesítéseket fogsz kapni az újabb verziók frissítési lehetőségeiről."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/hu_HU.json b/apps/updatenotification/l10n/hu_HU.json
index 82dad2335a8..3e2f2a16427 100644
--- a/apps/updatenotification/l10n/hu_HU.json
+++ b/apps/updatenotification/l10n/hu_HU.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Csak az értesítő alkalmazás frissítései érhetők el.",
"The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.",
"The selected update channel does not support updates of the server." : "A kiválasztott frissítése csatorna nem támogatja a szerver frissítéseit.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s verziót futtatod. A Nextcloud 11-re vagy újabbra frissítéshez legalább PHP 5.6-ra van szükség. Miután frissítetted a PHP-t értesítéseket fogsz kapni az újabb verziók frissítési lehetőségeiről.",
- "Updater" : "Frissítéskezelő"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s verziót futtatod. A Nextcloud 11-re vagy újabbra frissítéshez legalább PHP 5.6-ra van szükség. Miután frissítetted a PHP-t értesítéseket fogsz kapni az újabb verziók frissítési lehetőségeiről."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/it.js b/apps/updatenotification/l10n/it.js
index ed4e253e3aa..b14d4bc88a0 100644
--- a/apps/updatenotification/l10n/it.js
+++ b/apps/updatenotification/l10n/it.js
@@ -19,6 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Sono disponibili solo le notifiche per gli aggiornamenti delle applicazioni.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.",
"The selected update channel does not support updates of the server." : "Il canale di aggiornamento selezionato non supporta gli aggiornamenti del server.",
- "Updater" : "Strumento di aggiornamento"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Stai eseguendo PHP %s. Per consentirti di aggiornare a Nextcloud 11 e successivi, devi eseguire almeno PHP 5.6. Una volta aggiornata la tua versione di PHP, sarai in grado di ricevere notifiche di aggiornamento per questo versioni più recenti."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/it.json b/apps/updatenotification/l10n/it.json
index 5415f3ed40d..0a2eacaa298 100644
--- a/apps/updatenotification/l10n/it.json
+++ b/apps/updatenotification/l10n/it.json
@@ -17,6 +17,6 @@
"Only notification for app updates are available." : "Sono disponibili solo le notifiche per gli aggiornamenti delle applicazioni.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.",
"The selected update channel does not support updates of the server." : "Il canale di aggiornamento selezionato non supporta gli aggiornamenti del server.",
- "Updater" : "Strumento di aggiornamento"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Stai eseguendo PHP %s. Per consentirti di aggiornare a Nextcloud 11 e successivi, devi eseguire almeno PHP 5.6. Una volta aggiornata la tua versione di PHP, sarai in grado di ricevere notifiche di aggiornamento per questo versioni più recenti."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js
index 6e12ada156f..e19ab909c1d 100644
--- a/apps/updatenotification/l10n/ja.js
+++ b/apps/updatenotification/l10n/ja.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Channel updated" : "チャンネルが更新されました",
"Update to %1$s is available." : "%1$s への更新が利用可能です。",
"Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。",
+ "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。",
"A new version is available: %s" : "新しいバージョンが利用可能: %s",
"Open updater" : "アップデーターを開く",
"Download now" : "今すぐダウンロード",
@@ -18,6 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。",
"The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。",
"The selected update channel does not support updates of the server." : "選択したチャンネルでは、サーバーのアップデートをサポートしていません。",
- "Updater" : "アップデート"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s が動いています。Nextcloud 11以上にバージョンアップする場合は、PHP 5.6以上を使う必要があります。PHPのバージョンをアップグレードしたら、新しいバージョンのアップデート通知を受信できるようになります。"
},
"nplurals=1; plural=0;");
diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json
index ec032b1984c..ed355e5895a 100644
--- a/apps/updatenotification/l10n/ja.json
+++ b/apps/updatenotification/l10n/ja.json
@@ -5,6 +5,7 @@
"Channel updated" : "チャンネルが更新されました",
"Update to %1$s is available." : "%1$s への更新が利用可能です。",
"Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。",
+ "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。",
"A new version is available: %s" : "新しいバージョンが利用可能: %s",
"Open updater" : "アップデーターを開く",
"Download now" : "今すぐダウンロード",
@@ -16,6 +17,6 @@
"Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。",
"The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。",
"The selected update channel does not support updates of the server." : "選択したチャンネルでは、サーバーのアップデートをサポートしていません。",
- "Updater" : "アップデート"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s が動いています。Nextcloud 11以上にバージョンアップする場合は、PHP 5.6以上を使う必要があります。PHPのバージョンをアップグレードしたら、新しいバージョンのアップデート通知を受信できるようになります。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/lv.js b/apps/updatenotification/l10n/lv.js
new file mode 100644
index 00000000000..a242848e6d2
--- /dev/null
+++ b/apps/updatenotification/l10n/lv.js
@@ -0,0 +1,24 @@
+OC.L10N.register(
+ "updatenotification",
+ {
+ "Update notifications" : "Atjauninājumu paziņojumi",
+ "Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu",
+ "{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.",
+ "Channel updated" : "Kanāls atjaunots",
+ "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.",
+ "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.",
+ "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.",
+ "A new version is available: %s" : "Ir pieejama jauna versija: %s",
+ "Open updater" : "Atveriet atjauninātāju",
+ "Download now" : "Lejupielādēt tagad",
+ "Your version is up to date." : "Jums ir jaunākā versija.",
+ "Checked on %s" : "Pārbaudīts %s",
+ "Update channel:" : "Atjaunināt kanālu:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Jūs vienmēr varat atjaunināt to uz jaunāku versiju / eksperimentālo versiju. Bet nekad nevar atgriezties uz stabilāku versiju.",
+ "Notify members of the following groups about available updates:" : "Paziņot šo grupu locekļiem par pieejamajiem atjauninājumiem:",
+ "Only notification for app updates are available." : "Tikai paziņojumi par programmu atjauninājumiem ir pieejami.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Izvēlētais atjauninājumu kanāls rādīs īpašus paziņojumus ja serveris novecojis.",
+ "The selected update channel does not support updates of the server." : "Izvēlēto atjauninājumu kanāls neatbalsta servera atjauninājumus.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Jūs izmantojat PHP %s. Lai ļautu jums jaunināt uz Nextcloud 11 un augstāk, ir jāizmanto vismaz PHP 5.6. Kad būsiet jauninājis savas PHP versiju, tad jūs saņemsiet paziņojumus par atjauninājumiem un jaunākām versijām."
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/updatenotification/l10n/lv.json b/apps/updatenotification/l10n/lv.json
new file mode 100644
index 00000000000..7ebca4b6de9
--- /dev/null
+++ b/apps/updatenotification/l10n/lv.json
@@ -0,0 +1,22 @@
+{ "translations": {
+ "Update notifications" : "Atjauninājumu paziņojumi",
+ "Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu",
+ "{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.",
+ "Channel updated" : "Kanāls atjaunots",
+ "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.",
+ "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.",
+ "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.",
+ "A new version is available: %s" : "Ir pieejama jauna versija: %s",
+ "Open updater" : "Atveriet atjauninātāju",
+ "Download now" : "Lejupielādēt tagad",
+ "Your version is up to date." : "Jums ir jaunākā versija.",
+ "Checked on %s" : "Pārbaudīts %s",
+ "Update channel:" : "Atjaunināt kanālu:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Jūs vienmēr varat atjaunināt to uz jaunāku versiju / eksperimentālo versiju. Bet nekad nevar atgriezties uz stabilāku versiju.",
+ "Notify members of the following groups about available updates:" : "Paziņot šo grupu locekļiem par pieejamajiem atjauninājumiem:",
+ "Only notification for app updates are available." : "Tikai paziņojumi par programmu atjauninājumiem ir pieejami.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Izvēlētais atjauninājumu kanāls rādīs īpašus paziņojumus ja serveris novecojis.",
+ "The selected update channel does not support updates of the server." : "Izvēlēto atjauninājumu kanāls neatbalsta servera atjauninājumus.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Jūs izmantojat PHP %s. Lai ļautu jums jaunināt uz Nextcloud 11 un augstāk, ir jāizmanto vismaz PHP 5.6. Kad būsiet jauninājis savas PHP versiju, tad jūs saņemsiet paziņojumus par atjauninājumiem un jaunākām versijām."
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/nb_NO.js b/apps/updatenotification/l10n/nb_NO.js
index 6ea376e483a..f5839f09c7c 100644
--- a/apps/updatenotification/l10n/nb_NO.js
+++ b/apps/updatenotification/l10n/nb_NO.js
@@ -17,7 +17,6 @@ OC.L10N.register(
"Notify members of the following groups about available updates:" : "Informer medlemmene i følgende grupper om tilgjengelig oppdateringer:",
"Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.",
- "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren.",
- "Updater" : "Oppdaterer"
+ "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/nb_NO.json b/apps/updatenotification/l10n/nb_NO.json
index 36818a11d5c..14cd3a12a69 100644
--- a/apps/updatenotification/l10n/nb_NO.json
+++ b/apps/updatenotification/l10n/nb_NO.json
@@ -15,7 +15,6 @@
"Notify members of the following groups about available updates:" : "Informer medlemmene i følgende grupper om tilgjengelig oppdateringer:",
"Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.",
- "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren.",
- "Updater" : "Oppdaterer"
+ "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/nl.js b/apps/updatenotification/l10n/nl.js
index 884565391ab..f2124a3a5ae 100644
--- a/apps/updatenotification/l10n/nl.js
+++ b/apps/updatenotification/l10n/nl.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Er zijn alleen meldingen voor apps beschikbaar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.",
"The selected update channel does not support updates of the server." : "Het geselecteerde updatekanaal ondersteunt geen updates voor de server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Je draait PHP %s. Om te kunnen upgraden naar Nextcloud 11 of hoger, moet je minimaal PHP 5.6 draaien. Pas nadat je de PHP versie hebt bijgewerkt, zul je notificaties voor update naar de nieuwe versies ontvangen.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Je draait PHP %s. Om te kunnen upgraden naar Nextcloud 11 of hoger, moet je minimaal PHP 5.6 draaien. Pas nadat je de PHP versie hebt bijgewerkt, zul je notificaties voor update naar de nieuwe versies ontvangen."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/nl.json b/apps/updatenotification/l10n/nl.json
index 8e3f0caadcc..b792587480c 100644
--- a/apps/updatenotification/l10n/nl.json
+++ b/apps/updatenotification/l10n/nl.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Er zijn alleen meldingen voor apps beschikbaar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.",
"The selected update channel does not support updates of the server." : "Het geselecteerde updatekanaal ondersteunt geen updates voor de server.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Je draait PHP %s. Om te kunnen upgraden naar Nextcloud 11 of hoger, moet je minimaal PHP 5.6 draaien. Pas nadat je de PHP versie hebt bijgewerkt, zul je notificaties voor update naar de nieuwe versies ontvangen.",
- "Updater" : "Updater"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Je draait PHP %s. Om te kunnen upgraden naar Nextcloud 11 of hoger, moet je minimaal PHP 5.6 draaien. Pas nadat je de PHP versie hebt bijgewerkt, zul je notificaties voor update naar de nieuwe versies ontvangen."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js
index 000b70c9749..3dbcd2bdfeb 100644
--- a/apps/updatenotification/l10n/pl.js
+++ b/apps/updatenotification/l10n/pl.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Channel updated" : "Zaktualizowany kanał",
"Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.",
"Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s",
+ "Update for {app} to version %s is available." : "aktualizacja dla {app} do wersji %s jest dostępna.",
"A new version is available: %s" : "Dostępna jest nowa wersja: %s",
"Open updater" : "Otwórz aktualizator",
"Download now" : "Pobierz teraz",
@@ -17,7 +18,6 @@ OC.L10N.register(
"Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach: ",
"Only notification for app updates are available." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.",
- "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.",
- "Updater" : "Aktualizator"
+ "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera."
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json
index 6e9c6b41e37..c0d554bb0de 100644
--- a/apps/updatenotification/l10n/pl.json
+++ b/apps/updatenotification/l10n/pl.json
@@ -5,6 +5,7 @@
"Channel updated" : "Zaktualizowany kanał",
"Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.",
"Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s",
+ "Update for {app} to version %s is available." : "aktualizacja dla {app} do wersji %s jest dostępna.",
"A new version is available: %s" : "Dostępna jest nowa wersja: %s",
"Open updater" : "Otwórz aktualizator",
"Download now" : "Pobierz teraz",
@@ -15,7 +16,6 @@
"Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach: ",
"Only notification for app updates are available." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.",
- "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.",
- "Updater" : "Aktualizator"
+ "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera."
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js
index f8288635fbd..9c6e351f5e9 100644
--- a/apps/updatenotification/l10n/pt_BR.js
+++ b/apps/updatenotification/l10n/pt_BR.js
@@ -19,7 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Só está disponível notificação para atualizações de aplicativos.",
"The selected update channel makes dedicated notifications for the server obsolete." : "O canal de atualização selecionado fornece notificações dedicadas para o servidor desatualizado.",
"The selected update channel does not support updates of the server." : "O canal de atualização selecionado não fornece suporte a atualizações do servidor.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Você está rodando o PHP %s. Para poder atualizar para Nextcloud11 ou maior é necessário a utilização a partir do PHP 5.6. Assim que você atualizar seu PHP será possível receber avisos de atualização para novas versões.",
- "Updater" : "Atualizador"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Você está rodando o PHP %s. Para poder atualizar para Nextcloud11 ou maior é necessário a utilização a partir do PHP 5.6. Assim que você atualizar seu PHP será possível receber avisos de atualização para novas versões."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json
index 37cb75e43b4..607b7758e02 100644
--- a/apps/updatenotification/l10n/pt_BR.json
+++ b/apps/updatenotification/l10n/pt_BR.json
@@ -17,7 +17,6 @@
"Only notification for app updates are available." : "Só está disponível notificação para atualizações de aplicativos.",
"The selected update channel makes dedicated notifications for the server obsolete." : "O canal de atualização selecionado fornece notificações dedicadas para o servidor desatualizado.",
"The selected update channel does not support updates of the server." : "O canal de atualização selecionado não fornece suporte a atualizações do servidor.",
- "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Você está rodando o PHP %s. Para poder atualizar para Nextcloud11 ou maior é necessário a utilização a partir do PHP 5.6. Assim que você atualizar seu PHP será possível receber avisos de atualização para novas versões.",
- "Updater" : "Atualizador"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Você está rodando o PHP %s. Para poder atualizar para Nextcloud11 ou maior é necessário a utilização a partir do PHP 5.6. Assim que você atualizar seu PHP será possível receber avisos de atualização para novas versões."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js
index e5c812edb6c..8d88caef272 100644
--- a/apps/updatenotification/l10n/ru.js
+++ b/apps/updatenotification/l10n/ru.js
@@ -19,6 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Только уведомления об обновлении приложений доступны.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.",
"The selected update channel does not support updates of the server." : "Выбранный канал обновлений не поддерживает обновление сервера.",
- "Updater" : "Обновление"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Вы используете PHP %s. Для обновления Nextcloud до версии 11 и старше, требуется, как минимум, версия PHP 5.6. После обновления установленной версии PHP вы будете получать уведомления о возможности обновления до новых версий Nextcloud."
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json
index 9d70e3f9982..391041acfb7 100644
--- a/apps/updatenotification/l10n/ru.json
+++ b/apps/updatenotification/l10n/ru.json
@@ -17,6 +17,6 @@
"Only notification for app updates are available." : "Только уведомления об обновлении приложений доступны.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.",
"The selected update channel does not support updates of the server." : "Выбранный канал обновлений не поддерживает обновление сервера.",
- "Updater" : "Обновление"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Вы используете PHP %s. Для обновления Nextcloud до версии 11 и старше, требуется, как минимум, версия PHP 5.6. После обновления установленной версии PHP вы будете получать уведомления о возможности обновления до новых версий Nextcloud."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sk_SK.js b/apps/updatenotification/l10n/sk_SK.js
index e81c3775dd9..6ec23bbed31 100644
--- a/apps/updatenotification/l10n/sk_SK.js
+++ b/apps/updatenotification/l10n/sk_SK.js
@@ -1,9 +1,24 @@
OC.L10N.register(
"updatenotification",
{
+ "Update notifications" : "Upozornenia aktualizácií",
+ "Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu",
"{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.",
- "Updater" : "Aktualizátor",
+ "Channel updated" : "Kanál bol aktualizovaný",
+ "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.",
+ "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.",
+ "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.",
"A new version is available: %s" : "Je dostupná nová verzia: %s",
- "Update channel:" : "Aktualizačný kanál:"
+ "Open updater" : "Otvoriť aktualizátor",
+ "Download now" : "Stiahnuť teraz",
+ "Your version is up to date." : "Vaša verzia je atuálna.",
+ "Checked on %s" : "Skontrolované %s",
+ "Update channel:" : "Aktualizačný kanál:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy je možné prejsť na novšiu verziu / experimentálny kanál. Ale následne nie je možné prejsť naspäť na staršiu verziu / stabilnejší kanál.",
+ "Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:",
+ "Only notification for app updates are available." : "Sú dostupné upozornenia iba pre aktualizácie aplikácií.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.",
+ "The selected update channel does not support updates of the server." : "Vybraný aktualizačný kanál nepodporuje aktualizácie servera.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Momentálne používate PHP %s. Pre aktualizáciu na Nextcloud 11 je potrebné PHP verzie minimálne 5.6. Ako náhle aktualizujete verziu PHP budete dostávať upozornenia s možnosťou aktualizácie na novšie verzie."
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/updatenotification/l10n/sk_SK.json b/apps/updatenotification/l10n/sk_SK.json
index f930f9e59a2..0a10a476301 100644
--- a/apps/updatenotification/l10n/sk_SK.json
+++ b/apps/updatenotification/l10n/sk_SK.json
@@ -1,7 +1,22 @@
{ "translations": {
+ "Update notifications" : "Upozornenia aktualizácií",
+ "Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu",
"{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.",
- "Updater" : "Aktualizátor",
+ "Channel updated" : "Kanál bol aktualizovaný",
+ "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.",
+ "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.",
+ "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.",
"A new version is available: %s" : "Je dostupná nová verzia: %s",
- "Update channel:" : "Aktualizačný kanál:"
+ "Open updater" : "Otvoriť aktualizátor",
+ "Download now" : "Stiahnuť teraz",
+ "Your version is up to date." : "Vaša verzia je atuálna.",
+ "Checked on %s" : "Skontrolované %s",
+ "Update channel:" : "Aktualizačný kanál:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy je možné prejsť na novšiu verziu / experimentálny kanál. Ale následne nie je možné prejsť naspäť na staršiu verziu / stabilnejší kanál.",
+ "Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:",
+ "Only notification for app updates are available." : "Sú dostupné upozornenia iba pre aktualizácie aplikácií.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.",
+ "The selected update channel does not support updates of the server." : "Vybraný aktualizačný kanál nepodporuje aktualizácie servera.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Momentálne používate PHP %s. Pre aktualizáciu na Nextcloud 11 je potrebné PHP verzie minimálne 5.6. Ako náhle aktualizujete verziu PHP budete dostávať upozornenia s možnosťou aktualizácie na novšie verzie."
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sl.js b/apps/updatenotification/l10n/sl.js
index 5431e7404a6..0afc6b007eb 100644
--- a/apps/updatenotification/l10n/sl.js
+++ b/apps/updatenotification/l10n/sl.js
@@ -2,17 +2,19 @@ OC.L10N.register(
"updatenotification",
{
"Update notifications" : "Posodobi obvestila",
+ "Could not start updater, please try the manual update" : "Ne morem zagnati samodejne posodobitve, poskusi ročno",
"{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.",
- "Updated channel" : "Posodobljen kanal",
- "Nextcloud core" : "Nextcloud jedro",
+ "Channel updated" : "Kanal posodobljen",
+ "Update to %1$s is available." : "Posodobitev na %1$s je na voljo.",
"Update for %1$s to version %2$s is available." : "Posodobitev %1$s na različico %2$s je na voljo.",
+ "Update for {app} to version %s is available." : "Posodobitev za {app} na verzijo %s je na voljo.",
"A new version is available: %s" : "Na voljo je nova različica: %s",
"Open updater" : "Odpri posodabljalnik",
+ "Download now" : "Prejmi zdaj",
"Your version is up to date." : "Nameščena je najnovejša različica.",
"Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico.",
- "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:",
- "Updater" : "Posodabljalnik"
+ "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/updatenotification/l10n/sl.json b/apps/updatenotification/l10n/sl.json
index 77bc54a9dc9..e3c9c8741a6 100644
--- a/apps/updatenotification/l10n/sl.json
+++ b/apps/updatenotification/l10n/sl.json
@@ -1,16 +1,18 @@
{ "translations": {
"Update notifications" : "Posodobi obvestila",
+ "Could not start updater, please try the manual update" : "Ne morem zagnati samodejne posodobitve, poskusi ročno",
"{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.",
- "Updated channel" : "Posodobljen kanal",
- "Nextcloud core" : "Nextcloud jedro",
+ "Channel updated" : "Kanal posodobljen",
+ "Update to %1$s is available." : "Posodobitev na %1$s je na voljo.",
"Update for %1$s to version %2$s is available." : "Posodobitev %1$s na različico %2$s je na voljo.",
+ "Update for {app} to version %s is available." : "Posodobitev za {app} na verzijo %s je na voljo.",
"A new version is available: %s" : "Na voljo je nova različica: %s",
"Open updater" : "Odpri posodabljalnik",
+ "Download now" : "Prejmi zdaj",
"Your version is up to date." : "Nameščena je najnovejša različica.",
"Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico.",
- "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:",
- "Updater" : "Posodabljalnik"
+ "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js
index 1f47697c051..c56d048bbc5 100644
--- a/apps/updatenotification/l10n/sq.js
+++ b/apps/updatenotification/l10n/sq.js
@@ -2,16 +2,23 @@ OC.L10N.register(
"updatenotification",
{
"Update notifications" : "Njoftime përditësimesh",
+ "Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual",
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
- "Updated channel" : "Kanali u përditësua",
+ "Channel updated" : "Kanali u përditësua",
+ "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.",
"Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.",
- "Updater" : "Përditësues",
+ "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion",
"A new version is available: %s" : "Ka gati një version të ri: %s",
- "Open updater" : "Hapni përditësuesin",
+ "Open updater" : "Hape përditësuesin",
+ "Download now" : "Shkarko tani",
"Your version is up to date." : "Versioni juaj është i përditësuar.",
"Checked on %s" : "Kontrolluar më %s",
"Update channel:" : "Kanal përditësimesh:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.",
- "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:"
+ "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:",
+ "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.",
+ "The selected update channel does not support updates of the server." : "Kanali i zgjdhur i përditësimit nuk mbështet përditësime të shvrbyesit.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Ju po përdorni PHP %s. Që të kaloni në versionin Nextcloud 11 ose më lartë ju keni nevojë që të përdorni të paktën PHP5.6. Sapo të kaloni në versionin e fundit të PHP do keni mundësinë që të merrni njoftime për versionet e reja."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/sq.json b/apps/updatenotification/l10n/sq.json
index 9f963dc1c4b..845efac8051 100644
--- a/apps/updatenotification/l10n/sq.json
+++ b/apps/updatenotification/l10n/sq.json
@@ -1,15 +1,22 @@
{ "translations": {
"Update notifications" : "Njoftime përditësimesh",
+ "Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual",
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
- "Updated channel" : "Kanali u përditësua",
+ "Channel updated" : "Kanali u përditësua",
+ "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.",
"Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.",
- "Updater" : "Përditësues",
+ "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion",
"A new version is available: %s" : "Ka gati një version të ri: %s",
- "Open updater" : "Hapni përditësuesin",
+ "Open updater" : "Hape përditësuesin",
+ "Download now" : "Shkarko tani",
"Your version is up to date." : "Versioni juaj është i përditësuar.",
"Checked on %s" : "Kontrolluar më %s",
"Update channel:" : "Kanal përditësimesh:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.",
- "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:"
+ "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:",
+ "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.",
+ "The selected update channel does not support updates of the server." : "Kanali i zgjdhur i përditësimit nuk mbështet përditësime të shvrbyesit.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Ju po përdorni PHP %s. Që të kaloni në versionin Nextcloud 11 ose më lartë ju keni nevojë që të përdorni të paktën PHP5.6. Sapo të kaloni në versionin e fundit të PHP do keni mundësinë që të merrni njoftime për versionet e reja."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sv.js b/apps/updatenotification/l10n/sv.js
index 45cf8e2476f..86a3cf7d587 100644
--- a/apps/updatenotification/l10n/sv.js
+++ b/apps/updatenotification/l10n/sv.js
@@ -1,14 +1,24 @@
OC.L10N.register(
"updatenotification",
{
+ "Update notifications" : "Uppdateringsnotifikationer",
+ "Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
- "Updated channel" : "Uppdaterad kanal",
- "Updater" : "Uppdaterare",
+ "Channel updated" : "Uppdateringskanal uppdaterad",
+ "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.",
+ "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.",
+ "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.",
"A new version is available: %s" : "En ny version är tillgänglig: %s",
"Open updater" : "Öppna uppdateraren",
+ "Download now" : "Ladda ned nu",
"Your version is up to date." : "Din version är uppdaterad.",
"Checked on %s" : "Senast kontrollerad %s",
"Update channel:" : "Uppdateringskanal:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal.",
+ "Notify members of the following groups about available updates:" : "Notifiera medlemmar i följande grupper om tillgängliga uppdateraingar:",
+ "Only notification for app updates are available." : "Endast notifikation för app-uppdateringar är tillgängliga.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade.",
+ "The selected update channel does not support updates of the server." : "Den valda uppdateringskanalen stödjer inte uppdateringar för servern.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du använder PHP %s. För att kunna uppgradera till Nextcloud 11 och högre så behöver du minst använda PHP 5.6 . När du har uppgraderat din PHP version kommer du att kunna ta emot uppdateringsnotifikationer för de nyare versionerna."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/sv.json b/apps/updatenotification/l10n/sv.json
index d52684ecf31..a3a0e95079a 100644
--- a/apps/updatenotification/l10n/sv.json
+++ b/apps/updatenotification/l10n/sv.json
@@ -1,12 +1,22 @@
{ "translations": {
+ "Update notifications" : "Uppdateringsnotifikationer",
+ "Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
- "Updated channel" : "Uppdaterad kanal",
- "Updater" : "Uppdaterare",
+ "Channel updated" : "Uppdateringskanal uppdaterad",
+ "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.",
+ "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.",
+ "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.",
"A new version is available: %s" : "En ny version är tillgänglig: %s",
"Open updater" : "Öppna uppdateraren",
+ "Download now" : "Ladda ned nu",
"Your version is up to date." : "Din version är uppdaterad.",
"Checked on %s" : "Senast kontrollerad %s",
"Update channel:" : "Uppdateringskanal:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal.",
+ "Notify members of the following groups about available updates:" : "Notifiera medlemmar i följande grupper om tillgängliga uppdateraingar:",
+ "Only notification for app updates are available." : "Endast notifikation för app-uppdateringar är tillgängliga.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade.",
+ "The selected update channel does not support updates of the server." : "Den valda uppdateringskanalen stödjer inte uppdateringar för servern.",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Du använder PHP %s. För att kunna uppgradera till Nextcloud 11 och högre så behöver du minst använda PHP 5.6 . När du har uppgraderat din PHP version kommer du att kunna ta emot uppdateringsnotifikationer för de nyare versionerna."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js
index 260099bcce2..b5160c7b6b3 100644
--- a/apps/updatenotification/l10n/tr.js
+++ b/apps/updatenotification/l10n/tr.js
@@ -18,7 +18,6 @@ OC.L10N.register(
"Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:",
"Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.",
- "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.",
- "Updater" : "Güncelleyici"
+ "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json
index b37ca429e74..7eba40df793 100644
--- a/apps/updatenotification/l10n/tr.json
+++ b/apps/updatenotification/l10n/tr.json
@@ -16,7 +16,6 @@
"Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:",
"Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.",
- "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.",
- "Updater" : "Güncelleyici"
+ "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js
index 3c18f5981a3..9c224667f6b 100644
--- a/apps/updatenotification/l10n/zh_CN.js
+++ b/apps/updatenotification/l10n/zh_CN.js
@@ -1,14 +1,24 @@
OC.L10N.register(
"updatenotification",
{
+ "Update notifications" : "升级通知",
+ "Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
- "Updated channel" : "更新通道",
- "Updater" : "更新管理器",
+ "Channel updated" : "更新通道",
+ "Update to %1$s is available." : " 可以更新到 %1$s 。",
+ "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。",
+ "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。",
"A new version is available: %s" : "有可用的新版本: %s",
- "Open updater" : "打开更新管理器",
+ "Open updater" : "打开更新器",
+ "Download now" : "开始下载",
"Your version is up to date." : "您的版本已是最新。",
"Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。"
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。",
+ "Notify members of the following groups about available updates:" : "提醒一下组群的用户关于可用的更新:",
+ "Only notification for app updates are available." : "仅提醒应用更新就绪。",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器",
+ "The selected update channel does not support updates of the server." : "选中的更新通道不支持服务器升级。",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "您在使用PHP %s. 如果要使用 Nextcloud 11 您至少要使用 PHP 5.6。如果您升级了您的 PHP 版本您将不会收到这些提示您更新更高版本的信息提示。"
},
"nplurals=1; plural=0;");
diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json
index 47bba0c492b..4ffaf9f9e96 100644
--- a/apps/updatenotification/l10n/zh_CN.json
+++ b/apps/updatenotification/l10n/zh_CN.json
@@ -1,12 +1,22 @@
{ "translations": {
+ "Update notifications" : "升级通知",
+ "Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
- "Updated channel" : "更新通道",
- "Updater" : "更新管理器",
+ "Channel updated" : "更新通道",
+ "Update to %1$s is available." : " 可以更新到 %1$s 。",
+ "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。",
+ "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。",
"A new version is available: %s" : "有可用的新版本: %s",
- "Open updater" : "打开更新管理器",
+ "Open updater" : "打开更新器",
+ "Download now" : "开始下载",
"Your version is up to date." : "您的版本已是最新。",
"Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。"
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。",
+ "Notify members of the following groups about available updates:" : "提醒一下组群的用户关于可用的更新:",
+ "Only notification for app updates are available." : "仅提醒应用更新就绪。",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器",
+ "The selected update channel does not support updates of the server." : "选中的更新通道不支持服务器升级。",
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "您在使用PHP %s. 如果要使用 Nextcloud 11 您至少要使用 PHP 5.6。如果您升级了您的 PHP 版本您将不会收到这些提示您更新更高版本的信息提示。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/zh_TW.js b/apps/updatenotification/l10n/zh_TW.js
index 64a0e002d5b..a7e225e3413 100644
--- a/apps/updatenotification/l10n/zh_TW.js
+++ b/apps/updatenotification/l10n/zh_TW.js
@@ -16,7 +16,6 @@ OC.L10N.register(
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。",
"Notify members of the following groups about available updates:" : "有可用更新時通知這些群組:",
"Only notification for app updates are available." : "僅提供應用程式更新的通知",
- "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新",
- "Updater" : "更新者"
+ "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新"
},
"nplurals=1; plural=0;");
diff --git a/apps/updatenotification/l10n/zh_TW.json b/apps/updatenotification/l10n/zh_TW.json
index 7e8edb9820e..7386d753e94 100644
--- a/apps/updatenotification/l10n/zh_TW.json
+++ b/apps/updatenotification/l10n/zh_TW.json
@@ -14,7 +14,6 @@
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。",
"Notify members of the following groups about available updates:" : "有可用更新時通知這些群組:",
"Only notification for app updates are available." : "僅提供應用程式更新的通知",
- "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新",
- "Updater" : "更新者"
+ "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/updatenotification/lib/Notification/BackgroundJob.php b/apps/updatenotification/lib/Notification/BackgroundJob.php
index 7bcc0e86905..83a9bdb599a 100644
--- a/apps/updatenotification/lib/Notification/BackgroundJob.php
+++ b/apps/updatenotification/lib/Notification/BackgroundJob.php
@@ -30,8 +30,6 @@ use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\IGroup;
use OCP\IGroupManager;
-use OCP\IURLGenerator;
-use OCP\IUser;
use OCP\Notification\IManager;
class BackgroundJob extends TimedJob {
@@ -51,10 +49,7 @@ class BackgroundJob extends TimedJob {
/** @var IClientService */
protected $client;
- /** @var IURLGenerator */
- protected $urlGenerator;
-
- /** @var IUser[] */
+ /** @var string[] */
protected $users;
/**
@@ -65,9 +60,8 @@ class BackgroundJob extends TimedJob {
* @param IGroupManager $groupManager
* @param IAppManager $appManager
* @param IClientService $client
- * @param IURLGenerator $urlGenerator
*/
- public function __construct(IConfig $config, IManager $notificationManager, IGroupManager $groupManager, IAppManager $appManager, IClientService $client, IURLGenerator $urlGenerator) {
+ public function __construct(IConfig $config, IManager $notificationManager, IGroupManager $groupManager, IAppManager $appManager, IClientService $client) {
// Run once a day
$this->setInterval(60 * 60 * 24);
@@ -76,7 +70,6 @@ class BackgroundJob extends TimedJob {
$this->groupManager = $groupManager;
$this->appManager = $appManager;
$this->client = $client;
- $this->urlGenerator = $urlGenerator;
}
protected function run($argument) {
@@ -97,8 +90,7 @@ class BackgroundJob extends TimedJob {
$status = $updater->check();
if (isset($status['version'])) {
- $url = $this->urlGenerator->linkToRouteAbsolute('settings.AdminSettings.index') . '#updater';
- $this->createNotifications('core', $status['version'], $url, $status['versionstring']);
+ $this->createNotifications('core', $status['version'], $status['versionstring']);
}
}
@@ -110,8 +102,7 @@ class BackgroundJob extends TimedJob {
foreach ($apps as $app) {
$update = $this->isUpdateAvailable($app);
if ($update !== false) {
- $url = $this->urlGenerator->linkToRouteAbsolute('settings.AppSettings.viewApps') . '#app-' . $app;
- $this->createNotifications($app, $update, $url);
+ $this->createNotifications($app, $update);
}
}
}
@@ -121,10 +112,9 @@ class BackgroundJob extends TimedJob {
*
* @param string $app
* @param string $version
- * @param string $url
* @param string $visibleVersion
*/
- protected function createNotifications($app, $version, $url, $visibleVersion = '') {
+ protected function createNotifications($app, $version, $visibleVersion = '') {
$lastNotification = $this->config->getAppValue('updatenotification', $app, false);
if ($lastNotification === $version) {
// We already notified about this update
@@ -138,8 +128,7 @@ class BackgroundJob extends TimedJob {
$notification = $this->notificationManager->createNotification();
$notification->setApp('updatenotification')
->setDateTime(new \DateTime())
- ->setObject($app, $version)
- ->setLink($url);
+ ->setObject($app, $version);
if ($visibleVersion !== '') {
$notification->setSubject('update_available', ['version' => $visibleVersion]);
diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php
index 00cc94095ca..079ec4c5e0a 100644
--- a/apps/updatenotification/lib/Notification/Notifier.php
+++ b/apps/updatenotification/lib/Notification/Notifier.php
@@ -24,7 +24,10 @@
namespace OCA\UpdateNotification\Notification;
+use OCP\IGroupManager;
use OCP\IURLGenerator;
+use OCP\IUser;
+use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
@@ -41,6 +44,12 @@ class Notifier implements INotifier {
/** @var IFactory */
protected $l10NFactory;
+ /** @var IUserSession */
+ protected $userSession;
+
+ /** @var IGroupManager */
+ protected $groupManager;
+
/** @var string[] */
protected $appVersions;
@@ -50,11 +59,15 @@ class Notifier implements INotifier {
* @param IURLGenerator $url
* @param IManager $notificationManager
* @param IFactory $l10NFactory
+ * @param IUserSession $userSession
+ * @param IGroupManager $groupManager
*/
- public function __construct(IURLGenerator $url, IManager $notificationManager, IFactory $l10NFactory) {
+ public function __construct(IURLGenerator $url, IManager $notificationManager, IFactory $l10NFactory, IUserSession $userSession, IGroupManager $groupManager) {
$this->url = $url;
$this->notificationManager = $notificationManager;
$this->l10NFactory = $l10NFactory;
+ $this->userSession = $userSession;
+ $this->groupManager = $groupManager;
$this->appVersions = $this->getAppVersions();
}
@@ -76,6 +89,10 @@ class Notifier implements INotifier {
$parameters = $notification->getSubjectParameters();
$notification->setParsedSubject($l->t('Update to %1$s is available.', [$parameters['version']]));
+
+ if ($this->isAdmin()) {
+ $notification->setLink($this->url->linkToRouteAbsolute('settings.AdminSettings.index') . '#updater');
+ }
} else {
$appInfo = $this->getAppInfo($notification->getObjectType());
$appName = ($appInfo === null) ? $notification->getObjectType() : $appInfo['name'];
@@ -92,6 +109,10 @@ class Notifier implements INotifier {
'name' => $appName,
]
]);
+
+ if ($this->isAdmin()) {
+ $notification->setLink($this->url->linkToRouteAbsolute('settings.AppSettings.viewApps') . '#app-' . $notification->getObjectType());
+ }
}
$notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('updatenotification', 'notification.svg')));
@@ -113,6 +134,19 @@ class Notifier implements INotifier {
}
}
+ /**
+ * @return bool
+ */
+ protected function isAdmin() {
+ $user = $this->userSession->getUser();
+
+ if ($user instanceof IUser) {
+ return $this->groupManager->isAdmin($user->getUID());
+ }
+
+ return false;
+ }
+
protected function getCoreVersions() {
return implode('.', \OCP\Util::getVersion());
}
diff --git a/apps/updatenotification/tests/Notification/BackgroundJobTest.php b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
index 911b1cc8e2f..57771ec0ae9 100644
--- a/apps/updatenotification/tests/Notification/BackgroundJobTest.php
+++ b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
@@ -45,18 +45,15 @@ class BackgroundJobTest extends TestCase {
protected $appManager;
/** @var IClientService|\PHPUnit_Framework_MockObject_MockObject */
protected $client;
- /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
- protected $urlGenerator;
public function setUp() {
parent::setUp();
- $this->config = $this->getMockBuilder('OCP\IConfig')->getMock();
- $this->notificationManager = $this->getMockBuilder('OCP\Notification\IManager')->getMock();
- $this->groupManager = $this->getMockBuilder('OCP\IGroupManager')->getMock();
- $this->appManager = $this->getMockBuilder('OCP\App\IAppManager')->getMock();
- $this->client = $this->getMockBuilder('OCP\Http\Client\IClientService')->getMock();
- $this->urlGenerator = $this->getMockBuilder('OCP\IURLGenerator')->getMock();
+ $this->config = $this->createMock(\OCP\IConfig::class);
+ $this->notificationManager = $this->createMock(\OCP\Notification\IManager::class);
+ $this->groupManager = $this->createMock(\OCP\IGroupManager::class);
+ $this->appManager = $this->createMock(\OCP\App\IAppManager::class);
+ $this->client = $this->createMock(\OCP\Http\Client\IClientService::class);
}
/**
@@ -70,8 +67,7 @@ class BackgroundJobTest extends TestCase {
$this->notificationManager,
$this->groupManager,
$this->appManager,
- $this->client,
- $this->urlGenerator
+ $this->client
);
} {
return $this->getMockBuilder('OCA\UpdateNotification\Notification\BackgroundJob')
@@ -81,7 +77,6 @@ class BackgroundJobTest extends TestCase {
$this->groupManager,
$this->appManager,
$this->client,
- $this->urlGenerator,
])
->setMethods($methods)
->getMock();
@@ -160,20 +155,12 @@ class BackgroundJobTest extends TestCase {
}
if ($notification === null) {
- $this->urlGenerator->expects($this->never())
- ->method('linkToRouteAbsolute');
-
$job->expects($this->never())
->method('createNotifications');
} else {
- $this->urlGenerator->expects($this->once())
- ->method('linkToRouteAbsolute')
- ->with('settings.AdminSettings.index')
- ->willReturn('admin-url');
-
$job->expects($this->once())
->method('createNotifications')
- ->willReturn('core', $notification, 'admin-url#updater', $readableVersion);
+ ->willReturn('core', $notification, $readableVersion);
}
$this->invokePrivate($job, 'checkCoreUpdate');
@@ -188,7 +175,7 @@ class BackgroundJobTest extends TestCase {
['app2', '1.9.2'],
],
[
- ['app2', '1.9.2', 'apps-url#app-app2'],
+ ['app2', '1.9.2'],
],
],
];
@@ -215,11 +202,6 @@ class BackgroundJobTest extends TestCase {
->method('isUpdateAvailable')
->willReturnMap($isUpdateAvailable);
- $this->urlGenerator->expects($this->exactly(sizeof($notifications)))
- ->method('linkToRouteAbsolute')
- ->with('settings.AppSettings.viewApps')
- ->willReturn('apps-url');
-
$mockedMethod = $job->expects($this->exactly(sizeof($notifications)))
->method('createNotifications');
call_user_func_array([$mockedMethod, 'withConsecutive'], $notifications);
@@ -229,9 +211,9 @@ class BackgroundJobTest extends TestCase {
public function dataCreateNotifications() {
return [
- ['app1', '1.0.0', 'link1', '1.0.0', false, false, null, null],
- ['app2', '1.0.1', 'link2', '1.0.0', '1.0.0', true, ['user1'], [['user1']]],
- ['app3', '1.0.1', 'link3', false, false, true, ['user2', 'user3'], [['user2'], ['user3']]],
+ ['app1', '1.0.0', '1.0.0', false, false, null, null],
+ ['app2', '1.0.1', '1.0.0', '1.0.0', true, ['user1'], [['user1']]],
+ ['app3', '1.0.1', false, false, true, ['user2', 'user3'], [['user2'], ['user3']]],
];
}
@@ -240,14 +222,13 @@ class BackgroundJobTest extends TestCase {
*
* @param string $app
* @param string $version
- * @param string $url
* @param string|false $lastNotification
* @param string|false $callDelete
* @param bool $createNotification
* @param string[]|null $users
* @param array|null $userNotifications
*/
- public function testCreateNotifications($app, $version, $url, $lastNotification, $callDelete, $createNotification, $users, $userNotifications) {
+ public function testCreateNotifications($app, $version, $lastNotification, $callDelete, $createNotification, $users, $userNotifications) {
$job = $this->getJob([
'deleteOutdatedNotifications',
'getUsersToNotify',
@@ -299,10 +280,6 @@ class BackgroundJobTest extends TestCase {
->method('setSubject')
->with('update_available')
->willReturnSelf();
- $notification->expects($this->once())
- ->method('setLink')
- ->with($url)
- ->willReturnSelf();
if ($userNotifications !== null) {
$mockedMethod = $notification->expects($this->exactly(sizeof($userNotifications)))
@@ -323,7 +300,7 @@ class BackgroundJobTest extends TestCase {
->method('createNotification');
}
- $this->invokePrivate($job, 'createNotifications', [$app, $version, $url]);
+ $this->invokePrivate($job, 'createNotifications', [$app, $version]);
}
public function dataGetUsersToNotify() {
diff --git a/apps/updatenotification/tests/Notification/NotifierTest.php b/apps/updatenotification/tests/Notification/NotifierTest.php
index 421fcada689..e809ce11635 100644
--- a/apps/updatenotification/tests/Notification/NotifierTest.php
+++ b/apps/updatenotification/tests/Notification/NotifierTest.php
@@ -24,7 +24,9 @@ namespace OCA\UpdateNotification\Tests\Notification;
use OCA\UpdateNotification\Notification\Notifier;
+use OCP\IGroupManager;
use OCP\IURLGenerator;
+use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
@@ -38,6 +40,10 @@ class NotifierTest extends TestCase {
protected $notificationManager;
/** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
protected $l10nFactory;
+ /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */
+ protected $userSession;
+ /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
+ protected $groupManager;
public function setUp() {
parent::setUp();
@@ -45,6 +51,8 @@ class NotifierTest extends TestCase {
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->notificationManager = $this->createMock(IManager::class);
$this->l10nFactory = $this->createMock(IFactory::class);
+ $this->userSession = $this->createMock(IUserSession::class);
+ $this->groupManager = $this->createMock(IGroupManager::class);
}
/**
@@ -56,7 +64,9 @@ class NotifierTest extends TestCase {
return new Notifier(
$this->urlGenerator,
$this->notificationManager,
- $this->l10nFactory
+ $this->l10nFactory,
+ $this->userSession,
+ $this->groupManager
);
} {
return $this->getMockBuilder(Notifier::class)
@@ -64,6 +74,8 @@ class NotifierTest extends TestCase {
$this->urlGenerator,
$this->notificationManager,
$this->l10nFactory,
+ $this->userSession,
+ $this->groupManager,
])
->setMethods($methods)
->getMock();
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 87eb61a0fba..7535790fa57 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -9,7 +9,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
</description>
<licence>AGPL</licence>
<author>Dominik Schmidt and Arthur Schiwon</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<types>
<authentication/>
</types>
@@ -18,7 +18,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
</documentation>
<dependencies>
<lib>ldap</lib>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<namespace>User_LDAP</namespace>
diff --git a/apps/user_ldap/appinfo/routes.php b/apps/user_ldap/appinfo/routes.php
index c01a3c11472..45b43c21409 100644
--- a/apps/user_ldap/appinfo/routes.php
+++ b/apps/user_ldap/appinfo/routes.php
@@ -36,3 +36,13 @@ $this->create('user_ldap_ajax_testConfiguration', 'ajax/testConfiguration.php')
->actionInclude('user_ldap/ajax/testConfiguration.php');
$this->create('user_ldap_ajax_wizard', 'ajax/wizard.php')
->actionInclude('user_ldap/ajax/wizard.php');
+
+$application = new \OCP\AppFramework\App('user_ldap');
+$application->registerRoutes($this, [
+ 'ocs' => [
+ ['name' => 'ConfigAPI#create', 'url' => '/api/v1/config', 'verb' => 'POST'],
+ ['name' => 'ConfigAPI#show', 'url' => '/api/v1/config/{configID}', 'verb' => 'GET'],
+ ['name' => 'ConfigAPI#modify', 'url' => '/api/v1/config/{configID}', 'verb' => 'PUT'],
+ ['name' => 'ConfigAPI#delete', 'url' => '/api/v1/config/{configID}', 'verb' => 'DELETE'],
+ ]
+]);
diff --git a/apps/user_ldap/img/app-dark.svg b/apps/user_ldap/img/app-dark.svg
new file mode 100644
index 00000000000..54939fab4f2
--- /dev/null
+++ b/apps/user_ldap/img/app-dark.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" viewBox="0 0 16 16">
+ <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" fill="#000" d="m8.4036 1c-1.7312 0-3.1998 1.2661-3.1998 2.9 0.012287 0.51643 0.058473 1.1532 0.36664 2.5v0.033333l0.033328 0.033333c0.098928 0.28338 0.24289 0.44549 0.4333 0.66666s0.41742 0.48149 0.63328 0.69999c0.025397 0.025708 0.041676 0.041633 0.066656 0.066677 0.04281 0.18631 0.094672 0.38681 0.13332 0.56666 0.10284 0.47851 0.092296 0.81737 0.066668 0.93332-0.74389 0.26121-1.6694 0.57228-2.4998 0.93332-0.46622 0.2027-0.8881 0.3837-1.2332 0.59999-0.34513 0.2163-0.68837 0.37971-0.79994 0.86666-0.16004 0.63293-0.19866 0.7539-0.39997 1.5333-0.027212 0.20914 0.083011 0.42961 0.26665 0.53333 1.5078 0.81451 3.824 1.1423 6.1329 1.1333s4.6066-0.35609 6.0662-1.1333c0.11739-0.07353 0.14304-0.10869 0.13332-0.2333-0.04365-0.68908-0.08154-1.3669-0.13332-1.7666-0.01807-0.09908-0.06492-0.19275-0.13332-0.26666-0.46366-0.5537-1.1564-0.89218-1.9665-1.2333-0.7396-0.31144-1.6067-0.63486-2.4665-0.99999-0.048123-0.10721-0.095926-0.41912 0-0.89999 0.025759-0.12912 0.066096-0.26742 0.099994-0.4 0.0808-0.090507 0.14378-0.16447 0.23332-0.26666 0.19096-0.21796 0.39614-0.44661 0.56662-0.66666s0.30996-0.40882 0.39997-0.66666l0.03333-0.033333c0.34839-1.4062 0.34857-1.9929 0.36664-2.5v-0.033333c0-1.6339-1.4686-2.9-3.1998-2.9z"/>
+</svg>
diff --git a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
index 7b9a408784a..d08a744f9ee 100644
--- a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
+++ b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
@@ -148,7 +148,7 @@ OCA = OCA || {};
} else if(usersFound === 1) {
message = t('user_ldap', 'User found and settings verified.');
} else if(usersFound > 1) {
- message = t('user_ldap', 'Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.');
+ message = t('user_ldap', 'Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.');
}
} else {
message = t('user_ldap', 'An unspecified error occurred. Please check the settings and the log.');
diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js
index 26f04fa976e..2f3d17d1101 100644
--- a/apps/user_ldap/l10n/ast.js
+++ b/apps/user_ldap/l10n/ast.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Esbillar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>",
"User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.",
"An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.",
@@ -157,6 +156,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Asignación del Nome d'usuariu LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ",
"Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json
index 512a7ae9913..8d00dbad5cf 100644
--- a/apps/user_ldap/l10n/ast.json
+++ b/apps/user_ldap/l10n/ast.json
@@ -38,7 +38,6 @@
"Select attributes" : "Esbillar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>",
"User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.",
"An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.",
@@ -155,6 +154,7 @@
"Username-LDAP User Mapping" : "Asignación del Nome d'usuariu LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ",
"Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js
index 59a716743d1..c9fc3c62586 100644
--- a/apps/user_ldap/l10n/cs_CZ.js
+++ b/apps/user_ldap/l10n/cs_CZ.js
@@ -40,13 +40,14 @@ OC.L10N.register(
"Select attributes" : "Vyberte atributy",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
"User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.",
"An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chybí zástupný znak %uid. Bude nahrazen přihlašovacím jménem při dotazování LDAP / AD.",
"Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.",
+ "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ",
"LDAP / AD integration" : "LDAP / AD propojení",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
@@ -142,6 +143,9 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Pokud zapnuto, je možno používat skupiny, které obsahují jiné skupiny. (Funguje pouze pokud atribut člena skupiny obsahuje DN.)",
"Paging chunksize" : "Velikost bloku stránkování",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Velikost bloku použitá pro stránkování vyhledávání v LDAP, které může vracet objemné výsledky jako třeba výčet uživatelů či skupin. (Nastavení na 0 zakáže stránkovaná vyhledávání pro tyto situace.)",
+ "Enable LDAP password changes per user" : "Povolit změny LDAP hesla pro každého uživatele",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Povolit LDAP uživatelům změnu jejich hesla a povolit Super Administrátorům a skupinovým Administrátorům změnu hesel jejich LDAP uživatelů. Funguje pouze, pokud jsou na LDAP serveru příslušně nakonfigurovány seznamy řízení přístupu. Protože hesla jsou LDAP serveru zasílána v čisté podobě, musí být použito šifrování při transportu a na LDAP serveru by mělo být nakonfigurováno hashování hesel.",
+ "(New password is sent as plain text to LDAP)" : "(Nové heslo je LDAPu zasláno jako prostý text)",
"Special Attributes" : "Speciální atributy",
"Quota Field" : "Pole pro kvótu",
"Quota Default" : "Výchozí kvóta",
@@ -160,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen LDAPu",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin LDAPu",
- "Limit %s access to users meeting these criteria:" : "Přístup ke %s je omezen na uživatele odpovídající těmto kritériím:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Ve výchozím nastavení bude interní uživatelské jméno vytvořeno z atributu UUID. To zajišťuje, že je uživatelské jméno unikátní a znaky nemusí být převáděny. Interní uživatelské jméno má omezení, podle kterého jsou povoleny jen následující znaky [ a-zA-Z0-9_.@- ]. Ostatní znaky jsou nahrazeny jejich protějšky z ASCII nebo prostě vynechány. Při konfliktech bude přidáno/zvýšeno číslo. Interní uživatelské jméno slouží pro interní identifikaci uživatele. Je také výchozím názvem domovského adresáře uživatele. Je také součástí URL, např. pro služby *DAV. Tímto nastavením může být výchozí chování změněno. Pro dosažení podobného chování jako před ownCloud 5, zadejte atribut uživatelského jména do následujícího pole. Ponechte jej prázdné, chcete-li zachovat výchozí nastavení. Změny se projeví pouze u nově namapovaných (přidaných) uživatelů LDAP."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru."
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json
index 1ffce96b2d8..6f374d73d7f 100644
--- a/apps/user_ldap/l10n/cs_CZ.json
+++ b/apps/user_ldap/l10n/cs_CZ.json
@@ -38,13 +38,14 @@
"Select attributes" : "Vyberte atributy",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
"User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.",
"An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chybí zástupný znak %uid. Bude nahrazen přihlašovacím jménem při dotazování LDAP / AD.",
"Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.",
+ "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ",
"LDAP / AD integration" : "LDAP / AD propojení",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
@@ -140,6 +141,9 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Pokud zapnuto, je možno používat skupiny, které obsahují jiné skupiny. (Funguje pouze pokud atribut člena skupiny obsahuje DN.)",
"Paging chunksize" : "Velikost bloku stránkování",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Velikost bloku použitá pro stránkování vyhledávání v LDAP, které může vracet objemné výsledky jako třeba výčet uživatelů či skupin. (Nastavení na 0 zakáže stránkovaná vyhledávání pro tyto situace.)",
+ "Enable LDAP password changes per user" : "Povolit změny LDAP hesla pro každého uživatele",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Povolit LDAP uživatelům změnu jejich hesla a povolit Super Administrátorům a skupinovým Administrátorům změnu hesel jejich LDAP uživatelů. Funguje pouze, pokud jsou na LDAP serveru příslušně nakonfigurovány seznamy řízení přístupu. Protože hesla jsou LDAP serveru zasílána v čisté podobě, musí být použito šifrování při transportu a na LDAP serveru by mělo být nakonfigurováno hashování hesel.",
+ "(New password is sent as plain text to LDAP)" : "(Nové heslo je LDAPu zasláno jako prostý text)",
"Special Attributes" : "Speciální atributy",
"Quota Field" : "Pole pro kvótu",
"Quota Default" : "Výchozí kvóta",
@@ -158,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen LDAPu",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin LDAPu",
- "Limit %s access to users meeting these criteria:" : "Přístup ke %s je omezen na uživatele odpovídající těmto kritériím:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Ve výchozím nastavení bude interní uživatelské jméno vytvořeno z atributu UUID. To zajišťuje, že je uživatelské jméno unikátní a znaky nemusí být převáděny. Interní uživatelské jméno má omezení, podle kterého jsou povoleny jen následující znaky [ a-zA-Z0-9_.@- ]. Ostatní znaky jsou nahrazeny jejich protějšky z ASCII nebo prostě vynechány. Při konfliktech bude přidáno/zvýšeno číslo. Interní uživatelské jméno slouží pro interní identifikaci uživatele. Je také výchozím názvem domovského adresáře uživatele. Je také součástí URL, např. pro služby *DAV. Tímto nastavením může být výchozí chování změněno. Pro dosažení podobného chování jako před ownCloud 5, zadejte atribut uživatelského jména do následujícího pole. Ponechte jej prázdné, chcete-li zachovat výchozí nastavení. Změny se projeví pouze u nově namapovaných (přidaných) uživatelů LDAP."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru."
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js
index 9faadadb45b..1f9227c5a0a 100644
--- a/apps/user_ldap/l10n/da.js
+++ b/apps/user_ldap/l10n/da.js
@@ -39,7 +39,6 @@ OC.L10N.register(
"Select attributes" : "Vælg attributter",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
"User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.",
"An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.",
@@ -151,6 +150,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Kortlægning mellem brugernavn og LDAP-bruger",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele (meta)data. For at kunne identificere og genkende brugere præcist, så vil hver LDAP-bruger have et internt brugernavn. Det oprettede brugernavn kortlægges til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det benyttes ikke til identifikation. Hvis DN'et ændres, så vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.",
"Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger",
- "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe"
+ "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json
index 68c31f42be7..b7aab6fbbe8 100644
--- a/apps/user_ldap/l10n/da.json
+++ b/apps/user_ldap/l10n/da.json
@@ -37,7 +37,6 @@
"Select attributes" : "Vælg attributter",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
"User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.",
"An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.",
@@ -149,6 +148,7 @@
"Username-LDAP User Mapping" : "Kortlægning mellem brugernavn og LDAP-bruger",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele (meta)data. For at kunne identificere og genkende brugere præcist, så vil hver LDAP-bruger have et internt brugernavn. Det oprettede brugernavn kortlægges til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det benyttes ikke til identifikation. Hvis DN'et ændres, så vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.",
"Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger",
- "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe"
+ "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 10578537b85..9cc44cb3724 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Attribute auswählen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Loginattribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Nutzer gefunden. Nur. der ersten Nutzer wird in der Lage sein, sich anzumelden. Verwende einen weiter einschränkenenden Filter.",
"An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Limit %s access to users meeting these criteria:" : "Zugriff auf %s auf Benutzer beschränken die folgende Kriterien erfüllen:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standardmäßig wird der interne Benutzername aus dem UUID-Atribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [ a-zA-Z0-9_.@- ]. Andere Zeichen werden mit ihrer ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwandt, um den Benutzer intern zu identifizieren. Er ist ausserdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Bespiel für alle *DAV-Dienste. Mit dieser Einstellung, kann das Standardverhalten geändert werden. Für die Standardeinstellung, lasse das Eingabefeld leer. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. "
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 2ebd5d878e1..265c252579f 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -38,7 +38,7 @@
"Select attributes" : "Attribute auswählen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Loginattribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Nutzer gefunden. Nur. der ersten Nutzer wird in der Lage sein, sich anzumelden. Verwende einen weiter einschränkenenden Filter.",
"An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Limit %s access to users meeting these criteria:" : "Zugriff auf %s auf Benutzer beschränken die folgende Kriterien erfüllen:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standardmäßig wird der interne Benutzername aus dem UUID-Atribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [ a-zA-Z0-9_.@- ]. Andere Zeichen werden mit ihrer ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwandt, um den Benutzer intern zu identifizieren. Er ist ausserdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Bespiel für alle *DAV-Dienste. Mit dieser Einstellung, kann das Standardverhalten geändert werden. Für die Standardeinstellung, lasse das Eingabefeld leer. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. "
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index 725abb1776c..3c0de5ea9a5 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Attribute auswählen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Loginattribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Nutzer gefunden. Nur. der ersten Nutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.",
"An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
@@ -48,7 +48,7 @@ OC.L10N.register(
"Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:",
- "LDAP / AD integration" : "LDAP / AD Integration",
+ "LDAP / AD integration" : "LDAP/AD-Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Limit %s access to users meeting these criteria:" : "Zugriff auf %s auf Benutzer beschränken die folgende Kriterien erfüllen:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standardmäßig wird der interne Benutzername aus dem UUID-Atribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [ a-zA-Z0-9_.@- ]. Andere Zeichen werden mit ihrer ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwandt, um den Benutzer intern zu identifizieren. Er ist ausserdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Bespiel für alle *DAV-Dienste. Mit dieser Einstellung, kann das Standardverhalten geändert werden. Für die Standardeinstellung, lassen Sie das Eingabefeld leer. \nUm ein ähnliches Verhalten wie vor Owncloud 5 zu erreichen, geben Sie das Benutzer-Anzeige-Attribut in das folgende Feld ein. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index d919c195053..2bee5da66de 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -38,7 +38,7 @@
"Select attributes" : "Attribute auswählen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Loginattribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
"User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Nutzer gefunden. Nur. der ersten Nutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.",
"An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
@@ -46,7 +46,7 @@
"Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:",
- "LDAP / AD integration" : "LDAP / AD Integration",
+ "LDAP / AD integration" : "LDAP/AD-Integration",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Limit %s access to users meeting these criteria:" : "Zugriff auf %s auf Benutzer beschränken die folgende Kriterien erfüllen:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standardmäßig wird der interne Benutzername aus dem UUID-Atribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [ a-zA-Z0-9_.@- ]. Andere Zeichen werden mit ihrer ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwandt, um den Benutzer intern zu identifizieren. Er ist ausserdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Bespiel für alle *DAV-Dienste. Mit dieser Einstellung, kann das Standardverhalten geändert werden. Für die Standardeinstellung, lassen Sie das Eingabefeld leer. \nUm ein ähnliches Verhalten wie vor Owncloud 5 zu erreichen, geben Sie das Benutzer-Anzeige-Attribut in das folgende Feld ein. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index 1ffe7b2ca8e..8898e065d8e 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Επιλογή χαρακτηριστικών",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ",
"User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι ρυθμίσεις επαληθεύτηκαν αλλά βρέθηκε ένας χρήστης. Μόνο ο πρώτος θα μπορέσει να συνδεθεί. Εξετάστε τη χρήση πιο επιλεκτικού φίλτρου.",
"An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.",
@@ -152,6 +151,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Αντιστοίχιση Χρηστών Όνομα Χρήστη-LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χρηστών χρησιμοποιούνται για την αποθήκευση και τον προσδιορισμό των (μετα) δεδομένων. Προκειμένου να προσδιοριστούν με ακρίβεια και να αναγνωριστούν οι χρήστες, κάθε χρήστης LDAP θα έχει ένα εσωτερικό όνομα. Αυτό απαιτεί μια αντιστοίχιση του ονόματος χρήστη με το χρήστη LDAP. Το όνομα χρήστη που δημιουργήθηκαν αντιστοιχίζεται στην UUID του χρήστη LDAP. Επιπροσθέτως, το DN αποθηκεύεται προσωρινά (cache) ώστε να μειωθεί η αλληλεπίδραση LDAP, αλλά δεν χρησιμοποιείται για την ταυτοποίηση. Αν το DN αλλάξει, οι αλλαγές θα εντοπιστούν. Το εσωτερικό όνομα χρήστη χρησιμοποιείται παντού. Η εκκαθάριση των αντιστοιχίσεων θα αφήσει υπολείμματα παντού. Η εκκαθάριση των αντιστοιχίσεων δεν επηρεάζεται από τη διαμόρφωση, επηρεάζει όλες τις διαμορφώσεις LDAP! Μην διαγράψετε ποτέ τις αντιστοιχίσεις σε ένα λειτουργικό περιβάλλον παρά μόνο σε δοκιμές ή σε πειραματικό στάδιο.",
"Clear Username-LDAP User Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Χρήστη LDAP-Χρήστη",
- "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας"
+ "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι ρυθμίσεις επαληθεύτηκαν αλλά βρέθηκε ένας χρήστης. Μόνο ο πρώτος θα μπορέσει να συνδεθεί. Εξετάστε τη χρήση πιο επιλεκτικού φίλτρου."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index 0751237abbc..01e90a84c3a 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -38,7 +38,6 @@
"Select attributes" : "Επιλογή χαρακτηριστικών",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ",
"User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι ρυθμίσεις επαληθεύτηκαν αλλά βρέθηκε ένας χρήστης. Μόνο ο πρώτος θα μπορέσει να συνδεθεί. Εξετάστε τη χρήση πιο επιλεκτικού φίλτρου.",
"An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.",
@@ -150,6 +149,7 @@
"Username-LDAP User Mapping" : "Αντιστοίχιση Χρηστών Όνομα Χρήστη-LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χρηστών χρησιμοποιούνται για την αποθήκευση και τον προσδιορισμό των (μετα) δεδομένων. Προκειμένου να προσδιοριστούν με ακρίβεια και να αναγνωριστούν οι χρήστες, κάθε χρήστης LDAP θα έχει ένα εσωτερικό όνομα. Αυτό απαιτεί μια αντιστοίχιση του ονόματος χρήστη με το χρήστη LDAP. Το όνομα χρήστη που δημιουργήθηκαν αντιστοιχίζεται στην UUID του χρήστη LDAP. Επιπροσθέτως, το DN αποθηκεύεται προσωρινά (cache) ώστε να μειωθεί η αλληλεπίδραση LDAP, αλλά δεν χρησιμοποιείται για την ταυτοποίηση. Αν το DN αλλάξει, οι αλλαγές θα εντοπιστούν. Το εσωτερικό όνομα χρήστη χρησιμοποιείται παντού. Η εκκαθάριση των αντιστοιχίσεων θα αφήσει υπολείμματα παντού. Η εκκαθάριση των αντιστοιχίσεων δεν επηρεάζεται από τη διαμόρφωση, επηρεάζει όλες τις διαμορφώσεις LDAP! Μην διαγράψετε ποτέ τις αντιστοιχίσεις σε ένα λειτουργικό περιβάλλον παρά μόνο σε δοκιμές ή σε πειραματικό στάδιο.",
"Clear Username-LDAP User Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Χρήστη LDAP-Χρήστη",
- "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας"
+ "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι ρυθμίσεις επαληθεύτηκαν αλλά βρέθηκε ένας χρήστης. Μόνο ο πρώτος θα μπορέσει να συνδεθεί. Εξετάστε τη χρήση πιο επιλεκτικού φίλτρου."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index 581b29c090e..19dfa39b3a0 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Select attributes",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
"User found and settings verified." : "User found and settings verified.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
"An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
@@ -158,6 +157,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Username-LDAP User Mapping",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
- "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping"
+ "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 603567e9dd2..b32fc2c9e9e 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -38,7 +38,6 @@
"Select attributes" : "Select attributes",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
"User found and settings verified." : "User found and settings verified.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
"An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
@@ -156,6 +155,7 @@
"Username-LDAP User Mapping" : "Username-LDAP User Mapping",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
- "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping"
+ "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 8394ca780cc..5a6271b18bc 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Seleccionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
"User found and settings verified." : "Usuario encontrado y configuración verificada.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.",
"An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Limit %s access to users meeting these criteria:" : "Limitado %s acceso a los usuarios del encuentro con este criterio.",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "De manera predeterminada el nombre de usuario interno será creado desde el atributo UUID. Eso asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. El nombre de usuario interno tiene la única restricción de que solo estos caracteres son válidos: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados con su ASCII correspondiente o simplemente omitidos. De existir colisiones un numero será agregado. El nombre de usuario interno es usado para identificar a un usuario internamente. También es el nombre por defecto para la carpeta de inicio. También es parte de los URLs remotos, por ejemplo para todos los servicios *DAV. Con esta configuración el comportamiento predeterminado puede ser sobrescrito. Para lograr un comportamiento como antes de ownCloud 5 ingrese el nombre del atributo del usuario en el siguiente campo. Déjelo vacío para el comportamiento predefinido. Los cambios solo tendrán efecto en usuarios LDAP recientemente agregados (mapeados)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index cf2d433965b..7fc554ce122 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -38,7 +38,7 @@
"Select attributes" : "Seleccionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
"User found and settings verified." : "Usuario encontrado y configuración verificada.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.",
"An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Limit %s access to users meeting these criteria:" : "Limitado %s acceso a los usuarios del encuentro con este criterio.",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "De manera predeterminada el nombre de usuario interno será creado desde el atributo UUID. Eso asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. El nombre de usuario interno tiene la única restricción de que solo estos caracteres son válidos: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados con su ASCII correspondiente o simplemente omitidos. De existir colisiones un numero será agregado. El nombre de usuario interno es usado para identificar a un usuario internamente. También es el nombre por defecto para la carpeta de inicio. También es parte de los URLs remotos, por ejemplo para todos los servicios *DAV. Con esta configuración el comportamiento predeterminado puede ser sobrescrito. Para lograr un comportamiento como antes de ownCloud 5 ingrese el nombre del atributo del usuario en el siguiente campo. Déjelo vacío para el comportamiento predefinido. Los cambios solo tendrán efecto en usuarios LDAP recientemente agregados (mapeados)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index 037adac7ac3..3f77a537d03 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -5,12 +5,12 @@ OC.L10N.register(
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
"The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
"The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
+ "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
"The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
- " Could not set configuration %s" : "Impossible de spécifier la configuration %s",
+ " Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
"Action does not exist" : "L'action n'existe pas",
"The Base DN appears to be wrong" : "Le DN de base est erroné",
"Testing configuration…" : "Test de configuration",
@@ -20,9 +20,9 @@ OC.L10N.register(
"Select groups" : "Sélectionnez les groupes",
"Select object classes" : "Sélectionner les classes d'objet",
"Please check the credentials, they seem to be wrong." : "Veuillez vérifier vos informations d'identification",
- "Please specify the port, it could not be auto-detected." : "Veuillez spécifier le port, il n'a pu être détecté automatiquement",
+ "Please specify the port, it could not be auto-detected." : "Veuillez indiquer le port, il n'a pu être détecté automatiquement.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Le DN de base n'a pu être détecté automatiquement. Vérifiez les informations d'identification, l'hôte et le port.",
- "Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le spécifier manuellement",
+ "Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le saisir manuellement.",
"{nthServer}. Server" : "{nthServer}. Serveur",
"No object found in the given Base DN. Please revise." : "Aucun objet trouvé dans le DN de base spécifié. Veuillez le vérifier.",
"More than 1,000 directory entries available." : "Il y a plus de 1 000 entrées de répertoire disponibles.",
@@ -36,11 +36,11 @@ OC.L10N.register(
"LDAP Operations error. Anonymous bind might not be allowed." : "Erreur LDAP. La connexion anonyme au serveur n'est probablement pas acceptée.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
- "Mode switch" : "Changer de mode",
+ "Mode switch" : "Basculer de mode",
"Select attributes" : "Sélectionner les attributs",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.",
"An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
@@ -89,7 +89,7 @@ OC.L10N.register(
"Password" : "Mot de passe",
"For anonymous access, leave DN and Password empty." : "Pour un accès anonyme, laisser le DN utilisateur et le mot de passe vides.",
"One Base DN per line" : "Un DN de base par ligne",
- "You can specify Base DN for users and groups in the Advanced tab" : "Vous pouvez spécifier les DN de base de vos utilisateurs et groupes via l'onglet Avancé",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Vous pouvez indiquer le DN de base de vos utilisateurs et groupes via l'onglet Avancé",
"Detect Base DN" : "Détecter le DN de base",
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
@@ -122,7 +122,7 @@ OC.L10N.register(
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recommandé, à utiliser à des fins de tests uniquement. Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur %s.",
"Cache Time-To-Live" : "Durée de vie du cache (TTL)",
"in seconds. A change empties the cache." : "en secondes. Tout changement vide le cache.",
- "Directory Settings" : "Paramètres du répertoire",
+ "Directory Settings" : "Paramètres du dossier",
"User Display Name Field" : "Champ \"nom d'affichage\" de l'utilisateur",
"The LDAP attribute to use to generate the user's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage de l'utilisateur.",
"2nd User Display Name Field" : "Second attribut pour le nom d'affichage",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Limit %s access to users meeting these criteria:" : "Limiter l'accès à %s aux utilisateurs validant ces critères :",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé depuis l'attribut UUID. Cela permet de s'assurer que le nom d'utilisateur est unique et que les caractères n'ont pas besoin d'être convertis. Le nom d'utilisateur interne a pour restriction de ne contenir que les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leurs correspondants ASCII ou simplement omis. En cas de collisions, un nombre sera ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier un utilisateur en interne. C'est aussi le nom par défaut du dossier personnel de l'utilisateur. Il fait aussi parti des URLs distantes, par exemple pour tous les services *DAV. Avec ce paramètre, le comportement par défaut peut être écrasé. Pour avoir un comportement similaire à ownCloud 5, entrez le nom d'affichage de l'utilisateur dans le champ suivant. Laissez le vide pour utiliser le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux utilisateurs LDAP mappés (ajoutés)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index 89d9190fa32..7f402c10a50 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -3,12 +3,12 @@
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
"The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
"The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
+ "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
"The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
- " Could not set configuration %s" : "Impossible de spécifier la configuration %s",
+ " Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
"Action does not exist" : "L'action n'existe pas",
"The Base DN appears to be wrong" : "Le DN de base est erroné",
"Testing configuration…" : "Test de configuration",
@@ -18,9 +18,9 @@
"Select groups" : "Sélectionnez les groupes",
"Select object classes" : "Sélectionner les classes d'objet",
"Please check the credentials, they seem to be wrong." : "Veuillez vérifier vos informations d'identification",
- "Please specify the port, it could not be auto-detected." : "Veuillez spécifier le port, il n'a pu être détecté automatiquement",
+ "Please specify the port, it could not be auto-detected." : "Veuillez indiquer le port, il n'a pu être détecté automatiquement.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Le DN de base n'a pu être détecté automatiquement. Vérifiez les informations d'identification, l'hôte et le port.",
- "Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le spécifier manuellement",
+ "Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le saisir manuellement.",
"{nthServer}. Server" : "{nthServer}. Serveur",
"No object found in the given Base DN. Please revise." : "Aucun objet trouvé dans le DN de base spécifié. Veuillez le vérifier.",
"More than 1,000 directory entries available." : "Il y a plus de 1 000 entrées de répertoire disponibles.",
@@ -34,11 +34,11 @@
"LDAP Operations error. Anonymous bind might not be allowed." : "Erreur LDAP. La connexion anonyme au serveur n'est probablement pas acceptée.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
- "Mode switch" : "Changer de mode",
+ "Mode switch" : "Basculer de mode",
"Select attributes" : "Sélectionner les attributs",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.",
"An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
@@ -87,7 +87,7 @@
"Password" : "Mot de passe",
"For anonymous access, leave DN and Password empty." : "Pour un accès anonyme, laisser le DN utilisateur et le mot de passe vides.",
"One Base DN per line" : "Un DN de base par ligne",
- "You can specify Base DN for users and groups in the Advanced tab" : "Vous pouvez spécifier les DN de base de vos utilisateurs et groupes via l'onglet Avancé",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Vous pouvez indiquer le DN de base de vos utilisateurs et groupes via l'onglet Avancé",
"Detect Base DN" : "Détecter le DN de base",
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
@@ -120,7 +120,7 @@
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recommandé, à utiliser à des fins de tests uniquement. Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur %s.",
"Cache Time-To-Live" : "Durée de vie du cache (TTL)",
"in seconds. A change empties the cache." : "en secondes. Tout changement vide le cache.",
- "Directory Settings" : "Paramètres du répertoire",
+ "Directory Settings" : "Paramètres du dossier",
"User Display Name Field" : "Champ \"nom d'affichage\" de l'utilisateur",
"The LDAP attribute to use to generate the user's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage de l'utilisateur.",
"2nd User Display Name Field" : "Second attribut pour le nom d'affichage",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Limit %s access to users meeting these criteria:" : "Limiter l'accès à %s aux utilisateurs validant ces critères :",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé depuis l'attribut UUID. Cela permet de s'assurer que le nom d'utilisateur est unique et que les caractères n'ont pas besoin d'être convertis. Le nom d'utilisateur interne a pour restriction de ne contenir que les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leurs correspondants ASCII ou simplement omis. En cas de collisions, un nombre sera ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier un utilisateur en interne. C'est aussi le nom par défaut du dossier personnel de l'utilisateur. Il fait aussi parti des URLs distantes, par exemple pour tous les services *DAV. Avec ce paramètre, le comportement par défaut peut être écrasé. Pour avoir un comportement similaire à ownCloud 5, entrez le nom d'affichage de l'utilisateur dans le champ suivant. Laissez le vide pour utiliser le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux utilisateurs LDAP mappés (ajoutés)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js
index 3925451ea9f..9cc55ca97cf 100644
--- a/apps/user_ldap/l10n/gl.js
+++ b/apps/user_ldap/l10n/gl.js
@@ -38,7 +38,6 @@ OC.L10N.register(
"Select attributes" : "Seleccione os atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Non se atopou o usuario. Recomendase consultar os atributos de acceso e o nome de usuario. Filtro eficaz (copiar e pegar para a validación en liña de ordes): <br/>",
"User found and settings verified." : "Atopouse o usuario e verificáronse os axustes.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso.",
"An unspecified error occurred. Please check the settings and the log." : "Produciuse un erro non agardado. Comprobe os axustes e o rexistro.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de busca é incorrecto, probabelmente por mor de erros de sintaxe como un número impar de chaves de apertura/peche. Revíseo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Produciuse un erro de conexión no LDAP / AD, comprobe a máquina o porto e as credenciais.",
@@ -150,6 +149,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Asignación do usuario ao «nome de usuario LDAP»",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar (meta) datos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome de usuario interno. Isto require unha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun entorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
"Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»",
- "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»"
+ "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json
index 4ba0f687666..794296dd32b 100644
--- a/apps/user_ldap/l10n/gl.json
+++ b/apps/user_ldap/l10n/gl.json
@@ -36,7 +36,6 @@
"Select attributes" : "Seleccione os atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Non se atopou o usuario. Recomendase consultar os atributos de acceso e o nome de usuario. Filtro eficaz (copiar e pegar para a validación en liña de ordes): <br/>",
"User found and settings verified." : "Atopouse o usuario e verificáronse os axustes.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso.",
"An unspecified error occurred. Please check the settings and the log." : "Produciuse un erro non agardado. Comprobe os axustes e o rexistro.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de busca é incorrecto, probabelmente por mor de erros de sintaxe como un número impar de chaves de apertura/peche. Revíseo.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Produciuse un erro de conexión no LDAP / AD, comprobe a máquina o porto e as credenciais.",
@@ -148,6 +147,7 @@
"Username-LDAP User Mapping" : "Asignación do usuario ao «nome de usuario LDAP»",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar (meta) datos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome de usuario interno. Isto require unha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun entorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
"Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»",
- "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»"
+ "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index 67e716f2fce..cd053463861 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "בחירת מאפיינים",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "משתמש לא אותר. יש לבדוק את מאפייני ההתחברות ושם המשתמש. מסנן אפקטיבי (העתקה והדבקה לאימות שורת פקודה):<br/>",
"User found and settings verified." : "משתמש אותר והגדרות אומתו.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר.",
"An unspecified error occurred. Please check the settings and the log." : "אירעה שגיאה לא מזוהה. יש לבדוק את ההגדרות ואת הלוג.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "סינון החיפוש אינו חוקי. ככל הנראה בשל שיאה תחבירית כגון מספר לא שווה של פתח-סוגריים וסגור-סוגריים. יש לתקן.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ",
@@ -149,6 +148,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
- "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 77942e51e58..53e2c2c5a8d 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -38,7 +38,6 @@
"Select attributes" : "בחירת מאפיינים",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "משתמש לא אותר. יש לבדוק את מאפייני ההתחברות ושם המשתמש. מסנן אפקטיבי (העתקה והדבקה לאימות שורת פקודה):<br/>",
"User found and settings verified." : "משתמש אותר והגדרות אומתו.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר.",
"An unspecified error occurred. Please check the settings and the log." : "אירעה שגיאה לא מזוהה. יש לבדוק את ההגדרות ואת הלוג.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "סינון החיפוש אינו חוקי. ככל הנראה בשל שיאה תחבירית כגון מספר לא שווה של פתח-סוגריים וסגור-סוגריים. יש לתקן.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ",
@@ -147,6 +146,7 @@
"UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
- "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/hu_HU.js b/apps/user_ldap/l10n/hu_HU.js
index 4873d82aac6..0b1327503ac 100644
--- a/apps/user_ldap/l10n/hu_HU.js
+++ b/apps/user_ldap/l10n/hu_HU.js
@@ -37,7 +37,6 @@ OC.L10N.register(
"Mode switch" : "Üzemmód váltás",
"Select attributes" : "Attribútumok kiválasztása",
"User found and settings verified." : "Felhasználó megtalálva, beállítások ellenőrizve.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Beállítások ellenőrizve, de egy felhasználó található. Csak az első léphet be automatikusan. Próbálj egy pontosabb szűrőt.",
"An unspecified error occurred. Please check the settings and the log." : "Meghatározatlan hiba történt. Kérlek ellenőrizd a beállításokat és a naplót.",
"Password change rejected. Hint: " : "Jelszó módosítás elutasítva. Tipp:",
"LDAP / AD integration" : "LDAP / AD integráció",
@@ -130,6 +129,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "A csoportok UUID attribútuma:",
"Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés",
"Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése",
- "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése"
+ "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Beállítások ellenőrizve, de egy felhasználó található. Csak az első léphet be automatikusan. Próbálj egy pontosabb szűrőt."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/hu_HU.json b/apps/user_ldap/l10n/hu_HU.json
index 889a5c79ebd..a76c333add7 100644
--- a/apps/user_ldap/l10n/hu_HU.json
+++ b/apps/user_ldap/l10n/hu_HU.json
@@ -35,7 +35,6 @@
"Mode switch" : "Üzemmód váltás",
"Select attributes" : "Attribútumok kiválasztása",
"User found and settings verified." : "Felhasználó megtalálva, beállítások ellenőrizve.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Beállítások ellenőrizve, de egy felhasználó található. Csak az első léphet be automatikusan. Próbálj egy pontosabb szűrőt.",
"An unspecified error occurred. Please check the settings and the log." : "Meghatározatlan hiba történt. Kérlek ellenőrizd a beállításokat és a naplót.",
"Password change rejected. Hint: " : "Jelszó módosítás elutasítva. Tipp:",
"LDAP / AD integration" : "LDAP / AD integráció",
@@ -128,6 +127,7 @@
"UUID Attribute for Groups:" : "A csoportok UUID attribútuma:",
"Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés",
"Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése",
- "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése"
+ "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Beállítások ellenőrizve, de egy felhasználó található. Csak az első léphet be automatikusan. Próbálj egy pontosabb szűrőt."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index 252fb9bd4ef..7f256c26649 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -40,13 +40,15 @@ OC.L10N.register(
"Select attributes" : "Pilih atribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.",
"An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Placeholder %uid tidak ada. Placeholder akan digantikan dengan nama login saat melakukan kueri LDAP / AD.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah dinonaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
+ "Password change rejected. Hint: " : "Perubahan sandi ditolak. Petunjuk:",
+ "LDAP / AD integration" : "Integrasi LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -141,6 +143,9 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)",
"Paging chunksize" : "Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize digunakan untuk pencarian paged LDAP yang mengembalikan hasil secara massal seperti enumerasi pengguna dan grup. (Atur dengan nilai 0 untuk menonaktifkan pencarian paged LDAP dalam situasi tersebut.)",
+ "Enable LDAP password changes per user" : "Aktifkan perubahan sandi LDAP per pengguna",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Perbolehkan pengguna LDAP mengubah sandi mereka dan perbolehkan Administrator Super dan Administrator Grup untuk mengubah sandi pengguna LDAP mereka. Hanya bekerja ketika kebijaksanaan akses kontrol terconfigurasi berdasarkan server LDAP. Sebagaimana sandi dikirim dalam plain teks ke server LDAP, pengiriman enkripsi harus digunakan dan hashing sandi harus terkonfigurasi di server LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(Sandi baru dikirim sebagai plain teks ke LDAP)",
"Special Attributes" : "Atribut Khusus",
"Quota Field" : "Kolom Kuota",
"Quota Default" : "Kuota Baku",
@@ -158,6 +163,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
- "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit."
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index e4675c1c0fc..7fc32321558 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -38,13 +38,15 @@
"Select attributes" : "Pilih atribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.",
"An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Placeholder %uid tidak ada. Placeholder akan digantikan dengan nama login saat melakukan kueri LDAP / AD.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah dinonaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
+ "Password change rejected. Hint: " : "Perubahan sandi ditolak. Petunjuk:",
+ "LDAP / AD integration" : "Integrasi LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -139,6 +141,9 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)",
"Paging chunksize" : "Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize digunakan untuk pencarian paged LDAP yang mengembalikan hasil secara massal seperti enumerasi pengguna dan grup. (Atur dengan nilai 0 untuk menonaktifkan pencarian paged LDAP dalam situasi tersebut.)",
+ "Enable LDAP password changes per user" : "Aktifkan perubahan sandi LDAP per pengguna",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Perbolehkan pengguna LDAP mengubah sandi mereka dan perbolehkan Administrator Super dan Administrator Grup untuk mengubah sandi pengguna LDAP mereka. Hanya bekerja ketika kebijaksanaan akses kontrol terconfigurasi berdasarkan server LDAP. Sebagaimana sandi dikirim dalam plain teks ke server LDAP, pengiriman enkripsi harus digunakan dan hashing sandi harus terkonfigurasi di server LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(Sandi baru dikirim sebagai plain teks ke LDAP)",
"Special Attributes" : "Atribut Khusus",
"Quota Field" : "Kolom Kuota",
"Quota Default" : "Kuota Baku",
@@ -156,6 +161,7 @@
"Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
- "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index 75c862abe94..17f9a67b2a0 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Seleziona gli attributi",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):<br/>",
"User found and settings verified." : "Utente trovato e impostazioni verificate.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
"An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Limit %s access to users meeting these criteria:" : "Limita l'accesso a %s agli utenti che verificano questi criteri:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o sono semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è utilizzato per identificare un utente internamente. Rappresenta, inoltre, il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi *DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Per ottenere una comportamento simile alle versioni precedenti ownCloud 5, digita il nome visualizzato dell'utente nel campo seguente. Lascialo vuoto per ottenere il comportamento predefinito. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 56c744c28ce..1b3fd64bd99 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -38,7 +38,7 @@
"Select attributes" : "Seleziona gli attributi",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):<br/>",
"User found and settings verified." : "Utente trovato e impostazioni verificate.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
"An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Limit %s access to users meeting these criteria:" : "Limita l'accesso a %s agli utenti che verificano questi criteri:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o sono semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è utilizzato per identificare un utente internamente. Rappresenta, inoltre, il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi *DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Per ottenere una comportamento simile alle versioni precedenti ownCloud 5, digita il nome visualizzato dell'utente nel campo seguente. Lascialo vuoto per ottenere il comportamento predefinito. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index 8673de7a067..0f337bd0b65 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "属性を選択",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます): <br/>",
"User found and settings verified." : "ユーザーが見つかり、設定が検証できました。",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
"An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、すべてのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Limit %s access to users meeting these criteria:" : "次の条件を満たしているユーザーに %s アクセスを限定:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部ユーザー名はUUID属性から作成されます。 これによりユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[a-zA-Z0-9_.@-]という文字のみが使用できるという制限があります。その他の文字は対応するASCII文字に置き換えられるか、単に省略されます。内部名が衝突するとサフィックスの数値が増減します。 内部ユーザー名は、内部的にユーザーを識別するために使用されます。 また、ユーザーホームフォルダの既定の名前です。 また、*DAVサービスなどのすべてのリモートURLの一部です。 この設定では、デフォルトの動作を再定義することができます。 以前のownCloud5 と同様の動作を実現するには、次のフィールドにユーザーの表示名属性を入力します。 デフォルト動作では空のままにします。 変更は新しくマッピング(追加)されたLDAPユーザーにのみ有効です。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index 7469282e200..767727d2d4a 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -38,7 +38,7 @@
"Select attributes" : "属性を選択",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます): <br/>",
"User found and settings verified." : "ユーザーが見つかり、設定が検証できました。",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
"An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、すべてのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Limit %s access to users meeting these criteria:" : "次の条件を満たしているユーザーに %s アクセスを限定:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部ユーザー名はUUID属性から作成されます。 これによりユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[a-zA-Z0-9_.@-]という文字のみが使用できるという制限があります。その他の文字は対応するASCII文字に置き換えられるか、単に省略されます。内部名が衝突するとサフィックスの数値が増減します。 内部ユーザー名は、内部的にユーザーを識別するために使用されます。 また、ユーザーホームフォルダの既定の名前です。 また、*DAVサービスなどのすべてのリモートURLの一部です。 この設定では、デフォルトの動作を再定義することができます。 以前のownCloud5 と同様の動作を実現するには、次のフィールドにユーザーの表示名属性を入力します。 デフォルト動作では空のままにします。 変更は新しくマッピング(追加)されたLDAPユーザーにのみ有効です。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js
index 05745a69532..cf783656e5d 100644
--- a/apps/user_ldap/l10n/ko.js
+++ b/apps/user_ldap/l10n/ko.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "속성 선택",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):",
"User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오.",
"An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
@@ -156,6 +155,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "사용자 이름은 (메타)데이터를 저장하고 할당하는 데 사용됩니다. 사용자를 정확히 식별하기 위해서 모든 LDAP 사용자는 내부 사용자 이름을 갖고 있습니다. 이 정보에 접근하려면 사용자 이름과 LDAP 사용자 사이의 연결을 알아야 합니다. 생성된 사용자 이름은 LDAP 사용자의 UUID에 연결됩니다. LDAP에 연결하는 횟수를 줄이기 위하여 DN을 캐시에 저장하지만, 식별에는 사용하지 않습니다. DN이 변경되었을 때 변경 사항이 적용됩니다. 내부 사용자 이름은 항상 사용됩니다. 매핑을 비우면 과거 매핑의 흔적이 남습니다. 매핑을 비우는 것은 설정에 관계 없이 적용되므로 모든 LDAP 설정에 영향을 줍니다! 테스트 및 실험 단계에서만 매핑을 비우고, 상용 환경에서는 매핑을 비우지 마십시오.",
"Clear Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑 비우기",
- "Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기"
+ "Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오."
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json
index be2f22f54d0..f96c599960a 100644
--- a/apps/user_ldap/l10n/ko.json
+++ b/apps/user_ldap/l10n/ko.json
@@ -38,7 +38,6 @@
"Select attributes" : "속성 선택",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):",
"User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오.",
"An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
@@ -154,6 +153,7 @@
"Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "사용자 이름은 (메타)데이터를 저장하고 할당하는 데 사용됩니다. 사용자를 정확히 식별하기 위해서 모든 LDAP 사용자는 내부 사용자 이름을 갖고 있습니다. 이 정보에 접근하려면 사용자 이름과 LDAP 사용자 사이의 연결을 알아야 합니다. 생성된 사용자 이름은 LDAP 사용자의 UUID에 연결됩니다. LDAP에 연결하는 횟수를 줄이기 위하여 DN을 캐시에 저장하지만, 식별에는 사용하지 않습니다. DN이 변경되었을 때 변경 사항이 적용됩니다. 내부 사용자 이름은 항상 사용됩니다. 매핑을 비우면 과거 매핑의 흔적이 남습니다. 매핑을 비우는 것은 설정에 관계 없이 적용되므로 모든 LDAP 설정에 영향을 줍니다! 테스트 및 실험 단계에서만 매핑을 비우고, 상용 환경에서는 매핑을 비우지 마십시오.",
"Clear Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑 비우기",
- "Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기"
+ "Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js
index 7207e24b31e..17289116064 100644
--- a/apps/user_ldap/l10n/nb_NO.js
+++ b/apps/user_ldap/l10n/nb_NO.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Velg attributter",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
"User found and settings verified." : "Bruker funnet og innstillingene sjekket.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
"An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Vennligst sjekk.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
@@ -159,6 +158,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe",
- "Limit %s access to users meeting these criteria:" : "Begrens tilgang til %s for brukere som møter følgende kriterier:"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json
index 2f3cbd3ba4b..18f1cdd8838 100644
--- a/apps/user_ldap/l10n/nb_NO.json
+++ b/apps/user_ldap/l10n/nb_NO.json
@@ -38,7 +38,6 @@
"Select attributes" : "Velg attributter",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
"User found and settings verified." : "Bruker funnet og innstillingene sjekket.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
"An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Vennligst sjekk.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
@@ -157,6 +156,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe",
- "Limit %s access to users meeting these criteria:" : "Begrens tilgang til %s for brukere som møter følgende kriterier:"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 81a39454479..b8caaf20ed3 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Selecteer attributen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
"An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud maakt gebruik van gebruikersnamen om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de ownCloud gebruikersnaam aan een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne naam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Limit %s access to users meeting these criteria:" : "Beperk %s toegang tot gebruikers die voldoen aan deze criteria:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standaard wordt de interne gebruikersnaam afgeleid van het UUID attribuut. dat zorgt ervoor dat de gebruikersnaam uniek is en dat tekens niet hoeven te worden geconverteerd. De interne gebruikersnaam heeft de beperking dat alleen deze tekens zijn toegestaan: [ a-zA-Z0-9_.@- ]. Andere tekens worden vervangen door hun overeenkomstige ASCII-waarde of simpelweg weggelaten. Bij conflicten wordt een nummer toegevoegd/verhoogd. De interne gebruikersnaam wordt gebruikt om een gebruiker intern te identificeren. Het is ook de standaardnaam voor de thuis-map van de gebruiker. Het is ook onderdeel van de externe URLs, bijvoorbeeld voor alle *DAV services. Met deze instelling kan het standaardgedrag worden overschreven.\nOm dezelfde werkwijze als vóór ownCloud 5 te krijgen, geef je de weergavenaam van de gebruiker op in het volgend veld. Laat het leeg voor de standaardwerkwijze. Wijzigingen hebben alleen effect voor nieuw gekoppelde (toegevoegde) LDAP gebruikers."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index f6d87fa76c4..79816be4075 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -38,7 +38,7 @@
"Select attributes" : "Selecteer attributen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
"An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud maakt gebruik van gebruikersnamen om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de ownCloud gebruikersnaam aan een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne naam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Limit %s access to users meeting these criteria:" : "Beperk %s toegang tot gebruikers die voldoen aan deze criteria:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Standaard wordt de interne gebruikersnaam afgeleid van het UUID attribuut. dat zorgt ervoor dat de gebruikersnaam uniek is en dat tekens niet hoeven te worden geconverteerd. De interne gebruikersnaam heeft de beperking dat alleen deze tekens zijn toegestaan: [ a-zA-Z0-9_.@- ]. Andere tekens worden vervangen door hun overeenkomstige ASCII-waarde of simpelweg weggelaten. Bij conflicten wordt een nummer toegevoegd/verhoogd. De interne gebruikersnaam wordt gebruikt om een gebruiker intern te identificeren. Het is ook de standaardnaam voor de thuis-map van de gebruiker. Het is ook onderdeel van de externe URLs, bijvoorbeeld voor alle *DAV services. Met deze instelling kan het standaardgedrag worden overschreven.\nOm dezelfde werkwijze als vóór ownCloud 5 te krijgen, geef je de weergavenaam van de gebruiker op in het volgend veld. Laat het leeg voor de standaardwerkwijze. Wijzigingen hebben alleen effect voor nieuw gekoppelde (toegevoegde) LDAP gebruikers."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index 0c2955c2881..37ebe04de02 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -6,7 +6,7 @@ OC.L10N.register(
"The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
"The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dalszych szczegółów.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
@@ -32,17 +32,25 @@ OC.L10N.register(
"Confirm Deletion" : "Potwierdź usunięcie",
"Mappings cleared successfully!" : "Mapowanie wyczyszczone!",
"Error while clearing the mappings." : "Błąd podczas czyszczenia mapowania.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonimowe połączenie nie jest dozwolone. Proszę podać DN użytkownika i hasło.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Błąd operacji LDAP. Anonimowe połączenie nie jest dozwolone.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Zapis się nie udał. Proszę upewnij się, że baza danych jest uruchomiona. Przeładuj przed kontynuowaniem.",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
"User found and settings verified." : "Użytkownik nie znalazł ustawienia zweryfikowanego.",
- "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup"],
- "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników"],
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia są poprawne, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
+ "Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
+ "LDAP / AD integration" : "Integracja z LDAP / AD",
+ "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
+ "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.",
"Could not find the desired feature" : "Nie można znaleźć żądanej funkcji",
"Invalid Host" : "Niepoprawny Host",
"Test Configuration" : "Konfiguracja testowa",
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
+ "Only these object classes:" : "Tylko te klasy obiektów:",
"Only from these groups:" : "Tylko z tych grup:",
"Search groups" : "Przeszukaj grupy",
"Available groups" : "Dostępne grupy",
@@ -54,11 +62,14 @@ OC.L10N.register(
"When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
"LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
"LDAP / AD Email Address:" : "Adres email LDAP/AD:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Pozwól na logowanie poprzez atrybut email. Mail i mailPrimaryAddress będą dozwolone.",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
+ "Test Loginname" : "Testowa nazwa użytkownika",
"Verify settings" : "Weryfikuj ustawienia",
"1. Server" : "1. Serwer",
"%s. Server:" : "%s. Serwer:",
+ "Add a new and blank configuration" : "Dodaj nową pustą konfigurację",
"Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji",
"Delete the current configuration" : "Usuwa aktualną konfigurację",
"Host" : "Host",
@@ -71,9 +82,13 @@ OC.L10N.register(
"For anonymous access, leave DN and Password empty." : "Dla dostępu anonimowego pozostawić DN i hasło puste.",
"One Base DN per line" : "Jedna baza DN na linię",
"You can specify Base DN for users and groups in the Advanced tab" : "Bazę DN można określić dla użytkowników i grup w karcie Zaawansowane",
+ "Detect Base DN" : "Wykryj DN bazy danych LDAP / AD",
+ "Test Base DN" : "Sprawdź DN bazy danych LDAP / AD",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zapobiega automatycznym zapytaniom LDAP. Lepsze dla większych instalacji, lecz wymaga pewnej wiedzy o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ręcznie wprowadzaj filtry LDAP (zalecane dla dużych katalogów)",
+ "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr określa, którzy użytkownicy LDAP powinni mieć dostęp do instancji %s.",
+ "Verify settings and count users" : "Sprawdź ustawienia i policz użytkowników",
"Saving" : "Zapisuję",
"Back" : "Wróć",
"Continue" : "Kontynuuj ",
@@ -101,6 +116,8 @@ OC.L10N.register(
"Directory Settings" : "Ustawienia katalogów",
"User Display Name Field" : "Pole wyświetlanej nazwy użytkownika",
"The LDAP attribute to use to generate the user's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy użytkownika ownCloud.",
+ "2nd User Display Name Field" : "Drugie pole wyświetlanej nazwy użytkownika",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcjonalnie. Atrybut LDAP, który będzie w nawiasach dodany do wyświetlanej nazwy użytkownika. Przykładowy wynik: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "Drzewo bazy użytkowników",
"One User Base DN per line" : "Jeden użytkownik Bazy DN na linię",
"User Search Attributes" : "Szukaj atrybutów",
@@ -116,6 +133,8 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kiedy włączone, grupy, które zawierają grupy, są wspierane. (Działa tylko, jeśli członek grupy ma ustawienie DNs)",
"Paging chunksize" : "Wielkość stronicowania",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Długość łańcucha jest używana do stronicowanych wyszukiwań LDAP, które mogą zwracać duże zbiory jak lista grup, czy użytkowników. (Ustawienie na 0 wyłącza stronicowane wyszukiwania w takich sytuacjach.)",
+ "Enable LDAP password changes per user" : "Włącz zmianę hasła LDAP przez użytkownika",
+ "(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)",
"Special Attributes" : "Specjalne atrybuty",
"Quota Field" : "Pole przydziału",
"Quota Default" : "Przydział domyślny",
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index 9f73cc4c753..6c9f4d2aeef 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -4,7 +4,7 @@
"The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
"The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dalszych szczegółów.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
@@ -30,17 +30,25 @@
"Confirm Deletion" : "Potwierdź usunięcie",
"Mappings cleared successfully!" : "Mapowanie wyczyszczone!",
"Error while clearing the mappings." : "Błąd podczas czyszczenia mapowania.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonimowe połączenie nie jest dozwolone. Proszę podać DN użytkownika i hasło.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Błąd operacji LDAP. Anonimowe połączenie nie jest dozwolone.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Zapis się nie udał. Proszę upewnij się, że baza danych jest uruchomiona. Przeładuj przed kontynuowaniem.",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
"User found and settings verified." : "Użytkownik nie znalazł ustawienia zweryfikowanego.",
- "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup"],
- "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników"],
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia są poprawne, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
+ "Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
+ "LDAP / AD integration" : "Integracja z LDAP / AD",
+ "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
+ "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.",
"Could not find the desired feature" : "Nie można znaleźć żądanej funkcji",
"Invalid Host" : "Niepoprawny Host",
"Test Configuration" : "Konfiguracja testowa",
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
+ "Only these object classes:" : "Tylko te klasy obiektów:",
"Only from these groups:" : "Tylko z tych grup:",
"Search groups" : "Przeszukaj grupy",
"Available groups" : "Dostępne grupy",
@@ -52,11 +60,14 @@
"When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
"LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
"LDAP / AD Email Address:" : "Adres email LDAP/AD:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Pozwól na logowanie poprzez atrybut email. Mail i mailPrimaryAddress będą dozwolone.",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
+ "Test Loginname" : "Testowa nazwa użytkownika",
"Verify settings" : "Weryfikuj ustawienia",
"1. Server" : "1. Serwer",
"%s. Server:" : "%s. Serwer:",
+ "Add a new and blank configuration" : "Dodaj nową pustą konfigurację",
"Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji",
"Delete the current configuration" : "Usuwa aktualną konfigurację",
"Host" : "Host",
@@ -69,9 +80,13 @@
"For anonymous access, leave DN and Password empty." : "Dla dostępu anonimowego pozostawić DN i hasło puste.",
"One Base DN per line" : "Jedna baza DN na linię",
"You can specify Base DN for users and groups in the Advanced tab" : "Bazę DN można określić dla użytkowników i grup w karcie Zaawansowane",
+ "Detect Base DN" : "Wykryj DN bazy danych LDAP / AD",
+ "Test Base DN" : "Sprawdź DN bazy danych LDAP / AD",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zapobiega automatycznym zapytaniom LDAP. Lepsze dla większych instalacji, lecz wymaga pewnej wiedzy o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ręcznie wprowadzaj filtry LDAP (zalecane dla dużych katalogów)",
+ "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr określa, którzy użytkownicy LDAP powinni mieć dostęp do instancji %s.",
+ "Verify settings and count users" : "Sprawdź ustawienia i policz użytkowników",
"Saving" : "Zapisuję",
"Back" : "Wróć",
"Continue" : "Kontynuuj ",
@@ -99,6 +114,8 @@
"Directory Settings" : "Ustawienia katalogów",
"User Display Name Field" : "Pole wyświetlanej nazwy użytkownika",
"The LDAP attribute to use to generate the user's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy użytkownika ownCloud.",
+ "2nd User Display Name Field" : "Drugie pole wyświetlanej nazwy użytkownika",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcjonalnie. Atrybut LDAP, który będzie w nawiasach dodany do wyświetlanej nazwy użytkownika. Przykładowy wynik: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "Drzewo bazy użytkowników",
"One User Base DN per line" : "Jeden użytkownik Bazy DN na linię",
"User Search Attributes" : "Szukaj atrybutów",
@@ -114,6 +131,8 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kiedy włączone, grupy, które zawierają grupy, są wspierane. (Działa tylko, jeśli członek grupy ma ustawienie DNs)",
"Paging chunksize" : "Wielkość stronicowania",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Długość łańcucha jest używana do stronicowanych wyszukiwań LDAP, które mogą zwracać duże zbiory jak lista grup, czy użytkowników. (Ustawienie na 0 wyłącza stronicowane wyszukiwania w takich sytuacjach.)",
+ "Enable LDAP password changes per user" : "Włącz zmianę hasła LDAP przez użytkownika",
+ "(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)",
"Special Attributes" : "Specjalne atrybuty",
"Quota Field" : "Pole przydziału",
"Quota Default" : "Przydział domyślny",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index dc4f1b43c71..82316b171a1 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Select attributes" : "Selecione os atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando): <br/>",
"User found and settings verified." : "Usuário encontrado e configurações verificadas.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas um usuário encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
"An unspecified error occurred. Please check the settings and the log." : "SetAn Ocorreu um erro não especificado. Por favor, verifique as configurações e os log.tings verificadas, mas um usuário encontrado. Apenas o primeiro será capaz de login. Considere um filtro mais apurado.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, a porta e as credenciais.",
@@ -164,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensível, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo",
- "Limit %s access to users meeting these criteria:" : "Limita o acesso a %s para usuários que satisfaçam estes critérios:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Isto garante que o nome de usuário é único e caracteress não precisam ser convertidos. O nome de usuário interno tem a restrição de que apenas estes caracteres são permitidos: [a-zA-Z0-9 _ @ -.]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões será adicionado um número/adicionado. O nome de utilizador interno é utilizado para identificar um utilizador internamente. É também o nome padrão para a pasta de usuário doméstico. É também uma parte de URLs remotas, por exemplo para todos os serviços *DAV. Com esta definição, o comportamento padrão pode ser substituído. Para conseguir um comportamento semelhante como antes no ownCloud 5 insira o atributo do nome de exibição do usuário no campo seguinte. Deixe em branco para o comportamento padrão. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 03ae6313654..2422ae147c0 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -38,7 +38,7 @@
"Select attributes" : "Selecione os atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando): <br/>",
"User found and settings verified." : "Usuário encontrado e configurações verificadas.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas um usuário encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
"An unspecified error occurred. Please check the settings and the log." : "SetAn Ocorreu um erro não especificado. Por favor, verifique as configurações e os log.tings verificadas, mas um usuário encontrado. Apenas o primeiro será capaz de login. Considere um filtro mais apurado.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, a porta e as credenciais.",
@@ -162,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensível, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo",
- "Limit %s access to users meeting these criteria:" : "Limita o acesso a %s para usuários que satisfaçam estes critérios:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Isto garante que o nome de usuário é único e caracteress não precisam ser convertidos. O nome de usuário interno tem a restrição de que apenas estes caracteres são permitidos: [a-zA-Z0-9 _ @ -.]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões será adicionado um número/adicionado. O nome de utilizador interno é utilizado para identificar um utilizador internamente. É também o nome padrão para a pasta de usuário doméstico. É também uma parte de URLs remotas, por exemplo para todos os serviços *DAV. Com esta definição, o comportamento padrão pode ser substituído. Para conseguir um comportamento semelhante como antes no ownCloud 5 insira o atributo do nome de exibição do usuário no campo seguinte. Deixe em branco para o comportamento padrão. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados)."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index ea00405f04b..6ddc7687742 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Selecionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação): <br/>",
"User found and settings verified." : "Utilizador encontrado e as definilções verificadas",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico.",
"An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.",
@@ -157,6 +156,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeamento do utilizador LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestígios em todo o lado. A limpeza dos mapeamentos não é sensível à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index 253b95d400f..65c9529f962 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -38,7 +38,6 @@
"Select attributes" : "Selecionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação): <br/>",
"User found and settings verified." : "Utilizador encontrado e as definilções verificadas",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico.",
"An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.",
@@ -155,6 +154,7 @@
"Username-LDAP User Mapping" : "Mapeamento do utilizador LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestígios em todo o lado. A limpeza dos mapeamentos não é sensível à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index eb3e01ac66d..9fd5488025f 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -40,13 +40,14 @@ OC.L10N.register(
"Select attributes" : "Выберите атрибуты",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке): <br/>",
"User found and settings verified." : "Пользователь найден и настройки проверены.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.",
"An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель %uid. Он будет заменен на логин при запросе к LDAP / AD.",
"Please provide a login name to test against" : "Пожалуйста укажите логин для проверки",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.",
+ "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:",
"LDAP / AD integration" : "Интеграция LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
"_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
@@ -142,6 +143,9 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "При включении, активируется поддержка групп, содержащих другие группы. (Работает только если атрибут член группы содержит DN.)",
"Paging chunksize" : "Страничный размер блоков",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "ChunkSize используется в страничных поисках LDAP которые могут возвращать громоздкие результаты, как например списки пользователей или групп. (Установка значения в \"0\" отключает страничный поиск LDAP для таких ситуаций.)",
+ "Enable LDAP password changes per user" : "Позволить пользователю изменять пароль LDAP",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Позволить пользователям менять свои пароли LDAP и позволить Супер Администраторам и Администраторам Групп менять пароли своих пользователей LDAP. Работает только в случае, когда политики управления доступом настроены соответствующим образом на сервере LDAP. Поскольку пароли пересылаются простым текстом на сервер LDAP, необходимо использовать шифрование канала передачи и хеширование паролей на сервере LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(Новый пароль отправлен в LDAP простым текстом)",
"Special Attributes" : "Специальные атрибуты",
"Quota Field" : "Поле квоты",
"Quota Default" : "Квота по умолчанию",
@@ -160,7 +164,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя ownCloud используется повсеместно в ownCloud. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Limit %s access to users meeting these criteria:" : "Ограничить %s доступ для пользователей, отвечающих следующим критериям:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "По умолчанию внутреннее имя пользователя будет создано из атрибута UUID. Это даёт гарантию того, что имя пользователя уникально и символы не нужно конвертировать. Во внутреннем имени пользователя можно использовать только следующие символы: [ a-zA-Z0-9_.@- ]. Другие символы замещаются их корреспондирующими символами ASCII или же просто отбрасываются. В крайнем случае будет добавлен/увеличен номер. Внутреннее имя используется для идентификации пользователя внутри системы. Также оно по умолчанию используется для имени домашней папки пользователя. Это также часть адресов URL, например, для всех служб *DAV. С помощью этой установки поведение по умолчанию может быть изменено. Для установки поведения, которое было до ownCloud 5, введите в это поле имя пользователя. Оставьте его пустым для поведения по умолчанию. Изменения будут иметь эффект только для вновь спроецированных (добавленных) пользователей LDAP. "
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр."
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index d9c2c9b00fc..0c3e148ec7b 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -38,13 +38,14 @@
"Select attributes" : "Выберите атрибуты",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке): <br/>",
"User found and settings verified." : "Пользователь найден и настройки проверены.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.",
"An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель %uid. Он будет заменен на логин при запросе к LDAP / AD.",
"Please provide a login name to test against" : "Пожалуйста укажите логин для проверки",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.",
+ "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:",
"LDAP / AD integration" : "Интеграция LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
"_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
@@ -140,6 +141,9 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "При включении, активируется поддержка групп, содержащих другие группы. (Работает только если атрибут член группы содержит DN.)",
"Paging chunksize" : "Страничный размер блоков",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "ChunkSize используется в страничных поисках LDAP которые могут возвращать громоздкие результаты, как например списки пользователей или групп. (Установка значения в \"0\" отключает страничный поиск LDAP для таких ситуаций.)",
+ "Enable LDAP password changes per user" : "Позволить пользователю изменять пароль LDAP",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Позволить пользователям менять свои пароли LDAP и позволить Супер Администраторам и Администраторам Групп менять пароли своих пользователей LDAP. Работает только в случае, когда политики управления доступом настроены соответствующим образом на сервере LDAP. Поскольку пароли пересылаются простым текстом на сервер LDAP, необходимо использовать шифрование канала передачи и хеширование паролей на сервере LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(Новый пароль отправлен в LDAP простым текстом)",
"Special Attributes" : "Специальные атрибуты",
"Quota Field" : "Поле квоты",
"Quota Default" : "Квота по умолчанию",
@@ -158,7 +162,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя ownCloud используется повсеместно в ownCloud. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Limit %s access to users meeting these criteria:" : "Ограничить %s доступ для пользователей, отвечающих следующим критериям:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "По умолчанию внутреннее имя пользователя будет создано из атрибута UUID. Это даёт гарантию того, что имя пользователя уникально и символы не нужно конвертировать. Во внутреннем имени пользователя можно использовать только следующие символы: [ a-zA-Z0-9_.@- ]. Другие символы замещаются их корреспондирующими символами ASCII или же просто отбрасываются. В крайнем случае будет добавлен/увеличен номер. Внутреннее имя используется для идентификации пользователя внутри системы. Также оно по умолчанию используется для имени домашней папки пользователя. Это также часть адресов URL, например, для всех служб *DAV. С помощью этой установки поведение по умолчанию может быть изменено. Для установки поведения, которое было до ownCloud 5, введите в это поле имя пользователя. Оставьте его пустым для поведения по умолчанию. Изменения будут иметь эффект только для вновь спроецированных (добавленных) пользователей LDAP. "
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sk_SK.js b/apps/user_ldap/l10n/sk_SK.js
index 49476ca3977..81cb1aa6959 100644
--- a/apps/user_ldap/l10n/sk_SK.js
+++ b/apps/user_ldap/l10n/sk_SK.js
@@ -38,7 +38,6 @@ OC.L10N.register(
"Select attributes" : "Vyberte atribúty",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku): <br/>",
"User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden používateľ. Len prvý používateľ sa bude môcť prihlásiť. Zvážte nastavenie užšieho filtra.",
"An unspecified error occurred. Please check the settings and the log." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.",
@@ -150,6 +149,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapovanie názvov LDAP používateľských mien",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na uchovávanie a priraďovanie (meta)dát. Každý používateľ v LDAP bude mať interné používateľské meno, aby bolo možné správne identifikovať a rozpoznávať používateľov. To je vyžaduje vytvorenie mapovania používateľských mien na používateľov v LDAPe. Vytvorené používateľské meno sa namapuje na UUID používateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužíva na identifikáciu. Ak sa DN zmení, zmena bude správne rozpoznaná. Interné používateľské meno sa používa všade. Vyčistenie mapovaní vymaže zvyšky všade. Vyčistenie mapovaní naviac nie je špecifické pre určitú konfiguráciu; bude mať vplyv na všetky konfigurácie LDAPu! Nikdy nečistite mapovanie v produkčnom prostredí, len v testovacej alebo experimentálnej fáze.",
"Clear Username-LDAP User Mapping" : "Zrušiť mapovanie LDAP používateľských mien",
- "Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín"
+ "Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden používateľ. Len prvý používateľ sa bude môcť prihlásiť. Zvážte nastavenie užšieho filtra."
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/sk_SK.json b/apps/user_ldap/l10n/sk_SK.json
index 4642da5c7a5..74d68798c51 100644
--- a/apps/user_ldap/l10n/sk_SK.json
+++ b/apps/user_ldap/l10n/sk_SK.json
@@ -36,7 +36,6 @@
"Select attributes" : "Vyberte atribúty",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku): <br/>",
"User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden používateľ. Len prvý používateľ sa bude môcť prihlásiť. Zvážte nastavenie užšieho filtra.",
"An unspecified error occurred. Please check the settings and the log." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.",
@@ -148,6 +147,7 @@
"Username-LDAP User Mapping" : "Mapovanie názvov LDAP používateľských mien",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na uchovávanie a priraďovanie (meta)dát. Každý používateľ v LDAP bude mať interné používateľské meno, aby bolo možné správne identifikovať a rozpoznávať používateľov. To je vyžaduje vytvorenie mapovania používateľských mien na používateľov v LDAPe. Vytvorené používateľské meno sa namapuje na UUID používateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužíva na identifikáciu. Ak sa DN zmení, zmena bude správne rozpoznaná. Interné používateľské meno sa používa všade. Vyčistenie mapovaní vymaže zvyšky všade. Vyčistenie mapovaní naviac nie je špecifické pre určitú konfiguráciu; bude mať vplyv na všetky konfigurácie LDAPu! Nikdy nečistite mapovanie v produkčnom prostredí, len v testovacej alebo experimentálnej fáze.",
"Clear Username-LDAP User Mapping" : "Zrušiť mapovanie LDAP používateľských mien",
- "Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín"
+ "Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden používateľ. Len prvý používateľ sa bude môcť prihlásiť. Zvážte nastavenie užšieho filtra."
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index aa68b965720..7268269e675 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Izbor atributov",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice): <br/>",
"User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter.",
"An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.",
@@ -153,6 +152,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atribut UUID za skupine:",
"Username-LDAP User Mapping" : "Uporabniška preslikava uporabniškega imena na LDAP",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index 8ae76bd06d8..406ff287748 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -38,7 +38,6 @@
"Select attributes" : "Izbor atributov",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice): <br/>",
"User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter.",
"An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.",
@@ -151,6 +150,7 @@
"UUID Attribute for Groups:" : "Atribut UUID za skupine:",
"Username-LDAP User Mapping" : "Uporabniška preslikava uporabniškega imena na LDAP",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js
index 8d999ba16e7..2f09cd96511 100644
--- a/apps/user_ldap/l10n/sq.js
+++ b/apps/user_ldap/l10n/sq.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"user_ldap",
{
"Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.",
- "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të shërbyesit",
+ "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit",
"The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.",
"The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.",
@@ -21,13 +21,13 @@ OC.L10N.register(
"Select object classes" : "Përzgjidhni klasa objektesh",
"Please check the credentials, they seem to be wrong." : "Ju lutemi, kontrolloni kredencialet, duket se janë gabim.",
"Please specify the port, it could not be auto-detected." : "Ju lutemi, përcaktoni portën, s’u arrit të vetëzbulohet.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ja Bazë s’u vetëzbulua dot, ju lutemi, rishikoni kredencialet, strehën dhe portën.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ja Bazë s’u vetëzbulua dot, ju lutemi, rishikoni kredencialet, hostin dhe portën.",
"Could not detect Base DN, please enter it manually." : "S’u zbulua dot DN Bazë, ju lutemi, jepeni dorazi.",
- "{nthServer}. Server" : "{nthServer}. Shërbyes",
+ "{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Në DN Bazë të dhën s’u gjet objekt. Ju lutemi, rishikojeni.",
"More than 1,000 directory entries available." : "Më shumë se 1000 zëra të gatshëm.",
" entries available within the provided Base DN" : " zëra të gatshëm brenda DN-së Bazë të dhënë",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ndodhi një gabim. Ju lutemi, kontrolloni DN-në Bazë, sie dhe rregullimet për lidhjen dhe kredencialet.",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ndodhi një gabim. Ju lutemi, kontrolloni DN-në Bazë, si edhe rregullimet për lidhjen dhe kredencialet.",
"Do you really want to delete the current Server Configuration?" : "Doni vërtet të fshihet Formësimi i tanishëm i Shërbyesit?",
"Confirm Deletion" : "Ripohoni Fshirjen",
"Mappings cleared successfully!" : "Përshoqërimet u hoqën me sukses!",
@@ -40,13 +40,13 @@ OC.L10N.register(
"Select attributes" : "Përzgjidhni atribute",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim): <br/>",
"User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.",
"An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendmbajtësja %uid mungon. Do të zëvendësohet me emrin e hyrjes, kur të kërkohet te LDAP / AD.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.",
+ "LDAP / AD integration" : "Integrimi LDAP / AD",
"_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"],
"_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.",
@@ -141,6 +141,7 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)",
"Paging chunksize" : "Madhësi copash faqosjeje",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)",
+ "(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)",
"Special Attributes" : "Atribute Speciale",
"Quota Field" : "Fushë Kuotash",
"Quota Default" : "Parazgjedhje Kuotash",
@@ -157,6 +158,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Përshoqërim Emër përdoruesi-Përdorues LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json
index 55062cff11d..053ae0f5a2d 100644
--- a/apps/user_ldap/l10n/sq.json
+++ b/apps/user_ldap/l10n/sq.json
@@ -1,6 +1,6 @@
{ "translations": {
"Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.",
- "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të shërbyesit",
+ "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit",
"The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.",
"The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.",
@@ -19,13 +19,13 @@
"Select object classes" : "Përzgjidhni klasa objektesh",
"Please check the credentials, they seem to be wrong." : "Ju lutemi, kontrolloni kredencialet, duket se janë gabim.",
"Please specify the port, it could not be auto-detected." : "Ju lutemi, përcaktoni portën, s’u arrit të vetëzbulohet.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ja Bazë s’u vetëzbulua dot, ju lutemi, rishikoni kredencialet, strehën dhe portën.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ja Bazë s’u vetëzbulua dot, ju lutemi, rishikoni kredencialet, hostin dhe portën.",
"Could not detect Base DN, please enter it manually." : "S’u zbulua dot DN Bazë, ju lutemi, jepeni dorazi.",
- "{nthServer}. Server" : "{nthServer}. Shërbyes",
+ "{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Në DN Bazë të dhën s’u gjet objekt. Ju lutemi, rishikojeni.",
"More than 1,000 directory entries available." : "Më shumë se 1000 zëra të gatshëm.",
" entries available within the provided Base DN" : " zëra të gatshëm brenda DN-së Bazë të dhënë",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ndodhi një gabim. Ju lutemi, kontrolloni DN-në Bazë, sie dhe rregullimet për lidhjen dhe kredencialet.",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ndodhi një gabim. Ju lutemi, kontrolloni DN-në Bazë, si edhe rregullimet për lidhjen dhe kredencialet.",
"Do you really want to delete the current Server Configuration?" : "Doni vërtet të fshihet Formësimi i tanishëm i Shërbyesit?",
"Confirm Deletion" : "Ripohoni Fshirjen",
"Mappings cleared successfully!" : "Përshoqërimet u hoqën me sukses!",
@@ -38,13 +38,13 @@
"Select attributes" : "Përzgjidhni atribute",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim): <br/>",
"User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.",
"An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendmbajtësja %uid mungon. Do të zëvendësohet me emrin e hyrjes, kur të kërkohet te LDAP / AD.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.",
+ "LDAP / AD integration" : "Integrimi LDAP / AD",
"_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"],
"_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.",
@@ -139,6 +139,7 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)",
"Paging chunksize" : "Madhësi copash faqosjeje",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)",
+ "(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)",
"Special Attributes" : "Atribute Speciale",
"Quota Field" : "Fushë Kuotash",
"Quota Default" : "Parazgjedhje Kuotash",
@@ -155,6 +156,7 @@
"Username-LDAP User Mapping" : "Përshoqërim Emër përdoruesi-Përdorues LDAP",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js
index 85613eec41e..8c1bd3782de 100644
--- a/apps/user_ldap/l10n/sr.js
+++ b/apps/user_ldap/l10n/sr.js
@@ -39,7 +39,6 @@ OC.L10N.register(
"Select attributes" : "Изаберите атрибуте",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Корисник није нађен. Проверите пријавне атрибуте и корисничко име. Важећи филтер (за копирај-налепи за оверу командне линије): <br/>",
"User found and settings verified." : "Корисник нађен и поставке проверене.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Поставке проверене али један корисник је нађен. Само први ће успети да се пријави. Размотрите проширење филтрирања.",
"An unspecified error occurred. Please check the settings and the log." : "Десила се неодређана грешка. Проверите поставке и записник.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Филтер претраге је неисправан, вероватно због синтаксе попут неједнаког броја отворених и затворених заграда. Проверите.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке ЛДАП / АД везе. Проверите домаћина, порт и акредитиве.",
@@ -151,6 +150,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Username-LDAP мапирање корисника",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Корисничка имена се користи за чување и додељивање (мета) података. Да би се прецизно идентификовали и препознавали кориснике, сваки LDAP корисник ће имати локално корисничко име. Ово захтева мапирање од корисничког имена до LDAP корисника. Креирано корисничко име се мапира у UUID LDAP корисника. Поред тога, DN се кешира да смањи LDAP интеракцију, али се не користи за идентификацију. Ако се DN мења, промене се могу наћи. Локално корисничко име се користи свуда. Чишћење мапирања оставља свуда остатке. Чишћење мапирања није осетљиво на конфигурацију, оно утиче на све LDAP конфигурације! Никада не користит чишћење мапирања у радном окружењу, већ само у тестирању или експерименталној фази.",
"Clear Username-LDAP User Mapping" : "Очисти Username-LDAP мапирање корисника",
- "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група"
+ "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Поставке проверене али један корисник је нађен. Само први ће успети да се пријави. Размотрите проширење филтрирања."
},
"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/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json
index 6823fb23228..4ed2b4a69c3 100644
--- a/apps/user_ldap/l10n/sr.json
+++ b/apps/user_ldap/l10n/sr.json
@@ -37,7 +37,6 @@
"Select attributes" : "Изаберите атрибуте",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Корисник није нађен. Проверите пријавне атрибуте и корисничко име. Важећи филтер (за копирај-налепи за оверу командне линије): <br/>",
"User found and settings verified." : "Корисник нађен и поставке проверене.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Поставке проверене али један корисник је нађен. Само први ће успети да се пријави. Размотрите проширење филтрирања.",
"An unspecified error occurred. Please check the settings and the log." : "Десила се неодређана грешка. Проверите поставке и записник.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Филтер претраге је неисправан, вероватно због синтаксе попут неједнаког броја отворених и затворених заграда. Проверите.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке ЛДАП / АД везе. Проверите домаћина, порт и акредитиве.",
@@ -149,6 +148,7 @@
"Username-LDAP User Mapping" : "Username-LDAP мапирање корисника",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Корисничка имена се користи за чување и додељивање (мета) података. Да би се прецизно идентификовали и препознавали кориснике, сваки LDAP корисник ће имати локално корисничко име. Ово захтева мапирање од корисничког имена до LDAP корисника. Креирано корисничко име се мапира у UUID LDAP корисника. Поред тога, DN се кешира да смањи LDAP интеракцију, али се не користи за идентификацију. Ако се DN мења, промене се могу наћи. Локално корисничко име се користи свуда. Чишћење мапирања оставља свуда остатке. Чишћење мапирања није осетљиво на конфигурацију, оно утиче на све LDAP конфигурације! Никада не користит чишћење мапирања у радном окружењу, већ само у тестирању или експерименталној фази.",
"Clear Username-LDAP User Mapping" : "Очисти Username-LDAP мапирање корисника",
- "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група"
+ "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Поставке проверене али један корисник је нађен. Само први ће успети да се пријави. Размотрите проширење филтрирања."
},"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/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js
index 650abf885a8..9a1768fe01e 100644
--- a/apps/user_ldap/l10n/sv.js
+++ b/apps/user_ldap/l10n/sv.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Please check the credentials, they seem to be wrong." : "Var god kontrollera dina uppgifter, de verkar vara fel.",
"Please specify the port, it could not be auto-detected." : "Var god specificera en port, den kunde ej autodetekteras.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Grundläggande DN kunde ej autodetekteras, var god dubbelkontrollera dina uppgifter, värd och port.",
- "Could not detect Base DN, please enter it manually." : "Kunde ej upptäcka Base DN, var god ange det manuellt.",
+ "Could not detect Base DN, please enter it manually." : "Kunde inte upptäcka Base DN, var god ange det manuellt.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Inget objekt funnet i den givna Base DN. Var god granska.",
"More than 1,000 directory entries available." : "Mer än 1,000 katalogposter tillgängliga.",
@@ -32,18 +32,19 @@ OC.L10N.register(
"Confirm Deletion" : "Bekräfta radering",
"Mappings cleared successfully!" : "Rensning av mappningar lyckades!",
"Error while clearing the mappings." : "Fel uppstod under rensning av mappningar",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous bind är inte tillåten. Var god ange en Användar-DN och lösenord.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP procedursfel. Anonymous bind tillåts troligtvis inte.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Sparning misslyckades. Var god kontrollera att databasen är verksam. Ladda om innan du fortsätter.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?",
"Mode switch" : "Lägesändring",
"Select attributes" : "Välj attribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
"User found and settings verified." : "Användare hittad och inställnings bekräftade.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
"An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.",
+ "Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med",
+ "Password change rejected. Hint: " : "Lösenordsbyte nekad. Anledning/tips: ",
+ "LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"],
"_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
@@ -52,23 +53,40 @@ OC.L10N.register(
"Test Configuration" : "Testa konfigurationen",
"Help" : "Hjälp",
"Groups meeting these criteria are available in %s:" : "Grupper som uppfyller dessa kriterier finns i %s:",
+ "Only these object classes:" : "Endast dessa objektklasser:",
+ "Only from these groups:" : "Endast från dessa grupper:",
+ "Search groups" : "Sökgrupper",
+ "Available groups" : "Tillgängliga grupper",
+ "Selected groups" : "Valda grupper",
+ "Edit LDAP Query" : "Redigera LDAP förfrågan",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtret specifierar vilka LDAD-grupper som ska ha åtkomst till %s instans",
+ "Verify settings and count groups" : "Verifiera inställningar och räkna grupper",
+ "LDAP / AD Username:" : "LDAP / AD Användarnamn:",
+ "LDAP / AD Email Address:" : "LDAP / AD E-postadress:",
"Other Attributes:" : "Övriga attribut:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definierar filter som tillämpas vid inloggning. %%uid ersätter användarnamn vid inloggningen. Exempel: \"uid=%%uid\"",
+ "Verify settings" : "Verifiera inställningar",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Skapa en ny och tom konfiguration",
+ "Copy current configuration into new directory binding" : "Kopiera nuvarande konfiguration till en ny katalogsammansättning",
+ "Delete the current configuration" : "Radera nuvarande konfiguration",
"Host" : "Server",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://",
"Port" : "Port",
+ "Detect Port" : "Upptäck Port",
"User DN" : "Användar-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN för användaren som skall användas, t.ex. uid=agent, dc=example, dc=com. För anonym åtkomst, lämna DN och lösenord tomt.",
"Password" : "Lösenord",
"For anonymous access, leave DN and Password empty." : "För anonym åtkomst, lämna DN och lösenord tomt.",
"One Base DN per line" : "Ett start-DN per rad",
"You can specify Base DN for users and groups in the Advanced tab" : "Du kan ange start-DN för användare och grupper under fliken Avancerat",
+ "Test Base DN" : "Testa Bas-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undviker automatiska LDAP-förfrågningar. Bättre för större installationer, men kräver en del LDAP-kunskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Ange LDAP-filter manuellt (rekommenderat för stora kataloger)",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtret specifierar vilka LDAP-användare som skall ha åtkomst till %s instans",
+ "Verify settings and count users" : "Verifiera inställningar och räkna användare",
"Saving" : "Sparar",
"Back" : "Tillbaka",
"Continue" : "Fortsätt",
@@ -90,11 +108,11 @@ OC.L10N.register(
"Only connect to the replica server." : "Anslut endast till replikaservern.",
"Turn off SSL certificate validation." : "Stäng av verifiering av SSL-certifikat.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Rekommenderas inte, använd endast för test! Om anslutningen bara fungerar med denna inställning behöver du importera LDAP-serverns SSL-certifikat till din %s server.",
- "Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "i sekunder. En förändring tömmer cache.",
"Directory Settings" : "Mappinställningar",
"User Display Name Field" : "Attribut för användarnamn",
"The LDAP attribute to use to generate the user's display name." : "LDAP-attributet som ska användas för att generera användarens visningsnamn.",
+ "2nd User Display Name Field" : "2:a Visningsnamns Fält",
"Base User Tree" : "Bas för användare i katalogtjänst",
"One User Base DN per line" : "En användarstart-DN per rad",
"User Search Attributes" : "Användarsökningsattribut",
@@ -105,13 +123,16 @@ OC.L10N.register(
"One Group Base DN per line" : "En gruppstart-DN per rad",
"Group Search Attributes" : "Gruppsökningsattribut",
"Group-Member association" : "Attribut för gruppmedlemmar",
+ "Dynamic Group Member URL" : "Dynamic Group Member URL",
"Nested Groups" : "Undergrupper",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "När den är påslagen, stöds grupper som innehåller grupper. (Fungerar endast om gruppmedlemmens attribut innehåller DN.)",
"Paging chunksize" : "Paging klusterstorlek",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Klusterstorlek som används för paged LDAP sökningar som kan komma att returnera skrymmande resultat som uppräknande av användare eller grupper. (Inställning av denna till 0 inaktiverar paged LDAP sökningar i de situationerna)",
+ "Enable LDAP password changes per user" : "Aktivera: Antal tillåtna lösenordsbyten för LDAP-användare",
+ "(New password is sent as plain text to LDAP)" : "(Nytt lösenord skickas som oformaterad text till LDAP)",
"Special Attributes" : "Specialattribut",
- "Quota Field" : "Kvotfält",
- "Quota Default" : "Datakvot standard",
+ "Quota Field" : "Fält för lagringsutrymme",
+ "Quota Default" : "Standardutrymme för lagring",
"in bytes" : "i bytes",
"Email Field" : "E-postfält",
"User Home Folder Naming Rule" : "Namnregel för hemkatalog",
@@ -124,6 +145,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "UUID-attribut för grupper:",
"Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
- "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning"
+ "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json
index 246ec8f7718..a4019761f96 100644
--- a/apps/user_ldap/l10n/sv.json
+++ b/apps/user_ldap/l10n/sv.json
@@ -20,7 +20,7 @@
"Please check the credentials, they seem to be wrong." : "Var god kontrollera dina uppgifter, de verkar vara fel.",
"Please specify the port, it could not be auto-detected." : "Var god specificera en port, den kunde ej autodetekteras.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Grundläggande DN kunde ej autodetekteras, var god dubbelkontrollera dina uppgifter, värd och port.",
- "Could not detect Base DN, please enter it manually." : "Kunde ej upptäcka Base DN, var god ange det manuellt.",
+ "Could not detect Base DN, please enter it manually." : "Kunde inte upptäcka Base DN, var god ange det manuellt.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Inget objekt funnet i den givna Base DN. Var god granska.",
"More than 1,000 directory entries available." : "Mer än 1,000 katalogposter tillgängliga.",
@@ -30,18 +30,19 @@
"Confirm Deletion" : "Bekräfta radering",
"Mappings cleared successfully!" : "Rensning av mappningar lyckades!",
"Error while clearing the mappings." : "Fel uppstod under rensning av mappningar",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous bind är inte tillåten. Var god ange en Användar-DN och lösenord.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP procedursfel. Anonymous bind tillåts troligtvis inte.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Sparning misslyckades. Var god kontrollera att databasen är verksam. Ladda om innan du fortsätter.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?",
"Mode switch" : "Lägesändring",
"Select attributes" : "Välj attribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):",
"User found and settings verified." : "Användare hittad och inställnings bekräftade.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.",
"An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.",
+ "Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med",
+ "Password change rejected. Hint: " : "Lösenordsbyte nekad. Anledning/tips: ",
+ "LDAP / AD integration" : "LDAP / AD integration",
"_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"],
"_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.",
@@ -50,23 +51,40 @@
"Test Configuration" : "Testa konfigurationen",
"Help" : "Hjälp",
"Groups meeting these criteria are available in %s:" : "Grupper som uppfyller dessa kriterier finns i %s:",
+ "Only these object classes:" : "Endast dessa objektklasser:",
+ "Only from these groups:" : "Endast från dessa grupper:",
+ "Search groups" : "Sökgrupper",
+ "Available groups" : "Tillgängliga grupper",
+ "Selected groups" : "Valda grupper",
+ "Edit LDAP Query" : "Redigera LDAP förfrågan",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtret specifierar vilka LDAD-grupper som ska ha åtkomst till %s instans",
+ "Verify settings and count groups" : "Verifiera inställningar och räkna grupper",
+ "LDAP / AD Username:" : "LDAP / AD Användarnamn:",
+ "LDAP / AD Email Address:" : "LDAP / AD E-postadress:",
"Other Attributes:" : "Övriga attribut:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definierar filter som tillämpas vid inloggning. %%uid ersätter användarnamn vid inloggningen. Exempel: \"uid=%%uid\"",
+ "Verify settings" : "Verifiera inställningar",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Skapa en ny och tom konfiguration",
+ "Copy current configuration into new directory binding" : "Kopiera nuvarande konfiguration till en ny katalogsammansättning",
+ "Delete the current configuration" : "Radera nuvarande konfiguration",
"Host" : "Server",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://",
"Port" : "Port",
+ "Detect Port" : "Upptäck Port",
"User DN" : "Användar-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN för användaren som skall användas, t.ex. uid=agent, dc=example, dc=com. För anonym åtkomst, lämna DN och lösenord tomt.",
"Password" : "Lösenord",
"For anonymous access, leave DN and Password empty." : "För anonym åtkomst, lämna DN och lösenord tomt.",
"One Base DN per line" : "Ett start-DN per rad",
"You can specify Base DN for users and groups in the Advanced tab" : "Du kan ange start-DN för användare och grupper under fliken Avancerat",
+ "Test Base DN" : "Testa Bas-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undviker automatiska LDAP-förfrågningar. Bättre för större installationer, men kräver en del LDAP-kunskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Ange LDAP-filter manuellt (rekommenderat för stora kataloger)",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtret specifierar vilka LDAP-användare som skall ha åtkomst till %s instans",
+ "Verify settings and count users" : "Verifiera inställningar och räkna användare",
"Saving" : "Sparar",
"Back" : "Tillbaka",
"Continue" : "Fortsätt",
@@ -88,11 +106,11 @@
"Only connect to the replica server." : "Anslut endast till replikaservern.",
"Turn off SSL certificate validation." : "Stäng av verifiering av SSL-certifikat.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Rekommenderas inte, använd endast för test! Om anslutningen bara fungerar med denna inställning behöver du importera LDAP-serverns SSL-certifikat till din %s server.",
- "Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "i sekunder. En förändring tömmer cache.",
"Directory Settings" : "Mappinställningar",
"User Display Name Field" : "Attribut för användarnamn",
"The LDAP attribute to use to generate the user's display name." : "LDAP-attributet som ska användas för att generera användarens visningsnamn.",
+ "2nd User Display Name Field" : "2:a Visningsnamns Fält",
"Base User Tree" : "Bas för användare i katalogtjänst",
"One User Base DN per line" : "En användarstart-DN per rad",
"User Search Attributes" : "Användarsökningsattribut",
@@ -103,13 +121,16 @@
"One Group Base DN per line" : "En gruppstart-DN per rad",
"Group Search Attributes" : "Gruppsökningsattribut",
"Group-Member association" : "Attribut för gruppmedlemmar",
+ "Dynamic Group Member URL" : "Dynamic Group Member URL",
"Nested Groups" : "Undergrupper",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "När den är påslagen, stöds grupper som innehåller grupper. (Fungerar endast om gruppmedlemmens attribut innehåller DN.)",
"Paging chunksize" : "Paging klusterstorlek",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Klusterstorlek som används för paged LDAP sökningar som kan komma att returnera skrymmande resultat som uppräknande av användare eller grupper. (Inställning av denna till 0 inaktiverar paged LDAP sökningar i de situationerna)",
+ "Enable LDAP password changes per user" : "Aktivera: Antal tillåtna lösenordsbyten för LDAP-användare",
+ "(New password is sent as plain text to LDAP)" : "(Nytt lösenord skickas som oformaterad text till LDAP)",
"Special Attributes" : "Specialattribut",
- "Quota Field" : "Kvotfält",
- "Quota Default" : "Datakvot standard",
+ "Quota Field" : "Fält för lagringsutrymme",
+ "Quota Default" : "Standardutrymme för lagring",
"in bytes" : "i bytes",
"Email Field" : "E-postfält",
"User Home Folder Naming Rule" : "Namnregel för hemkatalog",
@@ -122,6 +143,7 @@
"UUID Attribute for Groups:" : "UUID-attribut för grupper:",
"Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
- "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning"
+ "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/th_TH.js b/apps/user_ldap/l10n/th_TH.js
index 68aa1069fdc..a5faa068c46 100644
--- a/apps/user_ldap/l10n/th_TH.js
+++ b/apps/user_ldap/l10n/th_TH.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "เลือกคุณลักษณะ",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด): <br/>",
"User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "การตั้งค่าได้รับการตรวจสอบแล้ว แต่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งแรกที่จะสามารถที่จะเข้าสู่ระบบ กรุณาพิจารณาตัวกรองที่จำกัดมากขึ้น",
"An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ",
@@ -153,6 +152,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Username-LDAP ผู้ใช้ Mapping",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ชื่อผู้ใช้จะใช้ในการจัดเก็บและกำหนดข้อมูล (เมตา) เพื่อรู้จักกับผู้ใช้และสามารถระบุได้อย่างแม่นยำ แต่ละ LDAP จะมีชื่อผู้ใช้ภายใน จึงต้องทำ Mapping ให้กับผู้ใช้ LDAP ชื่อผู้ใช้ที่ถูกสร้างขึ้นจะถูกแมปเข้ากับ UUID ของผู้ใช้ LDAP นอกจากนี้ DN ก็จะถูกแคชเช่นกันเพื่อลดการทำงานร่วมกันของ LDAP แต่มันก็ไม่ได้ใช้เพื่อระบุตัวตน หากมีการเปลี่ยนแปลง DN การเปลี่ยนแปลงจะถูกพบในทันที ชื่อผู้ใช้ภายในจะถูกใช้กับทั้งหมด การล้างแมปไม่มีผลต่อการกำหนดค่า LDAP ทั้งหมด! \nและจะเกิดขึ้นเฉพาะในการทดสอบหรือขั้นตอนการทดลอง",
"Clear Username-LDAP User Mapping" : "ล้าง Username-LDAP ผู้ใช้ Mapping",
- "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP กลุ่ม Mapping"
+ "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP กลุ่ม Mapping",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "การตั้งค่าได้รับการตรวจสอบแล้ว แต่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งแรกที่จะสามารถที่จะเข้าสู่ระบบ กรุณาพิจารณาตัวกรองที่จำกัดมากขึ้น"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/th_TH.json b/apps/user_ldap/l10n/th_TH.json
index 1f74008274e..609090470a4 100644
--- a/apps/user_ldap/l10n/th_TH.json
+++ b/apps/user_ldap/l10n/th_TH.json
@@ -38,7 +38,6 @@
"Select attributes" : "เลือกคุณลักษณะ",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด): <br/>",
"User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "การตั้งค่าได้รับการตรวจสอบแล้ว แต่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งแรกที่จะสามารถที่จะเข้าสู่ระบบ กรุณาพิจารณาตัวกรองที่จำกัดมากขึ้น",
"An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ",
@@ -151,6 +150,7 @@
"Username-LDAP User Mapping" : "Username-LDAP ผู้ใช้ Mapping",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ชื่อผู้ใช้จะใช้ในการจัดเก็บและกำหนดข้อมูล (เมตา) เพื่อรู้จักกับผู้ใช้และสามารถระบุได้อย่างแม่นยำ แต่ละ LDAP จะมีชื่อผู้ใช้ภายใน จึงต้องทำ Mapping ให้กับผู้ใช้ LDAP ชื่อผู้ใช้ที่ถูกสร้างขึ้นจะถูกแมปเข้ากับ UUID ของผู้ใช้ LDAP นอกจากนี้ DN ก็จะถูกแคชเช่นกันเพื่อลดการทำงานร่วมกันของ LDAP แต่มันก็ไม่ได้ใช้เพื่อระบุตัวตน หากมีการเปลี่ยนแปลง DN การเปลี่ยนแปลงจะถูกพบในทันที ชื่อผู้ใช้ภายในจะถูกใช้กับทั้งหมด การล้างแมปไม่มีผลต่อการกำหนดค่า LDAP ทั้งหมด! \nและจะเกิดขึ้นเฉพาะในการทดสอบหรือขั้นตอนการทดลอง",
"Clear Username-LDAP User Mapping" : "ล้าง Username-LDAP ผู้ใช้ Mapping",
- "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP กลุ่ม Mapping"
+ "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP กลุ่ม Mapping",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "การตั้งค่าได้รับการตรวจสอบแล้ว แต่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งแรกที่จะสามารถที่จะเข้าสู่ระบบ กรุณาพิจารณาตัวกรองที่จำกัดมากขึ้น"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index d8a25231654..f7e42c7f3c9 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select attributes" : "Nitelikleri seç",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açtığınız nitelikleri ve kullanıcı adını kontrol edin. Etkili filtre (komut satırı doğrulaması için kopyala-yapıştır için): <br/>",
"User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
"An unspecified error occurred. Please check the settings and the log." : "Belirtilmeyen bir hata oluştu. Lütfen ayarları ve günlüğü denetleyin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama filtresi, eşleşmeyen parantez sayısı sebebiyle oluşabilen sözdizimi sorunlarından dolayı geçersiz. Lütfen gözden geçirin.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı hatası oluştu, lütfen istemci, port ve kimlik bilgilerini kontrol edin.",
@@ -160,7 +159,6 @@ OC.L10N.register(
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak tanımlamak ve algılamak için, her LDAP kullanıcısı bir dahili kullanıcı adına sahip olacak. Bu kullanıcı adı ile LDAP kullanıcısı arasında bir eşleşme gerektirir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID'si ile eşleştirilir. Ek olarak LDAP etkileşimini azaltmak için DN de önbelleğe alınır ancak bu kimlik tanıma için kullanılmaz. Eğer DN değişirse, değişiklikler tespit edilir. Dahili kullanıcı her yerde kullanılır. Eşleştirmeleri temizlemek, her yerde kalıntılar bırakacaktır. Eşleştirmeleri temizlemek yapılandırmaya hassas bir şekilde bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla temizlemeyin, sadece sınama veya deneysel aşamada kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Temizle",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Temizle",
- "Limit %s access to users meeting these criteria:" : "Aşağıdaki kritere uyan kullanıcıları %s erişimi kısıtla",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Dahili kullanıcı adı varsayılan olarak UUID özelliklerinden oluşturulur. Böylece kullanıcı adının benzersiz olması ve dönüştürülecek karakter içermediğinden emin olunur. Dahili kullanıcı adının kısıtlaması sadece şu karakterleri içerebilmesidir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür veya basitçe yok sayılır. Çakışmalarda bir sayı eklenir. Dahili kullanıcı adı bir kullanıcıyı dahili olarak belirlemeye yarar. Aynı zamanda kullanıcı ev dizininin varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu ayarla varsayılan davranışı değiştirebilirsiniz. Varsayılanı kullanmak için boş bırakın. Değişiklik sadece yeni oluşturulacak LDAP kullanıcılarını etkileyecektir."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index 7d03acad73d..c08ec466b84 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -38,7 +38,6 @@
"Select attributes" : "Nitelikleri seç",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açtığınız nitelikleri ve kullanıcı adını kontrol edin. Etkili filtre (komut satırı doğrulaması için kopyala-yapıştır için): <br/>",
"User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
"An unspecified error occurred. Please check the settings and the log." : "Belirtilmeyen bir hata oluştu. Lütfen ayarları ve günlüğü denetleyin.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama filtresi, eşleşmeyen parantez sayısı sebebiyle oluşabilen sözdizimi sorunlarından dolayı geçersiz. Lütfen gözden geçirin.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı hatası oluştu, lütfen istemci, port ve kimlik bilgilerini kontrol edin.",
@@ -158,7 +157,6 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak tanımlamak ve algılamak için, her LDAP kullanıcısı bir dahili kullanıcı adına sahip olacak. Bu kullanıcı adı ile LDAP kullanıcısı arasında bir eşleşme gerektirir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID'si ile eşleştirilir. Ek olarak LDAP etkileşimini azaltmak için DN de önbelleğe alınır ancak bu kimlik tanıma için kullanılmaz. Eğer DN değişirse, değişiklikler tespit edilir. Dahili kullanıcı her yerde kullanılır. Eşleştirmeleri temizlemek, her yerde kalıntılar bırakacaktır. Eşleştirmeleri temizlemek yapılandırmaya hassas bir şekilde bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla temizlemeyin, sadece sınama veya deneysel aşamada kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Temizle",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Temizle",
- "Limit %s access to users meeting these criteria:" : "Aşağıdaki kritere uyan kullanıcıları %s erişimi kısıtla",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Dahili kullanıcı adı varsayılan olarak UUID özelliklerinden oluşturulur. Böylece kullanıcı adının benzersiz olması ve dönüştürülecek karakter içermediğinden emin olunur. Dahili kullanıcı adının kısıtlaması sadece şu karakterleri içerebilmesidir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür veya basitçe yok sayılır. Çakışmalarda bir sayı eklenir. Dahili kullanıcı adı bir kullanıcıyı dahili olarak belirlemeye yarar. Aynı zamanda kullanıcı ev dizininin varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu ayarla varsayılan davranışı değiştirebilirsiniz. Varsayılanı kullanmak için boş bırakın. Değişiklik sadece yeni oluşturulacak LDAP kullanıcılarını etkileyecektir."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index ba43e26abb2..2d57b1545e9 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -13,6 +13,7 @@ OC.L10N.register(
" Could not set configuration %s" : " 无法设定配置文件 %s",
"Action does not exist" : "操作不存在",
"The Base DN appears to be wrong" : "Base DN似乎错了",
+ "Testing configuration…" : "测试配置...",
"Configuration incorrect" : "配置错误",
"Configuration incomplete" : "配置未完成",
"Configuration OK" : "配置完成",
@@ -39,13 +40,15 @@ OC.L10N.register(
"Select attributes" : "选择属性",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
"User found and settings verified." : "用户已找到,设置已验证。",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。",
"An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
+ "Password change rejected. Hint: " : "密码更改出错。提示:",
+ "LDAP / AD integration" : "LDAP / AD 整合",
"_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
"_%s user found_::_%s users found_" : ["发现 %s 个用户"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
@@ -91,6 +94,7 @@ OC.L10N.register(
"Test Base DN" : "测试基础DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自动LDAP请求。用于更精确的设置,但需要一些LDAP知识。",
"Manually enter LDAP filters (recommended for large directories)" : "手动输入LDAP筛选条件(建议用于大型目录)",
+ "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "对于用户最常用的对象类为organizationalPerson,person,user和inetOrgPerson。如果你不确定选择哪些对象类,请咨询您的目录管理员。",
"The filter specifies which LDAP users shall have access to the %s instance." : "该筛选条件指定哪些LDAP用户有权访问%s的实例。",
"Verify settings and count users" : "验证设置和统计用户",
@@ -139,6 +143,9 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "当选择后,包含组的组将启用。(只有当组成员属性包含DNs时有效。)",
"Paging chunksize" : "页块大小",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "用于在LDAP搜索返回如用户或组枚举结果时进行分页显示。 (设置它为0时,禁止在这些情况下分页LDAP搜索。)",
+ "Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。",
+ "(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)",
"Special Attributes" : "特殊属性",
"Quota Field" : "配额字段",
"Quota Default" : "默认配额",
@@ -147,6 +154,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "用户主目录命名规则",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Internal Username" : "内部用户名",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "默认情况下将从UUID属性创建内部用户名。将确保用户名是唯一的字符,并且不需要转换。 内部用户名,只允许使用这些字符:[a-zA-Z0-9 _。@ - ]。 其他字符被替换为它们的ASCII对应或简单地被忽略。如果出现重复,将添加或增加一个数字。 内部用户名用于在内部标识用户。 它是用户主文件夹的默认名称。 它也是远程URL的一部分,例如对于所有* DAV 服务。 使用此设置,可以覆盖默认行为。 默认行为为空, 则更改只会对新映射 (已添加) 的LDAP用户有效。",
"Internal Username Attribute:" : "内部用户名属性:",
"Override UUID detection" : "超越UUID检测",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "ownCloud 默认会自动检测 UUID 属性。UUID 属性用来无误地识别 LDAP 用户和组。同时,如果上面没有特别设置,内部用户名也基于 UUID 创建。也可以覆盖设置,直接指定一个属性。但一定要确保指定的属性取得的用户和组是唯一的。留空,则执行默认操作。更改只影响新映射 (或增加) 的 LDAP 用户和组。",
@@ -155,6 +163,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "用户名-LDAP用户映射",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用户名用于存储和分配数据 (元)。为了准确地识别和确认用户,每个用户都有一个内部用户名。这需要一个 ownCloud 用户名到 LDAP 用户的映射。创建的用户名被映射到 LDAP 用户的 UUID。此外,DN 也会被缓存,以减少 LDAP 连接,但它不用于识别。DN 的变化会被监视到。内部用户名会被用于所有地方。清除映射将导致一片混乱。清除映射不是常用的设置,它会影响到所有的 LDAP 配置!千万不要在正式环境中清除映射,只有在测试或试验时才这样做。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
- "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射"
+ "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index 10a1bd8b8ed..c8dbccd08c9 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -11,6 +11,7 @@
" Could not set configuration %s" : " 无法设定配置文件 %s",
"Action does not exist" : "操作不存在",
"The Base DN appears to be wrong" : "Base DN似乎错了",
+ "Testing configuration…" : "测试配置...",
"Configuration incorrect" : "配置错误",
"Configuration incomplete" : "配置未完成",
"Configuration OK" : "配置完成",
@@ -37,13 +38,15 @@
"Select attributes" : "选择属性",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):",
"User found and settings verified." : "用户已找到,设置已验证。",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。",
"An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
+ "Password change rejected. Hint: " : "密码更改出错。提示:",
+ "LDAP / AD integration" : "LDAP / AD 整合",
"_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
"_%s user found_::_%s users found_" : ["发现 %s 个用户"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
@@ -89,6 +92,7 @@
"Test Base DN" : "测试基础DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自动LDAP请求。用于更精确的设置,但需要一些LDAP知识。",
"Manually enter LDAP filters (recommended for large directories)" : "手动输入LDAP筛选条件(建议用于大型目录)",
+ "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "对于用户最常用的对象类为organizationalPerson,person,user和inetOrgPerson。如果你不确定选择哪些对象类,请咨询您的目录管理员。",
"The filter specifies which LDAP users shall have access to the %s instance." : "该筛选条件指定哪些LDAP用户有权访问%s的实例。",
"Verify settings and count users" : "验证设置和统计用户",
@@ -137,6 +141,9 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "当选择后,包含组的组将启用。(只有当组成员属性包含DNs时有效。)",
"Paging chunksize" : "页块大小",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "用于在LDAP搜索返回如用户或组枚举结果时进行分页显示。 (设置它为0时,禁止在这些情况下分页LDAP搜索。)",
+ "Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。",
+ "(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)",
"Special Attributes" : "特殊属性",
"Quota Field" : "配额字段",
"Quota Default" : "默认配额",
@@ -145,6 +152,7 @@
"User Home Folder Naming Rule" : "用户主目录命名规则",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。",
"Internal Username" : "内部用户名",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "默认情况下将从UUID属性创建内部用户名。将确保用户名是唯一的字符,并且不需要转换。 内部用户名,只允许使用这些字符:[a-zA-Z0-9 _。@ - ]。 其他字符被替换为它们的ASCII对应或简单地被忽略。如果出现重复,将添加或增加一个数字。 内部用户名用于在内部标识用户。 它是用户主文件夹的默认名称。 它也是远程URL的一部分,例如对于所有* DAV 服务。 使用此设置,可以覆盖默认行为。 默认行为为空, 则更改只会对新映射 (已添加) 的LDAP用户有效。",
"Internal Username Attribute:" : "内部用户名属性:",
"Override UUID detection" : "超越UUID检测",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "ownCloud 默认会自动检测 UUID 属性。UUID 属性用来无误地识别 LDAP 用户和组。同时,如果上面没有特别设置,内部用户名也基于 UUID 创建。也可以覆盖设置,直接指定一个属性。但一定要确保指定的属性取得的用户和组是唯一的。留空,则执行默认操作。更改只影响新映射 (或增加) 的 LDAP 用户和组。",
@@ -153,6 +161,7 @@
"Username-LDAP User Mapping" : "用户名-LDAP用户映射",
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用户名用于存储和分配数据 (元)。为了准确地识别和确认用户,每个用户都有一个内部用户名。这需要一个 ownCloud 用户名到 LDAP 用户的映射。创建的用户名被映射到 LDAP 用户的 UUID。此外,DN 也会被缓存,以减少 LDAP 连接,但它不用于识别。DN 的变化会被监视到。内部用户名会被用于所有地方。清除映射将导致一片混乱。清除映射不是常用的设置,它会影响到所有的 LDAP 配置!千万不要在正式环境中清除映射,只有在测试或试验时才这样做。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
- "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射"
+ "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index d88378c1888..9f6639c0db0 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -182,46 +182,146 @@ class Access extends LDAPUtility implements IUserTools {
// 0 won't result in replies, small numbers may leave out groups
// (cf. #12306), 500 is default for paging and should work everywhere.
$maxResults = $pagingSize > 20 ? $pagingSize : 500;
- $this->initPagedSearch($filter, array($dn), array($attr), $maxResults, 0);
+ $attr = mb_strtolower($attr, 'UTF-8');
+ // the actual read attribute later may contain parameters on a ranged
+ // request, e.g. member;range=99-199. Depends on server reply.
+ $attrToRead = $attr;
+
+ $values = [];
+ $isRangeRequest = false;
+ do {
+ $result = $this->executeRead($cr, $dn, $attrToRead, $filter, $maxResults);
+ if(is_bool($result)) {
+ // when an exists request was run and it was successful, an empty
+ // array must be returned
+ return $result ? [] : false;
+ }
+
+ if (!$isRangeRequest) {
+ $values = $this->extractAttributeValuesFromResult($result, $attr);
+ if (!empty($values)) {
+ return $values;
+ }
+ }
+
+ $isRangeRequest = false;
+ $result = $this->extractRangeData($result, $attr);
+ if (!empty($result)) {
+ $normalizedResult = $this->extractAttributeValuesFromResult(
+ [ $attr => $result['values'] ],
+ $attr
+ );
+ $values = array_merge($values, $normalizedResult);
+
+ if($result['rangeHigh'] === '*') {
+ // when server replies with * as high range value, there are
+ // no more results left
+ return $values;
+ } else {
+ $low = $result['rangeHigh'] + 1;
+ $attrToRead = $result['attributeName'] . ';range=' . $low . '-*';
+ $isRangeRequest = true;
+ }
+ }
+ } while($isRangeRequest);
+
+ \OCP\Util::writeLog('user_ldap', 'Requested attribute '.$attr.' not found for '.$dn, \OCP\Util::DEBUG);
+ return false;
+ }
+
+ /**
+ * Runs an read operation against LDAP
+ *
+ * @param resource $cr the LDAP connection
+ * @param string $dn
+ * @param string $attribute
+ * @param string $filter
+ * @param int $maxResults
+ * @return array|bool false if there was any error, true if an exists check
+ * was performed and the requested DN found, array with the
+ * returned data on a successful usual operation
+ */
+ public function executeRead($cr, $dn, $attribute, $filter, $maxResults) {
+ $this->initPagedSearch($filter, array($dn), array($attribute), $maxResults, 0);
$dn = $this->helper->DNasBaseParameter($dn);
- $rr = @$this->ldap->read($cr, $dn, $filter, array($attr));
- if(!$this->ldap->isResource($rr)) {
- if ($attr !== '') {
+ $rr = @$this->ldap->read($cr, $dn, $filter, array($attribute));
+ if (!$this->ldap->isResource($rr)) {
+ if ($attribute !== '') {
//do not throw this message on userExists check, irritates
- \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG);
+ \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN ' . $dn, \OCP\Util::DEBUG);
}
//in case an error occurs , e.g. object does not exist
return false;
}
- if ($attr === '' && ($filter === 'objectclass=*' || $this->ldap->countEntries($cr, $rr) === 1)) {
- \OCP\Util::writeLog('user_ldap', 'readAttribute: '.$dn.' found', \OCP\Util::DEBUG);
- return array();
+ if ($attribute === '' && ($filter === 'objectclass=*' || $this->ldap->countEntries($cr, $rr) === 1)) {
+ \OCP\Util::writeLog('user_ldap', 'readAttribute: ' . $dn . ' found', \OCP\Util::DEBUG);
+ return true;
}
$er = $this->ldap->firstEntry($cr, $rr);
- if(!$this->ldap->isResource($er)) {
+ if (!$this->ldap->isResource($er)) {
//did not match the filter, return false
return false;
}
//LDAP attributes are not case sensitive
$result = \OCP\Util::mb_array_change_key_case(
- $this->ldap->getAttributes($cr, $er), MB_CASE_LOWER, 'UTF-8');
- $attr = mb_strtolower($attr, 'UTF-8');
+ $this->ldap->getAttributes($cr, $er), MB_CASE_LOWER, 'UTF-8');
- if(isset($result[$attr]) && $result[$attr]['count'] > 0) {
- $values = array();
- for($i=0;$i<$result[$attr]['count'];$i++) {
- if($this->resemblesDN($attr)) {
- $values[] = $this->helper->sanitizeDN($result[$attr][$i]);
- } elseif(strtolower($attr) === 'objectguid' || strtolower($attr) === 'guid') {
- $values[] = $this->convertObjectGUID2Str($result[$attr][$i]);
+ return $result;
+ }
+
+ /**
+ * Normalizes a result grom getAttributes(), i.e. handles DNs and binary
+ * data if present.
+ *
+ * @param array $result from ILDAPWrapper::getAttributes()
+ * @param string $attribute the attribute name that was read
+ * @return string[]
+ */
+ public function extractAttributeValuesFromResult($result, $attribute) {
+ $values = [];
+ if(isset($result[$attribute]) && $result[$attribute]['count'] > 0) {
+ $lowercaseAttribute = strtolower($attribute);
+ for($i=0;$i<$result[$attribute]['count'];$i++) {
+ if($this->resemblesDN($attribute)) {
+ $values[] = $this->helper->sanitizeDN($result[$attribute][$i]);
+ } elseif($lowercaseAttribute === 'objectguid' || $lowercaseAttribute === 'guid') {
+ $values[] = $this->convertObjectGUID2Str($result[$attribute][$i]);
} else {
- $values[] = $result[$attr][$i];
+ $values[] = $result[$attribute][$i];
}
}
- return $values;
}
- \OCP\Util::writeLog('user_ldap', 'Requested attribute '.$attr.' not found for '.$dn, \OCP\Util::DEBUG);
- return false;
+ return $values;
+ }
+
+ /**
+ * Attempts to find ranged data in a getAttribute results and extracts the
+ * returned values as well as information on the range and full attribute
+ * name for further processing.
+ *
+ * @param array $result from ILDAPWrapper::getAttributes()
+ * @param string $attribute the attribute name that was read. Without ";range=…"
+ * @return array If a range was detected with keys 'values', 'attributeName',
+ * 'attributeFull' and 'rangeHigh', otherwise empty.
+ */
+ public function extractRangeData($result, $attribute) {
+ $keys = array_keys($result);
+ foreach($keys as $key) {
+ if($key !== $attribute && strpos($key, $attribute) === 0) {
+ $queryData = explode(';', $key);
+ if(strpos($queryData[1], 'range=') === 0) {
+ $high = substr($queryData[1], 1 + strpos($queryData[1], '-'));
+ $data = [
+ 'values' => $result[$key],
+ 'attributeName' => $queryData[0],
+ 'attributeFull' => $key,
+ 'rangeHigh' => $high,
+ ];
+ return $data;
+ }
+ }
+ }
+ return [];
}
/**
@@ -578,6 +678,9 @@ class Access extends LDAPUtility implements IUserTools {
*/
public function cacheUserDisplayName($ocName, $displayName, $displayName2 = '') {
$user = $this->userManager->get($ocName);
+ if($user === null) {
+ return;
+ }
$displayName = $user->composeAndStoreDisplayName($displayName, $displayName2);
$cacheKeyTrunk = 'getDisplayName';
$this->connection->writeToCache($cacheKeyTrunk.$ocName, $displayName);
diff --git a/apps/user_ldap/lib/Command/CreateEmptyConfig.php b/apps/user_ldap/lib/Command/CreateEmptyConfig.php
index 28d3a1d8bff..38d3192058c 100644
--- a/apps/user_ldap/lib/Command/CreateEmptyConfig.php
+++ b/apps/user_ldap/lib/Command/CreateEmptyConfig.php
@@ -29,6 +29,7 @@ use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Helper;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class CreateEmptyConfig extends Command {
@@ -47,29 +48,24 @@ class CreateEmptyConfig extends Command {
$this
->setName('ldap:create-empty-config')
->setDescription('creates an empty LDAP configuration')
+ ->addOption(
+ 'only-print-prefix',
+ 'p',
+ InputOption::VALUE_NONE,
+ 'outputs only the prefix'
+ )
;
}
protected function execute(InputInterface $input, OutputInterface $output) {
- $configPrefix = $this->getNewConfigurationPrefix();
- $output->writeln("Created new configuration with configID '{$configPrefix}'");
-
+ $configPrefix = $this->helper->getNextServerConfigurationPrefix();
$configHolder = new Configuration($configPrefix);
$configHolder->saveConfiguration();
- }
- protected function getNewConfigurationPrefix() {
- $serverConnections = $this->helper->getServerConfigurationPrefixes();
-
- // first connection uses no prefix
- if(sizeof($serverConnections) == 0) {
- return '';
+ $prose = '';
+ if(!$input->getOption('only-print-prefix')) {
+ $prose = 'Created new configuration with configID ';
}
-
- sort($serverConnections);
- $lastKey = array_pop($serverConnections);
- $lastNumber = intval(str_replace('s', '', $lastKey));
- $nextPrefix = 's' . str_pad($lastNumber + 1, 2, '0', STR_PAD_LEFT);
- return $nextPrefix;
+ $output->writeln($prose . "{$configPrefix}");
}
}
diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php
index eb4fcd3fbe6..65ee9c70807 100644
--- a/apps/user_ldap/lib/Configuration.php
+++ b/apps/user_ldap/lib/Configuration.php
@@ -393,9 +393,12 @@ class Configuration {
* @return bool
*/
protected function saveValue($varName, $value) {
- return \OCP\Config::setAppValue('user_ldap',
- $this->configPrefix.$varName,
- $value);
+ \OC::$server->getConfig()->setAppValue(
+ 'user_ldap',
+ $this->configPrefix.$varName,
+ $value
+ );
+ return true;
}
/**
diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php
index d74afa42fe8..92b874e7a15 100644
--- a/apps/user_ldap/lib/Connection.php
+++ b/apps/user_ldap/lib/Connection.php
@@ -327,11 +327,6 @@ class Connection extends LDAPUtility {
foreach(array('ldapBaseUsers', 'ldapBaseGroups') as $keyBase) {
$val = $this->configuration->$keyBase;
if(empty($val)) {
- $obj = strpos('Users', $keyBase) !== false ? 'Users' : 'Groups';
- \OCP\Util::writeLog('user_ldap',
- 'Base tree for '.$obj.
- ' is empty, using Base DN',
- \OCP\Util::INFO);
$this->configuration->$keyBase = $this->configuration->ldapBase;
}
}
diff --git a/apps/user_ldap/lib/Controller/ConfigAPIController.php b/apps/user_ldap/lib/Controller/ConfigAPIController.php
new file mode 100644
index 00000000000..7d51b0aafe4
--- /dev/null
+++ b/apps/user_ldap/lib/Controller/ConfigAPIController.php
@@ -0,0 +1,322 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 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 OCA\User_LDAP\Controller;
+
+use OC\CapabilitiesManager;
+use OC\Core\Controller\OCSController;
+use OC\Security\Bruteforce\Throttler;
+use OC\Security\IdentityProof\Manager;
+use OCA\User_LDAP\Configuration;
+use OCA\User_LDAP\Helper;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCS\OCSBadRequestException;
+use OCP\AppFramework\OCS\OCSException;
+use OCP\AppFramework\OCS\OCSNotFoundException;
+use OCP\ILogger;
+use OCP\IRequest;
+use OCP\IUserManager;
+use OCP\IUserSession;
+
+class ConfigAPIController extends OCSController {
+
+ /** @var Helper */
+ private $ldapHelper;
+
+ /** @var ILogger */
+ private $logger;
+
+ public function __construct(
+ $appName,
+ IRequest $request,
+ CapabilitiesManager $capabilitiesManager,
+ IUserSession $userSession,
+ IUserManager $userManager,
+ Throttler $throttler,
+ Manager $keyManager,
+ Helper $ldapHelper,
+ ILogger $logger
+ ) {
+ parent::__construct(
+ $appName,
+ $request,
+ $capabilitiesManager,
+ $userSession,
+ $userManager,
+ $throttler,
+ $keyManager
+ );
+
+
+ $this->ldapHelper = $ldapHelper;
+ $this->logger = $logger;
+ }
+
+ /**
+ * creates a new (empty) configuration and returns the resulting prefix
+ *
+ * Example: curl -X POST -H "OCS-APIREQUEST: true" -u $admin:$password \
+ * https://nextcloud.server/ocs/v2.php/apps/user_ldap/api/v1/config
+ *
+ * results in:
+ *
+ * <?xml version="1.0"?>
+ * <ocs>
+ * <meta>
+ * <status>ok</status>
+ * <statuscode>200</statuscode>
+ * <message>OK</message>
+ * </meta>
+ * <data>
+ * <configID>s40</configID>
+ * </data>
+ * </ocs>
+ *
+ * Failing example: if an exception is thrown (e.g. Database connection lost)
+ * the detailed error will be logged. The output will then look like:
+ *
+ * <?xml version="1.0"?>
+ * <ocs>
+ * <meta>
+ * <status>failure</status>
+ * <statuscode>999</statuscode>
+ * <message>An issue occurred when creating the new config.</message>
+ * </meta>
+ * <data/>
+ * </ocs>
+ *
+ * For JSON output provide the format=json parameter
+ *
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function create() {
+ try {
+ $configPrefix = $this->ldapHelper->getNextServerConfigurationPrefix();
+ $configHolder = new Configuration($configPrefix);
+ $configHolder->saveConfiguration();
+ } catch (\Exception $e) {
+ $this->logger->logException($e);
+ throw new OCSException('An issue occurred when creating the new config.');
+ }
+ return new DataResponse(['configID' => $configPrefix]);
+ }
+
+ /**
+ * Deletes a LDAP configuration, if present.
+ *
+ * Example:
+ * curl -X DELETE -H "OCS-APIREQUEST: true" -u $admin:$password \
+ * https://nextcloud.server/ocs/v2.php/apps/user_ldap/api/v1/config/s60
+ *
+ * <?xml version="1.0"?>
+ * <ocs>
+ * <meta>
+ * <status>ok</status>
+ * <statuscode>200</statuscode>
+ * <message>OK</message>
+ * </meta>
+ * <data/>
+ * </ocs>
+ *
+ * @param string $configID
+ * @return DataResponse
+ * @throws OCSBadRequestException
+ * @throws OCSException
+ */
+ public function delete($configID) {
+ try {
+ $this->ensureConfigIDExists($configID);
+ if(!$this->ldapHelper->deleteServerConfiguration($configID)) {
+ throw new OCSException('Could not delete configuration');
+ }
+ } catch(OCSException $e) {
+ throw $e;
+ } catch(\Exception $e) {
+ $this->logger->logException($e);
+ throw new OCSException('An issue occurred when deleting the config.');
+ }
+
+ return new DataResponse();
+ }
+
+ /**
+ * modifies a configuration
+ *
+ * Example:
+ * curl -X PUT -d "configData[ldapHost]=ldaps://my.ldap.server&configData[ldapPort]=636" \
+ * -H "OCS-APIREQUEST: true" -u $admin:$password \
+ * https://nextcloud.server/ocs/v2.php/apps/user_ldap/api/v1/config/s60
+ *
+ * <?xml version="1.0"?>
+ * <ocs>
+ * <meta>
+ * <status>ok</status>
+ * <statuscode>200</statuscode>
+ * <message>OK</message>
+ * </meta>
+ * <data/>
+ * </ocs>
+ *
+ * @param string $configID
+ * @param array $configData
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function modify($configID, $configData) {
+ try {
+ $this->ensureConfigIDExists($configID);
+
+ if(!is_array($configData)) {
+ throw new OCSBadRequestException('configData is not properly set');
+ }
+
+ $configuration = new Configuration($configID);
+ $configKeys = $configuration->getConfigTranslationArray();
+
+ foreach ($configKeys as $i => $key) {
+ if(isset($configData[$key])) {
+ $configuration->$key = $configData[$key];
+ }
+ }
+
+ $configuration->saveConfiguration();
+ } catch(OCSException $e) {
+ throw $e;
+ } catch (\Exception $e) {
+ $this->logger->logException($e);
+ throw new OCSException('An issue occurred when modifying the config.');
+ }
+
+ return new DataResponse();
+ }
+
+ /**
+ * retrieves a configuration
+ *
+ * <?xml version="1.0"?>
+ * <ocs>
+ * <meta>
+ * <status>ok</status>
+ * <statuscode>200</statuscode>
+ * <message>OK</message>
+ * </meta>
+ * <data>
+ * <ldapHost>ldaps://my.ldap.server</ldapHost>
+ * <ldapPort>7770</ldapPort>
+ * <ldapBackupHost></ldapBackupHost>
+ * <ldapBackupPort></ldapBackupPort>
+ * <ldapBase>ou=small,dc=my,dc=ldap,dc=server</ldapBase>
+ * <ldapBaseUsers>ou=users,ou=small,dc=my,dc=ldap,dc=server</ldapBaseUsers>
+ * <ldapBaseGroups>ou=small,dc=my,dc=ldap,dc=server</ldapBaseGroups>
+ * <ldapAgentName>cn=root,dc=my,dc=ldap,dc=server</ldapAgentName>
+ * <ldapAgentPassword>clearTextWithShowPassword=1</ldapAgentPassword>
+ * <ldapTLS>1</ldapTLS>
+ * <turnOffCertCheck>0</turnOffCertCheck>
+ * <ldapIgnoreNamingRules/>
+ * <ldapUserDisplayName>displayname</ldapUserDisplayName>
+ * <ldapUserDisplayName2>uid</ldapUserDisplayName2>
+ * <ldapUserFilterObjectclass>inetOrgPerson</ldapUserFilterObjectclass>
+ * <ldapUserFilterGroups></ldapUserFilterGroups>
+ * <ldapUserFilter>(&amp;(objectclass=nextcloudUser)(nextcloudEnabled=TRUE))</ldapUserFilter>
+ * <ldapUserFilterMode>1</ldapUserFilterMode>
+ * <ldapGroupFilter>(&amp;(|(objectclass=nextcloudGroup)))</ldapGroupFilter>
+ * <ldapGroupFilterMode>0</ldapGroupFilterMode>
+ * <ldapGroupFilterObjectclass>nextcloudGroup</ldapGroupFilterObjectclass>
+ * <ldapGroupFilterGroups></ldapGroupFilterGroups>
+ * <ldapGroupDisplayName>cn</ldapGroupDisplayName>
+ * <ldapGroupMemberAssocAttr>memberUid</ldapGroupMemberAssocAttr>
+ * <ldapLoginFilter>(&amp;(|(objectclass=inetOrgPerson))(uid=%uid))</ldapLoginFilter>
+ * <ldapLoginFilterMode>0</ldapLoginFilterMode>
+ * <ldapLoginFilterEmail>0</ldapLoginFilterEmail>
+ * <ldapLoginFilterUsername>1</ldapLoginFilterUsername>
+ * <ldapLoginFilterAttributes></ldapLoginFilterAttributes>
+ * <ldapQuotaAttribute></ldapQuotaAttribute>
+ * <ldapQuotaDefault></ldapQuotaDefault>
+ * <ldapEmailAttribute>mail</ldapEmailAttribute>
+ * <ldapCacheTTL>20</ldapCacheTTL>
+ * <ldapUuidUserAttribute>auto</ldapUuidUserAttribute>
+ * <ldapUuidGroupAttribute>auto</ldapUuidGroupAttribute>
+ * <ldapOverrideMainServer></ldapOverrideMainServer>
+ * <ldapConfigurationActive>1</ldapConfigurationActive>
+ * <ldapAttributesForUserSearch>uid;sn;givenname</ldapAttributesForUserSearch>
+ * <ldapAttributesForGroupSearch></ldapAttributesForGroupSearch>
+ * <ldapExperiencedAdmin>0</ldapExperiencedAdmin>
+ * <homeFolderNamingRule></homeFolderNamingRule>
+ * <hasPagedResultSupport></hasPagedResultSupport>
+ * <hasMemberOfFilterSupport></hasMemberOfFilterSupport>
+ * <useMemberOfToDetectMembership>1</useMemberOfToDetectMembership>
+ * <ldapExpertUsernameAttr>uid</ldapExpertUsernameAttr>
+ * <ldapExpertUUIDUserAttr>uid</ldapExpertUUIDUserAttr>
+ * <ldapExpertUUIDGroupAttr></ldapExpertUUIDGroupAttr>
+ * <lastJpegPhotoLookup>0</lastJpegPhotoLookup>
+ * <ldapNestedGroups>0</ldapNestedGroups>
+ * <ldapPagingSize>500</ldapPagingSize>
+ * <turnOnPasswordChange>1</turnOnPasswordChange>
+ * <ldapDynamicGroupMemberURL></ldapDynamicGroupMemberURL>
+ * </data>
+ * </ocs>
+ *
+ * @param string $configID
+ * @param bool|string $showPassword
+ * @return DataResponse
+ * @throws OCSException
+ */
+ public function show($configID, $showPassword = false) {
+ try {
+ $this->ensureConfigIDExists($configID);
+
+ $config = new Configuration($configID);
+ $data = $config->getConfiguration();
+ if(!boolval(intval($showPassword))) {
+ $data['ldapAgentPassword'] = '***';
+ }
+ foreach ($data as $key => $value) {
+ if(is_array($value)) {
+ $value = implode(';', $value);
+ $data[$key] = $value;
+ }
+ }
+ } catch(OCSException $e) {
+ throw $e;
+ } catch (\Exception $e) {
+ $this->logger->logException($e);
+ throw new OCSException('An issue occurred when modifying the config.');
+ }
+
+ return new DataResponse($data);
+ }
+
+ /**
+ * if the given config ID is not available, an exception is thrown
+ *
+ * @param string $configID
+ * @throws OCSNotFoundException
+ */
+ private function ensureConfigIDExists($configID) {
+ $prefixes = $this->ldapHelper->getServerConfigurationPrefixes();
+ if(!in_array($configID, $prefixes, true)) {
+ throw new OCSNotFoundException('Config ID not found');
+ }
+ }
+}
diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php
index b48b4001f9d..f1186ffa310 100644
--- a/apps/user_ldap/lib/Helper.php
+++ b/apps/user_ldap/lib/Helper.php
@@ -105,6 +105,25 @@ class Helper {
return $result;
}
+ /**
+ * return the next available configuration prefix
+ *
+ * @return string
+ */
+ public function getNextServerConfigurationPrefix() {
+ $serverConnections = $this->getServerConfigurationPrefixes();
+
+ if(count($serverConnections) === 0) {
+ return 's01';
+ }
+
+ sort($serverConnections);
+ $lastKey = array_pop($serverConnections);
+ $lastNumber = intval(str_replace('s', '', $lastKey));
+ $nextPrefix = 's' . str_pad($lastNumber + 1, 2, '0', STR_PAD_LEFT);
+ return $nextPrefix;
+ }
+
private function getServersConfig($value) {
$regex = '/' . $value . '$/S';
diff --git a/apps/user_ldap/lib/Mapping/AbstractMapping.php b/apps/user_ldap/lib/Mapping/AbstractMapping.php
index 8e7f1f8b137..6fb4a5436c3 100644
--- a/apps/user_ldap/lib/Mapping/AbstractMapping.php
+++ b/apps/user_ldap/lib/Mapping/AbstractMapping.php
@@ -209,6 +209,17 @@ abstract class AbstractMapping {
* @return bool
*/
public function map($fdn, $name, $uuid) {
+ if(mb_strlen($fdn) > 255) {
+ \OC::$server->getLogger()->error(
+ 'Cannot map, because the DN exceeds 255 characters: {dn}',
+ [
+ 'app' => 'user_ldap',
+ 'dn' => $fdn,
+ ]
+ );
+ return false;
+ }
+
$row = array(
'ldap_dn' => $fdn,
'owncloud_name' => $name,
diff --git a/apps/user_ldap/lib/Settings/Section.php b/apps/user_ldap/lib/Settings/Section.php
index 82d8d0c84fa..86d293d3879 100644
--- a/apps/user_ldap/lib/Settings/Section.php
+++ b/apps/user_ldap/lib/Settings/Section.php
@@ -24,13 +24,21 @@
namespace OCA\User_LDAP\Settings;
use OCP\IL10N;
-use OCP\Settings\ISection;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
-class Section implements ISection {
+class Section implements IIconSection {
/** @var IL10N */
private $l;
+ /** @var IURLGenerator */
+ private $url;
- public function __construct(IL10N $l) {
+ /**
+ * @param IURLGenerator $url
+ * @param IL10N $l
+ */
+ public function __construct(IURLGenerator $url, IL10N $l) {
+ $this->url = $url;
$this->l = $l;
}
@@ -64,4 +72,11 @@ class Section implements ISection {
public function getPriority() {
return 25;
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIcon() {
+ return $this->url->imagePath('user_ldap', 'app-dark.svg');
+ }
}
diff --git a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
index 91013085c2c..5c3474d9ad2 100644
--- a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
@@ -106,7 +106,8 @@ abstract class AbstractMappingTest extends \Test\TestCase {
list($mapper, $data) = $this->initTest();
// test that mapping will not happen when it shall not
- $paramKeys = array('', 'dn', 'name', 'uuid');
+ $tooLongDN = 'uid=joann,ou=Secret Small Specialized Department,ou=Some Tremendously Important Department,ou=Another Very Important Department,ou=Pretty Meaningful Derpartment,ou=Quite Broad And General Department,ou=The Topmost Department,dc=hugelysuccessfulcompany,dc=com';
+ $paramKeys = array('', 'dn', 'name', 'uuid', $tooLongDN);
foreach($paramKeys as $key) {
$failEntry = $data[0];
if(!empty($key)) {
diff --git a/apps/user_ldap/tests/Settings/SectionTest.php b/apps/user_ldap/tests/Settings/SectionTest.php
index 2d2165b8e56..5f565e89933 100644
--- a/apps/user_ldap/tests/Settings/SectionTest.php
+++ b/apps/user_ldap/tests/Settings/SectionTest.php
@@ -25,19 +25,24 @@ namespace OCA\User_LDAP\Tests\Settings;
use OCA\User_LDAP\Settings\Section;
use OCP\IL10N;
+use OCP\IURLGenerator;
use Test\TestCase;
class SectionTest extends TestCase {
- /** @var IL10N */
+ /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
+ private $url;
+ /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l;
/** @var Section */
private $section;
public function setUp() {
parent::setUp();
- $this->l = $this->getMockBuilder('\OCP\IL10N')->getMock();
+ $this->url = $this->createMock(IURLGenerator::class);
+ $this->l = $this->createMock(IL10N::class);
$this->section = new Section(
+ $this->url,
$this->l
);
}
@@ -59,4 +64,13 @@ class SectionTest extends TestCase {
public function testGetPriority() {
$this->assertSame(25, $this->section->getPriority());
}
+
+ public function testGetIcon() {
+ $this->url->expects($this->once())
+ ->method('imagePath')
+ ->with('user_ldap', 'app-dark.svg')
+ ->willReturn('icon');
+
+ $this->assertSame('icon', $this->section->getIcon());
+ }
}
diff --git a/apps/workflowengine/appinfo/info.xml b/apps/workflowengine/appinfo/info.xml
index 83f4be9e398..b037174d348 100644
--- a/apps/workflowengine/appinfo/info.xml
+++ b/apps/workflowengine/appinfo/info.xml
@@ -5,7 +5,7 @@
<description></description>
<licence>AGPL</licence>
<author>Morris Jobke</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>WorkflowEngine</namespace>
<category>other</category>
@@ -18,7 +18,7 @@
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
diff --git a/apps/workflowengine/l10n/bg_BG.js b/apps/workflowengine/l10n/bg_BG.js
index d0392051f60..ec24d4f01ae 100644
--- a/apps/workflowengine/l10n/bg_BG.js
+++ b/apps/workflowengine/l10n/bg_BG.js
@@ -13,7 +13,6 @@ OC.L10N.register(
"less" : "по-малко",
"less or equals" : "по-малко или равно",
"greater or equals" : "по-голямо или равно",
- "greater" : "равно",
"File system tag" : "Таг на файлова система",
"is tagged with" : "е тагнат с",
"is not tagged with" : "не е тагнат с",
diff --git a/apps/workflowengine/l10n/bg_BG.json b/apps/workflowengine/l10n/bg_BG.json
index e4c15879e0f..492410c9bf4 100644
--- a/apps/workflowengine/l10n/bg_BG.json
+++ b/apps/workflowengine/l10n/bg_BG.json
@@ -11,7 +11,6 @@
"less" : "по-малко",
"less or equals" : "по-малко или равно",
"greater or equals" : "по-голямо или равно",
- "greater" : "равно",
"File system tag" : "Таг на файлова система",
"is tagged with" : "е тагнат с",
"is not tagged with" : "не е тагнат с",
diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js
new file mode 100644
index 00000000000..8052946bd02
--- /dev/null
+++ b/apps/workflowengine/l10n/lv.js
@@ -0,0 +1,71 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Successfully saved" : "Veiksmīgi saglabāts",
+ "Saving failed:" : "Saglabāšana neizdevās:",
+ "File mime type" : "Faila MIME tips",
+ "is" : "ir",
+ "is not" : "nav",
+ "matches" : "atbilst",
+ "does not match" : "neatbilst",
+ "Example: {placeholder}" : "Piemērs: {placeholder}",
+ "File size (upload)" : "Faila lielums (augšupielādēt)",
+ "less" : "mazāk",
+ "less or equals" : "mazāks vai vienāds ar",
+ "greater or equals" : "lielāks vai vienāds ar",
+ "greater" : "lielāks",
+ "File system tag" : "Failu sistēmas atzīme",
+ "is tagged with" : "atzīmēts ar",
+ "is not tagged with" : "nav atzīmēts ar",
+ "Select tag…" : "Izvēlies atzīmi...",
+ "Request remote address" : "Pieprasīt attālo adresi",
+ "matches IPv4" : "atbilst IPv4",
+ "does not match IPv4" : "neatbilst IPv4",
+ "matches IPv6" : "atbilst IPv6",
+ "does not match IPv6" : "neatbilst IPv6",
+ "Request time" : "Pieprasījuma laiks",
+ "between" : "starp",
+ "not between" : "nav starp",
+ "Start" : "Sākums",
+ "End" : "Beigas",
+ "Select timezone…" : "Izvēlieties laika joslu...",
+ "Request URL" : "Pieprasījuma URL",
+ "Predefined URLs" : "Standarta URLs",
+ "Files WebDAV" : "WebDAV faili",
+ "Request user agent" : "Nepieciešams lietotāja aģents",
+ "Sync clients" : "Sync klients",
+ "Android client" : "Android klients",
+ "iOS client" : "iOS klients",
+ "Desktop client" : "Darbvirsmas klients",
+ "User group membership" : "Lietotāju grupas piederība",
+ "is member of" : "ir biedrs",
+ "is not member of" : "nav biedrs",
+ "The given operator is invalid" : "Norādītais operators ir nederīgs",
+ "The given regular expression is invalid" : "Norādītā regulārā izteiksme nav derīga.",
+ "The given file size is invalid" : "Norādītais faila formāts nav derīgs",
+ "The given tag id is invalid" : "Norādītais birkas id ir nederīgs",
+ "The given IP range is invalid" : "Norādītais IP diapazons ir nederīgs",
+ "The given IP range is not valid for IPv4" : "Norādītais IP diapazons nav derīgs IPv4",
+ "The given IP range is not valid for IPv6" : "Norādītais IP diapazons nav derīgs IPv6",
+ "The given time span is invalid" : "Norādītais laiks nav derīgs.",
+ "The given start time is invalid" : "Dotais sākuma laiks ir nederīgs",
+ "The given end time is invalid" : "Norādītais beigu laiks nav derīgs.",
+ "The given group does not exist" : "Norādītā grupa nepastāv.",
+ "Check %s is invalid or does not exist" : "Pārbaude %s ir nederīga vai nepastāv",
+ "Operation #%s does not exist" : "Operation #%s does not exist",
+ "Operation %s does not exist" : "Darbība %s neeksistē",
+ "Operation %s is invalid" : "Darbība %s ir nederīga",
+ "Check %s does not exist" : "Pārbaude %s nepastāv",
+ "Check %s is invalid" : "Pārbaude %s ir nederīga",
+ "Check #%s does not exist" : "Pārbaude #%s nepastāv",
+ "Workflow" : "Darbplūsma",
+ "Open documentation" : "Atvērt dokumentāciju",
+ "Add rule group" : "Pievienot kārtulu grupas",
+ "Short rule description" : "Īss kārtulas apraksts",
+ "Add rule" : "Pievienot kārtulu",
+ "Reset" : "Atiestatīt",
+ "Save" : "Saglabāt",
+ "Saving…" : "Saglabā...",
+ "Loading…" : "Ielādē …"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json
new file mode 100644
index 00000000000..f780581deb3
--- /dev/null
+++ b/apps/workflowengine/l10n/lv.json
@@ -0,0 +1,69 @@
+{ "translations": {
+ "Successfully saved" : "Veiksmīgi saglabāts",
+ "Saving failed:" : "Saglabāšana neizdevās:",
+ "File mime type" : "Faila MIME tips",
+ "is" : "ir",
+ "is not" : "nav",
+ "matches" : "atbilst",
+ "does not match" : "neatbilst",
+ "Example: {placeholder}" : "Piemērs: {placeholder}",
+ "File size (upload)" : "Faila lielums (augšupielādēt)",
+ "less" : "mazāk",
+ "less or equals" : "mazāks vai vienāds ar",
+ "greater or equals" : "lielāks vai vienāds ar",
+ "greater" : "lielāks",
+ "File system tag" : "Failu sistēmas atzīme",
+ "is tagged with" : "atzīmēts ar",
+ "is not tagged with" : "nav atzīmēts ar",
+ "Select tag…" : "Izvēlies atzīmi...",
+ "Request remote address" : "Pieprasīt attālo adresi",
+ "matches IPv4" : "atbilst IPv4",
+ "does not match IPv4" : "neatbilst IPv4",
+ "matches IPv6" : "atbilst IPv6",
+ "does not match IPv6" : "neatbilst IPv6",
+ "Request time" : "Pieprasījuma laiks",
+ "between" : "starp",
+ "not between" : "nav starp",
+ "Start" : "Sākums",
+ "End" : "Beigas",
+ "Select timezone…" : "Izvēlieties laika joslu...",
+ "Request URL" : "Pieprasījuma URL",
+ "Predefined URLs" : "Standarta URLs",
+ "Files WebDAV" : "WebDAV faili",
+ "Request user agent" : "Nepieciešams lietotāja aģents",
+ "Sync clients" : "Sync klients",
+ "Android client" : "Android klients",
+ "iOS client" : "iOS klients",
+ "Desktop client" : "Darbvirsmas klients",
+ "User group membership" : "Lietotāju grupas piederība",
+ "is member of" : "ir biedrs",
+ "is not member of" : "nav biedrs",
+ "The given operator is invalid" : "Norādītais operators ir nederīgs",
+ "The given regular expression is invalid" : "Norādītā regulārā izteiksme nav derīga.",
+ "The given file size is invalid" : "Norādītais faila formāts nav derīgs",
+ "The given tag id is invalid" : "Norādītais birkas id ir nederīgs",
+ "The given IP range is invalid" : "Norādītais IP diapazons ir nederīgs",
+ "The given IP range is not valid for IPv4" : "Norādītais IP diapazons nav derīgs IPv4",
+ "The given IP range is not valid for IPv6" : "Norādītais IP diapazons nav derīgs IPv6",
+ "The given time span is invalid" : "Norādītais laiks nav derīgs.",
+ "The given start time is invalid" : "Dotais sākuma laiks ir nederīgs",
+ "The given end time is invalid" : "Norādītais beigu laiks nav derīgs.",
+ "The given group does not exist" : "Norādītā grupa nepastāv.",
+ "Check %s is invalid or does not exist" : "Pārbaude %s ir nederīga vai nepastāv",
+ "Operation #%s does not exist" : "Operation #%s does not exist",
+ "Operation %s does not exist" : "Darbība %s neeksistē",
+ "Operation %s is invalid" : "Darbība %s ir nederīga",
+ "Check %s does not exist" : "Pārbaude %s nepastāv",
+ "Check %s is invalid" : "Pārbaude %s ir nederīga",
+ "Check #%s does not exist" : "Pārbaude #%s nepastāv",
+ "Workflow" : "Darbplūsma",
+ "Open documentation" : "Atvērt dokumentāciju",
+ "Add rule group" : "Pievienot kārtulu grupas",
+ "Short rule description" : "Īss kārtulas apraksts",
+ "Add rule" : "Pievienot kārtulu",
+ "Reset" : "Atiestatīt",
+ "Save" : "Saglabāt",
+ "Saving…" : "Saglabā...",
+ "Loading…" : "Ielādē …"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js
index 12920d85206..84e63e01890 100644
--- a/apps/workflowengine/l10n/pl.js
+++ b/apps/workflowengine/l10n/pl.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Successfully saved" : "Zapisywanie powiodło się",
"Saving failed:" : "Zapisywanie nie powiodło się:",
+ "File mime type" : "Typ MIME pliku",
"is" : "jest",
"is not" : "nie jest",
"matches" : "pasuje",
@@ -31,13 +32,16 @@ OC.L10N.register(
"Request URL" : "Żądanie URL",
"Predefined URLs" : "Przedefiniowanie URLs",
"Files WebDAV" : "Pliki WebDAV",
+ "Request user agent" : "Żądanie agenta użytkownika",
"Sync clients" : "Klienci synchronizacji",
"Android client" : "Klient Android",
"iOS client" : "Klient iOS",
"Desktop client" : "Klient na komputer",
+ "User group membership" : "Członkostwo grupy użytkownika",
"is member of" : "Jest członkiem z",
"is not member of" : "Nie jest członkiem z",
"The given operator is invalid" : "Dana operacja jest nieprawidłowa",
+ "The given regular expression is invalid" : "Podane wyrażenie regularne jest błędne",
"The given file size is invalid" : "Podany rozmiar pliku jest nieprawidłowy",
"The given tag id is invalid" : "Podane id etykiety jest nieprawidłowe",
"The given IP range is invalid" : "Podany zakres adresów IP jest nieprawidłowy",
diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json
index c2f3a149b6a..31bcd2aca3e 100644
--- a/apps/workflowengine/l10n/pl.json
+++ b/apps/workflowengine/l10n/pl.json
@@ -1,6 +1,7 @@
{ "translations": {
"Successfully saved" : "Zapisywanie powiodło się",
"Saving failed:" : "Zapisywanie nie powiodło się:",
+ "File mime type" : "Typ MIME pliku",
"is" : "jest",
"is not" : "nie jest",
"matches" : "pasuje",
@@ -29,13 +30,16 @@
"Request URL" : "Żądanie URL",
"Predefined URLs" : "Przedefiniowanie URLs",
"Files WebDAV" : "Pliki WebDAV",
+ "Request user agent" : "Żądanie agenta użytkownika",
"Sync clients" : "Klienci synchronizacji",
"Android client" : "Klient Android",
"iOS client" : "Klient iOS",
"Desktop client" : "Klient na komputer",
+ "User group membership" : "Członkostwo grupy użytkownika",
"is member of" : "Jest członkiem z",
"is not member of" : "Nie jest członkiem z",
"The given operator is invalid" : "Dana operacja jest nieprawidłowa",
+ "The given regular expression is invalid" : "Podane wyrażenie regularne jest błędne",
"The given file size is invalid" : "Podany rozmiar pliku jest nieprawidłowy",
"The given tag id is invalid" : "Podane id etykiety jest nieprawidłowe",
"The given IP range is invalid" : "Podany zakres adresów IP jest nieprawidłowy",
diff --git a/apps/workflowengine/l10n/ru.js b/apps/workflowengine/l10n/ru.js
index 318981ae5f3..02e5be6522e 100644
--- a/apps/workflowengine/l10n/ru.js
+++ b/apps/workflowengine/l10n/ru.js
@@ -14,6 +14,9 @@ OC.L10N.register(
"less or equals" : "меньше либо равно",
"greater or equals" : "больше либо равно",
"greater" : "больше",
+ "File system tag" : "Системная метка файла",
+ "is tagged with" : "помечен",
+ "is not tagged with" : "не помечен",
"Select tag…" : "Выбрать метку...",
"Request remote address" : "Запрос удаленного адреса",
"matches IPv4" : "соответствует IPv4",
@@ -29,6 +32,7 @@ OC.L10N.register(
"Request URL" : "URL запроса",
"Predefined URLs" : "Предопределенные URL",
"Files WebDAV" : "Файлы WebDAV",
+ "Request user agent" : "Запрос user agent",
"Sync clients" : "Клиенты синхронизации",
"Android client" : "Андроид клиент",
"iOS client" : "iOS клиент",
@@ -47,8 +51,13 @@ OC.L10N.register(
"The given start time is invalid" : "Указано не верное начальное время",
"The given end time is invalid" : "Указано не верное конечное время",
"The given group does not exist" : "Указанная группа не существует",
+ "Check %s is invalid or does not exist" : "Проверка %s неверна или не существует",
"Operation #%s does not exist" : "Оператор #%s не существует",
"Operation %s does not exist" : "Оператор %s не существует",
+ "Operation %s is invalid" : "Операция %s неверна",
+ "Check %s does not exist" : "Проверка %s не существует",
+ "Check %s is invalid" : "Проверка %s неверна",
+ "Check #%s does not exist" : "Проверка #%s не существует",
"Workflow" : "Рабочий процесс",
"Open documentation" : "Открыть документацию",
"Add rule group" : "Добавить группу правил",
diff --git a/apps/workflowengine/l10n/ru.json b/apps/workflowengine/l10n/ru.json
index d6d9ea62a06..d924dce8ccd 100644
--- a/apps/workflowengine/l10n/ru.json
+++ b/apps/workflowengine/l10n/ru.json
@@ -12,6 +12,9 @@
"less or equals" : "меньше либо равно",
"greater or equals" : "больше либо равно",
"greater" : "больше",
+ "File system tag" : "Системная метка файла",
+ "is tagged with" : "помечен",
+ "is not tagged with" : "не помечен",
"Select tag…" : "Выбрать метку...",
"Request remote address" : "Запрос удаленного адреса",
"matches IPv4" : "соответствует IPv4",
@@ -27,6 +30,7 @@
"Request URL" : "URL запроса",
"Predefined URLs" : "Предопределенные URL",
"Files WebDAV" : "Файлы WebDAV",
+ "Request user agent" : "Запрос user agent",
"Sync clients" : "Клиенты синхронизации",
"Android client" : "Андроид клиент",
"iOS client" : "iOS клиент",
@@ -45,8 +49,13 @@
"The given start time is invalid" : "Указано не верное начальное время",
"The given end time is invalid" : "Указано не верное конечное время",
"The given group does not exist" : "Указанная группа не существует",
+ "Check %s is invalid or does not exist" : "Проверка %s неверна или не существует",
"Operation #%s does not exist" : "Оператор #%s не существует",
"Operation %s does not exist" : "Оператор %s не существует",
+ "Operation %s is invalid" : "Операция %s неверна",
+ "Check %s does not exist" : "Проверка %s не существует",
+ "Check %s is invalid" : "Проверка %s неверна",
+ "Check #%s does not exist" : "Проверка #%s не существует",
"Workflow" : "Рабочий процесс",
"Open documentation" : "Открыть документацию",
"Add rule group" : "Добавить группу правил",
diff --git a/apps/workflowengine/l10n/sk_SK.js b/apps/workflowengine/l10n/sk_SK.js
new file mode 100644
index 00000000000..b524bd9d956
--- /dev/null
+++ b/apps/workflowengine/l10n/sk_SK.js
@@ -0,0 +1,58 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Successfully saved" : "Úspešne uložené",
+ "Saving failed:" : "Ukladanie neúspešné:",
+ "File mime type" : "Mime typ súboru",
+ "is" : "je",
+ "is not" : "nie je",
+ "matches" : "súhlasí",
+ "does not match" : "nesúhlasí",
+ "File size (upload)" : "Veľkosť súboru (upload)",
+ "less" : "menej",
+ "less or equals" : "menej alebo rovné",
+ "greater or equals" : "viac alebo rovné",
+ "greater" : "viac",
+ "File system tag" : "Štítok súborového systému",
+ "is tagged with" : "je označený",
+ "is not tagged with" : "nie je označený",
+ "Select tag…" : "Vyber štítok...",
+ "Request remote address" : "Vyžiadať vzdialenú adresu",
+ "matches IPv4" : "súhlasí s IPv4",
+ "does not match IPv4" : "nesúhlasí s IPv4",
+ "matches IPv6" : "súhlasí s IPv6",
+ "does not match IPv6" : "nesúhlasí s IPv6",
+ "between" : "medzi",
+ "not between" : "nie je medzi",
+ "Start" : "Začiatok",
+ "End" : "Koniec",
+ "Request URL" : "Vyžiadať URL",
+ "Files WebDAV" : "WebDAV súbory",
+ "Sync clients" : "Synchronizovať klientov",
+ "Android client" : "Android klient",
+ "iOS client" : "iOS klient",
+ "Desktop client" : "Desktopový klient",
+ "is member of" : "Je členom",
+ "is not member of" : "Nie je členom",
+ "The given file size is invalid" : "Zadaná veľkosť súboru je neplatná",
+ "The given tag id is invalid" : "Zadaný identifikátor štítku je neplatný",
+ "The given IP range is invalid" : "Zadaný rozsah IP je neplatný",
+ "The given IP range is not valid for IPv4" : "Zadaný IP rozsah nie je platný pre IPv4",
+ "The given IP range is not valid for IPv6" : "Zadaný IP rozsah nie je platný pre IPv6",
+ "The given time span is invalid" : "Zadané časové rozpätie nie je platné",
+ "The given start time is invalid" : "Zadaný čas začatia nie je platný",
+ "The given end time is invalid" : "Zadaný čas ukončenia nie je platný",
+ "The given group does not exist" : "Zadaná skupina neexistuje",
+ "Operation #%s does not exist" : "Operácia #%s neexistuje",
+ "Operation %s does not exist" : "Operácia %s neexistuje",
+ "Operation %s is invalid" : "Operácia #%s nie je platná",
+ "Open documentation" : "Otvoriť dokumentáciu",
+ "Add rule group" : "Pridať skupinu pravidiel",
+ "Short rule description" : "Zobraziť popis pravidla",
+ "Add rule" : "Pridať pravidlo",
+ "Reset" : "Vynulovať",
+ "Save" : "Uložiť",
+ "Saving…" : "Ukladá sa...",
+ "Loading…" : "Načítava sa..."
+},
+"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/sk_SK.json b/apps/workflowengine/l10n/sk_SK.json
new file mode 100644
index 00000000000..4cad6608288
--- /dev/null
+++ b/apps/workflowengine/l10n/sk_SK.json
@@ -0,0 +1,56 @@
+{ "translations": {
+ "Successfully saved" : "Úspešne uložené",
+ "Saving failed:" : "Ukladanie neúspešné:",
+ "File mime type" : "Mime typ súboru",
+ "is" : "je",
+ "is not" : "nie je",
+ "matches" : "súhlasí",
+ "does not match" : "nesúhlasí",
+ "File size (upload)" : "Veľkosť súboru (upload)",
+ "less" : "menej",
+ "less or equals" : "menej alebo rovné",
+ "greater or equals" : "viac alebo rovné",
+ "greater" : "viac",
+ "File system tag" : "Štítok súborového systému",
+ "is tagged with" : "je označený",
+ "is not tagged with" : "nie je označený",
+ "Select tag…" : "Vyber štítok...",
+ "Request remote address" : "Vyžiadať vzdialenú adresu",
+ "matches IPv4" : "súhlasí s IPv4",
+ "does not match IPv4" : "nesúhlasí s IPv4",
+ "matches IPv6" : "súhlasí s IPv6",
+ "does not match IPv6" : "nesúhlasí s IPv6",
+ "between" : "medzi",
+ "not between" : "nie je medzi",
+ "Start" : "Začiatok",
+ "End" : "Koniec",
+ "Request URL" : "Vyžiadať URL",
+ "Files WebDAV" : "WebDAV súbory",
+ "Sync clients" : "Synchronizovať klientov",
+ "Android client" : "Android klient",
+ "iOS client" : "iOS klient",
+ "Desktop client" : "Desktopový klient",
+ "is member of" : "Je členom",
+ "is not member of" : "Nie je členom",
+ "The given file size is invalid" : "Zadaná veľkosť súboru je neplatná",
+ "The given tag id is invalid" : "Zadaný identifikátor štítku je neplatný",
+ "The given IP range is invalid" : "Zadaný rozsah IP je neplatný",
+ "The given IP range is not valid for IPv4" : "Zadaný IP rozsah nie je platný pre IPv4",
+ "The given IP range is not valid for IPv6" : "Zadaný IP rozsah nie je platný pre IPv6",
+ "The given time span is invalid" : "Zadané časové rozpätie nie je platné",
+ "The given start time is invalid" : "Zadaný čas začatia nie je platný",
+ "The given end time is invalid" : "Zadaný čas ukončenia nie je platný",
+ "The given group does not exist" : "Zadaná skupina neexistuje",
+ "Operation #%s does not exist" : "Operácia #%s neexistuje",
+ "Operation %s does not exist" : "Operácia %s neexistuje",
+ "Operation %s is invalid" : "Operácia #%s nie je platná",
+ "Open documentation" : "Otvoriť dokumentáciu",
+ "Add rule group" : "Pridať skupinu pravidiel",
+ "Short rule description" : "Zobraziť popis pravidla",
+ "Add rule" : "Pridať pravidlo",
+ "Reset" : "Vynulovať",
+ "Save" : "Uložiť",
+ "Saving…" : "Ukladá sa...",
+ "Loading…" : "Načítava sa..."
+},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sq.js b/apps/workflowengine/l10n/sq.js
new file mode 100644
index 00000000000..83960883307
--- /dev/null
+++ b/apps/workflowengine/l10n/sq.js
@@ -0,0 +1,71 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Successfully saved" : "U ruajt me sukses",
+ "Saving failed:" : "Ruajtja dështoi:",
+ "File mime type" : "Tipi mime i skedarëve",
+ "is" : "është",
+ "is not" : "nuk është",
+ "matches" : "përputhje",
+ "does not match" : "nuk përputhet",
+ "Example: {placeholder}" : "Për shembull: {placeholder}",
+ "File size (upload)" : "Madhësia e skedarit (ngarko)",
+ "less" : "më pak",
+ "less or equals" : "më pak ose e barabartë",
+ "greater or equals" : "më e madhe ose e barabartë",
+ "greater" : "më e madhe",
+ "File system tag" : "Etiketë e skedarit të sistemit",
+ "is tagged with" : "është e etiketuar me",
+ "is not tagged with" : "nuk është e etiketuar me",
+ "Select tag…" : "Zgjidh etiketën...",
+ "Request remote address" : "Adresa e kërkesës remote",
+ "matches IPv4" : "përputhet me IPv4",
+ "does not match IPv4" : "nuk përputhet me IPv4",
+ "matches IPv6" : "përputhet me IPv6",
+ "does not match IPv6" : "nuk përputhet me IPv6",
+ "Request time" : "Koha e kërkesës",
+ "between" : "midis",
+ "not between" : "nuk është midis",
+ "Start" : "Fillim",
+ "End" : "Mbarim",
+ "Select timezone…" : "Zgjidh brezin kohorë",
+ "Request URL" : "Kërko URL",
+ "Predefined URLs" : "URL të paracaktuara",
+ "Files WebDAV" : "Skedarët WebDAV ",
+ "Request user agent" : "Kërko agjentin përdorues",
+ "Sync clients" : "Klient të sinkronizuar",
+ "Android client" : "Klient Android",
+ "iOS client" : "Klient IOS",
+ "Desktop client" : "Klient Desktop",
+ "User group membership" : "Anëtarësia në grupet e përdoruesit",
+ "is member of" : "është anëtarë i",
+ "is not member of" : "nuk është anëtarë i",
+ "The given operator is invalid" : "Operatori i dhënë nuk është i vlefshëm",
+ "The given regular expression is invalid" : "Shprehja e rregullt e dhënë është e pavlefshme",
+ "The given file size is invalid" : "Madhësia e dhënë e skedarit është e pavlefshme",
+ "The given tag id is invalid" : "id e dhënë e etiketës është e pavlefshme",
+ "The given IP range is invalid" : "Rangu i dhënë i IP është i pavlefshëm",
+ "The given IP range is not valid for IPv4" : "Rangu i dhënë i IP nuk është i vlefshëm për IPv4",
+ "The given IP range is not valid for IPv6" : "Rangu i dhënë i IP nuk është i vlefshëm për IPv6",
+ "The given time span is invalid" : "Hapsira kohore e dhënë është e pavlefshme",
+ "The given start time is invalid" : "Koha e fillimit e dhënë është e pavlefshme",
+ "The given end time is invalid" : "Koha e mbarimit e dhënë është e pavlefshme",
+ "The given group does not exist" : "Grupi i dhënë nuk ekziston",
+ "Check %s is invalid or does not exist" : "Kontrolli %s është i pavlefshëm ose nuk ekziston",
+ "Operation #%s does not exist" : "Operacioni #%s nuk ekziston",
+ "Operation %s does not exist" : "Operacioni %s nuk ekziston",
+ "Operation %s is invalid" : "Operacioni %s është i pavlefshëm",
+ "Check %s does not exist" : "Kontrolli %s nuk ekziston",
+ "Check %s is invalid" : "Kontrolli %s është i pavlefshëm",
+ "Check #%s does not exist" : "Kontrolli #%s nuk ekziston",
+ "Workflow" : "Rrjedha e punëve",
+ "Open documentation" : "Dokumentacion i hapur",
+ "Add rule group" : "Shto rregull grupi",
+ "Short rule description" : "Përshkrim i shkurtër i rregullit",
+ "Add rule" : "Shto rregull",
+ "Reset" : "Rivendos",
+ "Save" : "Ruaj",
+ "Saving…" : "Duke u ruajtur...",
+ "Loading…" : "Po ngarkohet..."
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/sq.json b/apps/workflowengine/l10n/sq.json
new file mode 100644
index 00000000000..d7502ede7f7
--- /dev/null
+++ b/apps/workflowengine/l10n/sq.json
@@ -0,0 +1,69 @@
+{ "translations": {
+ "Successfully saved" : "U ruajt me sukses",
+ "Saving failed:" : "Ruajtja dështoi:",
+ "File mime type" : "Tipi mime i skedarëve",
+ "is" : "është",
+ "is not" : "nuk është",
+ "matches" : "përputhje",
+ "does not match" : "nuk përputhet",
+ "Example: {placeholder}" : "Për shembull: {placeholder}",
+ "File size (upload)" : "Madhësia e skedarit (ngarko)",
+ "less" : "më pak",
+ "less or equals" : "më pak ose e barabartë",
+ "greater or equals" : "më e madhe ose e barabartë",
+ "greater" : "më e madhe",
+ "File system tag" : "Etiketë e skedarit të sistemit",
+ "is tagged with" : "është e etiketuar me",
+ "is not tagged with" : "nuk është e etiketuar me",
+ "Select tag…" : "Zgjidh etiketën...",
+ "Request remote address" : "Adresa e kërkesës remote",
+ "matches IPv4" : "përputhet me IPv4",
+ "does not match IPv4" : "nuk përputhet me IPv4",
+ "matches IPv6" : "përputhet me IPv6",
+ "does not match IPv6" : "nuk përputhet me IPv6",
+ "Request time" : "Koha e kërkesës",
+ "between" : "midis",
+ "not between" : "nuk është midis",
+ "Start" : "Fillim",
+ "End" : "Mbarim",
+ "Select timezone…" : "Zgjidh brezin kohorë",
+ "Request URL" : "Kërko URL",
+ "Predefined URLs" : "URL të paracaktuara",
+ "Files WebDAV" : "Skedarët WebDAV ",
+ "Request user agent" : "Kërko agjentin përdorues",
+ "Sync clients" : "Klient të sinkronizuar",
+ "Android client" : "Klient Android",
+ "iOS client" : "Klient IOS",
+ "Desktop client" : "Klient Desktop",
+ "User group membership" : "Anëtarësia në grupet e përdoruesit",
+ "is member of" : "është anëtarë i",
+ "is not member of" : "nuk është anëtarë i",
+ "The given operator is invalid" : "Operatori i dhënë nuk është i vlefshëm",
+ "The given regular expression is invalid" : "Shprehja e rregullt e dhënë është e pavlefshme",
+ "The given file size is invalid" : "Madhësia e dhënë e skedarit është e pavlefshme",
+ "The given tag id is invalid" : "id e dhënë e etiketës është e pavlefshme",
+ "The given IP range is invalid" : "Rangu i dhënë i IP është i pavlefshëm",
+ "The given IP range is not valid for IPv4" : "Rangu i dhënë i IP nuk është i vlefshëm për IPv4",
+ "The given IP range is not valid for IPv6" : "Rangu i dhënë i IP nuk është i vlefshëm për IPv6",
+ "The given time span is invalid" : "Hapsira kohore e dhënë është e pavlefshme",
+ "The given start time is invalid" : "Koha e fillimit e dhënë është e pavlefshme",
+ "The given end time is invalid" : "Koha e mbarimit e dhënë është e pavlefshme",
+ "The given group does not exist" : "Grupi i dhënë nuk ekziston",
+ "Check %s is invalid or does not exist" : "Kontrolli %s është i pavlefshëm ose nuk ekziston",
+ "Operation #%s does not exist" : "Operacioni #%s nuk ekziston",
+ "Operation %s does not exist" : "Operacioni %s nuk ekziston",
+ "Operation %s is invalid" : "Operacioni %s është i pavlefshëm",
+ "Check %s does not exist" : "Kontrolli %s nuk ekziston",
+ "Check %s is invalid" : "Kontrolli %s është i pavlefshëm",
+ "Check #%s does not exist" : "Kontrolli #%s nuk ekziston",
+ "Workflow" : "Rrjedha e punëve",
+ "Open documentation" : "Dokumentacion i hapur",
+ "Add rule group" : "Shto rregull grupi",
+ "Short rule description" : "Përshkrim i shkurtër i rregullit",
+ "Add rule" : "Shto rregull",
+ "Reset" : "Rivendos",
+ "Save" : "Ruaj",
+ "Saving…" : "Duke u ruajtur...",
+ "Loading…" : "Po ngarkohet..."
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sv.js b/apps/workflowengine/l10n/sv.js
new file mode 100644
index 00000000000..9e6178c895d
--- /dev/null
+++ b/apps/workflowengine/l10n/sv.js
@@ -0,0 +1,71 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Successfully saved" : "Sparades framgångsrikt",
+ "Saving failed:" : "Gick ej att spara: ",
+ "File mime type" : "Filens \"mime\" typ",
+ "is" : "är",
+ "is not" : "är inte",
+ "matches" : "träffar",
+ "does not match" : "matchar inte",
+ "Example: {placeholder}" : "Exempel: {placeholder}",
+ "File size (upload)" : "Filstorlek (uppladdning)",
+ "less" : "mindre",
+ "less or equals" : "mindre eller motsvarar",
+ "greater or equals" : "större eller motsvarar",
+ "greater" : "större",
+ "File system tag" : "Filens systemtagg",
+ "is tagged with" : "är taggad med",
+ "is not tagged with" : "är inte taggad med",
+ "Select tag…" : "Välj tagg...",
+ "Request remote address" : "Begär extern adress",
+ "matches IPv4" : "matchar IPv4",
+ "does not match IPv4" : "matchar inte IPv4",
+ "matches IPv6" : "matchar IPv6",
+ "does not match IPv6" : "matchar inte IPv6",
+ "Request time" : "Begärningstid",
+ "between" : "mellan",
+ "not between" : "inte mellan",
+ "Start" : "Början",
+ "End" : "Slutet",
+ "Select timezone…" : "Välj tidszon...",
+ "Request URL" : "Begär URL",
+ "Predefined URLs" : "Förinställda URL:er",
+ "Files WebDAV" : "Filer WebDAV",
+ "Request user agent" : "Begär Användaragent",
+ "Sync clients" : "Synkroniseringsklienter",
+ "Android client" : "Android-klient",
+ "iOS client" : "iOS-klient",
+ "Desktop client" : "Skrivbordsklient",
+ "User group membership" : "Användargruppsmedlemskap",
+ "is member of" : "är medlem i",
+ "is not member of" : "är inte medlem i",
+ "The given operator is invalid" : "Den valda operatören är felaktig",
+ "The given regular expression is invalid" : "Det valda vanliga uttrycket är felaktigt",
+ "The given file size is invalid" : "Den valda filstorleken är felaktig",
+ "The given tag id is invalid" : "Den valda taggen är felaktig",
+ "The given IP range is invalid" : "Det valda IP-spannet är felaktigt",
+ "The given IP range is not valid for IPv4" : "Det valda IP-spannet är felaktigt för IPv4",
+ "The given IP range is not valid for IPv6" : "Det valda IP-spannet är felaktigt för IPv6",
+ "The given time span is invalid" : "Det valda tidsspannet är felaktigt",
+ "The given start time is invalid" : "Den valda starttiden är felaktig",
+ "The given end time is invalid" : "Den valda sluttiden är felaktig",
+ "The given group does not exist" : "Den valda gruppen finns inte",
+ "Check %s is invalid or does not exist" : "Kontroll av %s är ogiltig eller existerar inte",
+ "Operation #%s does not exist" : "Operationen #%s existerar inte",
+ "Operation %s does not exist" : "Operationen %s existerar inte",
+ "Operation %s is invalid" : "Operationen %s är ogiltig",
+ "Check %s does not exist" : "Kontroll av %s existerar inte",
+ "Check %s is invalid" : "Kontroll av %s är ogiltig",
+ "Check #%s does not exist" : "Kontroll av #%s existerar inte",
+ "Workflow" : "Arbetsflöde",
+ "Open documentation" : "Öppna dokumentation",
+ "Add rule group" : "Lägg till regelgrupp",
+ "Short rule description" : "Kort regelbeskrivning",
+ "Add rule" : "Lägg till regel",
+ "Reset" : "Återställ",
+ "Save" : "Spara",
+ "Saving…" : "Sparar...",
+ "Loading…" : "Laddar..."
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/sv.json b/apps/workflowengine/l10n/sv.json
new file mode 100644
index 00000000000..114eb6a77be
--- /dev/null
+++ b/apps/workflowengine/l10n/sv.json
@@ -0,0 +1,69 @@
+{ "translations": {
+ "Successfully saved" : "Sparades framgångsrikt",
+ "Saving failed:" : "Gick ej att spara: ",
+ "File mime type" : "Filens \"mime\" typ",
+ "is" : "är",
+ "is not" : "är inte",
+ "matches" : "träffar",
+ "does not match" : "matchar inte",
+ "Example: {placeholder}" : "Exempel: {placeholder}",
+ "File size (upload)" : "Filstorlek (uppladdning)",
+ "less" : "mindre",
+ "less or equals" : "mindre eller motsvarar",
+ "greater or equals" : "större eller motsvarar",
+ "greater" : "större",
+ "File system tag" : "Filens systemtagg",
+ "is tagged with" : "är taggad med",
+ "is not tagged with" : "är inte taggad med",
+ "Select tag…" : "Välj tagg...",
+ "Request remote address" : "Begär extern adress",
+ "matches IPv4" : "matchar IPv4",
+ "does not match IPv4" : "matchar inte IPv4",
+ "matches IPv6" : "matchar IPv6",
+ "does not match IPv6" : "matchar inte IPv6",
+ "Request time" : "Begärningstid",
+ "between" : "mellan",
+ "not between" : "inte mellan",
+ "Start" : "Början",
+ "End" : "Slutet",
+ "Select timezone…" : "Välj tidszon...",
+ "Request URL" : "Begär URL",
+ "Predefined URLs" : "Förinställda URL:er",
+ "Files WebDAV" : "Filer WebDAV",
+ "Request user agent" : "Begär Användaragent",
+ "Sync clients" : "Synkroniseringsklienter",
+ "Android client" : "Android-klient",
+ "iOS client" : "iOS-klient",
+ "Desktop client" : "Skrivbordsklient",
+ "User group membership" : "Användargruppsmedlemskap",
+ "is member of" : "är medlem i",
+ "is not member of" : "är inte medlem i",
+ "The given operator is invalid" : "Den valda operatören är felaktig",
+ "The given regular expression is invalid" : "Det valda vanliga uttrycket är felaktigt",
+ "The given file size is invalid" : "Den valda filstorleken är felaktig",
+ "The given tag id is invalid" : "Den valda taggen är felaktig",
+ "The given IP range is invalid" : "Det valda IP-spannet är felaktigt",
+ "The given IP range is not valid for IPv4" : "Det valda IP-spannet är felaktigt för IPv4",
+ "The given IP range is not valid for IPv6" : "Det valda IP-spannet är felaktigt för IPv6",
+ "The given time span is invalid" : "Det valda tidsspannet är felaktigt",
+ "The given start time is invalid" : "Den valda starttiden är felaktig",
+ "The given end time is invalid" : "Den valda sluttiden är felaktig",
+ "The given group does not exist" : "Den valda gruppen finns inte",
+ "Check %s is invalid or does not exist" : "Kontroll av %s är ogiltig eller existerar inte",
+ "Operation #%s does not exist" : "Operationen #%s existerar inte",
+ "Operation %s does not exist" : "Operationen %s existerar inte",
+ "Operation %s is invalid" : "Operationen %s är ogiltig",
+ "Check %s does not exist" : "Kontroll av %s existerar inte",
+ "Check %s is invalid" : "Kontroll av %s är ogiltig",
+ "Check #%s does not exist" : "Kontroll av #%s existerar inte",
+ "Workflow" : "Arbetsflöde",
+ "Open documentation" : "Öppna dokumentation",
+ "Add rule group" : "Lägg till regelgrupp",
+ "Short rule description" : "Kort regelbeskrivning",
+ "Add rule" : "Lägg till regel",
+ "Reset" : "Återställ",
+ "Save" : "Spara",
+ "Saving…" : "Sparar...",
+ "Loading…" : "Laddar..."
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/zh_CN.js b/apps/workflowengine/l10n/zh_CN.js
new file mode 100644
index 00000000000..9f7071a6c88
--- /dev/null
+++ b/apps/workflowengine/l10n/zh_CN.js
@@ -0,0 +1,59 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Successfully saved" : "保存成功",
+ "Saving failed:" : "保存失败:",
+ "File mime type" : "文件MIME类型",
+ "is" : "是",
+ "is not" : "不是",
+ "matches" : "匹配",
+ "does not match" : "不匹配",
+ "Example: {placeholder}" : "例子: {placeholder}",
+ "File size (upload)" : "文件大小 (上传)",
+ "less" : "小于",
+ "less or equals" : "小于等于",
+ "greater or equals" : "大于等于",
+ "greater" : "大于",
+ "File system tag" : "文件系统标签",
+ "is tagged with" : "标记为",
+ "is not tagged with" : "未标记为",
+ "Select tag…" : "选择标签...",
+ "Request remote address" : "要求远程地址",
+ "matches IPv4" : "匹配 IPv4",
+ "does not match IPv4" : "不匹配IPv4",
+ "matches IPv6" : "匹配IPv6",
+ "does not match IPv6" : "不匹配IPv6",
+ "Request time" : "请求时间",
+ "between" : "之间",
+ "not between" : "不在之间",
+ "Start" : "开始",
+ "End" : "结束",
+ "Select timezone…" : "选择时区",
+ "Request URL" : "请求URL",
+ "Predefined URLs" : "预定义URL",
+ "Files WebDAV" : "文件WebDAV",
+ "Request user agent" : "请求用户代理",
+ "Sync clients" : "同步客户端",
+ "Android client" : "Android 客户端",
+ "iOS client" : "iOS 客户端",
+ "Desktop client" : "桌面客户端",
+ "User group membership" : "用户组成员资格",
+ "is member of" : "是成员",
+ "is not member of" : "不是成员",
+ "The given operator is invalid" : "给定的运算符无效",
+ "The given regular expression is invalid" : "给定的正则表达式无效",
+ "The given file size is invalid" : "给定的文件大小无效",
+ "The given tag id is invalid" : "给定的标签ID无效",
+ "The given IP range is invalid" : "给定的IP范围无效",
+ "The given end time is invalid" : "输入的截止时间无效",
+ "The given group does not exist" : "输入的群组不存在",
+ "Operation #%s does not exist" : "操作 %s 不存在",
+ "Operation %s does not exist" : "操作 %s 不存在",
+ "Workflow" : "数据流",
+ "Add rule" : "添加规则",
+ "Reset" : "重置",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
+ "Loading…" : "加载中"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/zh_CN.json b/apps/workflowengine/l10n/zh_CN.json
new file mode 100644
index 00000000000..b5138ba8e8f
--- /dev/null
+++ b/apps/workflowengine/l10n/zh_CN.json
@@ -0,0 +1,57 @@
+{ "translations": {
+ "Successfully saved" : "保存成功",
+ "Saving failed:" : "保存失败:",
+ "File mime type" : "文件MIME类型",
+ "is" : "是",
+ "is not" : "不是",
+ "matches" : "匹配",
+ "does not match" : "不匹配",
+ "Example: {placeholder}" : "例子: {placeholder}",
+ "File size (upload)" : "文件大小 (上传)",
+ "less" : "小于",
+ "less or equals" : "小于等于",
+ "greater or equals" : "大于等于",
+ "greater" : "大于",
+ "File system tag" : "文件系统标签",
+ "is tagged with" : "标记为",
+ "is not tagged with" : "未标记为",
+ "Select tag…" : "选择标签...",
+ "Request remote address" : "要求远程地址",
+ "matches IPv4" : "匹配 IPv4",
+ "does not match IPv4" : "不匹配IPv4",
+ "matches IPv6" : "匹配IPv6",
+ "does not match IPv6" : "不匹配IPv6",
+ "Request time" : "请求时间",
+ "between" : "之间",
+ "not between" : "不在之间",
+ "Start" : "开始",
+ "End" : "结束",
+ "Select timezone…" : "选择时区",
+ "Request URL" : "请求URL",
+ "Predefined URLs" : "预定义URL",
+ "Files WebDAV" : "文件WebDAV",
+ "Request user agent" : "请求用户代理",
+ "Sync clients" : "同步客户端",
+ "Android client" : "Android 客户端",
+ "iOS client" : "iOS 客户端",
+ "Desktop client" : "桌面客户端",
+ "User group membership" : "用户组成员资格",
+ "is member of" : "是成员",
+ "is not member of" : "不是成员",
+ "The given operator is invalid" : "给定的运算符无效",
+ "The given regular expression is invalid" : "给定的正则表达式无效",
+ "The given file size is invalid" : "给定的文件大小无效",
+ "The given tag id is invalid" : "给定的标签ID无效",
+ "The given IP range is invalid" : "给定的IP范围无效",
+ "The given end time is invalid" : "输入的截止时间无效",
+ "The given group does not exist" : "输入的群组不存在",
+ "Operation #%s does not exist" : "操作 %s 不存在",
+ "Operation %s does not exist" : "操作 %s 不存在",
+ "Workflow" : "数据流",
+ "Add rule" : "添加规则",
+ "Reset" : "重置",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
+ "Loading…" : "加载中"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/workflowengine/lib/Settings/Section.php b/apps/workflowengine/lib/Settings/Section.php
index df8bb807134..b46f9a4a35f 100644
--- a/apps/workflowengine/lib/Settings/Section.php
+++ b/apps/workflowengine/lib/Settings/Section.php
@@ -24,13 +24,21 @@
namespace OCA\WorkflowEngine\Settings;
use OCP\IL10N;
-use OCP\Settings\ISection;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
-class Section implements ISection {
+class Section implements IIconSection {
/** @var IL10N */
private $l;
+ /** @var IURLGenerator */
+ private $url;
- public function __construct(IL10N $l) {
+ /**
+ * @param IURLGenerator $url
+ * @param IL10N $l
+ */
+ public function __construct(IURLGenerator $url, IL10N $l) {
+ $this->url = $url;
$this->l = $l;
}
@@ -54,4 +62,11 @@ class Section implements ISection {
public function getPriority() {
return 55;
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIcon() {
+ return $this->url->imagePath('core', 'actions/tag.svg');
+ }
}